5.6深度学习
5.6深度學習
- 理論上來說,參數越多的模型復雜度越高,“容量”越大,這意味著它能夠完成更加復雜的學習任務,但是一般情況下,復雜模型的訓練效率低,易陷入過擬合,因此難以收到人們的青睞,而隨著云計算,大數據時代的來領,計算能力的大幅提高可以緩解訓練低效性,訓練數據的大幅增加則可以降低過擬合的風險,因此,以“深度學習”為代表的復雜模型開始收到人們的關注。
- 典型的深度學習模型就是很深層的神經網絡,顯然,對神經網絡模型,提高容量的一個簡單方法就是增加隱層的數量,隱層多了,響應的神經元的連接權和閾值等參數就會更多,模型復雜度也可以通過單純增加隱層神經元的數目來實現,前面我們已經談論過,單隱層的多層前饋網絡已經具有很強大的學習能力,但從增加模型復雜度的角度來看,增加隱層的數目顯然比增加隱層神經元的數目更加有效,因為增加隱層數不僅增加了擁有激活函數的神經元數目,還增加了激活函數嵌套的層數,然而,多隱層神經網絡難以直接使用經典的算法(例如標準的BP算法)進行訓練,因為誤差在**多隱層內逆傳播的時候,往往會“發散”**而不能收斂到穩定的狀態。
- 無監督逐層訓練是多隱層網絡訓練的有效手段,其基本思想是每次訓練一層隱節點,訓練的時候將上一層隱結點的輸出作為輸入,而將本層隱節點的輸出作為下一層隱節點的輸入,這稱為“預訓練”,在預訓練全部完成的時候,再對整個網絡進行“微調”訓練,例如,再深度信念網絡中,每層都是一個受限Boltzmann機,即整個網絡可視作為若干個RBM堆疊而得,使用無監督逐層訓練的時候,首先訓練第一層,這是關于訓練樣本的RBM模型,對第二層進行訓練,各層預訓練完成之后,再利用BP算法對整個網絡進行訓練。
- 事實上,“預訓練+微調”的做法可以視作將大量的參數分組,對每組先找到局部看起來比較好的設置,然后再基于這些局部較優的結果聯合起來進行全局尋優,這樣就再利用了模型大量參數所提供的自由度的同時,有效的節省了訓練開銷。
- 另一種節省訓練開銷的策略是權共享,即讓一組神經元使用相同的連接權,這個策略再卷積神經網絡中發揮了重要的作用。
-
以CNN進行手寫數字識別任務為例,網絡的輸入是一個 32 ? 32的手寫數字圖像,輸出是其識別的結果。CNN復合多個卷積層和采層對輸入信號進行加工,然后在連接曾實現與輸出目標之間的映射,每個卷積層都包含多個特征映射,每個特征映射是一個由多個神經元構成的“平面”,通過一種卷積濾波器提取輸出的一種特征,例如,圖5.15中的第一個卷積是由6個特征映射所構成,每個特征映射是一個 28 X 28的神經元陣列,其中每個神經元負責從 5 X5的區域通過卷積濾波器提取局部的特征,采樣層也叫做“匯合”層,其作用是基于局部相關性原理進行亞采樣,從而在減少數據量的同時保留有用的信息,從而在減少數據量的同時保留有用的信息,例如,在圖5.15中的第一個采樣曾共有 6 個 14 X 14的特征映射,其中每個神經元與上一層中對應特征映射的 2 X 2領域相連,并由此計算輸出。通過復合卷積層和才煙臺高層,圖15.5中的CNN 將原始的圖像映射成 120 維的特征向量,其中最后一個由 84 個神經元構成的連接曾和輸出層連接完成識別任務,CNN 可以用BP算法后進行訓練,但是在訓練的時候,無論是卷積層還是采樣層,其每一組的神經元都是使用相同的連接權,從而大幅減少了需要訓練的參數數目。
-
我們可以從另一個角度來理解深度學習,無論是DBN還是CNN,其多層堆疊,每層對上一層的輸出進行處理的機制,可以看作是對輸入信號進行逐層加工,從而把初始的,與輸出目標之間的聯系不太密切的輸入表示,轉化為與輸出目標聯系更加密切的表示,使得原來僅基于最后一層的輸出映射難以完成的任務稱為可能。換言之,通過多層的處理,逐漸將初始的“低層”特征表示轉化為“高層”的特征表示之后,用“簡單模型”就可以i完成復雜的分類等學習任務,由此將深度學習理解為特征學習或者是表示學習
-
以往在機器學習用于現實任務的時候。描述樣本的特征通常需要由人類專家來設計,這稱為特征工程。眾所周知,特征的好壞對泛化性能有著至關重要的影響,人類專家設計處好特征也并非易事,特征學習則通過機器學習計數自身產生好的特征,這使得機器學習向“全自動數據分析”又前進了一步。
-
總結