1. 程式人生 > 其它 >AI從業者搞懂---這10種深度學習方法---老婆孩子熱炕頭

AI從業者搞懂---這10種深度學習方法---老婆孩子熱炕頭

作者:王抒偉

編輯:王抒偉

首先,讓我們來看看主要有啥

1

1.機器學習

過去的十年裡已經爆炸了。 大夥幾乎每天都會在電腦科學計劃,行業會議和各大公眾號看到機器學習。 對於所有關於機器學習,許多人會把它能做什麼和他們希望做什麼混為一談。 從根本上說,機器學習是使用演算法從原始資料中提取資訊,並以某種型別的模型表示,我們使用這個模型來推斷我們尚未建模的其他資料。

2.神經網路

是機器學習的一種模型 他們已經存在了至少50年。 神經網路的基本單元是鬆散地基於哺乳動物大腦中的生物神經元的節點。 神經元之間的聯絡也是模仿生物大腦,這些聯絡的方式隨著時間的推移(“訓練”)。 為啥子現在火了嘞? 因為在二十一世紀初,計算能力呈指數級增長,業界發現計算技術的“寒武紀爆炸”,在此之前是不可能的。

3.深度學習

是作為這個領域的一個重要競爭者 在這個十年的爆炸式的計算增長中出現的,如果贏得了許多重要的機器學習競賽,工作直接籤。

為了讓自己走上狂潮(浪潮),我參加過 Andrew Ng,的“機器學習”課程,和“deeplearning.ai”課程, 這是深入學習的入門到放棄的一個很好的學習資料。

最近,我已經開始閱讀關於這個問題的學術論文,和三大會議的論文及前沿論文。

https://arxiv.org/

關於我通過研究和學習所學到的深度學習,有“大量豐富的”的知識。

在這裡,我想分享 AI幹事者、研究者可以應用於you guys的機器學習解決問題的 10個強大的深度學習方法。

讓我們定義一下啥是深度學習

2

前言

深度學習是很多人面臨的一個挑戰,因為它在過去的十年中已經慢慢地改變了形式。為了在視覺上設定深度學習,下圖展示了AI,機器學習和深度學習三者之間關係的概念。

人工智慧領域廣泛,已經有很長一段時間了,深度學習是機器學習領域的一個子集,AI的一個子領域。 一般將深度學習網路與“典型”前饋多層網路(FP)區分開來的方面如下:

  • 比以前的網路更多的神經元
  • 更復雜的連線層的方式
  • “寒武紀大爆炸”的計算訓練能力
  • 自動特徵提取( 因為我懶啊 )

當我說“更多的神經元”,意思是神經元數量已經上升了多年來表達更復雜的模型。 然後,深度學習可以被定義為具有四個基本網路體系結構之一中的:大量‘引數和層’的神經網路:

  • 無監督的預訓練網路
  • 卷積神經網路
  • 迴歸(復)神經網路
  • 遞迴神經網路

在這篇文章中,我主要關注後三種架構。

一、卷積神經網路

是基本上已經跨越使用共享權重的空間延伸的標準神經網路。CNN被設計為通過在內部卷積來識別影象,其看到影象上識別的物件的邊緣。

二、迴歸神經網路

是基本上已經通過具有邊緣,其遞進給到下一個時間步長,而不是成在同一時間步驟中的下一層跨越時間延長標準神經網路。RNN被設計為識別序列,例如語音訊號或文字。它裡面的迴圈意味著網路中存在短暫的記憶體。

三、遞迴神經網路

更像是一個分層網路,其中輸入序列確實沒有時間方面,但輸入必須以樹狀方式分層處理。以下10種方法可以應用於所有這些體系結構。

為了有助於理解,因為一般人是不會閒到去翻譯文獻的,這裡我把Recurrent Neural Networks譯成迴歸,Recursive Neural Networks譯成遞迴,看文獻的請對號入座。

十個應用(重點!吐血整理)

3

1 - 反向傳播(BP)

Back-propagation只是一種計算函式偏導數(或梯度)的方法,函式具有函式組成的形式(如神經網路)。當您使用基於梯度的方法(梯度下降只是其中之一)解決優化問題時,您需要在每次迭代中計算函式梯度。

對於神經網路而言,目標函式具有合成的形式 你如何計算梯度?

BP演算法是Delta規則的推廣,要求每個人工神經元(節點)所使用的激勵函式必須是可微的。BP演算法特別適合用來訓練前向神經網路,有兩種常見的方式來做到這一點:

(一)分析微分,你知道函式的形式,只需使用鏈式規則(基本演算)來計算函式梯度。 (二)使用有限差分進行近似微分。

其中(二)方法的計算量很大,因為評估函式的數量級是 O(N),其中 N 是引數的數量。與分析微分相比,就相形見絀了。然而,有限差分通常用於在除錯時驗證後端時很有效。

2 - 隨機梯度下降(SGD)

想想漸變下降的一種直觀的方式是想象一條源於山頂的河流的小路。 梯度下降的目標正是河流努力實現的目標 - 即到達從山上邁著扯著蛋的步子溜向山腳。 現在,如果山的地形是這樣形成的,即在到達最終目的地(這是山麓的最低點)之前,河流不必完全停下來,那麼這是我們所希望的理想情況。

在機器學習中,我們已經找到了從初始點(山頂)開始的解的全域性最小值(或最優值)。 但是,這可能是因為地形的性質使得路徑上的幾個坑,這可能會迫使河流陷入困境,在機器學習方面,這種‘坑’被稱為區域性最優,有很多方法(文獻)可以解決這個問題,想聽的舉起手來,我看看。

因此,梯度下降傾向於卡在區域性最小值,這取決於地形的性質(或ML中的函式)。 但是,當你有一個特殊的山地形(形狀像一個碗,在ML術語中稱為凸函式),該演算法始終保證找到最佳。

你可以想象這再次描繪了一條河流。這些特殊的地形(又稱凸函式)總是在ML中優化的祝福。另外,取決於你最初從哪裡開始(即函式的初始值),你可能會走上一條不同的路。同樣,根據河流的爬升速度(即梯度下降演算法的學習速率或步長),您可能會以不同的方式到達最終目的地。

3 - 學習率衰減

根據隨機梯度下降優化程式調整學習率可以提高效能並減少訓練時間。有時這被稱為 學習速率退火 或 自適應學習速率。

最簡單的學習速率:是隨著時間的推移而降低學習速度。當使用較大的學習速率值時,它們具有在訓練過程開始時進行大的改變的益處,並且降低了學習速率,使得稍後在訓練過程中對較小的速率進行訓練更新,從而對訓練進行更新,這樣可以達到早期快速學習好權重並稍後進行微調的效果。

兩個流行和易於使用的學習率衰減如下:

在訓練過程中逐步降低學習率。 在特定的epochs中降低學習速度比如Adam

http://www.cnblogs.com/neopenx/p/4768388.html

4 - Dropout

具有大量引數的深度神經網路是非常強大的機器學習系統,過度擬合也是一個問題,大型網路的使用也很慢,通過在測試時間結合許多不同的大型神經網路的預測,很難處理過度擬合,Dropout是解決這個問題的一種技巧。

關鍵的思想是在訓練期間從神經網路中隨機丟掉某些單元(連同他們的連線),這可以防止單元適應太多 在訓練期間,從不同的指數級的“稀疏”網路中剔除樣本。 在測試時間,通過簡單地使用具有較小權重的單個未解壓的網路來容易地近似平均所有這些細化網路的預測的效果。這顯著減少了過擬合,並且比其他正則化方法有了重大改進。 Dropout已被證明可以提高神經網路在視覺監控學習任務,語音識別,文件分類和計算生物學的效能,在許多基準資料集上獲得最新的結果。

5 - 最大的池化

最大池化是一個基於樣本的離散化過程。目標是對輸入表示(影象,隱藏層輸出矩陣等)進行下采樣,降低其維度,並允許對包含在分割槽域中的特徵進行假設。

這部分是通過提供表示的抽象形式來解決過度擬合,它通過減少要學習的引數數量來降低計算成本,併為內部表示提供基本的平移不變性(量子力學既視感,誰讓我有物理背景呢,哈哈),最大池化是通過將最大過濾波器應用於初始表示的通常不重疊的子區域來完成的。

6 - 批量標準化(有時也稱歸一化)

當然,包括深度網路的神經網路需要仔細調整權重,初始化和學習引數,批量標準化豈不是美滋滋? 權重問題: 無論權重的初始化如何,無論是隨機的還是經驗性的選擇,它們都遠離學習權重。考慮一個小批量,在最初的時期,將會有許多異常值在所需的功能啟用方面。 深層神經網路本身是不適宜的,即初始層中的小擾動導致後面層的大變化。

在反向傳播過程中,這些現象會導致對梯度的分離,這意味著在學習權重以產生所需輸出之前,梯度必須補償異常值。這導致需要額外的epoch來收斂。

批量歸一化使這些梯度從分散到正常值,並在小批量範圍內流向共同目標(通過歸一化) 學習率問題:一般來說,學習率保持較低,只有一小部分的梯度校正權重,原因是異常啟用的梯度不應影響學習的啟用。通過批量標準化,這些異常啟用減少,因此可以使用更高的學習速度來加速學習過程。

7-LSTM網路:

LSTM網路具有以下三個方面,使其與常規神經網路中的常見神經元不同:

  • 它決定何時讓輸入進入神經元。
  • 它決定何時記住上一個時間中計算的內容
  • 它決定何時讓輸出傳遞到下一個時間戳。

LSTM的優點在於它根據當前的輸入本身來決定所有這些,所以如果你看下面的圖表:

當前時間標記處的輸入訊號x(t)決定所有上述3個點。 輸入門決定點1.遺忘門在點2的決策,輸出門在點3輸出決策,單獨的輸入是能夠採取所有這三個決策,這受到我們的大腦如何工作的啟發,並且可以基於輸入來處理突然的上下文切換。

8-Skip-gram

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

Skip-gram是學習單詞嵌入演算法的模型,此模型(以及許多其他的詞語嵌入模型)背後的主要思想如下:如果 兩個詞彙詞彙共享相似的上下文,則它們是相似的。

換句話說,假設你有一個句子,就像“貓是哺乳動物”一樣,如果你用“狗”而不是“貓”,這個句子還是一個有意義的句子,所以在這個例子中,“狗”和“貓”可以共享相同的語境(即“是哺乳動物”)。

9 - Continuous Bag Of Words(CBOW)

在自然語言處理問題中,我們希望學習將文件中的每個單詞表示為一個數字的向量,使得出現在相似的上下文中的單詞具有彼此接近的向量。

在連續的單詞模型中,目標是能夠使用圍繞特定單詞的上下文並預測特定單詞,基於上述假設,你可以考慮一個上下文視窗(一個包含k個連續項的視窗)

然後你應該跳過其中一個單詞,試著去學習一個能夠得到除跳過項外的所有項的神經網路,並預測跳過的項,如果兩個詞在一個大語料庫中反覆共享相似的語境,則這些詞的嵌入向量將具有相近的向量。

我們通過在一個大的語料庫中採取大量的句子來做到這一點,每當我們看到一個單詞時,我們就會聽到這個單詞。然後,我們將上下文單詞輸入到一個神經網路,並在這個上下文的中心預測單詞。

當我們有成千上萬個這樣的上下文單詞和中心詞時,我們有一個神經網路資料集的例項。我們訓練神經網路,最後編碼的隱藏層輸出表示特定單詞的嵌入。恰巧當我們通過大量的句子進行訓練時,類似語境中的單詞得到相似的向量。

10 - 遷移學習(brilliant idea)

讓我們考慮一下影象如何穿過卷積神經網路,假設你有一個影象,你應用卷積,並得到畫素的組合作為輸出。

假設他們是邊緣。現在再次應用卷積,所以現在你的輸出是邊或線的組合。現在再次應用卷積,所以你的輸出是線的組合等等。

你可以把它看作是每一層尋找一個特定的模式,神經網路的最後一層往往會變得非常細化。在ImageNet上,你的網路最後一層就是尋找baby,狗或飛機等等。你可能會看到網路尋找眼睛或耳朵或嘴巴或輪子。

深度CNN中的每一層都逐漸建立起越來越高層次的特徵表徵,最後幾層往往是專門針對您輸入模型的任何資料。另一方面,早期的圖層更為通用,在一大類圖片中有許多簡單的圖案。

轉移學習就是當你在一個數據集上訓練CNN時,切掉最後一層,在不同的資料集上重新訓練最後一層的模型,直觀地說,你正在重新訓練模型以識別不同的高階功能。因此,訓練時間會減少很多,所以當您沒有足夠的資料或者訓練需要太多的資源時,遷移學習是一個有用的東東哦。


參考資料:

  1. Chris Olah’s的LSTM網路
  2. Andrey Kurenkov’s 簡短的深度學習史
  3. 簡明深度學習方法概述 Deep Learning
  4. Using Learning Rate Schedules for Deep Learning Models in Python with Keras
http://colah.github.io/posts/2015-08-Understanding-LSTMs/

http://www.andreykurenkov.com/writing/a-brief-history-of-neural-nets-and-deep-learning/

http://dataunion.org/11583.html

https://www.tuicool.com/articles/jQzAzyE