1. 程式人生 > >Machine Learning(五—1)神經網路初步

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 =a2||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,表示當前類。