1. 程式人生 > >機器學習——神經網路、深度學習 知識點總結 及 面試題彙總

機器學習——神經網路、深度學習 知識點總結 及 面試題彙總

1、反向傳播思想: 計算出輸出與標籤間的損失函式值,然後計算其相對於每個神經元的梯度,根據梯度方向更新權值。 (1)將訓練集資料輸入到ANN的輸入層,經過隱藏層,最後達到輸出層並輸出結果,這是ANN的前向傳播過程; (2)由於ANN的輸出結果與實際結果有誤差,則計算估計值與實際值之間的誤差,並將該誤差從輸出層向隱藏層反向傳播,直至傳播到輸入層; (3)在反向傳播的過程中,根據誤差調整各種引數的值;不斷迭代上述過程,直至收斂。 2、無監督逐層訓練:預訓練:每次訓練一層隱結點。訓練時將上一層隱結點的輸出作為輸入,而本層隱結點的輸出作為 下一層隱結點的輸入。在預訓練結束後,再對整個網路進行微調訓練。 3、DNN
:指深度神經網路,與RNN迴圈神經網路、CNN卷積神經網路的區別就是,DNN特指全連線的神經元結構,並不包含卷積單元 或時間上的關聯。 一、DBN:(預訓練+微調) 思想:整個網路看成是多個RBM的堆疊,在使用無監督逐層訓練時,首先訓練第一層,然後將第一層預訓練好的隱結點視為第二層的輸入節點,對第二層進行預訓練,各層預訓練完成後,再用BP演算法對整個網路進行訓練。 整體解釋:預訓練+微調 的做法可視為將大量引數分組,對每組先找到區域性看起來比較好的位置,然後再基於這些區域性較優的結果聯合起來進行全域性尋優。好處:利用了模型大量引數所提供的自由度,有效的節省了訓練開銷。 (補充:是一個概率生成模型,與傳統的判別神經網路不同的是,生成模型建立了觀察資料和標籤之間的聯合分佈,而判別模型只評估了條件概率。 DBN遇到的問題:需要為訓練提供一個有標籤的樣本集;學習過程較慢;不適當的引數選擇導致學習收斂於區域性最優解。 )

二、CNN:(區域性感知+權共享機制:讓一組神經元使用相同的連線權) 提出:全連線的結構下會引起引數數量的膨脹,容易過擬合且區域性最優。影象中有固有的區域性模式可以利用,所以,提出了CNN,並不是所有上下層神經元都能直接相連,而是通過“卷積核”作為中介。同一個卷積核在所有影象內都是共享的,影象通過卷積操作後仍然保留原來的位置關係。 複合多個“卷積層”和“取樣層”對輸入訊號進行加工,然後再連線層實現與輸出目標之間的對映。多層的目的:一層卷積學到的特徵往往是區域性的,層數越高,學到的特徵就越全域性化。 CNN兩大神器: 1、區域性感知:一般認為影象的空間聯絡是區域性的畫素聯絡比較密切,而距離較遠的畫素相關性較弱,因此,每個神經元沒必要對全域性影象進行感知,只要對區域性進行感知,然後在更高層將區域性的資訊綜合起來得到全域性資訊。利用卷積層實現:
(特徵對映,每個特徵對映是一個神經元陣列):從上一層通過區域性卷積濾波器提取區域性特徵。卷積層緊跟著一個用來求區域性平均與二次提取的計算層,這種二次特徵提取結構減少了特徵解析度。 2、引數共享:在區域性連線中,每個神經元的引數都是一樣的,即:同一個卷積核在影象中都是共享的。(理解:卷積操作實際是在提取一個個區域性資訊,而區域性資訊的一些統計特性和其他部分是一樣的,也就意味著這部分學到的特徵也可以用到另一部分上。所以對影象上的所有位置,都能使用同樣的學習特徵。)卷積核共享有個問題:提取特徵不充分,可以通過增加多個卷積核來彌補,可以學習多種特徵。 3、取樣(池化)層:在通過卷積得到特徵後,希望利用這些特徵進行分類。基於區域性相關性原理進行亞取樣,在減少資料量的同時保留有用資訊。(壓縮資料和引數的量,減少過擬合)(max-polling 和average-polling) 可用BP演算法訓練,訓練中,無論是卷積層還是取樣層,每一組神經元都是用相同的連線權。 優點:限制了引數的個數並挖掘了局部結構的這個特點,減少了複雜度。 (CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。由於CNN的特徵檢測層通過訓練資料進行學習,所以在使用CNN時,避免了顯示的特徵抽取,而隱式地從訓練資料中進行學習;再者由於同一特徵對映面上的神經元權值相同,所以網路可以並行學習,這也是卷積網路相對於神經元彼此相連網路的一大優勢。卷積神經網路以其區域性權值共享的特殊結構在語音識別和影象處理方面有著獨特的優越性,其佈局更接近於實際的生物神經網路,權值共享降低了網路的複雜性,特別是多維輸入向量的影象可以直接輸入網路這一特點避免了特徵提取和分類過程中資料重建的複雜度) 三、DBN與CNN兩者異同: 異:DBN:全連線,有pre-train過程;CNN:區域性連線,沒有預訓練過程,但加了卷積。 同:無論是DBN還是CNN,這種多隱層堆疊,每層對上一層的輸出進行處理的機制,可看作是在對輸入訊號進行逐層加工,從而把初始的、與輸出目標之間聯絡不大的輸入表示,轉化成與輸出目標聯絡密切的表示。即:通過多層處理,逐漸將初始的低層特徵表示轉化成高層的特徵表示後,用“簡單模型”就可以完成複雜的分類等學習任務。 四、RNN: 提出:DNN存在一個缺陷:無法對時間序列上的變化進行建模,然而,樣本出現的時間順序對於自然語言處理、語音識別等應用很重要;RNN解決了樣本的處理在各個時刻獨立的問題,可以對時間序列上的變化進行建模,深度是時間上的長度。神經元的輸出可以在下一個時間戳直接作用到自身。即,某一層某一時刻神經元的輸入,除了上一層神經元在該時刻的輸出外,還有本身在上一時刻的輸出。 缺點:時間軸上的“梯度消失”,為解決這個問題——>長短時記憶單元LSTM:通過門的開關實現時間上記憶功能,防止梯度消失。 五、LSTM: 核心:模仿一種細胞狀態,類似傳送帶思想,直接在整個鏈上執行,只有一些少量的線性互動,資訊在上面保持不變。利用一種“門”的結構來去除或增加資訊到細胞狀態的能力,有三個門。門:讓資訊選擇通過的方法,包括sigmoid神經網路層和一個點乘操作。 第一步:忘記門層:決定從細胞狀態中丟棄什麼資訊。讀取本層的輸入和上一層的輸出,輸出一個0到1之間的數值給每個細胞狀態。 第二步:確定什麼樣的資訊被存放在細胞狀態中,包含兩個部分:1)sigmoid“輸入門層”,決定什麼值將要更新。2)tanh層,建立一個新的候選值向量。會被加到狀態中。 第三步:更新細胞狀態。基於細胞狀態確定輸出什麼值 面試篇: 理解它們各自的引數代表什麼,比較好的初始引數,BP的計算,以及常見超引數的調整策略。 如何優化模型 : 加速收斂, 避免overfit, 提升精度 .. - batch size effect;- learning rate effect;- weight initialization effect;- batch normalization - drop-out;- model average;- fine-tuning;- data augmentation
  • CNN最成功的應用是在CV,那為什麼NLP和Speech的很多問題也可以用CNN解出來?為什麼AlphaGo裡也用了CNN?這幾個不相關的問題的相似性在哪裡?CNN通過什麼手段抓住了這個共性?
幾個不相關的問題的相關性在於,都存在區域性與整體的關係,由低層次的特徵經過組合,組成高層次的特徵,並且得到不同特徵之間的空間相關性。 CNN通過:區域性感知、權值共享、池化操作、多層次結構抓住了這個共性。區域性感知使網路可以提取資料的區域性特徵;權值共享大大降低了網路的訓練難度;池化操作和多層次結構一起,實現了資料的降維,將低層次的特徵組合成高層次的特徵。 什麼時候用local-conv?什麼時候用全卷積(每一個點用同一個filter)? 當資料集具有全域性的區域性特徵分佈時,也就是說區域性特徵之間有較強的相關性,適合用全卷積。在不同的區域有不同的特徵分佈時,適合用local-Conv。 什麼樣的資料不適合用深度學習? 1)資料集太小,因為神經網路有效的關鍵就是大量的資料,有大量的引數需要訓練,少量的資料不能充分訓練引數。2)資料集沒有區域性相關性。目前深度學習應用的領域主要是影象、語音、自然語言處理,這些領域的共性就是區域性相關性。例如:影象中的畫素組成物體,語音中的音位組成單詞,文字資料中的單片語成句子,而深度學習的本質就是學習區域性低層次的特徵,然後組合低層次的特徵成高層次的特徵,得到不同特徵之間的空間相關性。 何為共線性, 跟過擬合有啥關聯?
  • 共線性:多變數線性迴歸中,變數之間由於存在高度相關關係而使迴歸估計不準確。
  • 共線性會造成冗餘,導致過擬合。
  • 解決方法:排除變數的相關性/加入權重正則。
為什麼引入非線性激勵函式? 因為如果不用非線性激勵函式,每一層都是上一層的線性函式,無論神經網路多少層,輸出都是輸入的線性組合,與只有一個隱藏層效果一樣。相當於多層感知機了。所以引入非線性激勵函式,深層網路就變得有意義了,可以逼近任意函式。 什麼造成梯度消失?推導? 許多啟用函式將輸出值擠壓在很小的區間內,在啟用函式兩端較大範圍的定義域內梯度為0,導致權重更新的緩慢訓練難度增加,造成學習停止。(前面層上的梯度是來自後面的層上項的乘積,當層數過多時,隨著乘積的累積,將越來越小。) CNN常見的問題 1、梯度消失問題:過多的層數會導致梯度消失,解決手段:減少層數;增大學習率;用Relu代替sigmoid。 2、權重衰減:CNN的權重共享相當於自帶某種正則項,所以代價函式裡可不加正則 3、隨機梯度下降的引數選擇: 1)batch的選擇決定了下降的方向: 如果資料集比較小,可以採用全資料集的形式,好處:全資料集確定的方向能夠更好的代表樣本總體;不同權重的梯度值差別巨大,因此選一個全域性的學習率很困難,使用全資料集可以只基於梯度符號並且針對性單獨更新各權值。 如果資料集比較大,全資料集不可行,記憶體限制;由於各個batch取樣的差異性,各次梯度修正值相互抵消,無法修正。另一個極端每次只訓練一個樣本,batch=1,每次修正方向以各自樣本的梯度方向修正,難以達到收斂。 選擇適中的batch? 批梯度下降法, 1)sigmoid:將輸出實值壓縮到0-1之間。 缺點:(輸入非常大或非常小的時候)容易梯度消失;sigmoid函式是非0均值的,下一層的神經元將從上一層神經元得到的非0 均值的訊號作為輸入,再結合w計算梯度,始終都是正的。(可根據batch調節) 2)Tanh:是0均值的。 3)Relu(修正線性單元):好處:收斂快,求梯度簡單。具有稀疏特性。 (相比於sigmoid:sigmoid反向傳播求誤差梯度時,求導計算量很大,而relu求導簡單;對於深層網路,sigmoid反向傳播時,在sigmoid接近飽和區時,變換太緩慢,導數趨0,從而無法完成深層網路的訓練;Relu會使一部分神經元的輸出為0,造成了網路的稀疏性,並且減少了引數的相互依存關係,緩解了過擬合問題。) 缺點:訓練的時候很脆弱,一個非常大的梯度流過一個Relu神經元后,不會對其他資料有啟用現象了,設定較小的學習率,這種情況會不那麼頻繁。 卷積計算層: 引數共享機制、一組固定的權重和不同視窗內資料做內積:卷積 CNN優缺點: 優點:共享卷積核、減少了網路自由引數的個數,對高維資料處理無壓力;無需手動選取特徵,訓練好權重,即得特徵。降低神經網路的複雜性。這種網路結構在有監督的方式下學習到了一些良好的效能:對平移、比例縮放、傾斜或其他形式的變形具有高度不變性。 缺點:需要調參,需要大量樣本; 神經網路優勢: 可以利用神經網路中某一層的輸出當做是資料的另一種表達,從而可以將其認為是經過神經網路學習到的特徵,基於這一特徵,可以進行進一步的相似度比較等操作。 有效的關鍵是大規模的資料,每個DL都有眾多的引數,少量資料無法將引數訓練充分。 發展缺陷: 隨著網路層數的加深,優化函式越來越容易陷入區域性最優解,並且這個“陷阱”越來越偏離真正的全域性最優,利用有限資料訓練的深層網路,效能還不如淺層網路。 隨著網路層數增加,梯度消失現象越來越嚴重,(一般指sigmoid函式,反向傳播時,每傳遞一層,梯度衰減為原來的1/4。層數一多,梯度指數衰減後,底層基本接收不到有效的訓練訊號。) 深度學習整體解釋:1)自下而上的非監督學習 2)自頂向下的監督學習