谈谈对CNN在NLP中可行性的理解
談?wù)剬NN在NLP中可行性的理解
談到CNN,人們的直觀感受還是其在圖像處理領(lǐng)域取得的巨大成就,雖然近幾年越來越多的論文使用到CNN與RNN的模型來探索卷積網(wǎng)絡(luò)在自然語言處理中的應(yīng)用,但始終還是無法取代CNN在圖像中的地位,或是RNN之于NLP的地位。所以想談?wù)勛约簩τ贑NN在NLP中可行性的一點個人理解。
CNN到底在干什么
提起CNN的作用,或者是原理,所有博客,教程等等,都會使用一個詞:特征提取!那么,特征到底是個什么玩意兒?對于傳統(tǒng)機器學(xué)習(xí),無論分類還是擬合,都是靠著特征的組合進行學(xué)習(xí)與訓(xùn)練的,打個不太恰當(dāng)?shù)谋确?#xff0c;就擬合而言,最終擬合出的曲線看作是各個特征的函數(shù)結(jié)果的話,那么特征就是各個自變量,而擬合的結(jié)果就是因變量。到這里還是比較好理解的,那么圖像的特征是什么?語言文本的特征又是什么呢?一張照片擺在你面前,或者一段文字擺在書桌上,什么是他們的特征,又怎么去提取這些特征呢?
特征
先從我們?nèi)祟惖慕嵌葋砝斫庀?#xff0c;當(dāng)我們?nèi)タ匆环鶊D畫,一張照片時,我們所關(guān)注的,其實是顏色的變化,或者線條的形狀等等,如果有畫商給你一張純白的嶄新的A4紙,告訴你這是畢加索的名畫,你肯定不會相信,因為你什么畫面都沒有看到。也就是說,你什么特征都沒有提取到!舉個例子,最近非常火的一張圖片:
如果圖片變成這樣,你依舊認得出來:
甚至變成這樣,你還是認得出來:
雖然沒有了那么多細節(jié),但是只憑這些顏色線條,你就能知道這張圖在代表什么。而這些讓你能夠認出圖片本質(zhì)的玩意兒,就是圖像的特征。現(xiàn)在我們來說說計算機,眾所周知的,計算機是處理數(shù)字的,無論是圖片還是文字,終究逃不過一串?dāng)?shù)字表征。而通過對比圖片相鄰的像素點,計算機就能夠?qū)υ谒氖澜缋铩翱吹健迸c我們相同的景象了。
對于NLP來說,人們靠什么去理解讀懂一篇文章?用詞,斷句,標點等等,這些其實都可以看做是文本的特征,比如“這篇博客很有用。”和“這篇博客很有用!”,僅僅符號之差,意義就大不相同。或者說“這篇博客挺有用”和“這篇博客很有用”,一字之差,情感也有所差異。我們知道圖像可以用 RGB 三色值來進行數(shù)字化的表示,文字也同樣可以通過詞向量等方式將文字利用數(shù)字組合進行特征表示。
提取
特征提取的方法不止CNN一種,我們也不能說CNN是最為可靠的一種,但是至少現(xiàn)在看來,CNN算是絕對高效的。為什么說他高效,就在于其卷積核共享權(quán)重值的方法。無論是圖像還是文本,卷積核口每次都只關(guān)注于其中的一小部分特征,對于圖像可能就只是一條邊界線,對于文本可能就只是一個四字成語,但是將這些小特征重新的加權(quán)組合起來,就能夠用一組全新的數(shù)據(jù)重新對原目標進行表示。解釋下filter,作為一個電子信息工程專業(yè)出身,半道出家的碼農(nóng)來說,濾波器這個詞實在是再熟悉不過。信號中的濾波器在做什么?扔掉沒用的,只看有用的,細看有用的。對于一個混有多頻的信號,我可以只看一個頻段的部分,其余的無論多么復(fù)雜,都與我無關(guān)。對于我只關(guān)心的部分,我還可以進行相應(yīng)的放大進行細看。從這個角度來看,就會對CNN的filter有一層更深的理解。
就好像上面的三幅畫一樣,CNN其實在做的是一種”虛化“的工作,將圖像的邊邊角角虛化為寥寥幾筆的簡筆畫,將繁雜的文字精簡為大意,而這些保留下來的線條,詞句,就是新的圖像表示或者句子表示,能夠作為下一步分類或者生成的基礎(chǔ)。
CNN為什么可以用在NLP
上面已經(jīng)說過,無論多么美麗的圖畫,無論多么華麗的辭藻,到了計算機那邊,統(tǒng)統(tǒng)成為了無法直觀理解的數(shù)字組合。如何使用盡量少的數(shù)字,同時又盡可能避免信息的丟失,這就是不同模型在盡力所做的事情。CNN希望使用權(quán)重共享的卷積核,捕捉重復(fù)性更強的特征信息,也就是說,它在找尋更為通用的特征。偷一張論文里的圖片來說,
卷積核在句子中進行卷積,比如紅色的來說,每次我只看兩個詞組合的效果,于是我得到了”wait for“,”for the”…”rent it”7中雙詞組合,從中我選取最有可能的那一個,即maxpooling的操作,不同的濾波器得到不同的結(jié)果最終進行加權(quán)組合,從而能夠得到一個新的句子表示。從這個角度來看,這個過程就是N-Gram模型的思想!說白了,CNN就是在找相鄰N個詞的相關(guān)性,找出出現(xiàn)頻率高的N元詞。而這個N,就體現(xiàn)在卷積核的寬度。與RNN對比來看,RNN更側(cè)重的是序列模型,也就是從頭到尾讀下來,沒加入一個新的詞匯,重新更新句子的表示。而CNN側(cè)重于以小見大,在細節(jié)處做文章(文本的用詞組合等等),最后將不同的小細節(jié)挑選完重新組合起來,進行完整句子的表示。
從這個角度上來看,CNN的思想與樹結(jié)構(gòu)模型有些相似。樹結(jié)構(gòu)自下而上,將語法樹中同級的子節(jié)點進行整合,只不過它更多的還要參考語法結(jié)構(gòu),相較于CNN又多了一些需要考慮的部分。CNN這種卷積加池化的模式,使得特征的空間性消失,對于文本來說,特征的空間性就是對應(yīng)的語序,當(dāng)語序意義不再存在,CNN就像是把所有關(guān)鍵詞,更確切的說是常用詞提取出來,在通過訓(xùn)練出來的網(wǎng)絡(luò)把這些常用詞安排成整個句子,最終得到的就是新的句子表示向量。而這與我們所說的文本信息是相悖的,也就是為什么CNN在NLP中無法做到在圖像中那種統(tǒng)治地位。
總結(jié)
以上是生活随笔為你收集整理的谈谈对CNN在NLP中可行性的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP信函设置简介
- 下一篇: IOS UTI(统一类型标识符) 根据文