AI從業者須要應用的10種深度學習方法

AI從業者須要應用的10種深度學習方法

在過去十年中,人們對機器學習的興趣激增。幾乎天天,咱們均可以在各類各樣的計算機科學課程、行業會議、華爾街日報等等看到有關機器學習的討論。在全部關於機器學習的討論中,許多人把機器學習能作的事情和他們但願機器學習作的事情混爲一談。從根本上講,機器學習是使用算法從原始數據中提取信息,並在某種類型的模型中表示這些信息。咱們使用這個模型來推斷尚未建模的其餘數據。html

神經網絡是機器學習的一種模型,它們至少有50年曆史了。神經網絡的基本單元是節點(node),基本上是受哺乳動物大腦中的生物神經元啓發。神經元之間的鏈接也以生物的大腦爲模型,這些鏈接隨着時間的推移而發展的方式是爲「訓練」。node

在20世紀80年代中期和90年代初期,許多重要的模型架構進步都是在神經網絡中進行的。然而,爲了得到良好性能所需的時間和數據愈來愈多,這極大的下降了研究人員的興趣。在21世紀初期,計算能力呈指數級增加,研究人員看到了計算機技術的「寒武紀爆發」。做爲該領域的一個重要競爭者——深度學習,由於計算能力的爆炸式增加,贏得了許多重要的機器學習競賽。截至目前,這種趨勢仍然沒有減退;今天,咱們看到機器學習的每一個角落都提到了深度學習。git

最近,我開始閱讀有關該深度學習的學術論文。根據個人研究,如下是一些對該領域的發展產生巨大影響的出版物:github

  • 紐約大學基於梯度的學習應用於文檔識別(1998),它將卷積神經網絡引入機器學習世界。
  • 多倫多大學的DeepBoltzmann Machines(2009),它爲Boltzmann機器提供了一種新的學習算法,包含許多隱藏變量層。
  • 斯坦福和谷歌使用大規模無監督學習構建高級功能(2012),解決了僅使用未標記數據構建高級,類特定功能檢測器的問題。
  • Berkeley的DeCAF-一種用於通用視覺識別的深度卷積激活功能(2013),它發佈了DeCAF,這是一種深度卷積激活功能的開源實現,以及全部相關的網絡參數,使視覺研究人員可以進行深度實驗跨越一系列視覺概念學習範例的表示。
  • DeepMind使用Deep ReinforcementLearning(2016)播放Atari,它提供了第一個深度學習模型,可使用強化學習直接從高維感受輸入成功學習控制策略。

經過研究和學習論文,我學到了不少關於深度學習的豐富知識。在這裏,我想分享AI工程師能夠應用於機器學習問題的10種強大的深度學習方法。但首先,讓咱們來定義深度學習是什麼。深度學習對於許多人來講是一個挑戰,由於它的形式在過去十年中逐漸發生了改變。爲了向各位更好的說明深層學習的地位,下圖說明了人工智能,機器學習和深度學習之間關係的概念。算法

人工智能領域很普遍,而且已經存在了很長時間。深度學習是機器學習領域的一個子集,而機器學習只是人工智能的一個子領域。將深度學習網絡與以前的前饋多層網絡進行區分:數組

  • 深度學習比之前的網絡更多的神經元;
  • 深度學習中有更復雜的鏈接層的方式;
  • 「寒武紀爆炸」的提供的計算能力;
  • 深度學習能夠自動進行特徵提取。

當我說到「更多神經元」時,是指近年來神經元的數量不斷增長,深度學習就能夠表示更爲複雜的模型。層也從多層網絡中每一層的徹底鏈接,進化成卷積神經網絡中神經元片斷的局部鏈接,以及與遞歸神經網絡中的同一神經元的循環鏈接(與前一層的鏈接除外)。網絡

深度學習能夠被定義爲具備大量參數和層數的神經網絡:架構

  • 無人監督的預訓練網絡;
  • 卷積神經網絡;
  • 循環神經網絡;
  • 遞歸神經網絡。

在這篇文章中,我主要對後三種網絡進行講解。卷積神經網絡(CNN)基本上式已經跨越使用共享權重的空間延伸的標準神經網絡。CNN旨在經過在內部的卷積來識別圖像,該卷積看到圖像上識別對象的邊緣。遞歸神經網絡基本上是一個使用時間延伸擴展空間的標準神經網絡,它提取進入下一時間步的邊沿,而不是在同一時間進入下一層。RNN進行序列識別,例如語音或文本信號,因其內部具備循環,意味着在RNN網絡中存在短時記憶。遞歸神經網絡更相似於分層網絡,其中輸入序列實際上與時間無關,但輸入必須以樹狀方式分層處理。下面的10種方法能夠應用於全部這些架構。app

1. 反向傳播

Back-prop反向傳播只是一種簡單計算函數的偏導數的方法,它具備函數組合的形式(如神經網絡中)。當你使用基於梯度的方法解決最優化問題(梯度降低只是其中之一)時,你但願在每次迭代時計算函數漸變,這個時候它即可以發揮做用。機器學習

對於神經網絡,其目標函數具備組合的形式。你如何計算梯度?有兩種常見的方法能夠作到:

  • (i)分析微分法。若是你知道函數的形式,你只需使用鏈式規則(基本微積分)計算導數。
  • (ii)有限差分的近似微分。該方法在計算上是昂貴的,由於評估函數的數量是O(N),其中N是參數的數量。與解析微分相比,這種方法的計算成本是昂貴的。在調試時,一般使用有限差分驗證反向傳播的執行效果

2. 隨機梯度降低

想象梯度降低的直觀方式是想象一條源自山頂的河流的路徑。梯度降低的目標正是河流努力實現的目標,即從山頂流到最低點。

如今,若是山的地形形狀使得河流在到達其最終目的地以前沒必要徹底停在任何地方,這是咱們想要的理想狀況。在機器學習中,這至關於說,咱們已經從初始點(山頂)開始找到解決方案的全局最小值(或最優值)。然而,可能因爲地形性質,致使河流路徑出現若干的坑窪,會迫使河流困住和停滯。在機器學習方面,這種坑窪被稱爲局部最優解,這是咱們不想要的狀況。固然有不少方法能夠解決局部最優解問題,這裏我不打算進一步討論。

所以,梯度降低傾向於陷入局部最小值,這取決於地形的性質(或ML術語中的函數)。可是,當你有一種特殊的山地形狀(形狀像一個碗,用ML術語稱爲凸函數)時,算法始終可以找到最優值。你能夠想象將這條河流可視化。在機器學習中,這些特殊的地形(也稱爲凸函數)老是須要優化的。另外,你從山頂開始(即函數的初始值)的位置不一樣,最終你到達山底的路徑也徹底不一樣。一樣,根據河流的流淌速度(即梯度降低算法的學習速率或步長),你可能會以不一樣的方式到達目的地。你是否會陷入或避免一個坑(局部最小),都會被這兩個標準影響。

3. 學習速率衰減

調整隨機梯度降低優化程序的學習速率能夠提升性能並縮短訓練時間。有時這也被稱爲學習率退火或自適應學習率。在訓練期間最簡單且最經常使用的學習率調整是隨時間下降學習率的技術。在訓練初期使用較大的學習速率值,能夠對學習速率進行大幅調整;在訓練後期,下降學習速率,使模型以一個較小的速率進行權重的更新。這種技術在早期能夠快速學習得到一些較好的權重,並在後期對權重進行微調。

兩種流行且易於使用的學習率衰減以下:

  • 在每一個環節逐漸下降學習率。
  • 在特定時期使用大幅降低來下降學習速率。

4. Dropout

具備大量參數的深度神經網絡是很是強大的機器學習系統。然而,過分擬合是這種網絡中的嚴重問題。大型網絡使用起來也很慢,所以在測試時將許多不一樣的大型神經網絡的預測結合起來很難處理過分擬合。Dropout就是一種解決此問題的技術。

關鍵思想是在訓練期間從神經網絡中隨機刪除單元及其鏈接,這能夠防止單元間的過分適應。在訓練期間,從指數數量的不一樣「稀疏」網絡中抽取樣本。在測試時,經過簡單地使用具備較小權重的單解開網絡(untwinednetwork),很容易近似平均全部這些稀疏網絡以達到預測的效果。這顯着減小了過分擬合,而且比其餘正則化方法表現的更好。Dropout已被證實能夠改善神經網絡在計算機視覺,語音識別,文檔分類和計算生物學等領域的監督學習任務的性能,並在許多基準數據集上得到最早進的結果。

5. 最大池化

最大池化是基於樣本的離散化過程。目的是對輸入表示(圖像、隱藏層輸出矩陣等)進行下采樣,經過下降其維數並容許對包含在子區域中的特徵進行合併。

經過提供表徵的抽象形式,這種方法在某種程度上有助於解決過擬合。一樣,它也經過減小學習參數的數量和提供基本的內部表徵的轉換不變性來減小計算量。最大池化是經過將最大過濾器應用於一般不重疊的初始表徵子區域來完成的。

6. 批量歸一化

固然,包括深度網絡在內的神經網絡須要仔細調整權重初始化和學習參數。批量歸一化有助於讓中國過程更簡單一點。

6.1 權重問題:
  • 不管那種權重的初始化,隨機仍是憑經驗選擇,它們都和學習權重差異很大。考慮一個小批量數據集,在最初的時期,在特徵激活時都會有許多異常值。
  • 深度神經網絡自己脆弱的,即初始層的微小擾動都會致使後面層很大的變化。

在反向傳播期間,這些現象會致使梯度偏移,這意味着在學習權重以產生所需輸出以前,梯度必須補償異常值。這也將致使須要額外的時間來收斂。

批量歸一化將這些梯度從離散規則化爲正常值,並在小批量的範圍內朝向共同目標(經過歸一化它們)流動。

6.2 學習率問題:

一般,學習率保持較小,使得只有一小部分的梯度用來校訂權重,緣由是異常激活的梯度不該該影響已經學習好的權重。經過批量歸一化,這些異常值被激活的可能性就會減小,所以可使用更高的學習率來加速學習過程。

7. 長短時間記憶

LSTM網絡具備如下三個方面,使其與遞歸神經網絡中的常規神經元區分開來:

  1. 它能夠控制什麼時候讓輸入進入神經元。
  2. 它能夠控制什麼時候記住上一個時間步驟中計算的內容。
  3. 它能夠控制什麼時候將輸出傳遞給下一個時間戳。

LSTM的優勢在於它根據當前輸入自己決定全部這些,以下圖所示:

當前時間戳處的輸入信號x(t)決定全部上述3個點。輸入門決定點1.遺忘門在點2上作出決定,輸出門在點3上作出決定。輸入門能單獨可以作出這三個決定。這受到了咱們的大腦是如何工做的啓發,而且能夠處理忽然的上下文切換。

8. Skip-gram

詞嵌入模型的目標是爲了每一個詞彙學習一個高維密集表徵,其中嵌入向量之間的類似性顯示了相應單詞之間的語義或句法類似性。Skip-gram是學習詞嵌入算法的模型。

skip-gram模型(以及許多其餘詞嵌入模型)背後的主要思想以下:若是兩個詞彙有類似的上下文,則它們是類似的。

換句話說,假設你有一句話,好比「貓是哺乳動物」。若是你使用術語「狗」而不是「貓」,句子仍然是一個有意義的句子。所以在該示例中,「狗」和「貓」能夠共享相同的背景(即「是哺乳動物」)。

基於上述假設,你能夠考慮一個上下文窗口(一個包含k個連續術語的窗口)。而後你應該跳過其中一個單詞,並嘗試學習除了跳過的一個術語以外的全部術語並預測跳過的術語的神經網絡。所以若是兩個單詞在大型語料庫中重複地共享類似的上下文,那些這些術語的嵌入向量將具備類似的向量。

9. 連續的詞袋模型(Continuous Bag of Words)

在天然語言處理問題中,咱們但願學習將文檔中的每一個單詞表示爲數字向量,使得出如今類似上下文中的單詞具備彼此接近的向量。在連續詞袋模型中,目標是可以使用圍繞特定單詞的上下文並預測特定單詞。

咱們經過在一個大型語料庫中抽取大量句子來作到這一點,每次看到一個單詞時,咱們都會使用其上下文單詞。而後咱們將上下文單詞輸入到一個神經網絡中,並預測該上下文中心的單詞。

當咱們有數千個這樣的上下文單詞和中心單詞時,咱們就有一個神經網絡數據集的實例。咱們訓練神經網絡,在通過編碼的隱藏層的輸出表示特定單詞的嵌入。碰巧的是,當咱們在大量句子上訓練時,相似上下文中的單詞會獲得相似的向量。

10. 遷移學習

考慮下圖像是如何經過卷積神經網絡的。假設你有一個圖像,你應用卷積,你獲得像素組合做爲輸出。若是碰到了邊緣,則再次應用卷積,因此如今輸出是邊或線的組合。而後再次應用卷積,此時的輸出將是線的組合,依此類推。你能夠將其視爲每一個層尋找特定模式。神經網絡的最後一層每每變得很是專業。若是你正在使用ImageNet,那麼你的網絡最後一層將尋找兒童或狗或飛機或其餘什麼。再後退幾層你可能會看到網絡正在尋找眼睛或耳朵或嘴或輪子。

深度CNN中的每一個層逐漸創建了更高和更高級別的特徵表徵。最後幾層每每專一於你輸入模型的任何數據。另外一方面,早期的圖層更通用,是在更大類的圖片中找到不少簡單的模式。

遷移學習是指你在一個數據集上訓練CNN,切斷最後一層,在其餘不一樣的數據集上從新訓練模型的最後一層。直觀地說,你正在從新訓練模型以識別不一樣的更高級別的功能。所以,模型訓練的時間會大大減小,所以當你沒有足夠的數據或者訓練所需的太多資源時,遷移學習是一種有用的工具。

本文僅顯示這些方法的通常概述。我建議閱讀如下文章以得到更詳細的解釋:

深度學習是很是注重技術實踐的。本文中的每一個新想法都沒有太多具體的解釋。對於大多數新想法都附帶了實驗結果來證實它們可以運做。深度學習就像玩樂高,掌握樂高與任何其餘藝術同樣具備挑戰性,但相比之下入門樂高是容易的。

以上爲譯文。

  • 本文由阿里云云棲社區組織翻譯。
  • 文章原標題《the-10-deep-learning-methods-ai-practitioners-need-to-apply》,
  • 做者: James Le 譯者:虎說八道,審校:。
相關文章
相關標籤/搜索