斯坦福大学机器学习第八课“神经网络的表示(Neural Networks: Representation)”
斯坦福大學(xué)機器學(xué)習(xí)第八課“神經(jīng)網(wǎng)絡(luò)的表示(Neural Networks: Representation)”
斯坦福大學(xué)機器學(xué)習(xí)第八課“神經(jīng)網(wǎng)絡(luò)的表示(Neural Networks: Representation)”學(xué)習(xí)筆記,本次課程主要包括7部分:
1)? Non-linear hypotheses (非線性hypotheses)
2)? Neurons and the brain (神經(jīng)元和大腦)
3)? Model representation I (模型表示一)
4)? Model representation II (模型表示二)
5)? Examples and intuitions I (例子和直觀解釋一)
6)? Examples and intuitions II (例子和直觀解釋二)
7)? Multi-class classification (多類分類問題)
以下是每一部分的詳細(xì)解讀。
1)? Non-linear hypotheses (非線性hypotheses)
非線性分類器:
我們之前談過線性回歸,邏輯回歸,當(dāng)我們遇到一些比較復(fù)雜的分類問題時,是否還有其他選擇?例如,對于多項式回歸:
可以得到如下的非線性分類器:
假設(shè)這是一個房價預(yù)測問題,不過這一次不再是預(yù)測房價(回歸問題),而是預(yù)測未來6個月是否能售出(分類問題)。如果有100個獨立特征,例如:
那么,當(dāng)我們?nèi)稳蓚€特征作為組合特征時,大約可以得到5000個特征(O(n2));當(dāng)我們?nèi)稳?個特征作為組合特征時,大約可以得到170000(O(n3))個特征.
這樣的問題還有很多,例如在計算機視覺的汽車檢測問題中,對于一副汽車圖片來說,你可以輕易的辨別出這是一輛汽車,但是在計算機或者相機“眼里”,這只是一堆像素的數(shù)字矩陣而已:
所以,對于汽車檢測問題,我們需要一堆汽車圖片:
和一堆非汽車圖片作為訓(xùn)練集:
訓(xùn)練一個用于汽車檢測的分類器,對于一個測試圖片,判斷是否是汽車:
一種方法是從每輛汽車是取兩個像素點作為樣本的特征,然后通過學(xué)習(xí)算法來訓(xùn)練分類器:
那么這些正負(fù)例(汽車 or 非汽車)訓(xùn)練樣本可以用圖形表示如下:
假設(shè)每幅圖片有50 * 50 = 2500個像素,那么每個樣本有2500個像素點可以選擇,如果是是二次項組合特征,大約有3百萬個特征組合:
對于這樣的有著大量特征的分類問題,除了邏輯回歸,是否還有其他的學(xué)習(xí)算法?接下來,我們將引入神經(jīng)網(wǎng)絡(luò)(Neural Networks),一種試圖模擬人類大腦的學(xué)習(xí)算法,這個算法,對于復(fù)雜的假設(shè)空間和復(fù)雜的非線性問題有很好的學(xué)習(xí)能力。
2)? Neurons and the brain (神經(jīng)元和大腦)
神經(jīng)網(wǎng)絡(luò):
- 起源于嘗試讓機器模仿大腦的算法;
- 在80年代和90年代早期非常流行,慢慢在90年代后期衰落;
- 最近得益于計算機硬件能力,又開始流行起來:對于很多應(yīng)用,神經(jīng)網(wǎng)絡(luò)算法是一種“時髦”的技術(shù);
大腦很神奇,可以讓我們?nèi)ヂ?#xff0c;去看,去觸,也可以做數(shù)學(xué)題,做微積分,做很多神奇的事情,要模仿大腦,似乎需要我們寫很多程序來做不同的事情?但是恰恰與此相反,做這些事情僅僅需要一個學(xué)習(xí)算法。下面是兩個例子,是神經(jīng)科學(xué)家做的非常酷的兩個實驗,這些實驗可以說明我們僅需一種學(xué)習(xí)算法就可以模擬很多事情。
聽覺皮層實驗:
上圖是大腦的一部分,紅色的部分是聽覺皮層,用來處理耳朵收集的聲音信號并讓大腦理解。神經(jīng)科學(xué)家做了一個實驗,切斷耳朵和聽覺皮層的聯(lián)系,并且連接眼睛和聽覺皮層,這樣從眼睛采集的信號不再傳送到視神經(jīng)而是聽覺皮層,這樣做得最終結(jié)果是聽覺皮層將會學(xué)習(xí)“看”。
體感皮層實驗:
上圖的紅色區(qū)域是體感皮層,主要身體的觸覺,與聽覺皮層實驗相似,如果我們做相似的實驗,那么體感皮層也將學(xué)會”看“。
上述兩個實驗統(tǒng)稱為神經(jīng)重布線實驗(neuro-rewiring experiments), 這些實驗給我們的感覺就是同樣的一塊兒腦組織既可以處理視覺,也可以處理聽覺,還可以處理觸覺,也許就存在一種學(xué)習(xí)算法來處理視覺信號,聽覺信號和觸覺信號。如果我們能近似模擬或?qū)崿F(xiàn)大腦的這種學(xué)習(xí)算法,我們就能獲得絕大部分大腦可以完成的功能,因為大腦可以自己去處理不同類型的數(shù)據(jù)。以下是一些模擬大腦傳感器的例子:
包括:用舌頭去“看”;回聲定位或者聲納定位;觸覺皮帶-方向感(向小鳥一樣感知方向);給青蛙植入第三只眼。
這些都是很酷的例子,也許人類的AI之夢并不遙遠(yuǎn)了!
3)? Model representation I (模型表示一)
大腦中的神經(jīng)元:
神經(jīng)網(wǎng)絡(luò)的目標(biāo)就是模擬大腦中的神經(jīng)元或網(wǎng)絡(luò),因此在介紹hypotheses的表示之前,先讓我們來看一看大腦中神經(jīng)元:
注:關(guān)于這一塊兒,由于不太熟悉,即使聽Andrew Ng 老師的課也有很多糊涂的地方,于是Google了一下神經(jīng)網(wǎng)絡(luò),發(fā)現(xiàn)了一個非常不錯的介紹神經(jīng)網(wǎng)絡(luò)的材料《神經(jīng)網(wǎng)絡(luò)入門(連載)》,以下轉(zhuǎn)載自該連載中對于大腦中的神經(jīng)元的描述,我覺得非常清楚:
在人的生命的最初9個月內(nèi),這些細(xì)胞以每分鐘25,000個的驚人速度被創(chuàng)建出來。神經(jīng)細(xì)胞和人身上任何其他類型細(xì)胞十分不同,每個神經(jīng)細(xì)胞都長著一根像 電線一樣的稱為軸突(axon)的東西,它的長度有時伸展到幾厘米[譯注],用來將信號傳遞給其他的神經(jīng)細(xì)胞。神經(jīng)細(xì)胞的結(jié)構(gòu)如圖1 所示。它由一個細(xì)胞體(soma)、一些樹突(dendrite) 、和一根可以很長的軸突組成。神經(jīng)細(xì)胞體是一顆星狀球形物,里面有一個核(nucleus)。樹突由細(xì)胞體向各個方向長出,本身可有分支,是用來接收信號 的。軸突也有許多的分支。軸突通過分支的末梢(terminal)和其他神經(jīng)細(xì)胞的樹突相接觸,形成所謂的突觸(Synapse,圖中未畫出),一個神經(jīng) 細(xì)胞通過軸突和突觸把產(chǎn)生的信號送到其他的神經(jīng)細(xì)胞。
每個神經(jīng)細(xì)胞通過它的樹突和大約10,000個其他的神經(jīng)細(xì)胞相連。這就使得你的頭腦中所有神經(jīng)細(xì)胞之間連接總計可能有l(wèi),000,000,000,000,000個。這比100兆個現(xiàn)代電話交換機的連線數(shù)目還多。所以毫不奇怪為什么我們有時會產(chǎn)生頭疼毛病!
神經(jīng)細(xì)胞利用電-化學(xué)過程交換信號。輸入信號來自另一些神經(jīng)細(xì)胞。這些神經(jīng)細(xì)胞的軸突末梢(也就是終端)和本神經(jīng)細(xì)胞的樹突相遇形成突觸 (synapse),信號就從樹突上的突觸進(jìn)入本細(xì)胞。信號在大腦中實際怎樣傳輸是一個相當(dāng)復(fù)雜的過程,但就我們而言,重要的是把它看成和現(xiàn)代的計算機一 樣,利用一系列的0和1來進(jìn)行操作。就是說,大腦的神經(jīng)細(xì)胞也只有兩種狀態(tài):興奮(fire)和不興奮(即抑制)。發(fā)射信號的強度不變,變化的僅僅是頻 率。神經(jīng)細(xì)胞利用一種我們還不知道的方法,把所有從樹突上突觸進(jìn)來的信號進(jìn)行相加,如果全部信號的總和超過某個閥值,就會激發(fā)神經(jīng)細(xì)胞進(jìn)入興奮 (fire)狀態(tài),這時就會有一個電信號通過軸突發(fā)送出去給其他神經(jīng)細(xì)胞。如果信號總和沒有達(dá)到閥值,神經(jīng)細(xì)胞就不會興奮起來。這樣的解釋有點過分簡單 化,但已能滿足我們的目的。
注意對于我們的這幅圖來說,比較關(guān)鍵的是樹突(dendrite)是輸入(input wires),軸突(axon)是輸出(output wires).
現(xiàn)在我們模擬大腦中的神經(jīng)元結(jié)構(gòu)建立一個簡單的模型-Logistic unit:
其中x1,x2,x3稱為輸入(來自與其他神經(jīng)元的輸入信號),x0稱為偏置單元(bias unit), θ稱為權(quán)重或參數(shù),hθ(x)稱為激活函數(shù)(activation function), 這里的激活函數(shù)用了sigmoid(logistic) function:
g(z)=11+e?z
將多個神經(jīng)元組織在一起,我們就有了神經(jīng)網(wǎng)絡(luò),例如如下的三層結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò):
第一層稱為輸入層,第二層是隱藏層,第三層是輸出層,注意輸入層和隱藏層都存在一個偏置(bias unit). 其中:
aji = j層第i個單元的激活函數(shù)
Θ(j) = 從第j層映射到第j+1層的控制函數(shù)的權(quán)重矩陣
對于上圖,我們有如下的公式表示:
如果神經(jīng)網(wǎng)絡(luò)在第j層有sj個單元,在第j+1層有sj+1個單元,那么權(quán)重矩陣Θ(j)的緯度是sj+1×(sj+1)
4)? Model representation II (模型表示二)
前饋網(wǎng)絡(luò):向量化實現(xiàn)
上一節(jié)我們講到的神經(jīng)網(wǎng)絡(luò)稱為前饋網(wǎng)絡(luò),也稱前向網(wǎng)絡(luò),這種網(wǎng)絡(luò)只在訓(xùn)練過程會有反饋信號,而在分類過程中數(shù)據(jù)只能向前傳送,直到到達(dá)輸出層,層間沒有向后的反饋信號,因此被稱為前饋網(wǎng)絡(luò)。感知機( perceptron)與BP神經(jīng)網(wǎng)絡(luò)就屬于前饋網(wǎng)絡(luò)。我們已經(jīng)給出了這個神經(jīng)網(wǎng)絡(luò)的模型表示,但是不夠簡潔,下面我們來向量化這個模型(具體的過程推薦看視頻,以下僅給出總結(jié)):
其他的網(wǎng)絡(luò)結(jié)構(gòu):
除了上述的前饋網(wǎng)絡(luò)外,神經(jīng)網(wǎng)絡(luò)還有其他的一些網(wǎng)絡(luò)結(jié)構(gòu),譬如:
其中第一層仍是輸入層,最后一層第四層數(shù)輸出層,中間兩層是隱藏層。
5)? Examples and intuitions I (例子和直觀解釋一)
本節(jié)和下一節(jié)的例子均是“邏輯代數(shù)”中的邏輯函數(shù),因此有必要在這里交代一點邏輯代數(shù)的背景,以下文字摘錄自清華大學(xué)出版社的《電子技術(shù)基礎(chǔ)》6.2節(jié),電子書鏈接來自Google book,同時會在例子的介紹中引用該書中的一些基本定義:
邏輯代數(shù)是描述客觀事物邏輯關(guān)系的數(shù)學(xué)方法,它首先是由英國數(shù)學(xué)家喬治*布爾提出,因此也稱為布爾代數(shù),而后克勞德*香農(nóng)將邏輯代數(shù)應(yīng)用到繼電器開關(guān)電路的設(shè)計中,所以又稱為開關(guān)代數(shù)。和普通代數(shù)一樣,在邏輯代數(shù)中用字母表示變量與函數(shù),但變量與函數(shù)的取值只有0和1兩種可能。這里的0和1已不再表示數(shù)量的大小,只代表兩種不同的邏輯狀態(tài)。我們把這種二值變量稱為邏輯變量,簡稱為變量,這種二值函數(shù)稱為邏輯函數(shù),簡稱為函數(shù)。
非線性分類器例子-異或(XOR)/同或(XNOR)
我們的目標(biāo)是利用神經(jīng)網(wǎng)絡(luò)實現(xiàn)一個邏輯代數(shù)中的同或運算,因此首先介紹一下同或運算和異或運算:
同或邏輯和異或邏輯是只有兩個邏輯變量的邏輯函數(shù)。如果當(dāng)兩個邏輯變量A和B相同時,邏輯函數(shù)F等于1,否則F等于0,這種邏輯關(guān)系稱為同或。反之,如果當(dāng)兩個邏輯變量A和B相異時,邏輯函數(shù)F等于1,否則F等于0,這種邏輯關(guān)系稱為異或。
下圖是一個同或預(yù)算的示例,其中x1,x2是二值變量(0, 1):
可以將其對應(yīng)到一個非線性分類器,如下圖所示:
同或邏輯和異或邏輯互補:
同或運算和異或運算是邏輯代數(shù)中的復(fù)合運算,因此下面我們先介紹三種最基本的邏輯運算(與邏輯運算、或邏輯運算、非邏輯運算),同時分別介紹其對應(yīng)的神經(jīng)網(wǎng)絡(luò)實現(xiàn),最后將這幾種基本的邏輯運算組合,形成最終的同或邏輯運算的神經(jīng)網(wǎng)絡(luò)。
與(AND)邏輯運算示例:
相信大家對于與(AND)運算很熟悉,其基本的表達(dá)式如下:
我們可以用一個簡單的神經(jīng)網(wǎng)絡(luò)(一個神經(jīng)元)表示與邏輯運算:
其中激活函數(shù)hΘ(x)可以用如下公式表示:
這里的激活函數(shù)是sigmoid(logistic) function,其圖形表示如下:
對于g(z)來說,當(dāng)z>=4.0時,g(z)約等于1;當(dāng)z<=-4.0時,g(z)約等于-1. 對于上述激活函數(shù),將二值(0, 1)變量x1,x2代入,我們得到如下的對應(yīng)表:
可以看出,這里的神經(jīng)網(wǎng)絡(luò)激活函數(shù)hΘ(x)近似等于與邏輯運算。
或(OR)邏輯運算示例:
同理,我們也給出一個簡單的神經(jīng)網(wǎng)絡(luò)模型來模擬或(OR)邏輯運算:
將二值(0, 1)變量x1,x2代入,得到如下的或邏輯運算對應(yīng)表:
6)? Examples and intuitions II (例子和直觀解釋二)
繼續(xù)上一節(jié)的例子,我們介紹第三個基本的邏輯運算:非(NOT)邏輯運算
用一個簡單的神經(jīng)網(wǎng)絡(luò)模型來模擬非(NOT)邏輯運算:
得到的對應(yīng)表如下:
非邏輯運算僅針對一個輸入值,我們來表示一個略微復(fù)雜的邏輯表達(dá)式:
這個表達(dá)式等于1的前提是”當(dāng)且僅當(dāng)x1=x2=0″.
可以用神經(jīng)網(wǎng)絡(luò)模擬如下:
好了,有了上述三個基本邏輯運算的基礎(chǔ)和相關(guān)的神經(jīng)網(wǎng)絡(luò)模型表示,我們可以將其組合為一個略微復(fù)雜的”同或(XNOR)邏輯運算的神經(jīng)網(wǎng)絡(luò)“:
對于這個神經(jīng)網(wǎng)絡(luò),這里稍作一點解釋,同或運算的表達(dá)式如下:
F=A⊙B=AB+AˉˉˉBˉˉˉ
上圖中第二層隱藏網(wǎng)絡(luò)a1和a2分別代表了A And B和Not A And Not B,a1和a2又做了一次或邏輯運算就得到了同或邏輯運算。該神經(jīng)網(wǎng)絡(luò)對應(yīng)的輸出與同或運算的真值表相同:
第6節(jié)的手寫數(shù)字識別(分類)的演示請讀者自行觀看視頻,此處略。
7)? Multi-class classification (多類分類問題)
在邏輯回歸的筆記中,我們談到了多類分類問題,而神經(jīng)網(wǎng)絡(luò)同樣可以應(yīng)用于多類分類問題,只不過在表達(dá)上略有區(qū)別。首先來看一個機器視覺中分類的例子:
對于一個輸入圖片,需要識別其屬于行人、轎車、摩托車或者卡車中的一個類型,這是一個多類分類的問題。用神經(jīng)網(wǎng)絡(luò)表示如下:
其中輸出hΘ(x)是一個4維向量,如下表示:
當(dāng)向量的某個元素為1,其他為0時,代表分類結(jié)果為某個為1元素所對應(yīng)的類別。這與之前邏輯回歸中的多類分類表示不同,在邏輯回歸中,輸出y屬于類似于{1, 2, 3,4}中的某個值,而非一個向量。因此,如果要訓(xùn)練一個多類分類問題的神經(jīng)網(wǎng)絡(luò)模型,訓(xùn)練集是這樣的:
特別注意y(i)是一個向量。
本章到此結(jié)束,下一講將會將神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)問題。轉(zhuǎn)載請注明出處”我愛公開課”,謝謝。
參考資料:
第八課“神經(jīng)網(wǎng)絡(luò)的表示”的課件資料下載鏈接,視頻可以在Coursera機器學(xué)習(xí)課程上觀看或下載:https://class.coursera.org/ml PPT??PDFhttp://en.wikipedia.org/wiki/Neural_network
http://en.wikipedia.org/wiki/Artificial_neural_network
神經(jīng)網(wǎng)絡(luò)編程入門
神經(jīng)網(wǎng)絡(luò)入門連載
http://library.thinkquest.org/29483/neural_index.shtml
http://home.agh.edu.pl/~vlsi/AI/xor_t/en/main.htm
http://en.wikipedia.org/wiki/NOR_logic
http://en.wikipedia.org/wiki/Logic_gate
清華大學(xué)出版社的《電子技術(shù)基礎(chǔ)》,google book
出處:http://www.52nlp.cn/%E6%96%AF%E5%9D%A6%E7%A6%8F%E5%A4%A7%E5%AD%A6%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AC%AC%E5%85%AB%E8%AF%BE%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E7%9A%84%E8%A1%A8%E7%A4%BAneural-networks-re
總結(jié)
以上是生活随笔為你收集整理的斯坦福大学机器学习第八课“神经网络的表示(Neural Networks: Representation)”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Coursera公开课笔记: 斯坦福大学
- 下一篇: 斯坦福大学机器学习第十课“应用机器学习的