Machine Learning(五—1)神經網路初步
第四講——Neural Networks 神經網路的表示
===============================
(一)、為什麼引入神經網路?——Nonlinear hypothesis
(二)、神經元與大腦(Neurons and Brain)
(三)、神經網路的表示形式
(四)、怎樣用神經網路實現邏輯表示式?
(五)、分類問題(Classification)
本章主要圍繞神經網路的建模及其線性表示(即neural networks的representation)做以初步瞭解,在下一章中將會有更詳細的神經網路如何學習方面的知識。
===============================
(一)、為什麼引入神經網路?——Nonlinear hypothesis
之前我們討論的ML問題中,主要針對Regression做了分析,其中採用梯度下降法進行引數更新。然而其可行性基於假設引數不多,如果引數多起來了怎麼辦呢?比如下圖中這個例子:從100*100個pixels中選出所有XiXj作為logistic regression的一個引數,那麼總共就有5*10^7個feature,即x有這麼多維。
所以引入了Nonlinear hypothesis,應對高維資料和非線性的hypothesis(如下圖所示):
===============================
(二)、神經元與大腦(neurons and brain)
神經元工作模式:
神經網路的邏輯單元:輸入向量x(input layer),中間層a(2,i)(hidden layer), 輸出層h(x)(output layer)。
其中,中間層的a(2,i)中的2表示第二個級別(第一個級別是輸入層),i表示中間層的第幾個元素。或者可以說,a(j,i) is the activation of unit i in layer j.
===============================
(三)、神經網路的表示形式
從圖中可知,中間層a(2,j)是輸入層線性組合的sigmod值,輸出又是中間層線性組合的sigmod值。
下面我們進行神經網路引數計算的向量化:
令z(2)表示中間層,x表示輸入層,則有
,
z(2)=Θ(1)x
a(2)=g(z(2))
或者可以將x表示成a(1),那麼對於輸入層a(1)有[x0~x3]4個元素,中間層a(2)有[a(2)0~a(2)3]4個元素(其中令a(2)0=1),則有
h(x)= a(3)=g(z(3))
z(3)=Θ(2)a(2)
通過以上這種神經元的傳遞方式(input->activation->output)來計算h(x), 叫做Forward propagation, 向前傳遞。
這裡我們可以發現,其實神經網路就像是logistic regression,只不過我們把logistic regression中的輸入向量[x1~x3]變成了中間層的[a(2)1~a(2)3], 即
h(x)=g(Θ(2)0 a(2)0+Θ(2)1 a(2)1+Θ(2)2 a(2)2+Θ(2)3 a(2)3)
而中間層又由真正的輸入向量通過Θ(1)學習而來,這裡呢,就解放了輸入層,換言之輸入層可以是original input data的任何線性組合甚至是多項式組合如set x1*x2 as original x1...另外呢,具體怎樣利用中間層進行更新下面會更詳細地講;此外,還有一些其他模型,比如:
===============================
(四)、怎樣用神經網路實現邏輯表示式?
神經網路中,單層神經元(無中間層)的計算可用來表示邏輯運算,比如邏輯AND、邏輯或OR
舉例說明:邏輯與AND;下圖中左半部分是神經網路的設計與output層表示式,右邊上部分是sigmod函式,下半部分是真值表。
給定神經網路的權值就可以根據真值表判斷該函式的作用。再給出一個邏輯或的例子,如下圖所示:
以上兩個例子只是單層傳遞,下面我們再給出一個更復雜的例子,用來實現邏輯表達< x1 XNOR x2 >, 即邏輯同或關係,它由前面幾個例子共同實現:
將AND、NOT AND和 OR分別放在下圖中輸入層和輸出層的位置,即可得到x1 XNOR x2,道理顯而易見:
a21 = x1 && x2
a22 = (﹁x1)&&(﹁x2)
a31 =a21 ||a21 =(x1 && x2) || (﹁x1)&&(﹁x2) = x1 XNOR x2;
應用:手寫識別系統
===============================
(五)、分類問題(Classification)
記得上一章中我們講過的one-vs-all分類問題麼?one-vs-all方法是把二類分類問題到多類分類的一個推廣,在這裡,我們就講述如何用神經網路進行分類。網路設計如下圖所示:
輸入向量x有三個維度,兩個中間層,輸出層4個神經元分別用來表示4類,也就是每一個數據在輸出層都會出現[a b c d]T,且a,b,c,d中僅有一個為1,表示當前類。