過去十年來,人們對機器學(xué)習(xí)興趣不減。你幾乎每天都會在計算機科學(xué)程序、行業(yè)會議和華爾街日報上看到機器學(xué)習(xí)。對于所有關(guān)于機器學(xué)習(xí)的討論,很多人把機器學(xué)習(xí)能做什么與希望其做什么混為一談。從根本上說,機器學(xué)習(xí)就是使用算法從原始數(shù)據(jù)中提取信息,并通過模型進行實現(xiàn)。我們使用這個模型來推斷我們尚未建模的其他數(shù)據(jù)。
神經(jīng)網(wǎng)絡(luò)屬于機器學(xué)習(xí)模型的一種,已出現(xiàn) 50 多年,其基本單元即受到哺乳動物大腦中生物神經(jīng)元啟發(fā)的非線性變換節(jié)點。神經(jīng)元之間的連接也是仿效生物大腦,并在時間中通過訓(xùn)練推移發(fā)展。
1980 年代中期和 1990 年代早期,神經(jīng)網(wǎng)絡(luò)的很多重要架構(gòu)取得重大進展。然而,獲得良好結(jié)果所需的時間和數(shù)據(jù)量卻阻礙了其應(yīng)用,因此人們一時興趣大減。2000 年早期,計算能力呈指數(shù)級增長,業(yè)界見證了之前不可能實現(xiàn)的計算技術(shù)的「寒武紀爆炸」。深度學(xué)習(xí)作為該領(lǐng)域的一個重要競爭者是在這個十年的爆炸性計算增長中脫穎而出,它贏得了許多重要的機器學(xué)習(xí)競賽。深度學(xué)習(xí)的熱度在 2017 年達到峰值,你在機器學(xué)習(xí)的所有領(lǐng)域都可以看到深度學(xué)習(xí)。
為了深入了解這一熱潮,我學(xué)習(xí)了 Udacity 的深度學(xué)習(xí)課程,它很好地介紹了深度學(xué)習(xí)的起源,以及通過 TensorFlow 從復(fù)雜和/或大型數(shù)據(jù)集中學(xué)習(xí)的智能系統(tǒng)的設(shè)計。對于課程項目,我使用和開發(fā)了帶有卷積的圖像識別神經(jīng)網(wǎng)絡(luò),帶有嵌入表征的 NLP 神經(jīng)網(wǎng)絡(luò)和帶有 RNN 和 LSTM 的基于字符的文本生成神經(jīng)網(wǎng)絡(luò)。所有的 Jupiter Notebook 代碼可參見:https://github.com/khanhnamle1994/deep-learning。
下面是一個作業(yè)的結(jié)果,一個通過相似性聚類的詞向量的 t-SNE 投影。
最近,我已經(jīng)開始閱讀相關(guān)學(xué)術(shù)論文。根據(jù)我的研究,下面是一些對該領(lǐng)域發(fā)展產(chǎn)生重大影響的著作:
紐約大學(xué)的《Gradient-Based Learning Applied to Document Recognition》(1998),介紹了機器學(xué)習(xí)領(lǐng)域的卷積神經(jīng)網(wǎng)絡(luò):http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf多倫多大學(xué)的《Deep Boltzmann Machines》(2009),它展現(xiàn)了一個用于玻爾茲曼機的、包含多個隱藏變量層的新學(xué)習(xí)算法:http://proceedings.mlr.press/v5/salakhutdinov09a/salakhutdinov09a.pdf斯坦福大學(xué)和谷歌的《Building High-Level Features Using Large-Scale Unsupervised Learning》(2012),它解決了只從無標注數(shù)據(jù)中構(gòu)建高階、特定類別的特征探測器的問題:http://icml.cc/2012/papers/73.pdf伯克利大學(xué)的《DeCAF—A Deep Convolutional Activation Feature for Generic Visual Recognition》(2013),它推出了 DeCAF,一個深度卷積激活功能和所有相關(guān)網(wǎng)絡(luò)參數(shù)的開源實現(xiàn),能夠幫助視覺研究者在一系列視覺概念學(xué)習(xí)范例中開展深度表征實驗:http://proceedings.mlr.press/v32/donahue14.pdfDeepMind 的《Playing Atari with Deep Reinforcement Learning》(2016),它展示了借助強化學(xué)習(xí)直接從高維感知輸入中成功學(xué)習(xí)控制策略的首個深度學(xué)習(xí)模型:https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf在研究和學(xué)習(xí)了大量知識之后,我想分享 10 個強大的深度學(xué)習(xí)方法,工程師可用其解決自己的機器學(xué)習(xí)問題。開始之前,讓我們定義一下什么是深度學(xué)習(xí)。深度學(xué)習(xí)是很多人面臨的一個挑戰(zhàn),因為過去十年來它在緩慢改變著形式。為了形象化地界定深度學(xué)習(xí),下圖給出了人工智能、機器學(xué)習(xí)和深度學(xué)習(xí)三者之間的關(guān)系。
人工智能領(lǐng)域最為廣泛,已存在 60+ 年。深度學(xué)習(xí)是機器學(xué)習(xí)的一個子領(lǐng)域,機器學(xué)習(xí)是人工智能的一個子領(lǐng)域。深度學(xué)習(xí)區(qū)分于傳統(tǒng)的前饋多層網(wǎng)絡(luò)的原因通常有以下幾點:
更多的神經(jīng)元層之間更復(fù)雜的連接方式訓(xùn)練算力的「寒武紀爆炸」自動特征提取當(dāng)我說「更多的神經(jīng)元」,我的意思是神經(jīng)元數(shù)目逐年增長以表達更復(fù)雜的模型。層也從多層網(wǎng)絡(luò)中完全連接的每層發(fā)展到卷積神經(jīng)網(wǎng)絡(luò)中層之間的局部連接的神經(jīng)元補丁,以及與循環(huán)神經(jīng)網(wǎng)絡(luò)中的同一神經(jīng)元(除了與前一層的連接之外)的周期性連接。
接著深度學(xué)習(xí)可被定義為下面四個基本網(wǎng)絡(luò)架構(gòu)之一中的帶有大量參數(shù)和層的神經(jīng)網(wǎng)絡(luò):
無監(jiān)督預(yù)訓(xùn)練網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)循環(huán)神經(jīng)網(wǎng)絡(luò)遞歸神經(jīng)網(wǎng)絡(luò)本文將主要介紹后面 3 個架構(gòu)。卷積神經(jīng)網(wǎng)絡(luò)基本是一個標準的神經(jīng)網(wǎng)絡(luò),通過共享權(quán)重在整個空間擴展。卷積神經(jīng)網(wǎng)絡(luò)被設(shè)計為通過在內(nèi)部卷積來識別圖像,可看到已識別圖像上物體的邊緣。循環(huán)神經(jīng)網(wǎng)絡(luò)通過將邊緣饋送到下一個時間步而不是在同一時間步中進入下一層,從而實現(xiàn)整個時間上的擴展。循環(huán)神經(jīng)網(wǎng)絡(luò)被設(shè)計用來識別序列,比如語音信號或文本序列,其內(nèi)部循環(huán)可存儲網(wǎng)絡(luò)中的短時記憶。遞歸神經(jīng)網(wǎng)絡(luò)更像是一個分層網(wǎng)絡(luò),其中輸入序列沒有真正的時間維度,但輸入必須以樹狀方式進行分層處理。以下 10 種方法可被用于上述所有架構(gòu)。
1—反向傳播
反向傳播簡單地說就是一種計算函數(shù)(在神經(jīng)網(wǎng)絡(luò)中為復(fù)合函數(shù)形式)的偏導(dǎo)數(shù)(或梯度)的方法。當(dāng)使用基于梯度的方法(梯度下降只是其中一種)求解優(yōu)化問題的時候,需要在每一次迭代中計算函數(shù)的梯度。
在神經(jīng)網(wǎng)絡(luò)中,目標函數(shù)通常是復(fù)合函數(shù)的形式。這時如何計算梯度?有兩種方式:(i)解析微分(Analytic differentiation),函數(shù)的形式是已知的,直接使用鏈式法則計算導(dǎo)數(shù)就可以。(ii)利用有限差分的近似微分(Approximate differentiation using finite difference),這種方法的運算量很大,因為函數(shù)計算量(number of function evaluation)等于 O(N),其中 N 是參數(shù)數(shù)量。相比于解析微分,運算量大得多。有限差分通常在調(diào)試的時候用于驗證反向傳播的實現(xiàn)。
2—隨機梯度下降
理解梯度下降的一種直觀的方法是想象一條河流從山頂順流而下的路徑。梯度下降的目標正好就是河流力爭實現(xiàn)的目標—即,到達最低點(山腳)。
假設(shè)山的地形使得河流在到達最低點之前不需要做任何停留(最理想的情況,在機器學(xué)習(xí)中意味著從初始點到達了全局最小/最優(yōu)解)。然而,也存在有很多凹點的地形,使得河流在其路徑中途停滯下來。在機器學(xué)習(xí)的術(shù)語中,這些凹點被稱為局部極小解,是需要避免的情況。有很多種方法能解決這種問題(本文未涉及)。
因此,梯度下降傾向于停滯在局部極小解,這取決于地形((或機器學(xué)習(xí)中的函數(shù)))的性質(zhì)。但是,當(dāng)山地的地形是一種特殊類型的時候,即碗形地貌,在機器學(xué)習(xí)中稱為凸函數(shù),算法能保證找到最優(yōu)解。凸函數(shù)是機器學(xué)習(xí)優(yōu)化中最想遇到的函數(shù)。而且,從不同的山頂(初始點)出發(fā),到達最低點之前的路徑也是不同的。類似地,河流的流速(梯度下降算法中的學(xué)習(xí)率或步長)的不同也會影響路徑的形態(tài)。這些變量會影響梯度下降是困在局域最優(yōu)解還是避開它們。
3—學(xué)習(xí)率衰減
調(diào)整隨機梯度下降優(yōu)化過程的學(xué)習(xí)率可以提升性能并減少訓(xùn)練時間,稱為學(xué)習(xí)率退火(annealing)或適應(yīng)性學(xué)習(xí)率。最簡單的也可能是最常用的訓(xùn)練中的學(xué)習(xí)率調(diào)整技術(shù)是隨時間降低學(xué)習(xí)率。這有益于在訓(xùn)練剛開始的時候使用更大的學(xué)習(xí)率獲得更大的變化,并在后期用更小的學(xué)習(xí)率對權(quán)重進行更精細的調(diào)整。
兩種簡單常用的學(xué)習(xí)率衰減方法如下:
隨 epoch 的增加而降低學(xué)習(xí)率;在特定的 epoch 間斷地降低學(xué)習(xí)率。4—dropout
擁有大量參數(shù)的深度神經(jīng)網(wǎng)絡(luò)是很強大的機器學(xué)習(xí)系統(tǒng)。然而,這樣的網(wǎng)絡(luò)有很嚴重的過擬合問題。而且大型網(wǎng)絡(luò)的運行速度很慢,使得在測試階段通過結(jié)合多個不同大型神經(jīng)網(wǎng)絡(luò)的預(yù)測解決過擬合的過程也變得很慢。dropout 正是針對這個問題應(yīng)用的技術(shù)。
其關(guān)鍵的思想是在訓(xùn)練過程中隨機刪除神經(jīng)網(wǎng)絡(luò)的單元和相應(yīng)的連接,從而防止過擬合。在訓(xùn)練過程中,dropout 將從指數(shù)級數(shù)量的不同的稀疏網(wǎng)絡(luò)中采樣。在測試階段,很容易通過用單 untwined 網(wǎng)絡(luò)(有更小的權(quán)重)將這些稀疏網(wǎng)絡(luò)的預(yù)測取平均而逼近結(jié)果。這能顯著地降低過擬合,相比其它的正則化方法能得到更大的性能提升。dropout 被證明在監(jiān)督學(xué)習(xí)任務(wù)比如計算機視覺、語音識別、文本分類和計算生物學(xué)中能提升神經(jīng)網(wǎng)絡(luò)的性能,并在多個基準測試數(shù)據(jù)集中達到頂尖結(jié)果。
5—最大池化
最大池化是一種基于樣本的離散化方法,目標是對輸入表征(圖像、隱藏層的輸出矩陣,等)進行下采樣,降低維度,并允許假設(shè)包含在子區(qū)域中的被丟棄的特征。
通過提供表征的抽象形式,這種方法在某種程度上有助于解決過擬合。同樣,它也通過減少學(xué)習(xí)參數(shù)的數(shù)量和提供基本的內(nèi)部表征的轉(zhuǎn)換不變性減少了計算量。最大池化通過在初始表征的子區(qū)域(通常是非重疊的)取最大值而抽取特征與防止過擬合。
6—批量歸一化
神經(jīng)網(wǎng)絡(luò)(包括深度網(wǎng)絡(luò))通常需要仔細調(diào)整權(quán)重初始化和學(xué)習(xí)參數(shù)。批量歸一化能使這個過程更簡單。
權(quán)重問題:
無論哪種權(quán)重初始化比如隨機或按經(jīng)驗選擇,這些權(quán)重值都和學(xué)習(xí)權(quán)重差別很大??紤]在初始 epoch 中的一個小批量,在所需要的特征激活中可能會有很多異常值。深度神經(jīng)網(wǎng)絡(luò)本身就具有病態(tài)性,即初始層的微小變動就會導(dǎo)致下一層的巨大變化。在反向傳播過程中,這些現(xiàn)象會導(dǎo)致梯度的偏離,意味著梯度在學(xué)習(xí)權(quán)重以生成所需要的輸出之前,需要對異常值進行補償,從而需要額外的 epoch 進行收斂。批量歸一化會系統(tǒng)化梯度,避免因異常值出現(xiàn)偏離,從而在幾個小批量內(nèi)直接導(dǎo)向共同的目標(通過歸一化)。
學(xué)習(xí)率問題:
學(xué)習(xí)率通常保持小值,從而使梯度對權(quán)重的修正很小,因為異常值激活的梯度不應(yīng)該影響學(xué)習(xí)激活。通過批量歸一化,這些異常值激活會被降低,從而可以使用更大的學(xué)習(xí)率加速學(xué)習(xí)過程。7—長短期記憶
長短期記憶(LSTM)網(wǎng)絡(luò)的神經(jīng)元和其它 RNN 中的常用神經(jīng)元不同,有如下三種特征:它對神經(jīng)元的輸入有決定權(quán);它對上一個時間步中計算內(nèi)容的存儲有決定權(quán);它對將輸出傳遞到下一個時間步的時間有決定權(quán)。?LSTM 的強大在于它能只基于當(dāng)前的輸入就決定以上所有的值??纯聪路降膱D表:當(dāng)前時間步的輸入信號 x(t) 決定了以上 3 個值。輸入門決定了第一個值,忘記門決定了第二個值,輸出門決定了第三個值。這是由我們的大腦工作方式所啟發(fā)的,可以處理輸入中的突然的情景變化。
8—Skip-gram
詞嵌入模型的目標是為每一個詞匯項學(xué)習(xí)一個高維密集表征,其中嵌入向量的相似表示相關(guān)詞的語義或句法的相似。skip-gram 是一種學(xué)習(xí)詞嵌入算法的模型。
skip-gram 模型(和很多其它詞嵌入模型)背后的主要思想是:如果兩個詞匯項有相似的上下文,則它們是相似的。
換種說法,假設(shè)你有一個句子,比如「cats are mammals」,如果用「dogs」替換「cats」,該句子仍然是有意義的。因此在這個例子中,「dogs」和「cats」有相似的上下文(即,「are mammals」)。
居于上述的假設(shè),我們可以考慮一個上下文窗口,即一個包含 k 個連續(xù)項的窗口。然后我們應(yīng)該跳過一些單詞以學(xué)習(xí)能得到除跳過項外其它所有的項的神經(jīng)網(wǎng)絡(luò),并用該神經(jīng)網(wǎng)絡(luò)嘗試預(yù)測跳過的項。如果兩個詞在大型語料庫中共享相似的上下文,那么這些嵌入向量將有非常相近的向量。
9—連續(xù)詞袋模型
在自然語言處理中,我們希望學(xué)習(xí)將文檔中每一個單詞表示為一個數(shù)值向量,并使得出現(xiàn)在相似上下文中的單詞有非常相似或相近的向量。在連續(xù)詞袋模型(CBOW)中,我們的目標是能利用特定詞的上下文而預(yù)測該特定詞出現(xiàn)的概率。
我們可以通過在大型語料庫中抽取大量語句而做到這一點。每當(dāng)模型看到一個單詞時,我們就會抽取該特定單詞周圍出現(xiàn)的上下文單詞。然后將這些抽取的上下文單詞輸入到一個神經(jīng)網(wǎng)絡(luò)以在上下文出現(xiàn)的條件下預(yù)測中心詞的概率。
當(dāng)我們有成千上萬個上下文單詞與中心詞,我們就有了訓(xùn)練神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集樣本。在訓(xùn)練神經(jīng)網(wǎng)絡(luò)中,最后經(jīng)過編碼的隱藏層輸出特定單詞的嵌入表達。這種表達就正是相似的上下文擁有相似的詞向量,也正好可以用這樣一個向量表征一個單詞的意思。
10—遷移學(xué)習(xí)
現(xiàn)在讓我們考慮圖像到底如何如何流經(jīng)卷積神經(jīng)網(wǎng)絡(luò)的,這有助于我們將一般 CNN 學(xué)習(xí)到的知識遷移到其它圖像識別任務(wù)。假設(shè)我們有一張圖像,我們將其投入到第一個卷積層會得到一個像素組合的輸出,它們可能是一些識別的邊緣。如果我們再次使用卷積,就能得到這些邊和線的組合而得到一個簡單的圖形輪廓。這樣反復(fù)地卷積最后就能層級地尋找特定的模式或圖像。因此,最后一層就會組合前面抽象的特征尋找一個非常特定的模式,如果我們的卷積網(wǎng)絡(luò)是在 ImageNet 上訓(xùn)練的,那么最后一層將組合前面抽象特征識別特定的 1000 個類別。如果我們將最后一層替換為我們希望識別的類別,那么它就能很高效地訓(xùn)練與識別。
深度卷積網(wǎng)絡(luò)每一個層會構(gòu)建出越來越高級的特征表征方式,最后幾層往往是專門針對我們饋送到網(wǎng)絡(luò)中的數(shù)據(jù),因此早期層所獲得的特征更為通用。
遷移學(xué)習(xí)就是在我們已訓(xùn)練過的 CNN 模型進行修正而得到的。我們一般會切除最后一層,然后再使用新的數(shù)據(jù)重新訓(xùn)練新建的最后一個分類層。這一過程也可以解釋為使用高級特征重新組合為我們需要識別的新目標。這樣,訓(xùn)練時間和數(shù)據(jù)都會大大減小,我們只需要重新訓(xùn)練最后一層就完成了整個模型的訓(xùn)練。
深度學(xué)習(xí)非常注重技術(shù),且很多技術(shù)都沒有太多具體的解釋或理論推導(dǎo),但大多數(shù)實驗結(jié)果都證明它們是有效的。因此也許從基礎(chǔ)上理解這些技術(shù)是我們后面需要完成的事情。
- 蜜度索驥:以跨模態(tài)檢索技術(shù)助力“企宣”向上生長
- 名創(chuàng)優(yōu)品超4000家門店接入“碰一下”支付,引爆年輕消費熱潮
- 免稅店也能用“碰一下”支付了!中免海南免稅店:碰一下就優(yōu)惠
- 報告:人工智能推動數(shù)據(jù)中心系統(tǒng)支出激增25%
- 密態(tài)計算技術(shù)助力農(nóng)村普惠金融 螞蟻密算、網(wǎng)商銀行項目入選大數(shù)據(jù)“星河”案例
- 專利糾紛升級!Netflix就虛擬機專利侵權(quán)起訴博通及VMware
- 兩大難題發(fā)布!華為啟動2024奧林帕斯獎全球征集
- 2025年工業(yè)軟件市場格局:7個關(guān)鍵統(tǒng)計數(shù)據(jù)與分析
- Commvault持續(xù)業(yè)務(wù)策略:應(yīng)對現(xiàn)代數(shù)據(jù)保護挑戰(zhàn)的新范式
- 2025年網(wǎng)絡(luò)安全主要趨勢
- 2025年值得關(guān)注的數(shù)據(jù)中心可持續(xù)發(fā)展趨勢
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責(zé)任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。