摘要:對于多分類問題,我們可以使用多項(xiàng)回歸,該方法也被稱之為函數(shù)。函數(shù)的交叉熵?fù)p失函數(shù)的推導(dǎo)損失函數(shù)對于的導(dǎo)數(shù)求解如下上式已經(jīng)求解了當(dāng)和的兩種情況。最終的結(jié)果為,這個求導(dǎo)結(jié)果和函數(shù)的交叉熵?fù)p失函數(shù)求導(dǎo)是一樣的,再次證明函數(shù)是函數(shù)的一個擴(kuò)展板。
作者:chen_h
微信號 & QQ:862251340
微信公眾號:coderpai
簡書地址:https://www.jianshu.com/p/8eb...
這篇教程是翻譯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ò)
softmax分類函數(shù)這部分教程將介紹兩部分:
softmax函數(shù)
交叉熵?fù)p失函數(shù)
在先前的教程中,我們已經(jīng)使用學(xué)習(xí)了如何使用Logistic函數(shù)來實(shí)現(xiàn)二分類問題。對于多分類問題,我們可以使用多項(xiàng)Logistic回歸,該方法也被稱之為softmax函數(shù)。接下來,我們來解釋什么事softmax函數(shù),以及怎么得到它。
我們先導(dǎo)入教程需要使用的軟件包。
import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import colorConverter, ListedColormap from mpl_toolkits.mplot3d import Axes3D from matplotlib import cmSoftmax函數(shù)
在之前的教程中,我們已經(jīng)知道了Logistic函數(shù)只能被使用在二分類問題中,但是它的多項(xiàng)式回歸,即softmax函數(shù),可以解決多分類問題。假設(shè)softmax函數(shù)?的輸入數(shù)據(jù)是C維度的向量z,那么softmax函數(shù)的數(shù)據(jù)也是一個C維度的向量y,里面的值是0到1之間。softmax函數(shù)其實(shí)就是一個歸一化的指數(shù)函數(shù),定義如下:
式子中的分母充當(dāng)了正則項(xiàng)的作用,可以使得
作為神經(jīng)網(wǎng)絡(luò)的輸出層,softmax函數(shù)中的值可以用C個神經(jīng)元來表示。
對于給定的輸入z,我們可以得到每個分類的概率t = c for c = 1 ... C可以表示為:
其中,P(t=c|z)表示,在給定輸入z時,該輸入數(shù)據(jù)是c分類的概率。
下圖展示了在一個二分類(t = 1, t = 2)中,輸入向量是z = [z1, z2],那么輸出概率P(t=1|z)如下圖所示。
# Define the softmax function def softmax(z): return np.exp(z) / np.sum(np.exp(z))
# Plot the softmax output for 2 dimensions for both classes # Plot the output in function of the weights # Define a vector of weights for which we want to plot the ooutput nb_of_zs = 200 zs = np.linspace(-10, 10, num=nb_of_zs) # input zs_1, zs_2 = np.meshgrid(zs, zs) # generate grid y = np.zeros((nb_of_zs, nb_of_zs, 2)) # initialize output # Fill the output matrix for each combination of input z"s for i in range(nb_of_zs): for j in range(nb_of_zs): y[i,j,:] = softmax(np.asarray([zs_1[i,j], zs_2[i,j]])) # Plot the cost function surfaces for both classes fig = plt.figure() # Plot the cost function surface for t=1 ax = fig.gca(projection="3d") surf = ax.plot_surface(zs_1, zs_2, y[:,:,0], linewidth=0, cmap=cm.coolwarm) ax.view_init(elev=30, azim=70) cbar = fig.colorbar(surf) ax.set_xlabel("$z_1$", fontsize=15) ax.set_ylabel("$z_2$", fontsize=15) ax.set_zlabel("$y_1$", fontsize=15) ax.set_title ("$P(t=1|mathbf{z})$") cbar.ax.set_ylabel("$P(t=1|mathbf{z})$", fontsize=15) plt.grid() plt.show()softmax函數(shù)的導(dǎo)數(shù)
在神經(jīng)網(wǎng)絡(luò)中,使用softmax函數(shù),我們需要知道softmax函數(shù)的導(dǎo)數(shù)。如果我們定義:
那么可以得到:
因此,softmax函數(shù)的輸出結(jié)果y對于它的輸入數(shù)據(jù)z的導(dǎo)數(shù)?yi/?zj可以定義為:
注意,當(dāng)i = j時,softmax函數(shù)的倒數(shù)推導(dǎo)結(jié)果和Logistic函數(shù)一樣。
softmax函數(shù)的交叉熵?fù)p失函數(shù)在學(xué)習(xí)softmax函數(shù)的損失函數(shù)之前,我們先從學(xué)習(xí)它的最大似然函數(shù)開始。給定模型的參數(shù)組θ,利用這個參數(shù)組,我們可以得到輸入樣本的正確預(yù)測,正如在Logistic損失函數(shù)推導(dǎo)中,我們可以仿照寫出這個的最大似然估計:
根據(jù)聯(lián)合概率,我們可以將似然函數(shù)改寫成:P(t,z|θ),根據(jù)條件分布,我們最終可以得到如下公式:
因?yàn)槲覀儾魂P(guān)心z的概率,所以公式又可以改寫為:L(θ|t,z)=P(t|z,θ)。而且,P(t|z, θ)可以被寫成P(t|z),如果θ會一個定值。因?yàn)?,每一個ti都是依賴于整個z,而且只有其中一個t將會被激活,所以我們可以得到下式:
正如我們在Logistic函數(shù)中推導(dǎo)損失函數(shù)的導(dǎo)數(shù)一樣,最大化似然函數(shù)就是最小化它的負(fù)對數(shù)釋然函數(shù):
其中,ξ表示交叉熵誤差函數(shù)。在二分類問題中,我們將t2定義為t2=1?t1。同理,在softmax函數(shù)中,我們也可以定義為:
在n個樣本的批處理中,交叉熵誤差函數(shù)可以這樣計算:
其中,當(dāng)且僅當(dāng)tic是1,那么樣本i是屬于類別c,yic是樣本i屬于類別c的概率。
softmax函數(shù)的交叉熵?fù)p失函數(shù)的推導(dǎo)損失函數(shù)對于zi的導(dǎo)數(shù)?ξ/?zi求解如下:
上式已經(jīng)求解了當(dāng)i=j和i≠j的兩種情況。
最終的結(jié)果為?ξ/?zi=yi?ti for all i ∈ C,這個求導(dǎo)結(jié)果和Logistic函數(shù)的交叉熵?fù)p失函數(shù)求導(dǎo)是一樣的,再次證明softmax函數(shù)是Logistic函數(shù)的一個擴(kuò)展板。
完整代碼,點(diǎn)擊這里
作者:chen_h
微信號 & QQ:862251340
簡書地址:https://www.jianshu.com/p/8eb...
CoderPai 是一個專注于算法實(shí)戰(zhàn)的平臺,從基礎(chǔ)的算法到人工智能算法都有設(shè)計。如果你對算法實(shí)戰(zhàn)感興趣,請快快關(guān)注我們吧。加入AI實(shí)戰(zhàn)微信群,AI實(shí)戰(zhàn)QQ群,ACM算法微信群,ACM算法QQ群。長按或者掃描如下二維碼,關(guān)注 “CoderPai” 微信號(coderpai)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41184.html
閱讀 1930·2021-09-28 09:36
閱讀 2485·2021-09-08 09:35
閱讀 3108·2019-08-30 15:53
閱讀 1594·2019-08-30 14:08
閱讀 713·2019-08-29 18:40
閱讀 2901·2019-08-29 13:57
閱讀 2745·2019-08-29 13:55
閱讀 733·2019-08-26 13:45