1. 程式人生 > >Deep learning:學前了解

Deep learning:學前了解

訊飛 ace pro 嚴格 spa mit 獲得 ima rds

以前學習硬件方面知識比較多,對深度學習知識有一定的了解。最近開始學習深度學習來提升自己。

深度學習


首先要了解深度學習的概念。深度學習的概念源於人工神經網絡的研究。含多隱層的多層感知器就是一種深度學習結構。深度學習通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發現數據的分布式特征表示。

深度學習的概念由Hinton等人於2006年提出。基於深度置信網絡(DBN)提出非監督貪心逐層訓練算法,為解決深層結構相關的優化難題帶來希望,隨後提出多層自動編碼器深層結構。此外Lecun等人提出的卷積神經網絡是第一個真正多層結構學習算法,它利用空間相對關系減少參數數目以提高訓練性能。

深度學習是機器學習中一種基於對數據進行表征學習的方法。觀測值(例如一幅圖像)可以使用多種方式來表示,如每個像素強度值的向量,或者更抽象地表示成一系列邊、特定形狀的區域等。而使用某些特定的表示方法更容易從實例中學習任務(例如,人臉識別或面部表情識別)。深度學習的好處是用非監督式或半監督式的特征學習和分層特征提取高效算法來替代手工獲取特征。

深度學習是機器學習研究中的一個新的領域,其動機在於建立、模擬人腦進行分析學習的神經網絡,它模仿人腦的機制來解釋數據,例如圖像,聲音和文本。

同機器學習方法一樣,深度機器學習方法也有監督學習與無監督學習之分.不同的學習框架下建立的學習模型很是不同.例如,卷積神經網絡(Convolutional neural networks,簡稱CNNs)就是一種深度的監督學習下的機器學習模型,而深度置信網(Deep Belief Nets,簡稱DBNs)就是一種無監督學習下的機器學習模型。

背景


機器學習(Machine Learning)是一門專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能的學科。機器能否像人類一樣能具有學習能力呢?1959年美國的塞繆爾(Samuel)設計了一個下棋程序,這個程序具有學習能力,它可以在不斷的對弈中改善自己的棋藝。4年後,這個程序戰勝了設計者本人。又過了3年,這個程序戰勝了美國一個保持8年之久的常勝不敗的冠軍。這個程序向人們展示了機器學習的能力,提出了許多令人深思的社會問題與哲學問題。

基礎概念


深度

從一個輸入中產生一個輸出所涉及的計算可以通過一個流向圖

(flow graph)來表示:流向圖是一種能夠表示計算的圖,在這種圖中每一個節點表示一個基本的計算以及一個計算含多個隱層的深度學習模型的值,計算的結果被應用到這個節點的子節點的值。考慮這樣一個計算集合,它可以被允許在每一個節點和可能的圖結構中,並定義了一個函數族。輸入節點沒有父節點,輸出節點沒有子節點。

這種流向圖的一個特別屬性是深度(depth):從一個輸入到一個輸出的最長路徑的長度。

傳統的前饋神經網絡能夠被看做擁有等於層數的深度(比如對於輸出層為隱層數加1)SVMs有深度2(一個對應於核輸出或者特征空間,另一個對應於所產生輸出的線性混合)

人工智能研究的方向之一,是以所謂專家系統為代表的,用大量 如果-” (If - Then) 規則定義的,自上而下的思路。人工神經網絡 ( Artifical Neural Network),標誌著另外一種自下而上的思路。神經網絡沒有一個嚴格的正式定義。它的基本特點,是試圖模仿大腦的神經元之間傳遞,處理信息的模式。

解決問題

需要使用深度學習解決的問題有以下的特征:

深度不足會出現問題。

人腦具有一個深度結構。

認知過程逐層進行,逐步抽象。

深度不足會出現問題

在許多情形中深度2就足夠表示任何一個帶有給定目標精度的函數。但是其代價是:圖中所需要的節點數(比如計算和參數數量)可能變的非常大。理論結果證實那些事實上所需要的節點數隨著輸入的大小指數增長的函數族是存在的。

我們可以將深度架構看做一種因子分解。大部分隨機選擇的函數不能被有效地表示,無論是用深的或者淺的架構。但是許多能夠有效地被深度架構表示的卻不能被用淺的架構高效表示。一個緊的和深度的表示的存在意味著在潛在的可被表示的函數中存在某種結構。如果不存在任何結構,那將不可能很好地泛化。

大腦有一個深度架構

例如,視覺皮質得到了很好的研究,並顯示出一系列的區域,在每一個這種區域中包含一個輸入的表示和從一個到另一個的信號流(這裏忽略了在一些層次並行路徑上的關聯,因此更復雜)。這個特征層次的每一層表示在一個不同的抽象層上的輸入,並在層次的更上層有著更多的抽象特征,他們根據低層特征定義。

需要註意的是大腦中的表示是在中間緊密分布並且純局部:他們是稀疏的:1%神經元是同時活動的。給定大量的神經元,仍然有一個非常高效地(指數級高效)表示。

認知過程逐層進行,逐步抽象

人類層次化地組織思想和概念;

人類首先學習簡單的概念,然後用他們去表示更抽象的;

工程師將任務分解成多個抽象層次去處理;

學習/發現這些概念(知識工程由於沒有反省而失敗?)是很美好的。對語言可表達的概念的反省也建議我們一個稀疏的表示:僅所有可能單詞/概念中的一個小的部分是可被應用到一個特別的輸入(一個視覺場景)

基本思想


深度學習的核心思想

假設我們有一個系統S,它有n層(S1,…Sn),它的輸入是I,輸出是O,形象地表示為: I =>S1=>S2=>…..=>Sn => O,如果輸出O等於輸入I,即輸入I經過這個系統變化之後沒有任何的信息損失,設處理a信息得到b,再對b處理得到c,那麽可以證明:ac的互信息不會超過ab的互信息。這表明信息處理不會增加信息,大部分處理會丟失信息。保持了不變,這意味著輸入I經過每一層Si都沒有任何的信息損失,即在任何一層Si,它都是原有信息(即輸入I)的另外一種表示。現在回到主題Deep Learning,需要自動地學習特征,假設我們有一堆輸入I(如一堆圖像或者文本),假設設計了一個系統S(有n層),通過調整系統中參數,使得它的輸出仍然是輸入I,那麽就可以自動地獲取得到輸入I的一系列層次特征,即S1…, Sn

對於深度學習來說,其思想就是對堆疊多個層,也就是說這一層的輸出作為下一層的輸入。通過這種方式,就可以實現對輸入信息進行分級表達了。

另外,前面是假設輸出嚴格地等於輸入,這個限制太嚴格,可以略微地放松這個限制,例如只要使得輸入與輸出的差別盡可能地小即可,這個放松會導致另外一類不同的Deep Learning方法。上述就是Deep Learning的基本思想。

把學習結構看作一個網絡,則深度學習的核心思路如下:

無監督學習用於每一層網絡的pre-train

每次用無監督學習只訓練一層,將其訓練結果作為其高一層的輸入;

用自頂而下的監督算法去調整所有層

主要技術


線性代數、概率和信息論

欠擬合、過擬合、正則化

最大似然估計和貝葉斯統計

隨機梯度下降

監督學習和無監督學習

深度前饋網絡、代價函數和反向傳播

正則化、稀疏編碼和dropout

自適應學習算法

卷積神經網絡

循環神經網絡

遞歸神經網絡

深度神經網絡和深度堆疊網絡

LSTM長短時記憶

主成分分析

正則自動編碼器

表征學習

蒙特卡洛

受限波茲曼機

深度置信網絡

softmax回歸、決策樹和聚類算法

KNNSVM

生成對抗網絡和有向生成網絡

機器視覺和圖像識別

自然語言處理

語音識別和機器翻譯

有限馬爾科夫

動態規劃

梯度策略算法

增強學習(Q-learning

轉折點

2006年前,嘗試訓練深度架構都失敗了:訓練一個深度有監督前饋神經網絡趨向於產生壞的結果(同時在訓練和測試誤差中),然後將其變淺為1(1或者2個隱層)

2006年的3篇論文改變了這種狀況,由Hinton的革命性的在深度信念網(Deep Belief Networks, DBNs)上的工作所引領:

Hinton, G. E., Osindero, S. and Teh, Y.,A fast learning algorithm for deep belief nets.Neural Computation 18:1527-1554, 2006

Yoshua Bengio, Pascal Lamblin, Dan Popovici and Hugo Larochelle,Greedy LayerWise Training of Deep Networks, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems 19 (NIPS 2006), pp. 153-160, MIT Press, 2007

Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra and Yann LeCun Efficient Learning of Sparse Representations with an Energy-Based Model, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems (NIPS 2006), MIT Press, 2007

在這三篇論文中以下主要原理被發現:

表示的無監督學習被用於()訓練每一層;

在一個時間裏的一個層次的無監督訓練,接著之前訓練的層次。在每一層學習到的表示作為下一層的輸入;

用有監督訓練來調整所有層(加上一個或者更多的用於產生預測的附加層)

DBNs在每一層中利用用於表示的無監督學習RBMsBengio et al paper 探討和對比了RBMsauto-encoders(通過一個表示的瓶頸內在層預測輸入的神經網絡)Ranzato et al paper在一個convolutional架構的上下文中使用稀疏auto-encoders(類似於稀疏編碼)Auto-encodersconvolutional架構將在以後的課程中講解。

2006年以來,大量的關於深度學習的論文被發表。

成功應用


1、計算機視覺

ImageNet Classification with Deep Convolutional Neural Networks, Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton, NIPS 2012.

Learning Hierarchical Features for Scene Labeling, Clement Farabet, Camille Couprie, Laurent Najman and Yann LeCun, IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013.

Learning Convolutional Feature Hierarchies for Visual Recognition, Koray Kavukcuoglu, Pierre Sermanet, Y-Lan Boureau, Karol Gregor, Micha?l Mathieu and Yann LeCun, Advances in Neural Information Processing Systems (NIPS 2010), 23, 2010.

2、語音識別

微軟研究人員通過與hinton合作,首先將RBMDBN引入到語音識別聲學模型訓練中,並且在大詞匯量語音識別系統中獲得巨大成功,使得語音識別的錯誤率相對減低30%。但是,DNN還沒有有效的並行快速算法,很多研究機構都是在利用大規模數據語料通過GPU平臺提高DNN聲學模型的訓練效率。

在國際上,IBMgoogle等公司都快速進行了DNN語音識別的研究,並且速度飛快。

國內方面,阿裏巴巴,科大訊飛、百度、中科院自動化所等公司或研究單位,也在進行深度學習在語音識別上的研究。

3、自然語言處理等其他領域

很多機構在開展研究,2013Tomas Mikolov,Kai Chen,Greg Corrado,Jeffrey Dean發表論文Efficient Estimation of Word Representations in Vector Space建立word2vector模型,與傳統的詞袋模型(bag of words)相比,word2vector能夠更好地表達語法信息。 深度學習在自然語言處理等領域主要應用於機器翻譯以及語義挖掘等方面。

Deep learning:學前了解