爲何傳統 CNN 適用於 CV 任務,RNN 適用於 NLP 任務
從模型特色上來講:面試
-
對於 CNN 每個卷積核均可以看做是一個濾波器,卷積運算的本質是互相關運算,每一個卷積核僅對於具備特定特徵具備較大的激活值,並且 CNN 有參數共享和局部鏈接的特色,可以提取圖像上不一樣位置的同一個特徵,即 CNN 具備平移不變性函數
-
RNN 的特色在於其是一個時序模型,在對每一個神經元不只能夠接收當前時刻的輸入信息,還將接收上一個時刻的該神經元的輸出信息,具備短時間記憶能力。這在用於 NLP 任務時至關於隱含着創建了一個語言模型,這對詞序具備很強的區分能力。而 CNN 和 DNN 均相似詞袋模型,丟失的詞序特徵。spa
從數據特徵上來講blog
- 圖像矩陣中的每一個元素爲圖像中的像素值,每一個像素與其周圍元素都是高度相關的
- 文本矩陣中的數據爲詞的 embedding 向量,每一個元素在詞向量內與詞向量間的相鄰元素的關聯性是不一樣的,所以 CNN 用於 NLP 任務常使用的是一維卷積
CNN 與 FCN 相比有什麼優勢?
- CNN 相比於 FCN 具備更少的參數,主要有下面兩個緣由:
- 參數共享:一個卷積核能對樣本圖像上的全部區域採用相同的參數進行特徵檢測。
- 稀疏鏈接:在每一層中,因爲濾波器的尺寸限制,輸入和輸出之間的鏈接是稀疏的,每一個輸出值只取決於輸入在局部的一小部分值。
- 池化層降維:池化過程則在卷積後很好地聚合了特徵,經過降維來減小運算量。
- 因爲 CNN 參數數量較小,所需的訓練樣本就相對較少,所以在必定程度上不容易發生過擬合現象。
- 平移不變性:CNN 比較擅長捕捉區域位置偏移。即進行物體檢測時,不太受物體在圖片中位置的影響,增長檢測的準確性和系統的健壯性。
CNN的相關計算
-
輸出維度計算圖片
- 輸出維度 = (輸入維度 - 卷積核大小 + 2*Padding長度)/步長 + 1
-
感覺野的計算input
- 第k-1層的感覺野 = (第k層的感覺野 - 1) * 步長 + 卷積核大小
-
卷積核的參數量class
- 參數量=(filter size * 輸入通道數 )* 當前層 filter 數量
-
卷積核的計算量原理
- 計算量 = 輸出的維度^2 * 輸出的通道數 * 卷積核個數 * 卷積核大小^2
RNN 原理
\(\hat y\) 部分的激活函數能夠根據下游任務設置循環
LSTM 原理
- 三個門:[output_dim + input_dim, 1]
- 更新門位置的全鏈接層:[output_dim + input_dim, output_dim]
GRU 原理
- 兩個門:[output_dim + input_dim, 1]
- 全鏈接層:[output_dim + input_dim, output_dim]
RNN BPTT
- 假設$t$時刻的損失函數爲$L_t$,以 $W_{aa}$,$W_{ax}$,$W_{ya}$ 爲例 $$ \begin{aligned} &\frac{\delta L_t}{\delta W_{ya}} = \frac{\delta L_3}{\delta \hat{y}_t}\frac{\delta \hat{y}_t}{\delta W_{ya}} \\ &\frac{\delta L_t}{\delta W_{aa}} = \frac{\delta L_t}{\delta \hat{y}_t}\frac{\delta \hat{y}_t}{\delta a_{t}}(\frac{\delta a_{t}}{\delta W_{aa}} + \frac{\delta a_{t}}{\delta a_{t-1}}\frac{\delta a_{t-1}}{\delta W_{aa}} + ...)\\ &\frac{\delta L_t}{\delta W_{ax}} = \frac{\delta L_3}{\delta \hat{y}_t}\frac{\delta \hat{y}_t}{\delta a_{t}}(\frac{\delta a_{t}}{\delta W_{ax}} + \frac{\delta a_{t}}{\delta a_{t-1}}\frac{\delta a_{t-1}}{\delta W_{ax}} + ...) \end{aligned}$$
- 對於任意時刻t對 \(W_x\),\(W_s\) 求偏導的公式爲:
\[\begin{aligned} &\frac{\delta L_t}{\delta W_{aa}} = \sum_{k=0}^{t}\frac{\delta L_t}{\delta y_t}\frac{\delta y_t}{\delta a_t}( \prod_{j=k+1}^t\frac{\delta a_j}{\delta a_{j-1}} ) \frac{\delta a_k}{\delta W_{aa}}\\ &\frac{\delta L_t}{\delta W_{aa}} = \sum_{k=0}^{t}\frac{\delta L_t}{\delta y_t}\frac{\delta y_t}{\delta a_t}( \prod_{j=k+1}^t\frac{\delta a_j}{\delta a_{j-1}} ) \frac{\delta a_k}{\delta W_{aa}} \end{aligned}\]
- 其中\(\frac{\delta a_j}{\delta a_{j-1}}\)和\(\frac{\delta a_k}{\delta W_{aa}}\)還存在\(tanh'\)的導數項,而\(tanh'\)的值域爲\((0, 1)\)。隨着時間步的增加,累乘項會趨於 0,出現梯度消失的問題
LSTM 如何解決 RNN 的梯度消失問題
- RNN 的激活函數爲 \(tanh\),而 \(tanh\) 的導數取值範圍爲 \([0, 1]\),在時間上的反向傳播會存在時間上的梯度累乘項,時間步長了會致使梯度累乘而消失
- LSTM 經過引入全局信息流,在時間維度上引入殘差結構,殘差結構的引入就使得鏈式求導過程當中引入了一個求和項,從反向傳播的求導來看,最多隻有兩個激活函數的導數累乘,所以遠距離的梯度一般均可以正常傳播,減弱了梯度消失問題
怎樣增長 LSTM 的長距離特徵提取能力
- Dilated RNN:Dilated CNN 爲空洞卷積,Dilated RNN 則是在時間維度上空洞,淺層部分的爲傳統 RNN,每一個時間步都循環,深層的循環週期更長,增大時間維度上的「感覺野」
我的爲面試作的知識儲備,若有出錯,請你們指正,謝謝!im