當(dāng)人們提到卷積神經(jīng)網(wǎng)絡(luò)(CNN), 大部分是關(guān)于計(jì)算機(jī)視覺的問題。卷積神經(jīng)網(wǎng)絡(luò)確實(shí)幫助圖像分類以及計(jì)算機(jī)視覺系統(tǒng)核心取得了重要突破,例如Facebook自動(dòng)照片加tag的功能啊,自動(dòng)駕駛車輛等。
近年來(lái),我們也嘗試用CNN去解決神經(jīng)語(yǔ)言學(xué)(NLP)中的問題,并且獲得了一些有趣的結(jié)果。理解CNN在NLP中的作用比較困難,但是它在計(jì)算機(jī)視覺中的作用就更容易理解一些,所以呢,在本文中我們先從計(jì)算機(jī)視覺的角度出發(fā)談一談CNN,慢慢再過(guò)渡到NLP的問題中去~
什么是卷積神經(jīng)網(wǎng)絡(luò)
對(duì)我來(lái)說(shuō),最容易理解卷積的辦法是把它理解成一個(gè)滑動(dòng)的窗口函數(shù),就像是一個(gè)矩陣一樣。雖然很拗口,但是看起來(lái)很直觀(如下圖,自行領(lǐng)悟):
?
Convolution with 3×3 Filter. Source:
讓我們發(fā)揮想象力,左邊的矩陣代表一個(gè)黑白圖像。每個(gè)方格對(duì)應(yīng)一個(gè)像素,0表示黑色,1表示白色(通常來(lái)說(shuō),計(jì)算機(jī)視覺處理的圖像是一個(gè)灰度值在0到255之間的灰度圖)?;瑒?dòng)的窗口被稱為一個(gè)(卷積)內(nèi)核、過(guò)濾器(譯者:有那么點(diǎn)濾波器的感覺)或者特征檢測(cè)器(譯者:用于特征提?。?。
現(xiàn)在,我們用一個(gè)3×3的過(guò)濾器,將它的值與原矩陣中的值相乘,然后求和。為了得到右邊的矩陣,我們需要將在完整的矩陣中每一個(gè)3×3子矩陣做一次操作。
你可能在想這種操作有什么作用,下面有兩個(gè)例子
模糊處理
讓像素與周圍像素值平均后,圖像發(fā)生模糊。
(譯者:類似于將周圍幾個(gè)像素的數(shù)值平攤一下)
?
?
邊緣檢測(cè)
對(duì)像素與周圍像素值做差后,邊界就變得顯著了。
為了更好地理解這個(gè)問題,先想想在一個(gè)像素變化平滑連續(xù)的圖像上,一塊像素點(diǎn)和周圍的幾個(gè)像素點(diǎn)相同的時(shí)候,會(huì)發(fā)生什么:那些因相互比較產(chǎn)生的增量就會(huì)消失,每個(gè)像素的最終值將會(huì)是0,也就是黑色。(譯者:猜是沒有對(duì)比度了)。如果那有很強(qiáng)的有著明顯色差的邊界,例如從白色到黑色的圖像邊界,那你就會(huì)得到明顯的反差,從而得到白色。
這個(gè) GIMP manual 網(wǎng)址有更多的例子。(譯者:如銳化啊、邊緣加強(qiáng)之類的,還有一個(gè)似乎是可以這樣做卷積修圖的軟件)。如果想了解得更多的話,建議你們看看這個(gè) Chris Olah’s post on the topic.
什么是卷積神經(jīng)網(wǎng)絡(luò)
你現(xiàn)在已經(jīng)知道了什么是卷積了,那么什么是卷積神經(jīng)網(wǎng)絡(luò)呢?簡(jiǎn)單說(shuō)來(lái),CNN就是用好幾層使用非線性激活函數(shù)(如,ReLu,tanh)的卷積得到答案的神經(jīng)網(wǎng)絡(luò)。
在傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)中,我們將每一層的每個(gè)輸出和下一層的每個(gè)輸入相互連接,這也被稱為完全連接層或仿射層。但是CNN中并不是這樣。相反,我們使用卷積在輸入層中計(jì)算輸出(譯者:卷積造成部分映射,參見之前的卷積圖),這就導(dǎo)致了局部連接,一個(gè)輸出值連接到部分的輸入(譯者:利用層間局部空間相關(guān)性將相鄰每一層的神經(jīng)元節(jié)點(diǎn)只與和它相近的上層神經(jīng)元節(jié)點(diǎn)連接)。
每一層都需要不同的過(guò)濾器(通常是成千上萬(wàn)的),就類似上文提到的那樣,然后將它們的結(jié)果合并起來(lái)。那還有一個(gè)叫做池(pooling layer)或者下采樣層(subsampling layers)的東西,之后再說(shuō)吧。
在訓(xùn)練階段中,CNN能夠通過(guò)訓(xùn)練集自動(dòng)改善過(guò)濾器中的參數(shù)值。舉個(gè)例子,在圖像分類問題中,CNN能夠在第一層時(shí),用原始像素中識(shí)別出邊界,然后在第二層用邊緣去檢測(cè)簡(jiǎn)單的形狀,然后再用這些形狀來(lái)識(shí)別高級(jí)的圖像,如人臉形狀啊,房子?。ㄗg者:特征提取后可以通過(guò)特征分辨圖像)。最后一層就是用高級(jí)的圖像來(lái)進(jìn)行分類。
?
在計(jì)算方面有兩個(gè)值得注意的東西:局部不變性(Location Invariance)和組合性(Compositionality)。
假設(shè)你要辨別圖像上有木有大象,進(jìn)行一次二分類(就是分成有大象和沒有大象的兩種)。
咱們的過(guò)濾器將掃描整個(gè)圖像,所以并不用太在意大象到底在哪兒。在現(xiàn)實(shí)中,pooling也使得你的圖像在平移、旋轉(zhuǎn)、縮放的時(shí)候保持不變(后者的情況更多些)。
組合性(局部組合性),每個(gè)過(guò)濾器獲取了低層次的圖片的一部分,組合起來(lái)成了高層次圖片。
這就是為什么CNN在計(jì)算機(jī)視覺上表現(xiàn)地如此給力。在從像素建邊,從邊到確立形狀,從形狀建立更加復(fù)雜的物體過(guò)程中,CNN會(huì)給人一個(gè)直觀的感受。
CNN在NLP中的用途
相比于圖像與像素,大多數(shù)的NLP問題的輸入是句子或者文檔構(gòu)成的矩陣。矩陣的每一行一般來(lái)說(shuō)是一個(gè)單詞,也可以是一個(gè)字符(如,字符)。所以呢,每一行就是表示一個(gè)單詞的向量。通常每一個(gè)向量是一個(gè)放棄詞向量word embeddings(低緯度的表示方法),例如word2vec or GloVe, 它們也可以是one-hot vectors 用于表示單詞。對(duì)于一個(gè)10個(gè)詞的句子,用一個(gè)100維的embedding表示,我們就有10×100的矩陣作為我們的輸出,這就是我們的“圖像”。
在這樣看來(lái),我們的過(guò)濾器在一個(gè)圖像的小塊像素上滑動(dòng),但是在NLP問題上,我們用過(guò)濾器在矩陣的每一個(gè)完整的行上面滑動(dòng)(就是一個(gè)單詞)。所以呢,過(guò)濾器的寬度一般和輸入矩陣的寬度相同。高度、區(qū)域大小一般各有不同,但是一般都是一次讀2-5個(gè)單詞。
將上面說(shuō)的全部聯(lián)系起來(lái),那么一個(gè)用于NLP問題的CNN就是醬紫的(花點(diǎn)時(shí)間,試著理解下面這張圖,想想每一維度是怎么被計(jì)算的,目前可以忽略池pooling,過(guò)會(huì)兒再說(shuō)):
?
用于句子分類的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖。
我們有三種過(guò)濾器,它們的高度分別為: 2,3, 4,每種過(guò)濾器共兩個(gè)。每個(gè)過(guò)濾器在句子矩陣?yán)镞M(jìn)行卷積并且產(chǎn)生一個(gè)長(zhǎng)短不一的特征映射(feature maps),然后一個(gè)1-max pooling在每個(gè)映射上運(yùn)行,每個(gè)特征映射的最大數(shù)值都被記錄下來(lái)。因此,一個(gè)單變量特征向量由所有六個(gè)映射生成,這6個(gè)特征被級(jí)聯(lián)以形成用于倒數(shù)第二層的特征向量。 最后的 Softmax層就以輸入的形式接收到這些特征向量,然后用它來(lái)進(jìn)行句子分類;這里我們假設(shè)二分類,也就是描述兩個(gè)可能的輸出狀態(tài)。
Source: Zhang, Y., & Wallace, B. (2015). A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification.
那我們能不能擁有像計(jì)算機(jī)視覺那樣的直觀感受呢?局部不變性(Location Invariance)和局部組合性(local Compositionally,譯者:我猜是mac自動(dòng)更換造成的書寫錯(cuò)誤)產(chǎn)生了對(duì)于圖像處理的直觀感受,但是這些對(duì)于NLP問題來(lái)說(shuō)并不是特別直觀。你可能更加注意一個(gè)單詞出現(xiàn)在句子中的哪一個(gè)位置。(這里有一個(gè)疑問,因?yàn)楹笪恼f(shuō)了,并不在意它在哪個(gè)位置,而是在意它有沒有出現(xiàn)過(guò))
相互靠近的像素非??赡苡小Z(yǔ)義’上面的聯(lián)系,比如可能是一個(gè)物體的一個(gè)部分,但是對(duì)于一個(gè)單詞而言,上述的規(guī)律并不是總是對(duì)的。在大部分的語(yǔ)言中,一個(gè)詞組可以被分成幾個(gè)孤立的部分。
同樣的,組合的特性也不是特別的明顯。我們知道,單詞之間肯定有特定的組合規(guī)律,才能相互連接,就像形容詞用來(lái)修飾名詞一樣,但是這些規(guī)則究竟怎么運(yùn)轉(zhuǎn),更高層次的表達(dá)究竟意味著什么,都不是像在計(jì)算機(jī)視覺中那樣明顯,那樣直觀。
在這樣的情況下,CNN看上去并不是特別適合用于NLP問題的處理。然而,RNN就能夠給你更加直觀的感受啦。它們象征著我們?nèi)绾谓M織語(yǔ)言(或者,最少也是我們腦海中怎么組織語(yǔ)言):從左到右依次讀。幸運(yùn)的是, 這并不代表CNN沒用。所有的模型都有錯(cuò)誤,但是并不代表著它們沒用用。恰好,實(shí)際應(yīng)用證明了CNN對(duì)于解決NLP問題相當(dāng)不錯(cuò)。簡(jiǎn)單的詞袋模型Bag of Words model是一個(gè)基于錯(cuò)誤假設(shè)的過(guò)簡(jiǎn)單化模型,但是還是被當(dāng)做標(biāo)準(zhǔn)方法這么多年,并且取得了不錯(cuò)的成績(jī)。
一個(gè)對(duì)于CNN的爭(zhēng)議就是在于他們的速度,他們快,非常快。卷積是計(jì)算機(jī)圖形的核心部分,并在GPU上的硬件級(jí)別上實(shí)現(xiàn)(你可以想象這有多快了吧)。相比于類似N-Grams之類的東西, CNN在單詞或者分類的表示方面效率極高。在處理大量的詞匯時(shí),快速運(yùn)算超出3-Grams的數(shù)據(jù)開銷巨大。甚至連Google都不可以計(jì)算超過(guò)5-Grams的數(shù)據(jù)。但是卷積過(guò)濾器可以自動(dòng)學(xué)習(xí)到一種很好的表達(dá)方式,而不用多余地去表示所有的詞匯。因此,它完全可以擁有一個(gè)大小大于5的過(guò)濾器。我想啊,在第一層中設(shè)計(jì)這么多自動(dòng)學(xué)習(xí)的過(guò)濾器,它們提取特征的行為很像(但不局限于)N-Grams的方式,但是卻用一個(gè)更加簡(jiǎn)潔有效的方法表示它們。
CNN 的超參(HYPER-PARAMETERS)
在解釋CNN是如何作用于NLP問題之前,我們先看看在建立CNN的時(shí)候需要做哪些選擇。希望這會(huì)幫助你更好地理解這一領(lǐng)域的文獻(xiàn)。
寬、窄卷積神經(jīng)網(wǎng)絡(luò)
當(dāng)我在上文中解釋卷積的時(shí)候,我忽略了一點(diǎn)運(yùn)用過(guò)濾器的小細(xì)節(jié)。我們?cè)谝粋€(gè)矩陣的中心有3×3的過(guò)濾器工作得很棒,但是它在邊界的表現(xiàn)如何呢?你應(yīng)該如何應(yīng)用這個(gè)過(guò)濾器于矩陣的第一個(gè)元素(沒有任何相鄰的上方元素和左邊元素)? 你可以用0來(lái)填充邊界。所有超過(guò)矩陣邊界的元素都當(dāng)做0來(lái)處理。這么做之后呢,你就可以將過(guò)濾器用于矩陣中的每一個(gè)元素,并且獲得更大的等大小的輸出。使用0填充的(zero-padding)也稱為寬卷積(wide convolution),不用0填充稱為窄神經(jīng)網(wǎng)絡(luò)。下面是一個(gè)例子。
步長(zhǎng)(Stride size)
另一個(gè)卷積的超參是步長(zhǎng),也就是每一步你想移動(dòng)你的過(guò)濾器多少距離。上述的所有的例子,步長(zhǎng)均為1。對(duì)連續(xù)應(yīng)用過(guò)濾器采樣子矩陣,就會(huì)導(dǎo)致采樣信息的重疊。一個(gè)更大的步長(zhǎng)意味著更少地使用過(guò)濾器和更小的輸出。下面的例子來(lái)自于the Stanford cs231 website 展示了步長(zhǎng)為1和步長(zhǎng)為2運(yùn)用于一維輸入的情況:
Convolution Stride Size.?
Left: Stride size 1. Right: Stride size 2. Source: ?
在文獻(xiàn)中我們通??吹降亩际遣介L(zhǎng)大小為1的情景,但是較大的步幅讓你建立一個(gè)處理過(guò)程類似RNN的模型,就像樹型結(jié)構(gòu)。
池層(POOLING LAYERS)
卷積神經(jīng)網(wǎng)絡(luò)的另一個(gè)關(guān)鍵在于Pooling layers,它通常在卷積層后面使用。Pooling layers用于下采樣上一層的輸入。最簡(jiǎn)單也是最常見的做法是,取每個(gè)過(guò)濾器中的最大值為輸出。你不必對(duì)一個(gè)完整的矩陣都做pooling操作,你可以對(duì)一個(gè)小窗口做pooling。如下圖,展示一個(gè)在2×2窗口的max pooling操作(在NLP問題中,我們通常要對(duì)整個(gè)輸入進(jìn)行pooling操作,產(chǎn)生每個(gè)過(guò)濾器產(chǎn)生一個(gè)單獨(dú)的數(shù)字輸出):
Max pooling in CNN. Source:
為什么要進(jìn)行Pooling操作呢?有以下這么幾個(gè)原因。
Pooling操作的一個(gè)優(yōu)勢(shì)在于它能夠產(chǎn)生一個(gè)固定大小的輸出矩陣。這個(gè)矩陣通常被用于分類。例如,如果你有1000個(gè)過(guò)濾器并且你對(duì)每一個(gè)過(guò)濾器都進(jìn)行了Max Pooling操作,那么你就得到了1000維的輸出。不管你過(guò)濾器的大小,也不管你輸入的大小,你的輸出大小就是固定的。這樣你就可以用各種各樣長(zhǎng)度的句子和各種各樣大小的過(guò)濾器,但是總會(huì)得到相同的輸出維度,從而進(jìn)行分類。
Pooling的使用也可以減少輸出的維度,同時(shí)(我們希望這樣)保存最顯著的信息。你可以想象一下,每個(gè)過(guò)濾器能夠識(shí)別出一種特征,例如,識(shí)別出這個(gè)句子有沒有含有一個(gè)類似”not amazing”的否定詞。如果句子中的某個(gè)地方出現(xiàn)了這個(gè)詞組,那么掃描采樣這一塊的過(guò)濾器就會(huì)產(chǎn)生一個(gè)大的數(shù)值,在別的區(qū)域產(chǎn)生一個(gè)小的值。這樣做之后呢,你就能夠保持那些關(guān)于某些特征有沒有出現(xiàn)在句子中的信息,而損失了這個(gè)特征究竟出現(xiàn)在句子的哪個(gè)位置的信息。但是,損失的這個(gè)信息并沒有什么用途吧?對(duì)啊,這是有一點(diǎn)像a bag of n-grams model所做的那樣。你損失了關(guān)于定位的全局信息(某些東西出現(xiàn)在句子中的某些地方),但是你保留下來(lái)了被你的過(guò)濾器采樣到的局部信息,就像”not amazing”與”amazing not”非常不同一樣。(這就是我上文說(shuō)的一個(gè)有疑問的說(shuō)法)
在圖像識(shí)別中,Pooling也可以提供基礎(chǔ)的平移、旋轉(zhuǎn)不變性。當(dāng)你對(duì)于某個(gè)區(qū)域進(jìn)行Pooling操作的時(shí)候,結(jié)果通常來(lái)說(shuō)會(huì)保持一致,無(wú)論你是旋轉(zhuǎn)還是平移你圖像的像素,因?yàn)镸ax Pooling會(huì)最終識(shí)別出同樣的數(shù)值。
通道(CHANNELS)
我們需要理解的最后一個(gè)理論是通道。通道是輸入數(shù)據(jù)的一種不同的‘樣子’。例如,在圖像識(shí)別中,我們一般使用的是RGB(red, green, blue) 通道。在通道里應(yīng)用卷積的時(shí)候,你可以采用不同的或者相同的權(quán)值。在NLP問題中,你可以想到通道的種類是非常多的:用不同的word embeddings(word2vec and GloVe for example)來(lái)區(qū)分通道,或者,你可以為不同的語(yǔ)言表達(dá)的同樣意思的句子、單詞設(shè)計(jì)一個(gè)通道。
用于NLP的CNN
現(xiàn)在讓我們看看一些CNN在自然語(yǔ)言處理中的應(yīng)用。我會(huì)嘗試總結(jié)一些研究成果與結(jié)論??傊?,我會(huì)漏了描述很多有趣的應(yīng)用(請(qǐng)?jiān)谠u(píng)論中告訴我),但我希望至少覆蓋一些比較流行的結(jié)果。
CNN天生就適合用于分類任務(wù),例如情感分析,垃圾郵件檢測(cè)或主題分類。卷積和池操作會(huì)丟失單詞的局部順序,所以呢,句子標(biāo)記,例如詞性標(biāo)注或?qū)嶓w提取,是有點(diǎn)難以適應(yīng)純CNN架構(gòu)(也不是不可能,你可以添加位置特征的輸入)。
[1] 評(píng)估一個(gè)CNN結(jié)構(gòu)在各種分類數(shù)據(jù)集中的表現(xiàn),主要包括情感分析和主題分類的任務(wù)。 CNN結(jié)構(gòu)跨數(shù)據(jù)集的問題上有著非常不錯(cuò)的表現(xiàn),同時(shí)最新的技術(shù)也使得它在小數(shù)據(jù)上表現(xiàn)優(yōu)異。 出人意料的是,論文中使用的網(wǎng)絡(luò)是非常簡(jiǎn)單的,這就是為什么它非常的有效。輸入層是一個(gè)由連續(xù)的word2vec word embeddings組成的句子。在卷積層的后面跟著多個(gè)過(guò)濾器,然后是一個(gè)max-pooling layer,最后是一個(gè)softmax分類器。該論文也對(duì)兩個(gè)不同的通道做實(shí)驗(yàn),通道是以靜態(tài)和動(dòng)態(tài)word embeddings形式的,并且其中一個(gè)能夠在訓(xùn)練中被調(diào)整,一個(gè)不能被調(diào)整。一個(gè)相似的但是更加復(fù)雜的結(jié)構(gòu)在[2]中被提出。[6] 加入了一個(gè)新增的層用于在網(wǎng)絡(luò)結(jié)構(gòu)中進(jìn)行“語(yǔ)義聚合”(semantic clustering) 。
[4]從頭訓(xùn)練一個(gè)CNN,不需要pre-trained word向量,例如word2vec或者GloVe。它直接將卷積用于one-hot向量。作者還提出了一種空間節(jié)約的bag-of-words似的輸入數(shù)據(jù)表示方法 ,減少了網(wǎng)絡(luò)需要訓(xùn)練的參數(shù)個(gè)數(shù)。在[5]中,作者用一個(gè)二外的無(wú)監(jiān)督“region embedding”擴(kuò)展了這個(gè)模型,該擴(kuò)展是學(xué)習(xí)用CNN來(lái)預(yù)測(cè)文本區(qū)域的內(nèi)容。這些論文中使用的方法似乎在長(zhǎng)文本(例如,電影評(píng)論)的處理中做得不錯(cuò),但是他們?cè)诙涛谋荆ɡ?,微博)中的處理效果還不得而知。直觀地來(lái)看,這確實(shí)很有道理。對(duì)短文本使用pre-trained word embeddings將會(huì)產(chǎn)生更大的收益,相比將它們用于處理長(zhǎng)文本。
建立一個(gè)CNN解耦狗意味著許多超參可供選擇,就像我上文提到的那樣:輸入表示法(word2vec, GloVe, one-hot),卷積過(guò)濾器的數(shù)量和大小,池操作的策略(max, average),以及激活函數(shù)(ReLU, tanh)。[7]通過(guò)調(diào)整CNN結(jié)構(gòu)的超參,多次運(yùn)行程序,研究、分析其的性能和方差,從而得出驗(yàn)證性的評(píng)價(jià)。如果你想要將你的CNN用于文本分類,用這篇論文的結(jié)論作為基礎(chǔ)起始點(diǎn)是再好不過(guò)的了。一些脫穎而出的結(jié)論是,max-pooling的效果總是好于average_pooling;一個(gè)理想狀況下的過(guò)濾器大小是很重要的,但是大部分還是依具體情況而定;正則化與否在NLP問題中似乎沒有多大影響。這項(xiàng)研究的需要注意的是,在文件長(zhǎng)度方面,所有的數(shù)據(jù)集都頗為相似。所以呢,同樣的準(zhǔn)則看清了并不適用于那些看起來(lái)相當(dāng)不同的數(shù)據(jù)。
[8]研究了CNN對(duì)關(guān)系抽取和關(guān)系分類的應(yīng)用。除了單詞向量,作者用了單詞與關(guān)注的實(shí)體(譯者:attention mechanism里的概念)之間的相對(duì)位置作為卷積層的另一個(gè)輸入。這個(gè)模型假定實(shí)體的位置已經(jīng)被給定,并且各實(shí)例的輸入包含一個(gè)上述的關(guān)系。[9]和[10]也研究的是同樣的模型。
在微軟的[11]和[12]研究中,能夠發(fā)現(xiàn)一個(gè)CNN在NLP中有趣的應(yīng)用。這些論文描述的是如果得知那些可以被用于信息檢索的句子的語(yǔ)義上有意義的表示方法。論文中的例子包括,根據(jù)讀者現(xiàn)在閱讀的文章,推薦出讀者可能感興趣的文章。句子的表示方法是用基于搜索引擎的日志數(shù)據(jù)來(lái)進(jìn)行訓(xùn)練的。
大多數(shù)的CNN結(jié)構(gòu)以用這種或者那種方式從embeddings (低維表示法) 中學(xué)習(xí)作為它們訓(xùn)練過(guò)程的一部分。并非所有的論文都關(guān)注于如果訓(xùn)練或者研究分析learned embeddings意義何在。[13]展示了一個(gè)CNN結(jié)構(gòu)。這個(gè)結(jié)構(gòu)用于預(yù)測(cè)Facebook的位置標(biāo)簽,同時(shí),產(chǎn)生有意義的單詞和句子的embeddings。這些learned embeddings隨后被成功地用于其他的問題: 以點(diǎn)擊流數(shù)據(jù)作為訓(xùn)練集,將用戶可能產(chǎn)生潛在興趣的文章推薦給用戶。
字符級(jí)CNN(CHARACTER-LEVEL CNNS)
這個(gè)專業(yè)名詞翻譯是我自己猜的,也可能是漢字、個(gè)性之類的。
目前為止,所有模型的表示方法都是基于單詞的。但是也有將CNN應(yīng)用于字符的研究。 [14] 研究了character-level embeddings,將它們和pre-trained word embeddings結(jié)合在一起,并且將CNN用于詞性標(biāo)注 (Part of Speech tagging). [15][16] 研究了直接用CNN從字符中進(jìn)行訓(xùn)練,不需要接住任何的pre-trained embeddings。值得注意的是,作者用了一個(gè)共9層的深度神經(jīng)網(wǎng)絡(luò),并將其用于情感分析和文本分類的作用。結(jié)果表明,在大數(shù)據(jù)的情況下,直接從字符級(jí)輸入的學(xué)習(xí)效果非常好(百萬(wàn)級(jí)的例子),但是在較小的數(shù)據(jù)集上面表現(xiàn)得比較差(百條、千條例子)。 [17] 研究了字符級(jí)CNN在語(yǔ)言模型(Language Modeling)上面的應(yīng)用,用字符級(jí)CNN的輸出作為L(zhǎng)STM(長(zhǎng)期短期記憶單元)的輸入。同樣的模型可以用于多個(gè)語(yǔ)言。
最讓人驚奇的是上面所說(shuō)的所以論文都是在最近的1-2年內(nèi)發(fā)表的。非常明顯的,CNN在NLP問題上面很早就取得了很好的成績(jī),。雖然自然語(yǔ)言處理(幾乎)是剛剛開始起步,但是新成果和新技術(shù)的發(fā)展步伐正在顯著加快。
[1]?Kim, Y. (2014). Convolutional Neural Networks for Sentence Classification. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP 2014), 1746–1751.?
[2]?Kalchbrenner, N., Grefenstette, E., & Blunsom, P. (2014). A Convolutional Neural Network for Modelling Sentences. Acl, 655–665.?
[3]?Santos, C. N. dos, & Gatti, M. (2014). Deep Convolutional Neural Networks for Sentiment Analysis of Short Texts. In COLING-2014 (pp. 69–78).?
[4]?Johnson, R., & Zhang, T. (2015). Effective Use of Word Order for Text Categorization with Convolutional Neural Networks. To Appear: NAACL-2015, (2011).?
[5]?Johnson, R., & Zhang, T. (2015). Semi-supervised Convolutional Neural Networks for Text Categorization via Region Embedding.?
[6]?Wang, P., Xu, J., Xu, B., Liu, C., Zhang, H., Wang, F., & Hao, H. (2015). Semantic Clustering and Convolutional Neural Network for Short Text Categorization. Proceedings ACL 2015, 352–357.?
[7]?Zhang, Y., & Wallace, B. (2015). A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification,?
[8]?Nguyen, T. H., & Grishman, R. (2015). Relation Extraction: Perspective from Convolutional Neural Networks. Workshop on Vector Modeling for NLP, 39–48.?
[9]?Sun, Y., Lin, L., Tang, D., Yang, N., Ji, Z., & Wang, X. (2015). Modeling Mention , Context and Entity with Neural Networks for Entity Disambiguation, (Ijcai), 1333–1339.?
[10]?Zeng, D., Liu, K., Lai, S., Zhou, G., & Zhao, J. (2014). Relation Classification via Convolutional Deep Neural Network. Coling, (2011), 2335–2344.?
[11]?Gao, J., Pantel, P., Gamon, M., He, X., & Deng, L. (2014). Modeling Interestingness with Deep Neural Networks.?
[12]?Shen, Y., He, X., Gao, J., Deng, L., & Mesnil, G. (2014). A Latent Semantic Model with Convolutional-Pooling Structure for Information Retrieval. Proceedings of the 23rd ACM International Conference on Conference on Information and Knowledge Management – CIKM ’14, 101–110.?
[13]?Weston, J., & Adams, K. (2014). # T AG S PACE : Semantic Embeddings from Hashtags, 1822–1827.?
[14]?Santos, C., & Zadrozny, B. (2014). Learning Character-level Representations for Part-of-Speech Tagging. Proceedings of the 31st International Conference on Machine Learning, ICML-14(2011), 1818–1826.?
[15]?Zhang, X., Zhao, J., & LeCun, Y. (2015). Character-level Convolutional Networks for Text Classification, 1–9.?
[16]?Zhang, X., & LeCun, Y. (2015). Text Understanding from Scratch. arXiv E-Prints, 3, 011102.?
[17]?Kim, Y., Jernite, Y., Sontag, D., & Rush, A. M. (2015). Character-Aware Neural Language Models.
評(píng)論
查看更多