1. 程式人生 > 其它 >深度學習面試知識點總結

深度學習面試知識點總結

一.前向神經網路

深度前饋網路(Deep Feedforward Networks) 是一種典型的深度學習模型。 其目標為擬合某個函式f, 即定義對映y=f (x;θ)將輸入x轉化為某種預測的輸出y, 並同時學習網路引數θ的值, 使模型得到最優的函式近似。 由於從輸入到輸出的過程中不存在與模型自身的反饋連線, 此類模型被稱為“前饋”。

我們常見的多層感知機、 自編碼器、限制玻爾茲曼機, 以及卷積神經網路等, 都是其中的成員

1.常用啟用函式

啟用函式是疊加在每一層線性變換之後的,是為了獲得更強大的擬合能力(可以對線性不可分問題或函式進行擬合)。(可以避免多層網路等效於單層線性函式)

(1)Sigmoid函式

(2)Tanh函式

(3)ReLU函式

(4)Sigmoid和Tanh函式的缺點

會導致梯度消失的問題,當z很大或者很小時,梯度會趨於0,並且結合反向傳播原理,梯度從後向前傳播時,每傳遞一層梯度值都會減小一定數值,如果神經網路隱層特別多,那麼梯度在穿過多層後將變得非常小接近於0,即出現梯度消失現象。

(5)ReLU函式缺點

其訓練過程中會導致神經元死亡的問題 ,這是由於ReLU函式導致負梯度在經過該ReLU單元時被置為0 ,且在之後也不被任何資料啟用, 即流經該神經元的梯度永遠為0, 在實際訓練中, 如果學習率(Learning Rate) 設定較大, 導致在訓練過程中引數更新太大(z<0時梯度為0),不幸使網路進入這種狀態,會導致超過一定比例的神經元不可逆死亡, 進而引數梯度無法更新, 整個訓練過程失敗。解決方法是可以採用Xavier初始化權重方法,以及避免將learning rate設定太大或使用adagrad等自動調節learning rate的演算法。

(6)ReLU函式變種

針對ReLU導致的神經元死亡的問題引入了Leaky ReLU

LReLU與ReLU的區別在於,當z<0時其值不為0, 而是一個斜率為a的線性函式, 一般a為一個很小的正常數,這樣既實現了單側抑制, 又保留了部分負梯度資訊以致不完全丟失。 但另一方面, a值的選擇增加了問題難度, 需要較強的人工先驗或多次重複訓練以確定合適的引數值 。基於這個問題,引數化的PReLU(Parametric ReLU) 應運而生。 與LReLU的主要區別是將負軸部分斜率a作為網路中一個可學習的引數, 進行反向傳播訓練, 與其他含引數網路層聯合優化。

2.反向傳播演算法

(Back Propagation)

是訓練神經網路的有效方法,是計算神經網路引數的梯度的方法。

在網路訓練中, 前向傳播最終產生一個標量損失函式, 反向傳播演算法(BackPropagation) 則將損失函式的資訊沿網路層向後傳播用以計算損失函式對每一個引數的梯度, 達到優化網路引數的目的。 具體步驟如下圖所示:

  • 遍歷每一個樣本,正向傳播計算每一層的神經元的輸出值(啟用值)a以及最後一層輸出與樣本真實值之間的誤差δ
  • 將最後一層的誤差反向傳播,計算前L-1層的誤差值δ,第一層輸入層不用計算
  • 然後將每個樣本計算得到的關於每個引數的梯度值累加起來
  • 遍歷結束,對於損失函式關於每個引數的梯度等於累加值的1/m,然後加上正則項梯度,(偏置引數不用加)

誤差反向傳播時每一層誤差的計算公式以及損失函式對每一個引數的梯度計算公式如下:(單個樣本,且沒算正則項)

關於公式的推導:

3.多層感知機模型

(1)模型結構

最簡單的深度神經網路稱為多層感知機。多層感知機由多層神經元組成, 每一層與它的上一層相連,從中接收輸入; 同時每一層也與它的下一層相連。

模型結構圖如圖所示:

(2)前向傳播

前相傳播用來計算損失函式以及每一層的神經元啟用值:下面的啟用函式以sigmoid為例

(3)損失函式

  • 以平方誤差作為計算單個樣本的損失函式時:
  • 以交叉熵損失函式計算單個樣本的損失值時:

(4)更新引數

梯度下降結合反向傳播演算法來優化損失函式,更新多層感知機中的引數值。見第2部分反向傳播演算法。

4.卷積神經網路

卷積神經網路(Convolutional Neural Networks, CNN) 也是一種前饋神經網路, 其特點是每層的神經元節點只響應前一層區域性區域範圍內的神經元(全連線
網路中每個神經元節點響應前一層的全部節點) 。

卷積操作的本質包括稀疏互動(區域性連線)和引數共享

(1)稀疏互動(區域性連線)

在傳統的神經網路中(全連線),任意一對輸入與輸出神經元之間都有互動(連線),如果輸入是圖片這種多特徵的資料,會導致網路引數過大,不易訓練並且容易過擬合。而在卷積神經網路中 ,每個輸出神經元僅與前一層也定區域內的神經元存在連線權重(產生互動),我們成這個特性為稀疏互動(區域性連線)

為什麼可以區域性連線?

通常影象、 文字、 語音等資料都具有區域性的特徵結構區域性不變的特性), 我們可以先學習區域性的特徵, 再將區域性的特徵組合起來形成更復雜和抽象的特徵。

以人臉識別為例, 最底層的神經元可以檢測出各個角度的邊緣特徵, 位於中間層的神經元可以將邊緣組合起來得到眼睛、鼻子、 嘴巴等複雜特徵, 最後, 位於上層的神經元可以根據各個器官的組合檢測出人臉的特徵 。

卷積神經網路輸出神經元和權重與全連線有什麼不同?

以輸入的資料是圖片為例:卷積網路中的權重是卷積核的引數,輸出神經元是經過卷積層運算之後的輸出圖片(特徵圖)中的每一個"畫素",就相當於全連線網路中的每個神經元的Z值,計算方法也是一樣的(權重與該神經元相連線的輸入神經元想乘再相加)。

(2)引數共享

在卷積神經網路中, 卷積核中的每一個元素(權重引數)將作用於每一次區域性輸入的特定位置上,那麼這些不同的輸入神經元有著相同的引數,這就是引數共享。 引數共享的物理意義是使得卷積層具有平移等變性。 假如影象中有一隻貓,那麼無論它出現在影象中的任何位置, 我們都應該將它識別為貓 。

(3)卷積運算和互相關運算的區別

互相關運算沒有對卷積核進行反轉。卷積神經網路中,卷積是為了進行特徵提取,卷積核是否反轉和其特徵抽取能力無關,因此卷積和互相關運算在能力上是等價的,但是互相關運算比較方便,因此深度學習工具實際上用互相關來代替卷積操作。

(4)池化層(匯聚層)

常用的包括均值(特點是對背景的保留效果****更好 )和最大池化。最大池化則通過取鄰域內特徵的最大值來實現, 能夠抑制網路引數誤差造成估計均值偏移的現象, 特點是更好地提取紋理資訊

池化操作作用是對特徵進行選擇降低特徵數量,除了能顯著降低引數量外, 還能夠保持對平移、 伸縮、 旋轉操作的不變性。 平移不變性是指輸出結果對輸入的小量平移基本保持不變。

5.深度殘差網路

(Deep Residual Network, ResNet

是為了解決或者緩解深層網路訓練中梯度消失的問題提出的。

(1)梯度消失問題

在運用反向傳播演算法進行神經網路引數優化時,誤差傳播到底層神經元上時,會涉及到非常多的引數和導數的連乘,根據梯度計算公式可知,低層神經元的引數梯度非常小,導致該層引數無法正確學習,這就是梯度消失問題。

(2)殘差單元

如果某一層的輸出已經較好的擬合了期望結果, 那麼多加入一層不會使得模型變得更差, 因為該層的輸出將直接被短接到兩層之後, 相當於直接學習了一個恆等對映, 而跳過的兩層只需要擬合上層輸出和目標之間的殘差即可

殘差網路就是將上面的殘差單元串聯起來構成的一個非常深的網路。

6.含並行連線的網路

主要介紹的是 Inception 塊,重點是解決了什麼樣大小的卷積核最合適的問題。 畢竟,以前流行的網路使用小到1×11×1,大到11×1111×11的卷積核。 本文的一個觀點是,有時使用不同大小的卷積核組合是有利的。

GoogLeNet一共使用9個Inception塊和全域性平均匯聚層的堆疊來搭建網路。

二.迴圈神經網路

迴圈神經網路(Recurrent Neural Network, RNN) 是用來建模序列化資料(比如一段文字,一段話,一段視訊等)的一種主流深度學習模型 。

傳統的前饋神經網路一般的輸入都是一個定長的向量, 無法處理變長的序列資訊, 即使通過一些方法把序列處理成定長的向量, 模型也很難捕捉序列中的長距離依賴關係RNN則通過將神經元序列起來處理序列化的資料。 由於每個神經元能用它的內部變數儲存之前輸入的序列資訊,因此整個序列被濃縮成抽象的表示, 並可以據此進行分類或生成新的序列。

RNN在很多領域應用廣泛——機器翻譯、序列標註、 影象描述、 推薦系統智慧聊天機器人自動作詞作曲

三.注意力機制

四.生成對抗網路

1.訓練流程