機器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)1前向傳播

神經(jīng)網(wǎng)絡(luò)是學(xué)習(xí)復(fù)雜的非線性問題的一種很好的算法

顧名思義,神經(jīng)網(wǎng)絡(luò)的名字來源自人的大腦結(jié)構(gòu)

?為了構(gòu)建神經(jīng)網(wǎng)絡(luò)模型,需要首先思考大腦中的神經(jīng)網(wǎng)絡(luò)是怎樣的?-----每一個神經(jīng)元都可以被認為是一個處理單元/神經(jīng)核,它含有許多輸入/樹突,并且有一個輸出/軸突。神經(jīng)網(wǎng)絡(luò)是大量神經(jīng)元相互鏈接并通過電脈沖來交流的一個網(wǎng)絡(luò)。

神經(jīng)網(wǎng)絡(luò)模型建立在很多神經(jīng)元之上,每一個神經(jīng)元又是一個個學(xué)習(xí)模型。這些神經(jīng)元(也叫激活單元,activation unit)采納一些特征作為輸入,并且根據(jù)本身的模型提供一個輸出。下圖是一個構(gòu)建的神經(jīng)網(wǎng)絡(luò)示例,在神經(jīng)網(wǎng)絡(luò)中,參數(shù)\theta 又可被稱為權(quán)重(weight

其中x_{1},x_{2} ,x_{3}  是輸入單元(input units),將原始數(shù)據(jù)(特征)輸入給它們。a_{1},a_{2},a_{3}  是中間單元,它們負責將數(shù)據(jù)進行處理,然后呈遞到下一層。最后是輸出單元,它負責計算h_{\theta } (x)

神經(jīng)網(wǎng)絡(luò)模型是許多邏輯單元按照不同層級組織起來的網(wǎng)絡(luò),每一層的輸出變量都是下一層的輸入變量。上圖為一個3層的神經(jīng)網(wǎng)絡(luò),第一層成為輸入層(Input Layer),最后一層稱為輸出層(Output Layer),中間一層成為隱藏層(Hidden Layers)。我們?yōu)槊恳粚佣荚黾右粋€偏差單位(bias unit),如下圖所示:

引入一些標記來幫助描述模型: a_{i}^j代表第 j層的第 i個激活單元。\theta ^j代表從第 j層映射到第j+1 層時的權(quán)重的矩陣,例如\theta ^1 代表從第一層映射到第二層的權(quán)重的矩陣。其尺寸為:以第j+1 層的激活單元數(shù)量為行數(shù),以第j 層的激活單元數(shù)加一為列數(shù)的矩陣。例如:上圖所示的神經(jīng)網(wǎng)絡(luò)中\theta ^1 的尺寸為 3*4。

對于上圖所示的模型,激活單元和輸出的表達式為:

可以知道:每一個a都是由上一層所有的x和每一個x所對應(yīng)的權(quán)重決定的。利用向量化的方法會使得計算更為簡便。(以計算第二層的值為例)

我們令z^2=\theta ^1 x ,則a^2=g(z^2) ,計算后添加 a_{0}^2=1。 計算輸出的值為:

 z^3=\theta ^2a^2,則h_{\theta } (x)=a^3=g(z^3) 。這只是針對訓(xùn)練集中一個訓(xùn)練實例所進行的計算。如果我們要對整個訓(xùn)練集進行計算,我們需要將訓(xùn)練集特征矩陣進行轉(zhuǎn)置,使得同一個實例的特征都在同一列里。

為了更好地了解神經(jīng)網(wǎng)絡(luò)的工作原理,先把前半部分遮住,如下圖所示:

右半部分其實就是以a0,a1,a2,a3為特征,按照邏輯回歸的方式輸出h_{\theta } (x)

其實神經(jīng)網(wǎng)絡(luò)就像是邏輯回歸,只不過我們把邏輯回歸中的輸入向量 x1,x2,x3變成了中間層的a1,a2,a3, 我們可以a0,a1,a2,a,3把看成更為高級的特征值,也就是x0,x1,x2,x3的進化體,并且它們是由 x與\theta 決定的,因為是梯度下降的,所以a是變化的,并且變得越來越厲害,所以這些更高級的特征值遠比僅僅使用邏輯回歸厲害,也能更好的預(yù)測新數(shù)據(jù)。這就是神經(jīng)網(wǎng)絡(luò)相比于邏輯回歸和線性回歸的優(yōu)勢。

至此,解釋前向傳播的含義:從輸入單元的激活項開始,然后進行前向傳播給隱藏層,計算隱藏層的激活值。然后繼續(xù)前向傳播,直至計算出輸出層的隱藏值。

多類分類初了解:

當有不止兩種分類時(也就是y=1,2,3...),如果我們要訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)算法來識別路人、汽車、摩托車和卡車,在輸出層我們應(yīng)該有4個值。例如,第一個值為1或0用于預(yù)測是否是行人,第二個值用于判斷是否為汽車。

輸入向量x有三個維度,兩個中間層,輸出層4個神經(jīng)元分別用來表示4類,也就是每一個數(shù)據(jù)在輸出層都會出現(xiàn)[a,b,c,d]^T,且a,b,c,d中僅有一個為1,表示當前類。下面是該神經(jīng)網(wǎng)絡(luò)的可能結(jié)構(gòu)示例:

神經(jīng)網(wǎng)絡(luò)算法的輸出結(jié)果為四種可能情形之一:

關(guān)于神經(jīng)網(wǎng)絡(luò)的代價函數(shù)相關(guān)計算以及神經(jīng)網(wǎng)絡(luò)的反向傳播算法將在下一篇文章中介紹。

最后編輯于
?著作權(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)容