CS224N(11)-NLP中的卷積神經(jīng)網(wǎng)絡(luò)

ConvNets for NLP

一、From RNNs to Convolutional Neural Nets

RNN無(wú)法捕獲沒(méi)有前綴上下文的短語(yǔ)的信息。并且其最后一個(gè)向量通常過(guò)多的捕獲最后一個(gè)單詞的信息,而softmax通常僅計(jì)算最后一個(gè)向量的信息。

CNN的核心思想是計(jì)算句子中由每個(gè)可能的單詞組成的子序列的向量表示。并且其通常不考慮短語(yǔ)的語(yǔ)法性。

CNN最常見(jiàn)于圖像領(lǐng)域,它通常用于從圖像中提取特征,這里不詳細(xì)講解。那么它是如何應(yīng)用于NLP的呢?

CNN被用于NLP和被用于CV最大的不同在于CNN在NLP中使用時(shí),一般使用的是1D卷積。而1D卷積就非常類(lèi)似于NLP中語(yǔ)言模型所涉及的n-grams模型。

我們以下面這個(gè)圖為例子,來(lái)簡(jiǎn)要介紹下NLP中CNN的參數(shù):

1、濾波器(filter or kernel):也被稱(chēng)為卷積核,其目的在于局部捕獲特征,而不是像全連接層那樣,這樣有利于減少參數(shù)的數(shù)目,減少計(jì)算量。
2、padding:在特征圖四周補(bǔ)充0值(在NLP是在上下補(bǔ)充),其目的在于增加各個(gè)邊的pixels的數(shù)目,保持特征圖不要太小,

1.這樣可以避免丟失原圖信息,保持特征圖與原圖大小一致,
2.可以使更深層的layer的input依舊保持有足夠大的信息量,
3.padding出來(lái)的pixel的值都是0,不存在噪音問(wèn)題。

3、stride:步幅,即卷積核每次移動(dòng)的長(zhǎng)度。
4、pooling:即池化,主要分為下面幾種:

1.max pooling:選取通過(guò)卷積操作得到的矩陣中每列的最大值
2.average pooling:選取通過(guò)卷積操作得到的矩陣中每列的平均值
3.k-max pooling:選取通過(guò)卷積操作得到的矩陣中每列的前k個(gè)最大值
4.local-max pooling:選取在通過(guò)卷積操作得到的矩陣上自定義區(qū)域內(nèi)每列的最大值

5、dilation:也被稱(chēng)為:空洞卷積、膨脹卷積。

膨脹卷積的好處是不做pooling損失信息的情況下,加大了感受野,讓每個(gè)卷積輸出都包含較大范圍的信息。在自然語(yǔ)言處理中需要較長(zhǎng)的sequence信息依賴的問(wèn)題中,都能很好的應(yīng)用。

二、Single Layer CNN for Sentence Classification

1、論文簡(jiǎn)介

相關(guān)論文及地址
1、Yoon Kim (2014): Convolutional Neural Networks for Sentence Classification. EMNLP 2014. https://arxiv.org/pdf/1408.5882.pdf
Code: https://arxiv.org/pdf/1408.5882.pdf [Theano!, etc.]
2、A variant of convolutional NNs of Collobert, Weston et al. (2011)

論文目標(biāo)在于對(duì)句子進(jìn)行分類(lèi),主要是情感分析,還有句子主客觀分類(lèi),以及問(wèn)題分類(lèi)。

這篇論文中設(shè)計(jì)模型的結(jié)構(gòu)如下:

其結(jié)構(gòu)很簡(jiǎn)單,使用了一層卷積層以及一層池化層。每個(gè)句子向量由每句話中的詞向量組成。
CNN中單個(gè)通道特征的計(jì)算公式如下:

且最后的結(jié)果是一個(gè)特征圖:

此外模型使用的是max-pooling,它能捕獲句子中最重要的信息,且使用了多個(gè)權(quán)重不同的卷積核,并且大小也不一致,這樣模型可以捕獲unigrams、bigrams、tri-grams、4-grams特征。最后,模型還是用了雙通道,每個(gè)通道的初始值為由word2vec或glove預(yù)訓(xùn)練好的詞向量,在訓(xùn)練過(guò)程中,凍結(jié)一個(gè)通道,另外一個(gè)隨著訓(xùn)練不斷地改變。

2、模型的改進(jìn)

后來(lái),Zhang and Wallace提出了上述網(wǎng)絡(luò)地改進(jìn)版,A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification
論文出處:https://arxiv.org/pdf/1510.03820.pdf

3、常見(jiàn)的tricks

在NLP中常見(jiàn)CNN架構(gòu)一般都會(huì)采用一些tricks。比如:

1.dropout:它會(huì)使用概率p(超參數(shù))為1,來(lái)創(chuàng)建伯努利隨機(jī)變量的掩蔽向量r,在訓(xùn)練過(guò)程中隨機(jī)刪除部分特征,可以防止共適應(yīng)問(wèn)題,并且在測(cè)試階段不會(huì)進(jìn)行dropout。
2.L2正則化:同dropout一樣,目的都在于防止過(guò)擬合
3.殘差連接:Residual和Highway,當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)很深的時(shí),效果很好。
4.Batch Normalization:通常在CNN中使用,其通過(guò)縮放激活來(lái)轉(zhuǎn)換批處理的卷積輸出,使其具有零均值和單位方差,這也是統(tǒng)計(jì)Z變換,因?yàn)樗桥扛?,因此每次的波?dòng)不會(huì)對(duì)模型產(chǎn)生太大影響,使用BatchNorm會(huì)使模型對(duì)參數(shù)初始化不太敏感,因?yàn)檩敵鰰?huì)自動(dòng)重新調(diào)整,而且使模型中學(xué)習(xí)率的調(diào)整更加方便。
4.1×1卷積核:1.實(shí)現(xiàn)跨通道的交互和信息整合,2.進(jìn)行卷積核通道數(shù)的降維和升維

4、模型比較

Bag of Vectors:當(dāng)后面跟著幾個(gè)ReLU層地時(shí)候,是一個(gè)表現(xiàn)非常好的baseline。
Window Model:適用于不需要廣泛上下文的問(wèn)題的單詞分類(lèi)。例如,POS,NER。
CNNs:適用于分類(lèi),短語(yǔ)需要零填充,但其難以解釋?zhuān)子谠贕PU上并行化,效率高且用途廣泛。
RNN:認(rèn)知合理(從左到右閱讀),不是最好的分類(lèi)(如果只使用最后狀態(tài)),比CNN慢得多,有利于序列標(biāo)記和分類(lèi),非常適合語(yǔ)言模型,引入注意力機(jī)制后表現(xiàn)十分出色。

CNN不僅可以用于分類(lèi)任務(wù),還可以用于機(jī)器翻譯和Seq2Seq模型中。

5、Learning Character-level Representations for Part-of-Speech Tagging

模型結(jié)構(gòu)圖如下:

該模型主要是對(duì)字符進(jìn)行卷積以生成單詞嵌入并且使用固定窗口來(lái)處理PoS標(biāo)記的字嵌入

6、Character-Aware Neural Language Models

結(jié)構(gòu)圖如下:


該模型主要利用了基于字符的單詞嵌入以及利用卷積,HighwayNet和LSTM

7、Very Deep Convolutional Networks for Text Classification

雖然LSTM、CNN、Attention等模型在NLP中都得到了廣泛的應(yīng)用,但是這些模型的結(jié)構(gòu)通常都不是特別深。而本次介紹的VDCNN就是一個(gè)結(jié)構(gòu)非常深的網(wǎng)絡(luò)。

該模型在設(shè)計(jì)上非常像一個(gè)視覺(jué)中常用到的VGGnet或ResNet。

其卷積塊部分的結(jié)構(gòu)如下所示:

每個(gè)卷積塊是兩個(gè)卷積層,每個(gè)卷后面是批量范數(shù)和ReLU非線性,采用大小為3的卷積并且采用填充以保留(或在本地池化時(shí)減半)維度

7、Quasi-Recurrent Neural Network

雖然RNN在NLP中的應(yīng)用很廣泛且效果也不錯(cuò),但是它不能采取并行操作,因此它的速度非常慢。但CNN可以并行,因此有人結(jié)合CNN和RNN兩個(gè)模型來(lái)構(gòu)造一個(gè)新的模型,下面我們介紹下QRNN,它與LSTM以及CNN的結(jié)構(gòu)簡(jiǎn)要對(duì)比如下:

跨時(shí)間并行的卷積計(jì)算公式如下:

并且跨通道的并行門(mén)控偽循環(huán)過(guò)程在池化層中完成:

QRNN的不足:

1.不適用于字符級(jí)LM和LSTM,難以建模更長(zhǎng)的依賴關(guān)系。
2.通常需要更深的網(wǎng)絡(luò)才能獲得與LSTM一樣好的性能,但深度很深仍然更快,并且使用深層的結(jié)構(gòu)來(lái)代替循環(huán)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容