TDNN詳解
DNN Neural network architecture
對于一般的DNN在處理上下文時,想法一般是這樣的。比如我們想提取具有上下文分別7幀共15幀的特征表達,我們一般會將這15幀的特征直接拼起來,形成一個15*F(F是我們每一幀的特征維度)的特征,然后去學習15*F的特征映射。
而對于TDNN來說不是這樣做的,假如我們最后仍然想獲取時序上15幀上下文的特征表達。在TDNN的初始層中,會處理比15幀更加窄的時序上下文,然后送入更深的網絡。很容易理解,更深的網絡的時間分辨率是比底層網絡要長的。也就是說,我們將“獲取時序上15幀上下文的特征”這個目標交給了更深的網絡去完成,而不是用一層網絡來完成。 如下圖,最下面一層的時間分辨率為5,而最上層的時間分別率是23。
此外,TDNN在同一層,不同time steps上的這個transform參數都是共享的(類似于CNN中的卷積核在整張map上的參數共享)。所以對于TDNN來說,其中的一個超參數就是每一層的input context。
TDNN subsampling
從上圖可以看出,TDNN臨近time step的特征(非輸入層)是有很大的context重疊的。假定這些相鄰的time step特征之間是相關的,我們在進行特征拼接輸入下一層的時候是不必拼接緊挨著的time step的。也就是說我們可以隔幾個time step進行拼接。這些做的話,如上圖,紅線所示的路徑就是我們最后需要計算的部分。
Affine
神經網絡的正向傳播中進行的矩陣乘積運算在幾何學領域被稱為“仿射變換(Affine)”
Relu層
激活函數是用來加入非線性因素的,因為線性模型的表達能力不夠。
relu,即Rectified Linear Unit,整流線性單元,激活部分神經元,增加稀疏性,當x小于0時,輸出值為0,當x大于0時,輸出值為x。
relu函數在負半區的導數為0 ,當神經元激活值進入負半區,梯度就會為0,也就是說,這個神經元不會被訓練,即稀疏性;
Batchnorm層
BN就是通過一定的規范化手段,把每層神經網絡任意神經元這個輸入值的分布強行拉回到均值為0方差為1的標準正態分布,其實就是把越來越偏的分布強制拉回比較標準的分布,這樣使得激活輸入值落在非線性函數對輸入比較敏感的區域,這樣輸入的小變化就會導致損失函數較大的變化,意思是這樣讓梯度變大,避免梯度消失問題產生,而且梯度變大意味著學習收斂速度快,能大大加快訓練速度。
TDNN沒有全連接層,而是將尾端卷積層的輸出直接相加通過激勵函數得到分類結果。
最后一層全連接層的輸出值被傳遞給一個輸出,可以采用softmax邏輯回歸(softmax regression)進行分類,該層也可稱為 softmax層(softmax layer)。舉個例子:
最后的兩列小圓球就是兩個全連接層,在最后一層卷積結束后,進行了最后一次池化,輸出了20個12*12的圖像,然后通過了一個全連接層變成了1*100的向量。
這是怎么做到的呢,其實就是有20*100個12*12的卷積核卷積出來的,對于輸入的每一張圖,用了一個和圖像一樣大小的核卷積,這樣整幅圖就變成了一個數了,如果厚度是20就是那20個核卷積完了之后相加求和。這樣就能把一張圖高度濃縮成一個數了。
神經網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。