斯坦福大學機器學習第六課“神經網絡的表示(Neural Networks: Representation)”

斯坦福大學機器學習第六課“神經網絡的表示(Neural Networks: Representation)”

本次課程主要包括7部分:

1)  Non-linear hypotheses (非線性hypotheses)

2)  Neurons and the brain (神經元和大腦)

3)  Model representation I (模型表示一)

4)  Model representation II (模型表示二)

5)  Examples and intuitions I (例子和直觀解釋一)

6)  Examples and intuitions II (例子和直觀解釋二)

7)  Multi-class classification (多類分類問題)

以下是每一部分的詳細解讀。

 

1)  Non-linear hypotheses (非線性hypotheses)

非線性分類器:

我們之前談過線性迴歸,邏輯迴歸,當我們遇到一些比較複雜的分類問題時,是否還有其他選擇?例如,對於多項式迴歸:

多項式迴歸-我愛公開課-52opencourse.com

可以得到如下的非線性分類器:

非線性分類-我愛公開課-52opencourse.com


假設這是一個房價預測問題,不過這一次不再是預測房價(迴歸問題),而是預測未來6個月是否能售出(分類問題)。如果有100個獨立特徵,例如:

房價問題特徵-我愛公開課——52opecourse.com

那麼,當我們任取兩個特徵作爲組合特徵時,大約可以得到5000個特徵(O(n^2));當我們任取3個特徵作爲組合特徵時,大約可以得到170000(O(n^3))個特徵.

這樣的問題還有很多,例如在計算機視覺的汽車檢測問題中,對於一副汽車圖片來說,你可以輕易的辨別出這是一輛汽車,但是在計算機或者相機“眼裏”,這只是一堆像素的數字矩陣而已:

計算機視覺汽車檢測-我愛公開課-52opencourse.com

所以,對於汽車檢測問題,我們需要一堆汽車圖片:

汽車圖片訓練集-我愛公開課——52opencourse.com

和一堆非汽車圖片作爲訓練集:

非汽車圖片訓練集-我愛公開課-52opencourse.com

訓練一個用於汽車檢測的分類器,對於一個測試圖片,判斷是否是汽車:

汽車檢測測試-我愛公開課-52opencourse.com

一種方法是從每輛汽車是取兩個像素點作爲樣本的特徵,然後通過學習算法來訓練分類器:

訓練樣本-我愛公開課-52opencourse.com

那麼這些正負例(汽車 or 非汽車)訓練樣本可以用圖形表示如下:

正負例樣本-我愛公開課——52opencourse.com

假設每幅圖片有50 * 50 = 2500個像素,那麼每個樣本有2500個像素點可以選擇,如果是是二次項組合特徵,大約有3百萬個特徵組合:

正負例樣本—我愛公開課-52opencourse.com

對於這樣的有着大量特徵的分類問題,除了邏輯迴歸,是否還有其他的學習算法?接下來,我們將引入神經網絡(Neural Networks),一種試圖模擬人類大腦的學習算法,這個算法,對於複雜的假設空間和複雜的非線性問題有很好的學習能力。

 

2)  Neurons and the brain (神經元和大腦)

神經網絡:

  • 起源於嘗試讓機器模仿大腦的算法;
  • 在80年代和90年代早期非常流行,慢慢在90年代後期衰落;
  • 最近得益於計算機硬件能力,又開始流行起來:對於很多應用,神經網絡算法是一種“時髦”的技術;

大腦很神奇,可以讓我們去聽,去看,去觸,也可以做數學題,做微積分,做很多神奇的事情,要模仿大腦,似乎需要我們寫很多程序來做不同的事情?但是恰恰與此相反,做這些事情僅僅需要一個學習算法。下面是兩個例子,是神經科學家做的非常酷的兩個實驗,這些實驗可以說明我們僅需一種學習算法就可以模擬很多事情。

聽覺皮層實驗:

聽覺皮層實驗-我愛公開課-52opencourse.com

上圖是大腦的一部分,紅色的部分是聽覺皮層,用來處理耳朵收集的聲音信號並讓大腦理解。神經科學家做了一個實驗,切斷耳朵和聽覺皮層的聯繫,並且連接眼睛和聽覺皮層,這樣從眼睛採集的信號不再傳送到視神經而是聽覺皮層,這樣做得最終結果是聽覺皮層將會學習“看"。

體感皮層實驗:

體感皮層實驗-我愛公開課-52opencourse.com

上圖的紅色區域是體感皮層,主要身體的觸覺,與聽覺皮層實驗相似,如果我們做相似的實驗,那麼體感皮層也將學會”看“。

上述兩個實驗統稱爲神經重佈線實驗(neuro-rewiring experiments), 這些實驗給我們的感覺就是同樣的一塊兒腦組織既可以處理視覺,也可以處理聽覺,還可以處理觸覺,也許就存在一種學習算法來處理視覺信號,聽覺信號和觸覺信號。如果我們能近似模擬或實現大腦的這種學習算法,我們就能獲得絕大部分大腦可以完成的功能,因爲大腦可以自己去處理不同類型的數據。以下是一些模擬大腦傳感器的例子:

大腦傳感器-我愛公開課—52opencourse.com

包括:用舌頭去“看”;回聲定位或者聲納定位;觸覺皮帶-方向感(向小鳥一樣感知方向);給青蛙植入第三隻眼。

這些都是很酷的例子,也許人類的AI之夢並不遙遠了!

 

3)  Model representation I (模型表示一)

大腦中的神經元:

神經網絡的目標就是模擬大腦中的神經元或網絡,因此在介紹hypotheses的表示之前,先讓我們來看一看大腦中神經元:

大腦中的神經元-我愛公開課-52opencourse.com

注:關於這一塊兒,由於不太熟悉,即使聽Andrew Ng 老師的課也有很多糊塗的地方,於是Google了一下神經網絡,發現了一個非常不錯的介紹神經網絡的材料《神經網絡入門(連載)》,以下轉載自該連載中對於大腦中的神經元的描述,我覺得非常清楚:

在人的生命的最初9個月內,這些細胞以每分鐘25,000個的驚人速度被創建出來。神經細胞和人身上任何其他類型細胞十分不同,每個神經細胞都長着一根像 電線一樣的稱爲軸突(axon)的東西,它的長度有時伸展到幾釐米[譯註],用來將信號傳遞給其他的神經細胞。神經細胞的結構如圖1 所示。它由一個細胞體(soma)、一些樹突(dendrite) 、和一根可以很長的軸突組成。神經細胞體是一顆星狀球形物,裏面有一個核(nucleus)。樹突由細胞體向各個方向長出,本身可有分支,是用來接收信號的。軸突也有許多的分支。軸突通過分支的末梢(terminal)和其他神經細胞的樹突相接觸,形成所謂的突觸(Synapse,圖中未畫出),一個神經 細胞通過軸突和突觸把產生的信號送到其他的神經細胞。

每個神經細胞通過它的樹突和大約10,000個其他的神經細胞相連。這就使得你的頭腦中所有神經細胞之間連接總計可能有l,000,000,000,000,000個。這比100兆個現代電話交換機的連線數目還多。所以毫不奇怪爲什麼我們有時會產生頭疼毛病!

神經細胞利用電-化學過程交換信號。輸入信號來自另一些神經細胞。這些神經細胞的軸突末梢(也就是終端)和本神經細胞的樹突相遇形成突觸 (synapse),信號就從樹突上的突觸進入本細胞。信號在大腦中實際怎樣傳輸是一個相當複雜的過程,但就我們而言,重要的是把它看成和現代的計算機一 樣,利用一系列的0和1來進行操作。就是說,大腦的神經細胞也只有兩種狀態:興奮(fire)和不興奮(即抑制)。發射信號的強度不變,變化的僅僅是頻 率。神經細胞利用一種我們還不知道的方法,把所有從樹突上突觸進來的信號進行相加,如果全部信號的總和超過某個閥值,就會激發神經細胞進入興奮 (fire)狀態,這時就會有一個電信號通過軸突發送出去給其他神經細胞。如果信號總和沒有達到閥值,神經細胞就不會興奮起來。這樣的解釋有點過分簡單 化,但已能滿足我們的目的。

注意對於我們的這幅圖來說,比較關鍵的是樹突(dendrite)是輸入(input wires),軸突(axon)是輸出(output wires).

現在我們模擬大腦中的神經元結構建立一個簡單的模型-Logistic unit:
神經元模型-我愛公開課-52opencourse.com

其中(x1, x2, x3)稱爲輸入(來自與其他神經元的輸入信號),x0稱爲偏置單元(bias unit), (theta)稱爲權重或參數, (h_theta(x))稱爲激活函數(activation function), 這裏的激活函數用了sigmoid(logistic) function:

[g(z) = 1/(1+e^{-z})]

將多個神經元組織在一起,我們就有了神經網絡,例如如下的三層結構的神經網絡

神經網絡模型-我愛公開課-52opencourse.com

image

第一層稱爲輸入層,第二層是隱藏層,第三層是輸出層,注意輸入層和隱藏層都存在一個偏置(bias unit). 其中:

(a^{j}_i) = j層第i個單元的激活函數

(Theta^(j)) = 從第j層映射到第j+1層的控制函數的權重矩陣

對於上圖,我們有如下的公式表示:

神經網絡數學表示-我愛公開課-52opencourse.com

如果神經網絡在第j層有s(j)個單元,在第j+1層有s(j+1)個單元,那麼權重矩陣\(\Theta^{(j)}\)的緯度是\(s_{j+1} \times (s_j + 1)\)

 

4)  Model representation II (模型表示二)

前饋網絡:向量化實現

上一節我們講到的神經網絡稱爲前饋網絡,也稱前向網絡,這種網絡只在訓練過程會有反饋信號,而在分類過程中數據只能向前傳送,直到到達輸出層,層間沒有向後的反饋信號,因此被稱爲前饋網絡。感知機( perceptron)與BP神經網絡就屬於前饋網絡。我們已經給出了這個神經網絡的模型表示,但是不夠簡潔,下面我們來向量化這個模型(具體的過程推薦看視頻,以下僅給出總結):

前饋網絡向量化實現-我愛公開課-52opencourse.com

其他的網絡結構:

除了上述的前饋網絡外,神經網絡還有其他的一些網絡結構,譬如:
神經網絡其他結構-我愛公開課-52opencourse.com

其中第一層仍是輸入層,最後一層第四層數輸出層,中間兩層是隱藏層。

 

5)  Examples and intuitions I (例子和直觀解釋一)

本節和下一節的例子均是“邏輯代數”中的邏輯函數,因此有必要在這裏交代一點邏輯代數的背景,以下文字摘錄自清華大學出版社的《電子技術基礎》6.2節,電子書鏈接來自Google book,同時會在例子的介紹中引用該書中的一些基本定義:

邏輯代數是描述客觀事物邏輯關係的數學方法,它首先是由英國數學家喬治*布爾提出,因此也稱爲布爾代數,而後克勞德*香農將邏輯代數應用到繼電器開關電路的設計中,所以又稱爲開關代數。和普通代數一樣,在邏輯代數中用字母表示變量與函數,但變量與函數的取值只有0和1兩種可能。這裏的0和1已不再表示數量的大小,只代表兩種不同的邏輯狀態。我們把這種二值變量稱爲邏輯變量,簡稱爲變量,這種二值函數稱爲邏輯函數,簡稱爲函數。

非線性分類器例子-異或(XOR)/同或(XNOR)

我們的目標是利用神經網絡實現一個邏輯代數中的同或運算,因此首先介紹一下同或運算和異或運算:

同或邏輯和異或邏輯是隻有兩個邏輯變量的邏輯函數。如果當兩個邏輯變量A和B相同時,邏輯函數F等於1,否則F等於0,這種邏輯關係稱爲同或。反之,如果當兩個邏輯變量A和B相異時,邏輯函數F等於1,否則F等於0,這種邏輯關係稱爲異或。

下圖是一個同或預算的示例,其中\(x_1, x_2\)是二值變量(0, 1):

神經網絡同或運算-我愛公開課-52opencouse.com

可以將其對應到一個非線性分類器,如下圖所示:

同或邏輯非線性分類器-我愛公開課-52opencourse.com

同或邏輯和異或邏輯互補:

同或運算and異或運算-我愛公開課-52opencourse.com

同或運算和異或運算是邏輯代數中的複合運算,因此下面我們先介紹三種最基本的邏輯運算(與邏輯運算、或邏輯運算、非邏輯運算),同時分別介紹其對應的神經網絡實現,最後將這幾種基本的邏輯運算組合,形成最終的同或邏輯運算的神經網絡。

與(AND)邏輯運算示例:

相信大家對於與(AND)運算很熟悉,其基本的表達式如下:

與邏輯運算表達式-我愛公開課-52oencourse.com

我們可以用一個簡單的神經網絡(一個神經元)表示與邏輯運算:

與邏輯運算神經元模型-我愛公開課-52opencourse.com

其中激活函數\(h_\Theta(x)\)可以用如下公式表示:
與邏輯運算神經網絡hypothese表達式——我愛公開課-52opencourse.com

這裏的激活函數是sigmoid(logistic) function,其圖形表示如下:

激活函數-gmoid function-我愛公開課——52opencourse.com

對於g(z)來說,當z>=4.0時,g(z)約等於1;當z<=-4.0時,g(z)約等於-1. 對於上述激活函數,將二值(0, 1)變量\(x_1, x_2\)代入,我們得到如下的對應表:

與邏輯真值表-我愛公開課——52opencourse.com

可以看出,這裏的神經網絡激活函數\(h_\Theta(x)\)近似等於與邏輯運算。

 

或(OR)邏輯運算示例:

同理,我們也給出一個簡單的神經網絡模型來模擬或(OR)邏輯運算:

或邏輯運算神經網絡模型-我愛公開課-52opencourse.com

將二值(0, 1)變量\(x_1, x_2\)代入,得到如下的或邏輯運算對應表:

或邏輯運算對應表-我愛公開課——52opencourse.com

6)  Examples and intuitions II (例子和直觀解釋二)

繼續上一節的例子,我們介紹第三個基本的邏輯運算:非(NOT)邏輯運算

用一個簡單的神經網絡模型來模擬非(NOT)邏輯運算:

非邏輯運算-我愛公開課——52opencourse.com

得到的對應表如下:
非邏輯運算真值表-我愛公開課-52opencourse.com

非邏輯運算僅針對一個輸入值,我們來表示一個略微複雜的邏輯表達式:

複雜邏輯表達式-我愛公開課-52opencourse.com

這個表達式等於1的前提是”當且僅當x1=x2=0".

可以用神經網絡模擬如下:
兩個非邏輯運算的神經網絡模型-我愛公開課-52opencourse.com

好了,有了上述三個基本邏輯運算的基礎和相關的神經網絡模型表示,我們可以將其組合爲一個略微複雜的”同或(XNOR)邏輯運算的神經網絡“:

同或邏輯運算神經網絡圖-我愛公開課-52opencourse.com

對於這個神經網絡,這裏稍作一點解釋,同或運算的表達式如下:

\[F = A \odot B = AB + \overline{A}\overline{B}\]

上圖中第二層隱藏網絡a1和a2分別代表了A And B和Not A And Not B,a1和a2又做了一次或邏輯運算就得到了同或邏輯運算。該神經網絡對應的輸出與同或運算的真值表相同:

同或運算真值表-我愛公開課——52opencourse.com

第6節的手寫數字識別(分類)的演示請讀者自行觀看視頻,此處略。

 

7)  Multi-class classification (多類分類問題)

邏輯迴歸的筆記中,我們談到了多類分類問題,而神經網絡同樣可以應用於多類分類問題,只不過在表達上略有區別。首先來看一個機器視覺中分類的例子:

機器視覺分類問題-我愛公開課-52opencourse.com

對於一個輸入圖片,需要識別其屬於行人、轎車、摩托車或者卡車中的一個類型,這是一個多類分類的問題。用神經網絡表示如下:

機器視覺神經網絡分類模型-我愛公開課-52opencourse.com

 

其中輸出\(h_\Theta(x)\)是一個4維向量,如下表示:

神經網絡輸出多分類問題表示-我愛公開課——52opencourse.com

當向量的某個元素爲1,其他爲0時,代表分類結果爲某個爲1元素所對應的類別。這與之前邏輯迴歸中的多類分類表示不同,在邏輯迴歸中,輸出y屬於類似於{1, 2, 3,4}中的某個值,而非一個向量。因此,如果要訓練一個多類分類問題的神經網絡模型,訓練集是這樣的:

多類分類問題神經網絡模型訓練集-我愛公開課——52opencourse.com

特別注意\(y^{(i)}\)是一個向量。

本章到此結束,下一講將會將神經網絡的學習問題。轉載請註明出處"我愛公開課”,謝謝。

參考資料:

第八課“神經網絡的表示”的課件資料下載鏈接,視頻可以在Coursera機器學習課程上觀看或下載: https://class.coursera.org/ml
PPT   PDF

http://en.wikipedia.org/wiki/Neural_network

http://en.wikipedia.org/wiki/Artificial_neural_network

神經網絡編程入門

神經網絡入門連載

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

清華大學出版社的《電子技術基礎》,google book

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