【轉載】Deep Learning(深度學習)學習筆記整理

看到很早的介紹深度學習的系列文章:深度學習介紹

下面是一點摘抄:

機器學習(Machine Learning)是一門專門研究計算機怎樣模擬或實現人類的學習行爲,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能的學科。
從原始信號攝入開始(瞳孔攝入像素 Pixels),接着做初步處理(大腦皮層某些細胞發現邊緣和方向),然後抽象(大腦判定,眼前的物體的形狀,是圓形的),然後進一步抽象(大腦進一步判定該物體是隻氣球)
總的來說,人的視覺系統的信息處理是分級的。從低級的V1區提取邊緣特徵,再到V2區的形狀或者目標的部分等,再到更高層,整個目標、目標的行爲等。也就是說高層的特徵是低層特徵的組合,從低層到高層的特徵表示越來越抽象,越來越能表現語義或者意圖。而抽象層面越高,存在的可能猜測就越少,就越利於分類。例如,單詞集合和句子的對應是多對一的,句子和語義的對應又是多對一的,語義和意圖的對應還是多對一的,這是個層級體系。

特徵表示的粒度,結構性特徵表示
小塊的圖形可以由基本edge構成,更結構化,更復雜的,具有概念性的圖形如何表示呢?這就需要更高層次的特徵表示,比如V2,V4。因此V1看像素級是像素級。V2看V1是像素級,這個是層次遞進的,高層表達由底層表達的組合而成。專業點說就是基basis。V1取提出的basis是邊緣,然後V2層是V1層這些basis的組合,這時候V2區得到的又是高一層的basis。即上一層的basis組合的結果,上上層又是上一層的組合basis……(所以有大牛說Deep learning就是“搞基”,因爲難聽,所以美其名曰Deep learning或者Unsupervised Feature Learning)

淺層學習和深度學習
20世紀80年代末期,用於人工神經網絡的反向傳播算法(也叫Back Propagation算法或者BP算法)的發明,給機器學習帶來了希望,掀起了基於統計模型的機器學習熱潮。這個熱潮一直持續到今天。人們發現,利用BP算法可以讓一個人工神經網絡模型從大量訓練樣本中學習統計規律,從而對未知事件做預測。這種基於統計的機器學習方法比起過去基於人工規則的系統,在很多方面顯出優越性。這個時候的人工神經網絡,雖也被稱作多層感知機(Multi-layer Perceptron),但實際是種只含有一層隱層節點的淺層模型。

2006年,加拿大多倫多大學教授、機器學習領域的泰斗Geoffrey Hinton和他的學生RuslanSalakhutdinov在《科學》上發表了一篇文章,開啓了深度學習在學術界和工業界的浪潮。這篇文章有兩個主要觀點:1)多隱層的人工神經網絡具有優異的特徵學習能力,學習得到的特徵對數據有更本質的刻畫,從而有利於可視化或分類;2)深度神經網絡在訓練上的難度,可以通過“逐層初始化”(layer-wise pre-training)來有效克服,在這篇文章中,逐層初始化是通過無監督學習實現的。
深度學習可通過學習一種深層非線性網絡結構,實現複雜函數逼近,表徵輸入數據分佈式表示,並展現了強大的從少數樣本集中學習數據集本質特徵的能力。
深度學習的實質,是通過構建具有很多隱層的機器學習模型和海量的訓練數據,來學習更有用的特徵,從而最終提升分類或預測的準確性。因此,“深度模型”是手段,“特徵學習”是目的。區別於傳統的淺層學習,深度學習的不同在於:1)強調了模型結構的深度,通常有5層、6層,甚至10多層的隱層節點;2)明確突出了特徵學習的重要性,也就是說,通過逐層特徵變換,將樣本在原空間的特徵表示變換到一個新特徵空間,從而使分類或預測更加容易。與人工規則構造特徵的方法相比,利用大數據來學習特徵,更能夠刻畫數據的豐富內在信息。
缺點:
1)比較容易過擬合,參數比較難tune,而且需要不少trick;

2)訓練速度比較慢,在層次比較少(小於等於3)的情況下效果並不比其它方法更優;

爲了克服神經網絡訓練中的問題,DL採用了與神經網絡很不同的訓練機制。傳統神經網絡中,採用的是back propagation的方式進行,簡單來講就是採用迭代的算法來訓練整個網絡,隨機設定初值,計算當前網絡的輸出,然後根據當前輸出和label之間的差去改變前面各層的參數,直到收斂(整體是一個梯度下降法)。而deep learning整體上是一個layer-wise的訓練機制。這樣做的原因是因爲,如果採用back propagation的機制,對於一個deep network(7層以上),殘差傳播到最前面的層已經變得太小,出現所謂的gradient diffusion(梯度擴散)。
傳統神經網絡的訓練方法爲什麼不能用在深度神經網絡

BP算法作爲傳統訓練多層網絡的典型算法,實際上對僅含幾層網絡,該訓練方法就已經很不理想。深度結構(涉及多個非線性處理單元層)非凸目標代價函數中普遍存在的局部最小是訓練困難的主要來源。

BP算法存在的問題:

(1)梯度越來越稀疏:從頂層越往下,誤差校正信號越來越小;

(2)收斂到局部最小值:尤其是從遠離最優區域開始的時候(隨機值初始化會導致這種情況的發生);

(3)一般,我們只能用有標籤的數據來訓練:但大部分的數據是沒標籤的,而大腦可以從沒有標籤的的數據中學習;
deep learning訓練過程
如果對所有層同時訓練,時間複雜度會太高;如果每次訓練一層,偏差就會逐層傳遞。這會面臨跟上面監督學習中相反的問題,會嚴重欠擬合(因爲深度網絡的神經元和參數太多了)。
2006年,hinton提出了在非監督數據上建立多層神經網絡的一個有效方法,簡單的說,分爲兩步,一是每次訓練一層網絡,二是調優,使原始表示x向上生成的高級表示r和該高級表示r向下生成的x’儘可能一致。方法是:

1)首先逐層構建單層神經元,這樣每次都是訓練一個單層網絡。

2)當所有層訓練完後,Hinton使用wake-sleep算法進行調優。

將除最頂層的其它層間的權重變爲雙向的,這樣最頂層仍然是一個單層神經網絡,而其它層則變爲了圖模型。向上的權重用於“認知”,向下的權重用於“生成”。然後使用Wake-Sleep算法調整所有的權重。讓認知和生成達成一致,也就是保證生成的最頂層表示能夠儘可能正確的復原底層的結點。比如頂層的一個結點表示人臉,那麼所有人臉的圖像應該激活這個結點,並且這個結果向下生成的圖像應該能夠表現爲一個大概的人臉圖像。Wake-Sleep算法分爲醒(wake)和睡(sleep)兩個部分。

1)wake階段:認知過程,通過外界的特徵和向上的權重(認知權重)產生每一層的抽象表示(結點狀態),並且使用梯度下降修改層間的下行權重(生成權重)。也就是“如果現實跟我想象的不一樣,改變我的權重使得我想象的東西就是這樣的”。

2)sleep階段:生成過程,通過頂層表示(醒時學得的概念)和向下權重,生成底層的狀態,同時修改層間向上的權重。也就是“如果夢中的景象不是我腦中的相應概念,改變我的認知權重使得這種景象在我看來就是這個概念”。

Restricted Boltzmann Machine (RBM)限制波爾茲曼機
假設有一個二部圖,每一層的節點之間沒有鏈接,一層是可視層,即輸入數據層(v),一層是隱藏層(h),如果假設所有的節點都是隨機二值變量節點(只能取0或者1值),同時假設全概率分佈p(v,h)滿足Boltzmann 分佈,我們稱這個模型是Restricted BoltzmannMachine (RBM)

Deep Belief Networks深信度網絡
DBNs是一個概率生成模型,與傳統的判別模型的神經網絡相對,生成模型是建立一個觀察數據和標籤之間的聯合分佈,對P(Observation|Label)和 P(Label|Observation)都做了評估,而判別模型僅僅而已評估了後者,也就是P(Label|Observation)。對於在深度神經網絡應用傳統的BP算法的時候,DBNs遇到了以下問題:
(1)需要爲訓練提供一個有標籤的樣本集;
(2)學習過程較慢;
(3)不適當的參數選擇會導致學習收斂於局部最優解。

Convolutional Neural Networks卷積神經網絡

卷積神經網絡是人工神經網絡的一種,已成爲當前語音分析和圖像識別領域的研究熱點。它的權值共享網絡結構使之更類似於生物神經網絡,降低了網絡模型的複雜度,減少了權值的數量。該優點在網絡的輸入是多維圖像時表現的更爲明顯,使圖像可以直接作爲網絡的輸入,避免了傳統識別算法中複雜的特徵提取和數據重建過程。卷積網絡是爲識別二維形狀而特殊設計的一個多層感知器,這種網絡結構對平移、比例縮放、傾斜或者共他形式的變形具有高度不變性。
CNNs是受早期的延時神經網絡(TDNN)的影響。延時神經網絡通過在時間維度上共享權值降低學習複雜度,適用於語音和時間序列信號的處理。
CNNs是第一個真正成功訓練多層網絡結構的學習算法。它利用空間關係減少需要學習的參數數目以提高一般前向BP算法的訓練性能。CNNs作爲一個深度學習架構提出是爲了最小化數據的預處理要求。在CNN中,圖像的一小部分(局部感受區域)作爲層級結構的最低層的輸入,信息再依次傳輸到不同的層,每層通過一個數字濾波器去獲得觀測數據的最顯著的特徵。這個方法能夠獲取對平移、縮放和旋轉不變的觀測數據的顯著特徵,因爲圖像的局部感受區域允許神經元或者處理單元可以訪問到最基礎的特徵,例如定向邊緣或者角點。
小結
Deep learning能夠得到更好地表示數據的feature,同時由於模型的層次、參數很多,capacity足夠,因此,模型有能力表示大規模數據,所以對於圖像、語音這種特徵不明顯(需要手工設計且很多沒有直觀物理含義)的問題,能夠在大規模訓練數據上取得更好的效果。此外,從模式識別特徵和分類器的角度,deep learning框架將feature和分類器結合到一個框架中,用數據去學習feature,在使用中減少了手工設計feature的巨大工作量(這是目前工業界工程師付出努力最多的方面),因此,不僅僅效果可以更好,而且,使用起來也有很多方便之處,因此,是十分值得關注的一套框架,每個做ML的人都應該關注瞭解一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章