課程概要
1、卷積神經網絡(CNN)
- 爲什麼需要在自然語言處理中引入卷積神經網絡?
- 什麼是卷積?
- 單層的卷積
- 多通道(Multi-channel)
- 在完成卷積之後,如何進行分類任務?
2、訓練技巧
3、CNN的一些變體應用
4、模型比較
一、卷積神經網絡(CNN)
1 爲什麼需要在自然語言處理中引入卷積神經網絡?
因爲在RNN無法再忽視前文的情況下,獲得詞組的信息。
卷積神經網絡的一個觀點是:嘗試爲每一個詞組計算向量。比如““the country of my birth”,我們可以爲下面這些詞組計算向量the country, country of, of my, my birth, the country of, country of my, of my birth, the country of my, country of my birth。這些詞組往往沒有什麼語言和認知上的合理性。
2 什麼是卷積?
一維的離散卷積可以表示爲:
卷積非常適合從圖像中抽取特徵,下面的圖就是在圖像中進行卷積的例子,黃色的部分和紅色的數字展示的是卷積的權重,通過對圖像上每個像素點進行卷積的計算,可以得到粉色部分的結果,這樣就進行了特向信息的提取。
3 單層的卷積
單層卷積一般是由卷積層和池化層(pooling) 組成的。
一些符號設定:
CNN層的計算:對於一個輸入序列,以h長度爲窗口,計算ci,計算公式如下:W是前面定義的卷積過濾參數矩陣(需要模型進行訓練),b表示偏移量,f表示激活函數。
池化:對向量C進行池化,取最大的那個數字作爲特徵。
所以一個卷積過濾層就可以得到一個數字作爲特徵,爲了獲得更多的特徵,我們需要加入更多的卷積過濾層(使用不一樣的過濾矩陣W和不一樣的窗口長度h)。
4 多通道(Multi-channel)
在模型中單詞的向量是預先在word2vec或者是Glove中訓練好的,直接放入卷積模型中,會使得這些向量變化破壞之前有的單詞之間的相似性,所以單詞向量會有一個備份,這部分的備份是靜態的,也就是隨着訓練也不會改變的。
5 在完成卷積之後,如何進行分類任務?
假設一共有m個卷積過濾層,那麼分別就會得到m個數字,將其拼接起來作爲向量,輸入一個softmax層進行預測。
最後,卷積整體的過程可以用下面的圖表示:
二、訓練技巧
1 dropout
-
主要的思想:隨機的將特徵的一些權重設定爲0。可以一定程度上控制過擬合。
-
實現方法:構建以p爲概率的伯努利隨機變量向量r,在訓練的時候,將r放入計算中。在測試的時候不加入dropout。
-
效果:根據Kim(2014)的研究,可以使得大型的神經網絡有2-4%的準確率提升。
2 正則(regularization)
一種不怎麼常見的正則方法:對softmax權重W的每一行,將其來l2範數限制在s之內。如果其大於s,則重新進行調整。
三、CNN的一些變體應用
和RNN結合的機器翻譯
四、模型比較
- Bag of Vectors:對於分類問題而言非常好的基線(baseline)模型,特別是在幾層神經網絡之後
- Window Model:對於單個單詞分類這種不需要上下文信息的任務比較好
- CNN:對於分類模型比較好,容易在GPU上並行,很難解釋,對於短語計算的時候需要補0以補足長度,不清楚如何進行短語的標註
- RNN:在認知上是最合理的(從左邊讀到右邊),在分類任務上,比CNN慢,可以進行序列標註和分類