Stanford CS224n 第十三講:卷積神經網絡

目錄:
1.從RNN過渡到CNN
2. CNN介紹
3. 單層CNN做句子分類任務

\newline
\newline
1.從RNN過渡到CNN

CNN的出現剛開始是在圖像領域,但是後來被人們應用到了自然語言處理領域,那麼CNN應用到自然語言處理領域的必要性是什麼?他解決了RNN哪些解決不了的問題呢?
在這裏插入圖片描述
(1)RNN不能捕獲一句話中單獨的短語信息,比如我想獲得"my birth"的短語信息,那麼RNN只能從左往右遍歷完整個句子的信息,不能單獨得到某個短語的信息。(獲得的信息不純粹)(可能槓精會說我們可以從右往左來捕獲啊。答案是:哈哈,如果短語在中間呢);
(2)在整個句子得到的最後向量裏面,最後一個單詞捕捉到的信息可能佔很大比例;
(3)如果你是一個分類任務,那麼你不能只看句子中的某個短語或者詞,而是隻能等到對RNN最後的輸出做softmax。

2. CNN介紹

那麼CNN的想法是什麼呢?
CNN的主要思路就是給每個可能的短語(忽略其語法結構)計算他們的vector,以方便後面的使用。很重要的一點是:每一塊都可以進行並行計算,這大大加快了CNN的計算速度。
在這裏插入圖片描述


那麼具體什麼是CNN呢?
課程中介紹了一個簡單的一維CNN定義:
(fg)[n]=m=MMf[nm]g[m](f*g)[n]=\sum^M_{m=-M}f[n-m]g[m]
我的理解是,上面公式實際是一個卷積的過程,f是要卷積的離散函數,g爲卷積核數值函數,2倍的M爲卷積核大小。(可能理解起來有點困難,沒關係,下邊就講了常見的2維情況下的CNN)

其實大部分時間我們常見的CNN還是下圖:
在這裏插入圖片描述
由上圖我們可以看到
被卷積的圖片大小爲55
卷積後的Feature Map,粉色部分的大小爲3
3
卷積核的步長爲1,每次移動一格
卷積核(Filter)就是黃色部分,形狀是3*3,卷積核具體如下圖:
在這裏插入圖片描述
卷積核中的值就是卷積核的權重。
Feature Map中的值就是通過卷積核中的值和對應的窗口中的值相乘,再求和得到的。
真正應用的過程中,需要訓練的是卷積核(Filter)中的權重。


3. 單層CNN做句子分類任務

本部分主要講的是CNN如何來做句子分類任務。
首先,我們來看看一些符號表示:
在這裏插入圖片描述
其中:
xix_i表示詞向量;
x1:nx_{1:n}表示句子向量(模型輸入),它是由每個單詞的embedding向量拼接起來的。
w表示卷積核的權重向量(此任務中卷積核爲一維向量);h表示窗口的大小,即一個窗口下卷積幾個單詞;k表示一個詞向量的維度;因此卷積核的維度就等於h個單詞拼接起來的維度。


然後,舉個具體的而例子,如下圖
在這裏插入圖片描述
在上圖中我們可以看出,k=2, n=5, h=3,即每個詞向量的維度爲2,句子長度爲5,窗口大小爲3個單詞。
也就是說,每相鄰3個詞語的組合對應卷積結果中的一個標量。卷積核(Filter)的權值w也是一個向量,最終得到每個卷積結果。
此時我們可以發現最後兩個單詞好像湊不夠三個單詞,此時就需要補零技術了:
在這裏插入圖片描述
補零後這樣卷積後就會得到一個向量c=[c1,c2,...,cn]c=[c_1,c_2, ... ,c_n],其中ci=f(wTxi:i+h1+b)c_i=f(w^Tx_{i:{i+h−1}}+b)
一個過濾器就是一個向量,卷積運算實際上就是與某個ngram的內積,內積代表相似性。於是卷積覈實際上在挑選與自己相似的那種pattern,比如正面情感的ngram。


接着,我們用到了池化(Pooling)操作,爲什麼我們要進行池化操作呢,有一點原因是由於我們輸入的句子可能長度不一,那麼最後卷積得到的c就是不等長的,因此,池化操作可以讓最後的結果得到一個值,比如max-pooling,就是將c向量中的最大值取出來作爲池化結果。(當然池化也有降維的效果)

但是如果經過上述操作,前面我們辛辛苦苦的工作,最後就變成了一個值,顯然這是不足以捕捉到短語或者句子的信息的,此時我們就需要多個卷積核(Filters),當然,卷積核大小可以自己任意定義,不必每個卷積核一樣。此時m個卷積核的結果經過池化操作就會得到m個值,然後將這些值進行拼接,就可以構成整個句子的特徵向量z=[c1,c2,...,cm]z=[c^1,c^2,...,c^m]
最後,就可以把z輸入到softmax分類器了。
整個流程如下圖所示:

在這裏插入圖片描述
需要提及的一點是,課程中提到了雙通道,其實就是:既想讓詞向量符合訓練樣本的分佈,又不想讓詞向量原來的分佈受到影響。因此,在輸入的時候,同一個單詞輸入兩個他的詞向量(拼接),但是訓練的時候值訓練其中的一個詞向量,讓其中詞向量符合訓練樣本分佈,其中一個詞向量符合原來分佈。

好了,一些超參數的設置和trick此處不再贅述,本節課的主要內容:CNN做句子分類的基本任務也就介紹到這兒了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章