卷積新用之語言模型
Language Modeling with Gated Convolutional Networks
長期以來,基于LSTM的深度學習算法由于可以對任意長度的上下文進行建模而盤踞在自然語言處理界的山頂。卷積神經網絡雖然蠢蠢欲動,卻始終不得其法。
而今,這個在CV上囂張撥扈的東西終于把手伸到了NLP界,而且是在最basic的語言模型問題上。
本文是參考文獻[1]的筆記。
語言模型
所謂的語言模型,即是指在得知前面的若干個單詞的時候,下一個位置上出現的某個單詞的概率。
最樸素的方法是N-gram語言模型,即當前位置只和前面N個位置的單詞相關。如此,問題便是,N小了,語言模型的表達能力不夠。N大了,遇到稀疏性問題,無法有效的表征上下文。
LSTM模型一般會將單詞embedding到連續空間,然后輸入進LSTM,從而有效的表征上下文。但LSTM的問題在于,作為遞歸模型,當前狀態依賴于上一狀態,并行化受到限制。
門限卷積
所謂的門限卷積,其核心在于為卷積的激活值添加一個門限開關,來決定其有多大的概率傳到下一層去。下面一步步對上圖進行解析。
首先,將單詞embedding到連續空間;即上圖中的第二部分Lookup Table。這樣,單詞序列就能表現為矩陣了。
然后就是卷積單元了(上圖中的第三部分),與普通卷積不同,門限卷積在這里分為兩部分,一部分是卷積激活值,即B,該處于普通卷積的不同在于沒有用Tanh,而是直接線性。另一部分是門限值,即A,A也是直接線性得到,但會經過一個sigmoid運算符。
之后就是門限單元,A和B進行element-wise的相乘,得到卷積后的結果。卷積單元和門限單元加起來形成一個卷積層。
經過多個這樣的卷積層之后,再將其輸入到SoftMax中,得到最后的預測。
細節
在做卷積層的時候,需要不讓第i個輸出值看到i以后的輸入值。這是由語言模型的特性決定的,需要用i之前的信息來預測i。為了達到這樣的效果,需要將輸入層進行偏移,偏移k/2個單位,其中k是卷積的寬度,偏移后開頭空缺的部分就用0進行padding。
由于residual network的強大能力,在真正的實現里,會把卷積單元和門限單元包在一個residual block里。
在最后的softmax層,普通的softmax會因為詞表巨大而非常低效。因而選用adaptive softmax。adaptive softmax可以為高頻詞分配更多的空間而給低頻次分配比較少的空間。
門限機制
LSTM中有input門和forget門兩種,這兩種缺一則會導致有些信息的缺失。而卷積中,經過實驗,不需要forget gate。
而LSTM中使用的input門,如上。這種在卷積上卻容易導致vanishing問題。因為tanh‘和σ’都是小于1的值。
因而,在卷積上,使用:
該方法存在一路使得X的導數可以不被downscale的傳下去。
實驗
Setup
- 使用Google Billion Word和WikiText-103兩種數據集。
- 使用perplexity來進行衡量結果。
- 使用Nesterov’s momentum算法來訓練,momentum設為0.99。
- weight normalization.
- gradient clipping to 0.1
- 使用Kaiming initialization
- learning rate 從[1., 2.]中uniformly選取
效果測試
單GPU上效果最好。
性能測試
Throughput是指在并行化條件下最大輸出。
Responsiveness是指序列化的處理輸入。
由表可知,CNN本身的處理速度非常快。而LSTM在并行化后也能擁有很高的速度。究其原因,是在cuDNN中對LSTM有特別的優化,而對1-D convolution卻沒有。但即便如此,CNN仍然完勝。
不同門限測試
- GTU: tanh(X*W+b)?σ(X*V+c)
- GLU: (X*W+b)?σ(X*V+c)
- ReLU: X?(X>0)
- Tanh: tanh(X*W+b)
非線性模型測試
上一個實驗證明了Gated linear unit深受Linear unit的好處。這里評測一下GLU和純線性模型的比較。
- Bilinear: (X*W+b)?(X*V+c)
純Linear模型同5-gram模型效果類似。
模型深度測試
Context Size測試
訓練測試
缺點
- 卷積不似LSTM那樣靈活,輸入只能是定長。
參考文獻
- Dauphin Y N, Fan A, Auli M, et al. Language Modeling with Gated Convolutional Networks[J]. arXiv preprint arXiv:1612.08083, 2016.
來自:http://blog.csdn.net/stdcoutzyx/article/details/55004458