【CS224n】ConvNets for NLP

CS224n系列:
【CS224n】Neural Networks, Backpropagation
【CS224n】Neural-Dependency-Parsing
【CS224n】Language Models, RNN, GRU and LSTM
【CS224n】Neural Machine Translation with Seq2Seq
【CS224n】ConvNets for NLP

1. CNNs (Convolutional Neural Networks)

我覺得下述過程可以直接用textCNN的這個流程圖來表達,清晰明瞭。所以,直接對着該圖看下面的各個步驟會更簡單一些。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VuHStIHM-1589083106609)(evernotecid://331CA178-4507-4573-914C-34BF843F1D8C/appyinxiangcom/26093810/ENResource/p177)]

1.1 Why CNNs?

爲什麼要再文本中使用卷積神經網絡(CNN)呢?CNN通過卷積的方法,並使用不同大小的卷積核,可以捕捉到句子中不同長度短語的語義信息。

1.2 What is Convolution?

卷積操作大家應該都比較熟悉了,如下圖,大矩陣爲原始二維矩陣(如原始圖片信息),紅色的小矩陣爲卷積核(圖中爲3×33\times 3矩陣);卷積操作:卷積核與原矩陣的相同大小的矩陣,對應點分別相乘,然後累加的過程。
在這裏插入圖片描述

1.3 A Single-Layer CNN

如下圖,爲單層的CNN。該結構的卷積核寬度爲3,即每次對三個詞做卷積操作。此時最後兩個詞沒法做卷積,因此可以在最後詞的後面添加2個零向量(具體數量爲h-1,h爲卷積核寬度),次即爲padding操作。需要注意的是,在文本數據中使用CNN,一般都指的是一維卷積,即卷積核的長度必須跟詞向量的維度一致(對詞向量拆開做二維卷積沒有意義,因爲詞向量的所有維度共同表示一個詞)。
在這裏插入圖片描述

1.4 Pooling

進行卷積操作後,我們要進行pooling操作,目的是解決不同輸入長度而導致輸出長度不一致的問題,常用的Pooling操作是max-pooling。通過max-pooling操作,可以保留一個句子中最重要的信息(若干個h-grams短語中最重要的信息)。

1.5 Multiple-Filters

這表示的是不同尺寸的卷積核。比如我們可以設定卷積核大小爲【2,3,4】,即我們能夠捕捉到句子中bi-gram,tri-grams,quad-grams的信息。

1.6 Multiple-Channels

多通道操作目的是爲了解決一個詞在訓練集中沒有出現,但卻在測試集中出現的情況。如果按上述的步驟去做,這類詞是沒辦法學到相應的向量信息,導致測試集中的句子的詞若不在訓練集中存在,使用該句子得到的結果(如分類結果)會比較差。
一種解決該問題的方法是,設定雙通道,兩個通道都使用預訓練的詞向量(如w2v/glove),一個通道不做梯度計算,即詞向量值不變;另一個通道通過梯度更新來改變詞向量的值(如SGD)。那麼怎麼處理兩個通道的信息呢?最常用的方法是平均兩個通道的詞向量的值。通過該方法,可以把預訓練詞向量的信息帶入到神經網絡中,當測試集中的詞沒在訓練集中出現時,該詞的預訓練詞向量也能起到一定作用。

1.7 CNN Options

上述1.4講到的pooling,除了使用max-pooling之後,還可以使用k-max pooling。即卷積之後,使用k-max pooling,我們不僅保存句子中最重要短語的信息,而且能保存top-k個最重要短語的信息。k-max pooling可以處理句子中帶轉折語義的問題,如“這個店的東西很好吃,但人也太多了。”

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