摘要:對于多分類問題,我們使用函數(shù)來處理多項式回歸。概率方程表示輸出根據(jù)函數(shù)得到的值。最大似然估計可以寫成因為對于給定的參數(shù),去產(chǎn)生和,根據(jù)聯(lián)合概率我們又能將似然函數(shù)改寫成。
作者:chen_h
微信號 & QQ:862251340
微信公眾號:coderpai
簡書地址:https://www.jianshu.com/p/abc...
這篇教程是翻譯Peter Roelants寫的神經(jīng)網(wǎng)絡(luò)教程,作者已經(jīng)授權(quán)翻譯,這是原文。
該教程將介紹如何入門神經(jīng)網(wǎng)絡(luò),一共包含五部分。你可以在以下鏈接找到完整內(nèi)容。
(一)神經(jīng)網(wǎng)絡(luò)入門之線性回歸
Logistic分類函數(shù)
(二)神經(jīng)網(wǎng)絡(luò)入門之Logistic回歸(分類問題)
(三)神經(jīng)網(wǎng)絡(luò)入門之隱藏層設(shè)計
Softmax分類函數(shù)
(四)神經(jīng)網(wǎng)絡(luò)入門之矢量化
(五)神經(jīng)網(wǎng)絡(luò)入門之構(gòu)建多層網(wǎng)絡(luò)
Logistic分類函數(shù)這部分教程將介紹兩部分:
Logistic函數(shù)
交叉熵?fù)p失函數(shù)
如果我們利用神經(jīng)網(wǎng)絡(luò)進行分類,對于二分類問題,t=1或者t=0,我們能在logistic回歸中使用logistic函數(shù)。對于多分類問題,我們使用softmax函數(shù)來處理多項式logistic回歸。本教程我們先解釋有關(guān)logistic函數(shù)的知識,后續(xù)教程會介紹softmax函數(shù)的知識。
我們先導(dǎo)入教程需要使用的軟件包。
from __future__ import print_function import numpy as np import matplotlib.pyplot as plt
假設(shè)我們的目標(biāo)是根據(jù)輸入的z去預(yù)測分類t。概率方程P(t=1|z)表示輸出y根據(jù)logisitc函數(shù)y=σ(z)得到的值。σ被定義為:
根據(jù)函數(shù)分類的概率t=1或者t=0,我們能得到以下公式:
注意一下,其實z就是P(t=1|z)與P(t=0|z)的比值求對數(shù)。
logistic函數(shù)在下面的代碼中logistic(z)實現(xiàn),并且可視化了logistic函數(shù)。
# Define the logistic function def logistic(z): return 1 / (1 + np.exp(-z))
# Plot the logistic function z = np.linspace(-6,6,100) plt.plot(z, logistic(z), "b-") plt.xlabel("$z$", fontsize=15) plt.ylabel("$sigma(z)$", fontsize=15) plt.title("logistic function") plt.grid() plt.show()
因為神經(jīng)網(wǎng)絡(luò)一般使用梯度下降來優(yōu)化,所以我們需要先求出y對于z的倒數(shù),即?y/?z可以表示為:
因為1?σ(z))=1?1/(1+e^?z)=e?z/(1+e^?z),所以我們又可以把上式簡化為:
logistic_derivative(z)函數(shù)實現(xiàn)了Logistic函數(shù)的求導(dǎo)。
# Define the logistic function def logistic_derivative(z): return logistic(z) * (1 - logistic(z))
# Plot the derivative of the logistic function z = np.linspace(-6,6,100) plt.plot(z, logistic_derivative(z), "r-") plt.xlabel("$z$", fontsize=15) plt.ylabel("$frac{partial sigma(z)}{partial z}$", fontsize=15) plt.title("derivative of the logistic function") plt.grid() plt.show()
模型的輸出結(jié)果y=σ(z)可以被表示為一個概率y,如果t=1,或者概率1-y,如果t=0。我們把這個記為P(t=1|z)=σ(z)=y。
在神經(jīng)網(wǎng)絡(luò)中,對于給定的一組參數(shù)θ,我們可以使用最大似然估計來優(yōu)化參數(shù)。參數(shù)θ將輸入的樣本轉(zhuǎn)化成輸入到Logistic函數(shù)中的參數(shù)z,即z = θ * x。最大似然估計可以寫成:
因為對于給定的參數(shù)θ,去產(chǎn)生t和z,根據(jù)聯(lián)合概率我們又能將似然函數(shù)L(θ|t,z)改寫成P(t,z|θ)。由于P(A,B) = P(A|B) ? P(B),我們又可以簡化聯(lián)合概率:
因為我們不關(guān)心有關(guān)z的概率,所以我們可以把原來的似然函數(shù)改寫成:
因為t服從伯努力分布,而且如果給定參數(shù)θ,那么P(t|z)=y就是一個確定的值,因此我們又可以改寫概率方程:
由于對數(shù)函數(shù)是單調(diào)遞增函數(shù),我們可以依此優(yōu)化對數(shù)似然函數(shù)
該函數(shù)的最大值和常規(guī)的似然函數(shù)的最大值一樣,所以我們計算對數(shù)似然函數(shù)如下,
我們最小化這個負(fù)對數(shù)似然函數(shù),等價于最大化似然函數(shù)。一個典型的誤差函數(shù)可以設(shè)計為如下交叉熵誤差函數(shù):
這個函數(shù)可能看起來比較復(fù)雜,但是如果我們把它拆分開來看,就會比較簡單。
從上式中我們可以發(fā)現(xiàn),如果樣本被正確分類,那么損失函數(shù)L(t,y)和負(fù)對數(shù)概率函數(shù)在表達式上面是一樣的,即
因為t只能取值0或者1,所以我們能將L(t, y)寫為:
如果你要分析每一個訓(xùn)練數(shù)據(jù),那么就是下式:
另一個我們使用交叉熵函數(shù)的原因是,在簡單Logistic回歸中,交叉熵函數(shù)是一個凸損失函數(shù),全局最小值很容易找到。
對于損失函數(shù)?ξ/?y求導(dǎo),計算如下:
現(xiàn)在,我們對輸入?yún)?shù)z進行求導(dǎo)將變得很容易。
至此,完整求導(dǎo)完成。
完整代碼,點擊這里
作者:chen_h
微信號 & QQ:862251340
簡書地址:https://www.jianshu.com/p/abc...
CoderPai 是一個專注于算法實戰(zhàn)的平臺,從基礎(chǔ)的算法到人工智能算法都有設(shè)計。如果你對算法實戰(zhàn)感興趣,請快快關(guān)注我們吧。加入AI實戰(zhàn)微信群,AI實戰(zhàn)QQ群,ACM算法微信群,ACM算法QQ群。長按或者掃描如下二維碼,關(guān)注 “CoderPai” 微信號(coderpai)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41173.html
摘要:那么,概率將是神經(jīng)網(wǎng)絡(luò)輸出的,即。函數(shù)實現(xiàn)了函數(shù),函數(shù)實現(xiàn)了損失函數(shù),實現(xiàn)了神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果,實現(xiàn)了神經(jīng)網(wǎng)絡(luò)的預(yù)測結(jié)果。 作者:chen_h微信號 & QQ:862251340微信公眾號:coderpai簡書地址:https://www.jianshu.com/p/d94... 這篇教程是翻譯Peter Roelants寫的神經(jīng)網(wǎng)絡(luò)教程,作者已經(jīng)授權(quán)翻譯,這是原文。 該教程將介紹如...
閱讀 1537·2021-11-24 10:17
閱讀 1031·2021-09-29 09:43
閱讀 2165·2021-09-23 11:21
閱讀 2161·2019-08-30 14:13
閱讀 1295·2019-08-29 13:58
閱讀 3157·2019-08-28 17:51
閱讀 1803·2019-08-26 13:29
閱讀 2973·2019-08-26 10:13