原文http://blog.csdn.net/abcjennifer/article/details/7749309
本欄目(Machine learning)包括單參數(shù)的線性回歸、多參數(shù)的線性回歸、Octave Tutorial、Logistic Regression、Regularization、神經(jīng)網(wǎng)絡(luò)、機(jī)器學(xué)習(xí)系統(tǒng)設(shè)計(jì)、SVM(Support Vector Machines 支持向量機(jī))、聚類、降維、異常檢測(cè)、大規(guī)模機(jī)器學(xué)習(xí)等章節(jié)。所有內(nèi)容均來(lái)自Standford公開課machine learning中Andrew老師的講解。(https://class.coursera.org/ml/class/index)
第四講——Neural Networks 神經(jīng)網(wǎng)絡(luò)的表示
===============================
(一)、為什么引入神經(jīng)網(wǎng)絡(luò)?——Nonlinear hypothesis
(二)、神經(jīng)元與大腦(Neurons and Brain)
(三)、神經(jīng)網(wǎng)絡(luò)的表示形式
(四)、怎樣用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)邏輯表達(dá)式?
(五)、分類問(wèn)題(Classification)
本章主要圍繞神經(jīng)網(wǎng)絡(luò)的建模及其線性表示(即neural networks的representation)做以初步了解,在下一章中將會(huì)有更詳細(xì)的神經(jīng)網(wǎng)絡(luò)如何學(xué)習(xí)方面的知識(shí)。
===============================
(一)、為什么引入神經(jīng)網(wǎng)絡(luò)?——Nonlinear hypothesis
之前我們討論的ML問(wèn)題中,主要針對(duì)Regression做了分析,其中采用梯度下降法進(jìn)行參數(shù)更新。然而其可行性基于假設(shè)參數(shù)不多,如果參數(shù)多起來(lái)了怎么辦呢?比如下圖中這個(gè)例子:從100*100個(gè)pixels中選出所有XiXj作為logistic regression的一個(gè)參數(shù),那么總共就有5*10^7個(gè)feature,即x有這么多維。

所以引入了Nonlinear hypothesis,應(yīng)對(duì)高維數(shù)據(jù)和非線性的hypothesis(如下圖所示):

===============================
(二)、神經(jīng)元與大腦(neurons and brain)
神經(jīng)元工作模式:

神經(jīng)網(wǎng)絡(luò)的邏輯單元:輸入向量x(input layer),中間層a(2,i)(hidden layer), 輸出層h(x)(output layer)。
其中,中間層的a(2,i)中的2表示第二個(gè)級(jí)別(第一個(gè)級(jí)別是輸入層),i表示中間層的第幾個(gè)元素?;蛘呖梢哉f(shuō),a(j,i) is the activation of unit i in layer j.

===============================
(三)、神經(jīng)網(wǎng)絡(luò)的表示形式

從圖中可知,中間層a(2,j)是輸入層線性組合的sigmod值,輸出又是中間層線性組合的sigmod值。
下面我們進(jìn)行神經(jīng)網(wǎng)絡(luò)參數(shù)計(jì)算的向量化:
令z(2)表示中間層,x表示輸入層,則有
,

z(2)=Θ(1)x
a(2)=g(z(2))
或者可以將x表示成a(1),那么對(duì)于輸入層a(1)有[x0~x3]4個(gè)元素,中間層a(2)有[a(2)0~a(2)3]4個(gè)元素(其中令a(2)0=1),則有
h(x)= a(3)=g(z(3))
z(3)=Θ(2)a(2)
通過(guò)以上這種神經(jīng)元的傳遞方式(input->activation->output)來(lái)計(jì)算h(x), 叫做Forward propagation, 向前傳遞。
這里我們可以發(fā)現(xiàn),其實(shí)神經(jīng)網(wǎng)絡(luò)就像是logistic regression,只不過(guò)我們把logistic regression中的輸入向量[x1~x3]變成了中間層的[a(2)1~a(2)3], 即
h(x)=g(Θ(2)0a(2)0+Θ(2)1a(2)1+Θ(2)2a(2)2+Θ(2)3a(2)3)
而中間層又由真正的輸入向量通過(guò)Θ(1)學(xué)習(xí)而來(lái),這里呢,就解放了輸入層,換言之輸入層可以是original input data的任何線性組合甚至是多項(xiàng)式組合如set x1*x2 as original x1...另外呢,具體怎樣利用中間層進(jìn)行更新下面會(huì)更詳細(xì)地講;此外,還有一些其他模型,比如:

===============================
(四)、怎樣用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)邏輯表達(dá)式?
神經(jīng)網(wǎng)路中,單層神經(jīng)元(無(wú)中間層)的計(jì)算可用來(lái)表示邏輯運(yùn)算,比如邏輯AND、邏輯或OR
舉例說(shuō)明:邏輯與AND;下圖中左半部分是神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)與output層表達(dá)式,右邊上部分是sigmod函數(shù),下半部分是真值表。

給定神經(jīng)網(wǎng)絡(luò)的權(quán)值就可以根據(jù)真值表判斷該函數(shù)的作用。再給出一個(gè)邏輯或的例子,如下圖所示:

以上兩個(gè)例子只是單層傳遞,下面我們?cè)俳o出一個(gè)更復(fù)雜的例子,用來(lái)實(shí)現(xiàn)邏輯表達(dá)< x1 XNOR x2 >, 即邏輯同或關(guān)系,它由前面幾個(gè)例子共同實(shí)現(xiàn):

將AND、NOT AND和 OR分別放在下圖中輸入層和輸出層的位置,即可得到x1 XNOR x2,道理顯而易見:
a21= x1 && x2
a22= (﹁x1)&&(﹁x2)
a31=a21||a21=(x1 && x2)?||??(﹁x1)&&(﹁x2) = x1 XNOR x2;

應(yīng)用:手寫識(shí)別系統(tǒng)

===============================
(五)、分類問(wèn)題(Classification)
記得上一章中我們講過(guò)的one-vs-all分類問(wèn)題么?one-vs-all方法是把二類分類問(wèn)題到多類分類的一個(gè)推廣,在這里,我們就講述如何用神經(jīng)網(wǎng)絡(luò)進(jìn)行分類。網(wǎng)絡(luò)設(shè)計(jì)如下圖所示:

輸入向量x有三個(gè)維度,兩個(gè)中間層,輸出層4個(gè)神經(jīng)元分別用來(lái)表示4類,也就是每一個(gè)數(shù)據(jù)在輸出層都會(huì)出現(xiàn)[a b c d]T,且a,b,c,d中僅有一個(gè)為1,表示當(dāng)前類。

===============================
小結(jié)
本章引入了ML中神經(jīng)網(wǎng)絡(luò)的概念,主要講述了如何利用神經(jīng)網(wǎng)絡(luò)的construction及如何進(jìn)行邏輯表達(dá)function的構(gòu)造,在下一章中我們將針對(duì)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過(guò)程進(jìn)行更詳細(xì)的講述。