国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Coursera公開課筆記: 斯坦福大學(xué)機(jī)器學(xué)習(xí)第九課“神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)(Neural Networks: Learning)”

斯坦福大學(xué)機(jī)器學(xué)習(xí)斯坦福大學(xué)機(jī)器學(xué)習(xí)第九課“神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)(Neural Networks: Learning)”學(xué)習(xí)筆記,本次課程主要包括8部分:

1) Cost function(代價(jià)函數(shù))

2) Backpropagation algorithm(BP算法 or 反向傳播算法)

3) Backpropagation intuition(BP算法的直觀解釋)

4) Implementation note: Unrolling parameters(實(shí)現(xiàn)時(shí)的注意點(diǎn):展開參數(shù))

5) Gradient checking(梯度下降算法的驗(yàn)證)

6) Random initialization(隨機(jī)初始化)

7) Putting it together(組合到一起-如何訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò))

8) Backpropagation example: Autonomous driving (optional)(BP算法的例子-無人駕駛汽車)

以下是每一部分的詳細(xì)解讀。

 

1) Cost function(代價(jià)函數(shù))

首先回顧一下神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu):

其中:

訓(xùn)練集是:


L = 神經(jīng)網(wǎng)絡(luò)的層數(shù)
= 第l層的單元個(gè)數(shù)(不包括偏置單元)

對(duì)于一個(gè)分類問題來說:

如果是一個(gè)二類分類(Binary classification),那么y = 0 或1,在神經(jīng)網(wǎng)絡(luò)的輸出層上只有一個(gè)輸出單元;

如果是一個(gè)多類分類(Multi-class classification), 那么

在神經(jīng)網(wǎng)絡(luò)的輸出層上有K個(gè)輸出單元。

Cost function:

在邏輯回歸中,Cost Function的定義相對(duì)簡(jiǎn)單,如下所示:

由于神經(jīng)網(wǎng)絡(luò)的輸出層通常有多個(gè)輸出,屬于k維向量,因此用如下的方式定義神經(jīng)網(wǎng)絡(luò)的Cost function:

注意,對(duì)于訓(xùn)練集的每一個(gè)樣本,都需要對(duì)輸出層所有的輸出單元計(jì)算cost并求和。

 

2) Backpropagation algorithm(BP算法 or 反向傳播算法)

線性回歸邏輯回歸相似,求取神經(jīng)網(wǎng)絡(luò)的參數(shù)也可以采用梯度下降算法,但是和它們二者略微不同的是,神經(jīng)網(wǎng)絡(luò)相對(duì)復(fù)雜,如果計(jì)算它的梯度?

我們知道,神經(jīng)網(wǎng)絡(luò)的Cost function是:

目標(biāo)是最小化Cost function:

我們需要通過如下兩個(gè)式子來計(jì)算梯度:

在上一課“神經(jīng)網(wǎng)絡(luò)的表示”里,我們給出了前饋網(wǎng)絡(luò)的計(jì)算方法(向量化實(shí)現(xiàn)),對(duì)于一個(gè)給定訓(xùn)練樣本(x, y)的神經(jīng)網(wǎng)絡(luò),首先通過“前向傳播”的方式從輸入層開始計(jì)算神經(jīng)網(wǎng)絡(luò)的每一層表示,直到輸出層。例如對(duì)于如下的4層神經(jīng)網(wǎng)絡(luò):

計(jì)算的方法如下:

有了神經(jīng)網(wǎng)絡(luò)的“表示”,如何計(jì)算梯度?這個(gè)時(shí)候,我們引入反向傳播算法,簡(jiǎn)稱BP算法。反向算法的核心是最小化網(wǎng)絡(luò)輸出值和目標(biāo)值之間的“誤差”,所以這里首先引入一個(gè)關(guān)于誤差的記號(hào):

= l 層 j 節(jié)點(diǎn)的誤差(error)

對(duì)于神經(jīng)網(wǎng)絡(luò)輸出層的單元來說,例如上例中的第4層,誤差的計(jì)算比較直觀:

但是對(duì)于隱藏層的誤差計(jì)算,就不那么直觀了:

注:有志于弄清楚為什么的同學(xué)可以參考Mitchell教授的經(jīng)典書籍《機(jī)器學(xué)習(xí)》的第四章“人工神經(jīng)網(wǎng)絡(luò)”,有詳細(xì)的說明。

現(xiàn)在我們可以給出一個(gè)完成的BP算法,至于BP算法的一些解釋和說明,將會(huì)在之后的小節(jié)給出:

我們需要計(jì)算每個(gè)節(jié)點(diǎn)的梯度,這里通過反向傳播算法達(dá)到了。

補(bǔ)充:關(guān)于前饋網(wǎng)絡(luò)和BP神經(jīng)網(wǎng)絡(luò)的關(guān)系,可以參考這篇文章中的解釋:

我們最常用的神經(jīng)網(wǎng)絡(luò)就是BP網(wǎng)絡(luò),也叫多層前饋網(wǎng)絡(luò)。BP是back propagation的所寫,是反向傳播的意思。我以前比較糊涂,因?yàn)橐恢辈焕斫鉃樯兑粫?huì)叫前饋網(wǎng)絡(luò),一會(huì)叫BP(反向傳播)網(wǎng)絡(luò),不是矛盾嗎?其實(shí)是 這樣的,前饋是從網(wǎng)絡(luò)結(jié)構(gòu)上來說的,是前一層神經(jīng)元單向饋入后一層神經(jīng)元,而后面的神經(jīng)元沒有反饋到之前的神經(jīng)元;而BP網(wǎng)絡(luò)是從網(wǎng)絡(luò)的訓(xùn)練方法上來說 的,是指該網(wǎng)絡(luò)的訓(xùn)練算法是反向傳播算法,即神經(jīng)元的鏈接權(quán)重的訓(xùn)練是從最后一層(輸出層)開始,然后反向依次更新前一層的鏈接權(quán)重。因此二者并不矛盾, 只是我沒有理解其精髓而已。

隨便提一下BP網(wǎng)絡(luò)的強(qiáng)大威力:
1)任何的布爾函數(shù)都可以由兩層單元的網(wǎng)絡(luò)準(zhǔn)確表示,但是所需的隱藏層神經(jīng)元的數(shù)量隨網(wǎng)絡(luò)輸入數(shù)量呈指數(shù)級(jí)增長(zhǎng);
2)任意連續(xù)函數(shù)都可由一個(gè)兩層的網(wǎng)絡(luò)以任意精度逼近。這里的兩層網(wǎng)絡(luò)是指隱藏層使用sigmoid單元、輸出層使用非閾值的線性單元;
3)任意函數(shù)都可由一個(gè)三層的網(wǎng)絡(luò)以任意精度逼近。其兩層隱藏層使用sigmoid單元、輸出層使用非閾值的線性單元。

【注】參考自《機(jī)器學(xué)習(xí)

 

3) Backpropagation intuition(BP算法的直觀解釋)

相對(duì)于線性回歸或邏輯回歸來說,BP算法不是很簡(jiǎn)潔和清晰,這一小節(jié)將解釋神經(jīng)網(wǎng)絡(luò)BP算法的一些步驟,希望對(duì)大家直觀的了解BP算法有一些幫助。不過Andrew Ng教授也說了:

And even though, you know, I have used back prop for many years, sometimes it's a difficult algorithm to understand.

首先從前向傳播說起,下面是一個(gè)前饋神經(jīng)網(wǎng)絡(luò)的例子:

對(duì)于這個(gè)神經(jīng)網(wǎng)絡(luò)來說,它有4層,除了輸出層只有1個(gè)單元外,其他每層都有2個(gè)單元(除去偏置單元)。對(duì)于一個(gè)訓(xùn)練樣本

來說,可以通過前向傳播的方式計(jì)算各個(gè)相關(guān)單元,如下圖所示:

那么反向傳播到底在做什么?首先簡(jiǎn)化神經(jīng)網(wǎng)絡(luò)的代價(jià)函數(shù):

我們僅關(guān)注一個(gè)樣本\(x^{(i)}, y^{(i)},并且僅針對(duì)一個(gè)輸出單元的神經(jīng)網(wǎng)絡(luò)(上例),同時(shí)忽略正則化(\(\lambda = 0), 這樣Cost function可以簡(jiǎn)化為如下的形式:

那么對(duì)于樣本i, BP算法在神經(jīng)網(wǎng)絡(luò)上是如何生效的? 如果記

= l 層 j 節(jié)點(diǎn)
的cost的誤差(error)

其中:

BP算法主要是從輸出層反向計(jì)算各個(gè)節(jié)點(diǎn)的誤差的,故稱之為反向傳播算法,對(duì)于上例,計(jì)算的過程如下圖所示:

注:這里有些細(xì)節(jié)沒有詳細(xì)描述,具體的可參考視頻課程或者M(jìn)itchell教授的經(jīng)典書籍《機(jī)器學(xué)習(xí)》的第四章“人工神經(jīng)網(wǎng)絡(luò)”。

4) Implementation note: Unrolling parameters(實(shí)現(xiàn)時(shí)的注意點(diǎn):展開參數(shù))

本節(jié)主要講的是利用octave實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)算法的一個(gè)小技巧:將多個(gè)參數(shù)矩陣展開為一個(gè)向量。具體可以參考課程視頻,此處略。

5) Gradient checking(梯度下降算法的驗(yàn)證)

神經(jīng)網(wǎng)絡(luò)算法是一個(gè)很復(fù)雜的算法,所以有必要在實(shí)現(xiàn)的時(shí)候做一些檢查,本節(jié)給出一個(gè)檢驗(yàn)梯度的數(shù)值化方法。

關(guān)于梯度,有一種比較簡(jiǎn)便的數(shù)值估計(jì)方法,例如,對(duì)于一元參數(shù)來說:

可以用如下公式近似估計(jì)梯度:

其中

取較小的值。

同理,對(duì)于多元參數(shù)或參數(shù)向量來說,上述方法同樣適用:

我們的主要目標(biāo)是檢查這個(gè)梯度的近似向量與反向傳播算法得到的梯度向量是否近似相等:

實(shí)現(xiàn)時(shí)的注意點(diǎn):

  • 首先實(shí)現(xiàn)反向傳播算法來計(jì)算梯度向量DVec;
  • 其次實(shí)現(xiàn)梯度的近似gradApprox;
  • 確保以上兩步計(jì)算的值是近似相等的;
  • 在實(shí)際的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)時(shí)使用反向傳播算法,并且關(guān)掉梯度檢查。

特別重要的是:

  • 一定要確保在訓(xùn)練分類器時(shí)關(guān)閉梯度檢查的代碼。如果你在梯度下降的每輪迭代中都運(yùn)行數(shù)值化的梯度計(jì)算,你的程序?qū)?huì)非常慢。

6) Random initialization(隨機(jī)初始化)

關(guān)于如何學(xué)習(xí)一個(gè)神經(jīng)網(wǎng)絡(luò)的細(xì)節(jié)到目前為止基本說完了,不過還有一點(diǎn)需要注意,就是如何初始化參數(shù)向量or矩陣。通常情況下,我們會(huì)將參數(shù)全部初始化為0,這對(duì)于很多問題是足夠的,但是對(duì)于神經(jīng)網(wǎng)絡(luò)算法,會(huì)存在一些問題,以下將會(huì)詳細(xì)的介紹。

對(duì)于梯度下降和其他優(yōu)化算法,對(duì)于參數(shù)

向量的初始化是必不可少的。能不能將初始化的參數(shù)全部設(shè)置為0:

在神經(jīng)網(wǎng)絡(luò)中:

如果將參數(shù)全部初始化為0:

會(huì)導(dǎo)致一個(gè)問題,例如對(duì)于上面的神經(jīng)網(wǎng)絡(luò)的例子,如果將參數(shù)全部初始化為0,在每輪參數(shù)更新的時(shí)候,與輸入單元相關(guān)的兩個(gè)隱藏單元的結(jié)果將是相同的,既:

這個(gè)問題又稱之為對(duì)稱的權(quán)重問題,因此我們需要打破這種對(duì)稱,這里提供一種隨機(jī)初始化參數(shù)向量的方法: 初始化

為一個(gè)落在 [
]區(qū)間內(nèi)的隨機(jī)數(shù),
可以很小,但是與梯度檢驗(yàn)中的
沒有任何關(guān)系。

7) Putting it together(組合到一起-如何訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò))

關(guān)于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,我們已經(jīng)談到了很多,現(xiàn)在是時(shí)候?qū)⑺鼈兘M合到一起了。那么,如何訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)?

首先需要確定一個(gè)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)-神經(jīng)元的連接模式, 包括:

  • 輸入單元的個(gè)數(shù):特征
    的維數(shù);
  • 輸出單元的格式:類的個(gè)數(shù)
  • 隱藏層的設(shè)計(jì):比較合適的是1個(gè)隱藏層,如果隱藏層數(shù)大于1,確保每個(gè)隱藏層的單元個(gè)數(shù)相同,通常情況下隱藏層單元的個(gè)數(shù)越多越好。

在確定好神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)后,我們按如下的步驟訓(xùn)練神經(jīng)網(wǎng)絡(luò):

1. 隨機(jī)初始化權(quán)重參數(shù);

2. 實(shí)現(xiàn):對(duì)于每一個(gè)

通過前向傳播得到
;

3. 實(shí)現(xiàn):計(jì)算代價(jià)函數(shù)

4. 實(shí)現(xiàn):反向傳播算法用于計(jì)算偏導(dǎo)數(shù)

5. 使用梯度檢查來比較反向傳播算法計(jì)算的

和數(shù)值估計(jì)的
的梯度,如果沒有問題,在實(shí)際訓(xùn)練時(shí)關(guān)閉這部分代碼;

6. 在反向傳播的基礎(chǔ)上使用梯度下降或其他優(yōu)化算法來最小化

;

8) Backpropagation example: Autonomous driving (optional)(BP算法的例子-無人駕駛汽車)

關(guān)于通過神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)一個(gè)無人駕駛汽車的例子,請(qǐng)大家參考課程視頻,此處略。

 

參考資料:

機(jī)器學(xué)習(xí)視頻可以在Coursera機(jī)器學(xué)習(xí)課程上觀看或下載: https://class.coursera.org/ml

第九課“神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)”的課件資料下載鏈接:
PPT   PDF

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

Mitchell教授的經(jīng)典書籍《機(jī)器學(xué)習(xí)

http://brightli.wordpress.com/2007/06/15/%E7%BB%88%E4%BA%8E%E6%98%8E%E7%99%BD%E4%B8%BA%E4%BB%80%E4%B9%88%E5%8F%ABbp%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/

   

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【機(jī)器學(xué)習(xí)】詳解 BackPropagation 反向傳播算法!
DL之BP:神經(jīng)網(wǎng)絡(luò)算法簡(jiǎn)介之BP算法簡(jiǎn)介(鏈?zhǔn)椒▌t/計(jì)算圖解釋)、案例應(yīng)用之詳細(xì)攻略
神經(jīng)網(wǎng)絡(luò)
Stanford機(jī)器學(xué)習(xí)Neural Networks 神經(jīng)網(wǎng)絡(luò)的表示
吳恩達(dá)機(jī)器學(xué)習(xí)練習(xí):神經(jīng)網(wǎng)絡(luò)(反向傳播)
一文讓你掌握反向傳播算法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服