Standford機器學習 神經網絡(Neural Network)的表示

        上一講講了如何用邏輯迴歸來解決分類問題,如果在兩個類多維線性不可分的情況下,可以通過添加多項式項把向量投影到高維空間使得它線性可分。但這也存在一個問題,就是當選取的特徵很多的時候,featurevector可能高達幾千維,這就是維數爆炸的問題。

        比如,如果有一個nfeature的向量,如果用二次項去擬合,那麼產生的多項式會有x1^2,x1x2,x1x3…;x2^2, x2x3, x2x4…;總共會有n^2項,如果要擬合成更高次數的多項式,那麼它的項數會呈指數增長。

        在上面這種非線性分類的情況下,神經網絡(Neural Network)就有它的用武之地了。神經網絡是一種模擬人腦中神經細胞工作的方法。生物學中,神經網絡由許許多多的神經元構成,每個神經元結構如下圖:

                    

        神經元的工作原理大致是這樣,通過樹突接受其他神經元傳遞過來的信息,然後對信息進行某些加工後,神經元會通過軸突把加工後的信息傳遞到軸突終端然後再傳遞給其他神經元。至於它是怎麼傳遞的,不是我們的研究範圍。大量的神經元就組成了一個結構複雜的神經網絡,每個神經元可以接受多個輸入,也可以輸出給多個神經元。

 

        現在來模擬一個神經元,可以表示成下圖的樣子,x1x2x3可以看成是樹突來接收信息的輸入,然後經過圓圈的處理後,把結果從軸突輸出給下一個神經元。

 

 

          在邏輯迴歸中,可以把這個處理過程看成是一個神經元,X是輸入,theta是這個神經元模型裏的參數,輸出就可以得到h(theta),由於x0一定是1的,爲表示方便,可以先把它忽略掉,但是在計算的時候還是要考慮進去。然後就組成了這樣一個神經網絡。

 

        上面是一個多層的神經網絡,第一層叫做輸入層(input layer),最後只有一個圓圈的是輸出層(outputlayer),輸入層和輸出層之外的全部層叫做隱層(hiddenlayer)

        每個神經元中,有兩個參數,ai(j)表示第j層的第i個激活,theta(j)表示的是第j層到第j+1層映射時控制函數映射的權重矩陣。

 

        上面那個神經網絡,每一層的映射可以表示成下面的函數,因此theta肯定是一個(Sj+1)*((Sj)+1)的矩陣,每一行對應於下一層中的每個神經元,每一列對應於輸入的feature數。

把這個表示成矩陣的形式就是a(i+1) = g(theta(i)*x(i)).根據這個公式,一層層下去,最後會得到一個輸出,就是我們建的模型需要得到的值。

        舉個例子,邏輯操作中的異或操作x1XORx2,輸入是0,1或者1,0輸出是1,輸入時0,0或者1,1輸出則是0,把它畫到座標系下可以看出是線性不可分的。接下去介紹的是如何用神經網絡給它們分類,先看下面三個模型,htheta(x)就是邏輯迴歸中介紹的S型曲線,h(x)=1/(1+exp(-theta*x)),1中,x1=0x2=1h(x)=1/(1+exp(10))=0x1=1x2=0時,h(x)=0;x1=1,x2=1時,h(x)=1/(1+exp(-10))=1,驗證了輸出時x1x2的與運算。下面兩個也一樣,可以自己驗證下。

 

由這三個模型作爲隱層,可以建立XOR的神經網絡模型,即

 

        這個模型中,隱藏分別作與和Nand操作,把這兩個輸出進行或運算,剛好得出異或運算,妙哉!

 

下面介紹一種多分類方法,one-VS-all

 

        在這個分類問題中,涉及到的類別多於兩類,分類的思想就是,把問題先轉化成兩類問題,首先,把1類看成一類,2類和3類歸成一類,就可以把1類分出來了,得到一個模型是

 

        類似的,把2類看成一類餘下兩類歸成一類,把3類看成一類,餘下兩類歸成一類,可以得出另外兩個模型。

 

        預測的時候只要計算下三個模型H1,H2,H3每個的概率,取值最大的類別即是預測得到的類別。

 

        多類分類問題中,需要建立上面這樣的一個神經網絡,對於每一個輸入,得到的輸出有n個值,n是類別的個數,可以表示成n維的向量,這裏舉例是4類的情況,即

 

        至於該分類神經網絡如何建立以及如何訓練,在下週的機器學習課上會講到。

 

       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章