原文 http://blog.csdn.net/abcjennifer/article/details/7749309網絡
本欄目(Machine learning)包括單參數的線性迴歸、多參數的線性迴歸、Octave Tutorial、Logistic Regression、Regularization、神經網絡、機器學習系統設計、SVM(Support Vector Machines 支持向量機)、聚類、降維、異常檢測、大規模機器學習等章節。全部內容均來自Standford公開課machine learning中Andrew老師的講解。(https://class.coursera.org/ml/class/index)機器學習
第四講——Neural Networks 神經網絡的表示函數
===============================學習
(一)、爲何引入神經網絡?——Nonlinear hypothesisspa
(二)、神經元與大腦(Neurons and Brain).net
(三)、神經網絡的表示形式設計
(四)、怎樣用神經網絡實現邏輯表達式?blog
(五)、分類問題(Classification)get
本章主要圍繞神經網絡的建模及其線性表示(即neural networks的representation)作以初步瞭解,在下一章中將會有更詳細的神經網絡如何學習方面的知識。input
===============================
(一)、爲何引入神經網絡?——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,表示當前類。
===============================
小結
本章引入了ML中神經網絡的概念,主要講述瞭如何利用神經網絡的construction及如何進行邏輯表達function的構造,在下一章中咱們將針對神經網絡的學習過程進行更詳細的講述。