深度前饋網(wǎng)絡(luò)

  • 本文首發(fā)自公眾號:RAIS,點擊直接關(guān)注。

前言

本系列文章為《Deep Learning》讀書筆記,可以參看原書一起閱讀,效果更佳。從本文開始將繼續(xù)學習本書的第二部分,將從第一部分介紹深度學習所需要的基礎(chǔ)知識過渡到構(gòu)建深度網(wǎng)絡(luò),是理論的應(yīng)用與提高。

深度前饋網(wǎng)絡(luò)

也叫 多層感知機 或者是 前饋神經(jīng)網(wǎng)絡(luò),是典型的深度學習模型。這種模型是一種前向的映射模型,由最初的輸入,經(jīng)過函數(shù) f 映射到結(jié)果 y,模型的輸出和模型本身沒有反饋(有反饋的稱作循環(huán)神經(jīng)網(wǎng)絡(luò))。這里網(wǎng)絡(luò)的概念是一種有向無環(huán)圖,最簡單的是鏈式連接,輸入的 x 經(jīng)過 f1 再經(jīng)過 f2 再經(jīng)過 f3,最后的到結(jié)果 y。引入層的概念,如 f2 就是一層,f3 為輸出層,訓練數(shù)據(jù)給出了 x 和 y,卻沒有定義其中中間層的輸入和輸出,因此中間層也被稱為隱藏層。

線性模型分為邏輯回歸(分類問題)和線性回歸(連續(xù)值預測問題),可以高效可靠的擬合,但問題是其能力距現(xiàn)在了線性函數(shù)范圍內(nèi),無法理解輸入變量間的相互作用,因此我們考慮將輸入 x,先做非線性變換 φ(x),然后線性函數(shù)作用在 φ(x) 上。這里涉及到的問題是 φ(x) 如何選擇:

  1. 通用的 φ,有足夠高的維數(shù),則可以將輸入與輸出很好的擬合,問題是泛化往往很不好。

  2. 手動設(shè)計 φ,專家去設(shè)計算法,手動編碼 φ,問題是這是針對特定問題進行的算法設(shè)計,難以遷移。

  3. 去學習 φ,φ(x;θ) 將以 θ 為參數(shù),進行訓練,并且可以通過使用廣泛的函數(shù)族或人為編碼幫助泛化使之可以實現(xiàn)上述兩種情況。

學習異或函數(shù)(XOR)

異或的含義為:x1 和 x2 相同為 0,不同為 1。我們設(shè)置代價函數(shù)為:

J(θ)=\frac{1}{4}\sum_{x∈X}{(f^*(x)-f(x;θ))^2} \\\\ 其中:f(x;θ)=f(x;w,b)=x^Tw+b

解得:w=0,b=1/2,這顯然是不對的,為什么會這樣?x1=0 時,模型輸出隨著 x2 增大而增大,x1=1 時,模型輸出隨著 x2 增大而減小,這用線性模型怎么可能做得到,因此得到了錯誤的結(jié)果。

要解決這個問題,我們引入了一層隱藏層,構(gòu)成前饋神經(jīng)網(wǎng)絡(luò):

h=f^1(x;W,c) \\\\ y=f^2(h;w,b) \\\\ ∴f(x;W,c,w,b)=f^2(f^1(x))

前饋神經(jīng)網(wǎng)絡(luò)

這里我們需要考慮 h 應(yīng)為怎樣的函數(shù),如果是線性函數(shù),代入 y 得到的結(jié)果仍然為線性函數(shù),前面的分析我們知道這無法滿足需求,因此 h 需為非線性函數(shù)。這里使用激活函數(shù),修正線性單元(RELU,Rectified Linear Unit):g(z)=max{0, z}。

RELU

則網(wǎng)絡(luò)為:

f(x;W,c,w,b)=w^Tmax\\{0,W^Tx+c\\}+b \\\\ 一組解為:W=\left[ \begin{matrix} 1&1\\\\ 1&1 \end{matrix} \right] \\\\ c=\left[\begin{matrix}0\\\\-1\end{matrix}\right] \\\\ w=\left[\begin{matrix}1\\\\-2\end{matrix}\right] \\\\ b=0 \\\\

則可以計算結(jié)果:

X=\left[ \begin{matrix} 0&0\\\\ 0&1\\\\ 1&0\\\\ 1&1\\\\ \end{matrix} \right] \\\\ y_1=XW+c^T=\left[\begin{matrix} 0&0\\\\ 1&1\\\\ 1&1\\\\ 2&2 \end{matrix}\right]+c^T=\left[\begin{matrix} 0&-1\\\\ 1&0\\\\ 1&0\\\\ 2&1 \end{matrix}\right] \\\\ y_2=max(0,y_1)=max(0,\left[\begin{matrix} 0&0\\\\ 1&0\\\\ 1&0\\\\ 2&1 \end{matrix}\right]) \\\\ y=y_2w=\left[\begin{matrix} 0\\\\ 1\\\\ 1\\\\ 0 \end{matrix}\right]

到這里,就完成異或函數(shù)的基于深度學習模型的構(gòu)建。

總結(jié)

到這里,我們構(gòu)建了一個非常簡單的深度前饋網(wǎng)絡(luò)。知道了網(wǎng)絡(luò)模型,就是一種數(shù)學的映射或函數(shù)表達,沒有類似于相同為 0 不同為 1 這樣的判斷,而都是一種矩陣的運算,這也是需要轉(zhuǎn)換的一種思維。計算機是一種固化的數(shù)學,在這里體現(xiàn)的尤為明顯。下一篇我們重新從新的角度討論梯度學習。

  • 本文首發(fā)自公眾號:RAIS,點擊直接關(guān)注。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容