<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 智能計算 > 設(shè)計應(yīng)用 > 我從吳恩達(dá)深度學(xué)習(xí)課程中學(xué)到的21個心得

          我從吳恩達(dá)深度學(xué)習(xí)課程中學(xué)到的21個心得

          作者: 時間:2017-12-07 來源:網(wǎng)絡(luò) 收藏

            今年8月,課程正式上線,并即刻吸引了眾多粉絲的“頂禮膜拜”。一如此前在Coursera上的機器學(xué)習(xí)課程,這幾門課程也是好評如潮。

          本文引用地址:http://www.ex-cimer.com/article/201712/372725.htm

            在諸多粉絲中,加拿大國家銀行金融市場的首席分析師Ryan J. Shrott從前三門深度學(xué)習(xí)課程中總結(jié)出了21點心得,總結(jié)了該系列課程的諸多精華。

            今天,文摘菌就帶大家一起來讀一讀這份“學(xué)霸“筆記。

            首先來看一下Ryan對該課程的總體評價:

            先生(Andrew Ng)的3門課程都超級有用,教會了我許多實用的知識。吳教授擅長過濾掉流行詞匯,用一種清晰簡潔的方式解釋了一切。比如他闡明了監(jiān)督式深度學(xué)習(xí)(supervised deep learning)只不過是一個多維的曲線擬合程序,而其他任何具有代表性的理解,如人類神經(jīng)系統(tǒng)的通用參照,則有些太過玄乎了。

            官方介紹說只需要有一些基本的線性代數(shù)和Python編程知識就可以聽懂這些課程。然而我認(rèn)為你還應(yīng)該懂得矢量微積分(vector calculus),有助于懂得優(yōu)化過程的內(nèi)部機理。如果你不關(guān)心內(nèi)部如何運行,只是關(guān)注獲取更高層面的信息,你可以跳過那些微積分的視頻。

            下面,就是Ryan在學(xué)習(xí)完該系列課程后的心得。

            心得1:為什么深度學(xué)習(xí)得以迅速發(fā)展

            我們?nèi)祟惍?dāng)今擁有的90%的數(shù)據(jù)都是于最近2年內(nèi)收集的。深度神經(jīng)網(wǎng)絡(luò)(DNN’s)可以更好地利用大規(guī)模的數(shù)據(jù),從而超越較小的網(wǎng)絡(luò)及傳統(tǒng)學(xué)習(xí)算法。

            

           

            此外,還有好多算法方面的革新使DNN‘s的訓(xùn)練變得非??臁1热鐚igmoid激活函數(shù)轉(zhuǎn)換成ReLU激活函數(shù)已經(jīng)對梯度下降等優(yōu)化過程產(chǎn)生了巨大的影響。這些算法的優(yōu)化使得研究者們的“創(chuàng)意-編碼-驗證”循環(huán)迭代速度越來越快,從而引導(dǎo)了更多的創(chuàng)新。

            

           

            心得2:深度學(xué)習(xí)內(nèi)的矢量化(vectorization)

            在上這門課之前,我從沒有意識到一個神經(jīng)網(wǎng)絡(luò)可以不用for循環(huán)來搭建。吳恩達(dá)很好地傳達(dá)了矢量化代碼設(shè)計的重要性。在作業(yè)中,他還提供了一個標(biāo)準(zhǔn)化的矢量代碼設(shè)計樣本,這樣你就可以很方便的應(yīng)用到自己的應(yīng)用中了。

            心得3:DNN的深層理解

            在第一個課程中,我學(xué)會了用NumPy庫實現(xiàn)前向和反向傳播過程,我因而對諸如TensorFlow和Keras這些高級別框架的內(nèi)部工作機理產(chǎn)生了更深層次的理解。吳恩達(dá)通過解釋計算圖(comptation graph)背后的原理,讓我懂得TensorFlow是如何執(zhí)行“神奇的優(yōu)化”的。

            心得4:為什么需要深度表征(Deep Representations)

            吳恩達(dá)對DNN‘s的分層方面有著直觀的理解。比如,在面部識別方面,他認(rèn)為先前的分層用于將臉部邊緣分組,后續(xù)的分層將這些分好的組形成五官(如鼻子、眼睛、嘴等等),再接下來的分層把這些器官組合在一起用以識別人像。他還解釋了回路理論(circuit theory),即存在一些函數(shù),需要隱藏單元的指數(shù)去匹配淺層網(wǎng)絡(luò)的數(shù)據(jù)??梢酝ㄟ^添加有限數(shù)量的附加層來簡化這個指數(shù)問題。

            心得5:處理偏差(bias)和方差(variance)的工具

            吳教授解釋了識別和修繕偏差和方差相關(guān)問題的步驟。下圖顯示了解決這些問題系統(tǒng)性的方法。

            

           

            機器學(xué)習(xí)的基本“秘訣” 解決偏差和方差的“秘訣”

            他還解決了偏差和方差之間被普遍引用的“權(quán)衡”(tradeoff)問題。他認(rèn)為在深度學(xué)習(xí)的時代,我們擁有獨立解決每個問題的能力,所以這種“權(quán)衡”問題將不再存在。

            心得6:正則化的直觀解釋

            為什么向成本函數(shù)中加入一個懲罰項會降低方差效應(yīng)?在上這門課之前我對它的直覺是它使權(quán)重矩陣接近于零,從而產(chǎn)生一個更加“線性”的函數(shù)。吳教授則給出了另一個關(guān)于tanh激活函數(shù)的解釋。他認(rèn)為更小的權(quán)重矩陣產(chǎn)生更小的輸出,這些輸出集中圍繞在tanh函數(shù)的線性區(qū)域。

            

           

            tanh激活函數(shù)

            他還為dropout給出了一個直觀的解釋。之前我認(rèn)為dropout僅僅在每個迭代中消滅隨機神經(jīng)元,就好比一個越小的網(wǎng)絡(luò),其線性程度就越強一樣。而他的觀點是從單個神經(jīng)元的角度來看這一做法。

            

           

            單個神經(jīng)元的角度

            因為dropout隨即消滅連接,使得神經(jīng)元向父系神經(jīng)元中更加均勻地擴散權(quán)重。以至于更傾向于縮減權(quán)重的L2范數(shù)(squared norm)的效果。他還解釋了dropout只不過是L2正則化的一種自適應(yīng)形式,而這兩種的效果類似。

            心得7: 為什么歸一化(normalization)有效?

            吳恩達(dá)展示了為什么歸一化可以通過繪制等高線圖(contour plots)的方式加速優(yōu)化步驟。他詳細(xì)講解了一個案例,在歸一化和非歸一化等高線圖上梯度下降樣本進(jìn)行迭代。

            心得8: 初始化的重要性

            吳恩達(dá)展示了不好的參數(shù)初始化將導(dǎo)致梯度消失或爆炸。他認(rèn)為解決這個問題的基本原則是確保每一層的權(quán)重矩陣的方差都近似為1。他還討論了tanh激活函數(shù)的Xavier初始化方法。

            心得9: 為什么使用小批量(mini-batch)梯度下降?

            吳教授使用等高線圖解釋了減小和增加小批量尺寸的權(quán)衡?;驹瓌t是較大的尺寸每次迭代會變慢,而較小的尺寸則可以加快迭代過程,但是無法保證同樣的收斂效果。最佳方法就是在二者之間進(jìn)行權(quán)衡,使得訓(xùn)練過程比立即處理整個數(shù)據(jù)集要快,又能利用向量化技術(shù)的優(yōu)勢。

            心得10: 高級優(yōu)化技術(shù)的直觀理解

            吳恩達(dá)解釋了動量(momentum)和RMSprop等技術(shù)是如何限制梯度下降逼近極小值的路徑。他還用球滾下山的例子生動地解釋了這一過程。他把這些方法結(jié)合起來以解釋著名的Adam優(yōu)化過程。

            心得11: 基本TensorFlow后端進(jìn)程的理解

            吳恩達(dá)解釋了如何使用TensorFlow實現(xiàn)神經(jīng)網(wǎng)絡(luò),并闡明了在優(yōu)化過程中使用的后端進(jìn)程。課程作業(yè)之一就是鼓勵你用TensorFlow來實現(xiàn)dropout和L2正則化,加強了我對后端進(jìn)程的理解。

            心得12: 正交化

            吳恩達(dá)討論了機器學(xué)習(xí)策略中正交化的重要性?;舅枷胧菆?zhí)行一些控件,這些控件一次只作用于算法性能的單一組件。例如為了解決偏差問題,你可以使用更大的網(wǎng)絡(luò)或更多的魯棒優(yōu)化技術(shù)。你希望這些控件只影響偏差而不會影響其他如較差泛化等問題。一個缺少正交化的控件過早停止了優(yōu)化過程。因為這會同時影響模型的偏差和方差。

            心得13:建立單一數(shù)字評估指標(biāo)的重要性

            吳恩達(dá)強調(diào)選擇單一數(shù)字評估指標(biāo)來評估算法的重要性。在模型開發(fā)過程中,如果你的目標(biāo)改變,那么隨后才可以更改評估度量標(biāo)準(zhǔn)。 Ng給出了在貓分類應(yīng)用程序中識別色情照片的例子!

            心得14:測試集/開發(fā)集的分布情況

            始終確保開發(fā)集和測試集具有相同的分布。這可確保你的團隊在迭代過程中瞄準(zhǔn)正確的目標(biāo)。這也意味著,如果你決定糾正測試集中錯誤標(biāo)記的數(shù)據(jù),那么你還必須糾正開發(fā)集中錯誤標(biāo)記的數(shù)據(jù)。

            心得15:處理訓(xùn)練集和測試集/開發(fā)集處于不同分布的情況

            吳恩達(dá)給出了為什么一個團隊會對具有不同分布的訓(xùn)練集和測試集/開發(fā)集感興趣的原因。原因在于,你希望評估標(biāo)準(zhǔn)是根據(jù)你真正關(guān)心的例子計算出來的。例如,你也許想使用與你的問題不相關(guān)的示例作為訓(xùn)練集,但是,你別指望使用這些示例對你的算法進(jìn)行評估。你可以使用更多的數(shù)據(jù)訓(xùn)練你的算法。經(jīng)驗證明,這種方法在很多情況下會給你帶來更好的性能。缺點是你的訓(xùn)練集和測試集/開發(fā)集有著不同的分布。解決方案是留出一小部分訓(xùn)練集,來單獨確定訓(xùn)練集的泛化能力。然后,你可以將此錯誤率與實際的開發(fā)集錯誤率進(jìn)行比較,并計算出“數(shù)據(jù)不匹配”度量標(biāo)準(zhǔn)。吳恩達(dá)隨后解釋了解決這個數(shù)據(jù)不匹配問題的方法,如人工數(shù)據(jù)合成。

            心得16:訓(xùn)練集/開發(fā)集/測試集的大小

            在深度學(xué)習(xí)時代,建立訓(xùn)練集/開發(fā)集/測試集劃分的參考標(biāo)準(zhǔn)發(fā)生了巨大的變化。在上課之前,我知道通常的60/20/20劃分。 Ng強調(diào),對于一個非常大的數(shù)據(jù)集,你應(yīng)該使用大約98/1/1甚至99 / 0.5 / 0.5的劃分。這是因為開發(fā)集和測試集只需足夠大,以確保你的團隊提供的置信區(qū)間即可。如果你正在使用10,000,000個訓(xùn)練集示例,那么也許有100,000個示例(或1%的數(shù)據(jù))已經(jīng)很大了,足以確保在你的開發(fā)集和/或測試集具有某些置信界限。

            心得17:逼近貝葉斯最優(yōu)誤差

            吳恩達(dá)解釋了在某些應(yīng)用中,人類水平的表現(xiàn)如何被用作貝葉斯誤差的代表。例如,對于諸如視覺和音頻識別的任務(wù),人的水平誤差將非常接近貝葉斯誤差。這可以讓你的團隊量化你的模型中可以避免的偏差。沒有貝葉斯誤差等基準(zhǔn),將很難理解網(wǎng)絡(luò)中的方差和可避免的偏差問題。

            心得18:錯誤分析

            吳恩達(dá)展示了一個效果比較明顯的技術(shù),即通過使用錯誤分析,來顯著提高算法性能的有效性?;舅枷胧鞘謩訕?biāo)記錯誤分類的示例,并將精力集中在對錯誤分類數(shù)據(jù)貢獻(xiàn)最大的錯誤上。

            

           

            識別貓的應(yīng)用程序錯誤分析

            例如,在識別貓的應(yīng)用中,吳恩達(dá)判定模糊圖像對錯誤貢獻(xiàn)最大。這個靈敏度分析可以讓你看到,在減少總的錯誤方面,你的努力是值得的。通常可能是這樣的情況,修復(fù)模糊圖像是一個非常艱巨的任務(wù),而其他錯誤是明顯的,且容易解決。因此敏感性和模糊工作都將被納入決策過程。

            心得19:何時使用遷移學(xué)習(xí)?

            遷移學(xué)習(xí)允許你將知識從一個模型遷移到另一個模型。例如,你可以將圖像識別知識從識別貓的應(yīng)用程序遷移到放射診斷。實現(xiàn)遷移學(xué)習(xí)涉及到用更多的數(shù)據(jù)重新訓(xùn)練用于類似應(yīng)用領(lǐng)域的最后幾層網(wǎng)絡(luò)。這個想法是,網(wǎng)絡(luò)中較早的隱單元具有更廣泛的應(yīng)用,通常不是專門針對你正在使用的網(wǎng)絡(luò)中的特定任務(wù)。總而言之,當(dāng)兩項任務(wù)具有相同的輸入特征時,而且當(dāng)你嘗試學(xué)習(xí)的任務(wù)比你正在嘗試訓(xùn)練的任務(wù)有更多的數(shù)據(jù)時,遷移學(xué)習(xí)是有效的。

            心得20:何時使用多任務(wù)學(xué)習(xí)?

            多任務(wù)學(xué)習(xí)迫使一個單一的神經(jīng)網(wǎng)絡(luò)同時學(xué)習(xí)多個任務(wù)(而不是每個任務(wù)都有一個單獨的神經(jīng)網(wǎng)絡(luò))。Ng解釋說,如果一組任務(wù)可以從共享較低級別的特征中受益,并且每個任務(wù)的數(shù)據(jù)量在數(shù)量級上相似,則該方法可以很好地工作。

            心得21:何時使用端到端的深度學(xué)習(xí)?

            端到端的深度學(xué)習(xí)需要多個處理階段,并將其組合成一個單一的神經(jīng)網(wǎng)絡(luò)。這使得數(shù)據(jù)能夠自己說話,而不會存在人們在優(yōu)化過程中手動顯示工程步驟出現(xiàn)的偏差。相反,這種方法需要更多的數(shù)據(jù),可能會排除可能手動設(shè)計的組件。

            總結(jié)

            Ryan總結(jié)道,雖然吳恩達(dá)的深度學(xué)習(xí)課程不能讓你成為真正的深度學(xué)習(xí)專家,但可以讓你對深度學(xué)習(xí)模型的發(fā)展過程有了基本的直覺了解。當(dāng)然,這21點心得也遠(yuǎn)遠(yuǎn)不能涵蓋該系列課程的全部信息,要想入門深度學(xué)習(xí),還是的自己親自學(xué)習(xí)這系列課程。

            那么,學(xué)霸對這門課程有什么負(fù)面評價么?

            沒錯,也還是有的。Ryan認(rèn)為,這門課的作業(yè)實在太過簡單——并順手收過了文摘菌的膝蓋。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();