日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Machine Learning - Andrew Ng on Coursera (Week 5)

發(fā)布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Machine Learning - Andrew Ng on Coursera (Week 5) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本篇文章將分享Coursera上Andrew Ng的Machine Learning第五周的課程,主要內(nèi)容有如下,詳細內(nèi)容可以參考文末附件:

  • 代價函數(shù)及后向算法
    • Cost function(代價函數(shù))
    • Backpropagation algorithm(BP算法 or 反向傳播算法)
  • 后向算法求解神經(jīng)網(wǎng)絡(luò)模型
    • Implementation note: Unrolling parameters(實現(xiàn)時的注意點:展開參數(shù))
    • Gradient checking(梯度下降算法的驗證)
    • Random initialization(隨機初始化)
    • Putting it together(組合到一起-如何訓(xùn)練一個神經(jīng)網(wǎng)絡(luò))
  • Backpropagation example: Autonomous driving (optional)(BP算法的例子-無人駕駛汽車)

代價函數(shù)及后向算法

COST FUNCTION(代價函數(shù))

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

其中:

訓(xùn)練集是:[Math Processing Error]

[Math Processing Error]?= 神經(jīng)網(wǎng)絡(luò)的層數(shù)

[Math Processing Error]?= 第[Math Processing Error]層的單元個數(shù)(不包括偏置單元)

對于一個分類問題來說:

如果是一個二類分類(Binary classification),那么[Math Processing Error]或者[Math Processing Error],在神經(jīng)網(wǎng)絡(luò)的輸出層上只有一個輸出單元;如果是一個多類分類(Multi-class classification), 那么在神經(jīng)網(wǎng)絡(luò)的輸出層上有K個輸出單元。

在邏輯回歸中,Cost Function的定義相對簡單,如下所示:

[Math Processing Error]

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

[Math Processing Error]

[Math Processing Error]

[Math Processing Error]

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

BACKPROPAGATION ALGORITHM(BP算法 OR 反向傳播算法)

和線性回歸或邏輯回歸相似,求取神經(jīng)網(wǎng)絡(luò)的參數(shù)也可以采用梯度下降算法,但是和它們二者略微不同的是,神經(jīng)網(wǎng)絡(luò)相對復(fù)雜。前面已經(jīng)給出神經(jīng)網(wǎng)絡(luò)的代價函數(shù),目標(biāo)是最小化代價函數(shù):

[Math Processing Error]

我們需要通過如下兩個式子來計算梯度:

  • [Math Processing Error]
  • [Math Processing Error]

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

在計算梯度時,我們引入反向傳播算法,簡稱BP算法。反向算法的核心是最小化網(wǎng)絡(luò)輸出值和目標(biāo)值之間的“誤差”,所以這里首先引入一個關(guān)于誤差的記號:

[Math Processing Error]層?[Math Processing Error]節(jié)點的誤差(error)

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

如下給出了一個完整的BP算法的流程偽代碼:

我們需要計算每個節(jié)點的梯度,這里通過反向傳播算法達到了。

補充:

我們最常用的神經(jīng)網(wǎng)絡(luò)就是BP網(wǎng)絡(luò),也叫多層前饋網(wǎng)絡(luò)。BP是back propagation的所寫,是反向傳播的意思。我以前比較糊涂,因為一直不理解為啥一會叫前饋網(wǎng)絡(luò),一會叫BP(反向傳播)網(wǎng)絡(luò),不是矛盾嗎?其實是 這樣的,前饋是從網(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ò)的強大威力:

  • 任何的布爾函數(shù)都可以由兩層單元的網(wǎng)絡(luò)準(zhǔn)確表示,但是所需的隱藏層神經(jīng)元的數(shù)量隨網(wǎng)絡(luò)輸入數(shù)量呈指數(shù)級增長;
  • 任意連續(xù)函數(shù)都可由一個兩層的網(wǎng)絡(luò)以任意精度逼近。這里的兩層網(wǎng)絡(luò)是指隱藏層使用sigmoid單元、輸出層使用非閾值的線性單元;
  • 任意函數(shù)都可由一個三層的網(wǎng)絡(luò)以任意精度逼近。其兩層隱藏層使用sigmoid單元、輸出層使用非閾值的線性單元。
  • 【注】參考自《機器學(xué)習(xí)》

    后向算法求解神經(jīng)網(wǎng)絡(luò)模型

    相對于線性回歸或邏輯回歸來說,BP算法不是很簡潔和清晰,需要大家能明確區(qū)分的就是前向和后向算法。

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

    對于這個神經(jīng)網(wǎng)絡(luò)來說,它有4層,除了輸出層只有1個單元外,其他每層都有2個單元(除去偏置單元)。對于一個訓(xùn)練樣本[Math Processing Error]來說,可以通過前向傳播的方式計算各個相關(guān)單元,就是由輸入計算分類結(jié)果的過程。

    而反向傳播到底在做什么?首先簡化神經(jīng)網(wǎng)絡(luò)的代價函數(shù),假設(shè)僅關(guān)注一個樣本[Math Processing Error],并且僅針對一個輸出單元的神經(jīng)網(wǎng)絡(luò),同時忽略正則化([Math Processing Error]),這樣代價函數(shù)可以簡化為如下的形式:

    [Math Processing Error]

    那么對于樣本[Math Processing Error], 如果記

    [Math Processing Error]層?[Math Processing Error]節(jié)點[Math Processing Error]的誤差(error)。而[Math Processing Error]

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

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

    IMPLEMENTATION NOTE: UNROLLING PARAMETERS(實現(xiàn)時的注意點:展開參數(shù))

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

    GRADIENT CHECKING(梯度下降算法的驗證)

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

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

    可以用如下公式近似估計梯度:

    [Math Processing Error]

    其中[Math Processing Error]取較小的值。

    同理,對于多元參數(shù)或參數(shù)向量來說,上述方法同樣適用。我們的主要目標(biāo)是檢查這個梯度的近似向量與反向傳播算法得到的梯度向量是否近似相等。

    實現(xiàn)時的注意點:

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

    特別重要的是:

    • 一定要確保在訓(xùn)練分類器時關(guān)閉梯度檢查的代碼。如果你在梯度下降的每輪迭代中都運行數(shù)值化的梯度計算,你的程序?qū)浅B?/li>

    RANDOM INITIALIZATION(隨機初始化)

    還有一點需要注意,就是如何初始化參數(shù)向量、矩陣。通常情況下,我們會將參數(shù)全部初始化為0,這對于很多問題是足夠的,但是對于神經(jīng)網(wǎng)絡(luò)算法,可能會存在一些問題。

    對于梯度下降和其他優(yōu)化算法,對于參數(shù)[Math Processing Error]向量的初始化是必不可少的。在神經(jīng)網(wǎng)絡(luò)中,如果將參數(shù)全部初始化為0,可能會導(dǎo)致在每輪參數(shù)更新的時候,與輸入單元相關(guān)的兩個隱藏單元的結(jié)果將是相同的,即:

    [Math Processing Error]

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

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

    PUTTING IT TOGETHER(組合到一起-如何訓(xùn)練一個神經(jīng)網(wǎng)絡(luò))

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

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

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

  • 隨機初始化權(quán)重參數(shù);
  • 對于每一個[Math Processing Error]通過前向傳播得到[Math Processing Error];
  • 計算代價函數(shù)[Math Processing Error]
  • 反向傳播算法用于計算偏導(dǎo)數(shù)[Math Processing Error]
  • 使用梯度檢查來比較反向傳播算法計算的[Math Processing Error]和數(shù)值估計的[Math Processing Error]的梯度,如果沒有問題,在實際訓(xùn)練時關(guān)閉這部分代碼;
  • 在反向傳播的基礎(chǔ)上使用梯度下降或其他優(yōu)化算法來最小化[Math Processing Error];
  • Backpropagation example: Autonomous driving (optional)(BP算法的例子-無人駕駛汽車)

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

    附本次演示文檔:ML-Coursera-Week5

    總結(jié)

    以上是生活随笔為你收集整理的Machine Learning - Andrew Ng on Coursera (Week 5)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 奴性女会所调教 | 免费伊人网 | 国产精品va在线观看无码 | 制服丝袜天堂 | 国产亚洲精品久久久久久无几年桃 | 午夜激情影院 | 欧美日韩一区二区精品 | 狠狠撸在线观看 | 国产成人啪免费观看软件 | 麻豆视频免费入口 | 欧美岛国国产 | 欧美激情在线一区二区 | 色眯眯影视 | 麻豆乱淫一区二区三区 | 国产视频a| 亚洲欧美国产精品久久久久久久 | 四虎精品一区二区三区 | 日本www高清 | 91精品国产欧美一区二区成人 | 亚洲福利影视 | 一区二区三区免费观看视频 | 日韩中文字幕在线观看视频 | 欧美h视频在线观看 | 亚洲精品男人天堂 | 大尺度做爰呻吟62集 | 成人午夜av在线 | 午夜啊啊啊 | 国产精品久久久久久久av福利 | 国产ts网站 | 香蕉人人精品 | 成人午夜免费网站 | 精品一区二区亚洲 | 在线免费观看黄色网址 | 欧美久久久 | 99国产在线视频 | 久久精品在线播放 | 日韩精品视频久久 | 亚洲第一视频在线 | 99免费在线视频 | av在线毛片| 欧美国产精品一区二区 | 国产精品免费无码 | 都市激情自拍 | 中文字幕一级二级三级 | 最新永久地址 | 一级在线播放 | 青青草原综合网 | av免费资源| 亚洲成人久久精品 | 欧美日韩一区二区区 | 狠狠撸狠狠干 | 爱看av | 国产夫绿帽单男3p精品视频 | 一级片免费网站 | 久久精品8 | 九九这里只有精品视频 | 亚洲av无码电影在线播放 | 国产麻豆一区二区三区 | 天天做天天躁天天躁 | 亚洲呦呦| 五月天婷婷影院 | 双性尿奴穿贞c带憋尿 | 欧美精品99久久久 | 第一章激情艳妇 | 丰腴饱满的极品熟妇 | 日本一区二区在线看 | 天天摸天天操 | 欧美少妇激情 | 九七超碰在线 | 久久在线一区二区 | 在线中文字幕亚洲 | 国产免费福利视频 | 88xx成人永久免费观看 | 欧美国产精品 | 国产一二三在线 | 青青青免费视频观看在线 | 久久久久久综合 | 超碰人人爱人人 | 国产欧美久久久精品免费 | 日韩欧美自拍 | 一区二区在线播放视频 | 欧美a性 | 欧美老女人性生活视频 | 免费视频久久 | 黄色日皮视频 | 国产精品腿扒开做爽爽爽挤奶网站 | 亚洲午夜精品一区二区三区 | 久久久国产精品视频 | 日韩av区 | 国产精品二区三区 | 一级特黄高清 | 日韩理论在线观看 | 91pron在线| 日本黄页网址 | 久久久国产精品一区 | 青青草免费观看视频 | 6080亚洲精品一区二区 | 91视频进入 | 尤物国产 |