斯坦福大學-自然語言處理與深度學習(CS224n)筆記 第十三課 NLP中的卷積神經網絡(CNN)

課程概要

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慢,可以進行序列標註和分類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章