多级神经网络结构表达文档语义性能更好吗
?????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? author:?張俊林
推導和表示一篇文章的語義對于自然語言處理來說是個很基礎(chǔ)也很重要的工作。推導文檔語義可以用無監(jiān)督的方法,也可以用有監(jiān)督的方法。所謂“無監(jiān)督的方法”,就比如可以直接把構(gòu)成文檔的單詞Word Embedding直接累加或者累加后求均值這種簡單粗暴的方式來推導文檔語義。而有監(jiān)督的方法,則是對于某個特定的分類任務(wù),通過訓練實例來訓練模型參數(shù)的方式來學習推導出文檔的語義,其實也就是文檔級別的特征來表達的文檔語義。這個其實簡單想一想也可以推導出有監(jiān)督的效果肯定比無監(jiān)督的效果好,畢竟有監(jiān)督任務(wù)學習目標很明確而不是像無監(jiān)督學習那么漫無目的的亂學習。
那么我們把注意力的焦點放在有監(jiān)督任務(wù)中,對于這類任務(wù),如何推導出文檔的語義表示呢?一篇文檔和單純一個句子有很大的不同,因為句子是由線型序列陸續(xù)出現(xiàn)的字詞構(gòu)成的,而文檔是由多個句子序列構(gòu)成的,明顯相對句子而言包含更豐富以及粒度更大的一些信息,比如句子關(guān)系等。
|一級/二級/三級神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
一種最直接的表達是在看待文檔的時候,也不用考慮它是怎么構(gòu)成的,直接把句子這個級別忽略掉,不論文章包含多少個句子,只把文檔看做是由單詞的線性序列構(gòu)成的。其實就是把一篇文章看成一個非常長的句子,概念上類似于圖1展示的兩層一級結(jié)構(gòu)。目前很多工作其實都是這么做的。
? 圖1? 一級文檔結(jié)構(gòu)
另外一種比較符合直覺的思路是要考慮到文章的層級結(jié)構(gòu)關(guān)系,就是說文章是由段落構(gòu)成的,段落是由句子構(gòu)成的,而句子是由單詞序列構(gòu)成的(圖2)。就是把文章整體看做是一個四層的樹狀網(wǎng)絡(luò)結(jié)構(gòu),可以稱之為“三級結(jié)構(gòu)”。當然,也可以把段落這個級別忽略掉,把文章看做是由句子構(gòu)成的,而句子是由單詞序列構(gòu)成的,也就是把三級結(jié)構(gòu)簡化成(單詞-句子-文檔)兩級結(jié)構(gòu)。
圖2 三級文檔結(jié)構(gòu)
對于文章級別的建模來說,標準的三級結(jié)構(gòu)應(yīng)該是:
?第一級:ComposeModelLevel1(字詞)->Semantic(句子)
第二級:ComposeModelLevel2(句子)->Semantic(段落)
第三級:ComposeModelLevel3(段落)->Semantic(文章)
當然,也可以忽略掉段落這個層級,簡化成二級結(jié)構(gòu):
第一級:ComposeModelLevel1(字詞)->Semantic(句子)
第二級:ComposeModelLevel2(句子)->Semantic(文章)
第一級是通過模型來研究如何根據(jù)字詞來組成一個句子的語義;第二級是探討如何根據(jù)句子的語義表達來綜合出段落的語義;第三級別是探討如何根據(jù)段落來組合出文章的語義;理論上,三個ComposeModel可以是不同的模型,比如有些地方用CNN,有些地方用RNN,當然也可以是相同的模型,比如統(tǒng)一用LSTM來建模,但是模型參數(shù)不同,所以本質(zhì)上其實也是不同的模型。當然,目前的研究一般會省略掉段落這個級別,將問題簡化為二級結(jié)構(gòu),其神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,其中由字詞推導句子語義的第一級結(jié)構(gòu)可以用CNN/RNN等網(wǎng)絡(luò)結(jié)構(gòu),由句子推導文檔語義的第二級結(jié)構(gòu)也可以用可能的網(wǎng)絡(luò)結(jié)構(gòu),比如CNN或者RNN等模型來構(gòu)建。
圖3 二級神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
本質(zhì)上這三個ComposeModel都是探討如何由小粒度的語言單位組合出更高力度語言單位的語義表示的方法,但是因為語言的復(fù)雜性,很明顯單詞語義如何構(gòu)造出句子語義和由句子語義組合構(gòu)造文章語義應(yīng)該是有差別的。最簡單的例證是由字詞構(gòu)成句子要考慮單詞之間的語法關(guān)系;而句子之間的關(guān)系則是另外一種思路,一般是考慮句子之間的順序關(guān)系及句子間的語義一致性,所謂“語義一致性(Coherence)”也就是說相互連接的句子在語義上是平滑的而且接近于講的是一個事情,而不是像下面的三個連續(xù)句子表達的語義:
?? 句子1:看了《太陽的后裔》,終于可以換新老公了,宋仲基歐巴等我思密達。
?? 句子2:熱烈慶祝特朗普當選最后一屆美國總統(tǒng)啊。
?? 句子3:宋慧喬其實長得也就那樣吧,居然敢跟本宮搶老公,也不照照鏡子思密達。
看完給人神經(jīng)病院發(fā)生暴動后成功越獄人士在發(fā)言的感覺,這種感覺其實就是“語義不一致”給人的感覺。但是很明顯的一點是:第二個層級的Compose Model在組合時考慮的因素應(yīng)該不會是句法關(guān)系,而是句子間關(guān)系。
另外,從感覺上看,因為句子表達順序?qū)τ谖恼抡Z義是有意義的特征,所以第二級和第三級,尤其是第二級和第三級在推導文章語義過程中,直覺上應(yīng)該采用RNN模型,這樣可以把順序關(guān)系表達進文章語義中。尤其是對于有些應(yīng)用來說,順序關(guān)系是重要的特征,比如情感分類任務(wù)。
|二級結(jié)構(gòu)性能確實比一級結(jié)構(gòu)好嗎?
上面提到了兩種不同的看待文檔的視角:長句子視角(一級結(jié)構(gòu))和樹狀結(jié)構(gòu)(二級和三級結(jié)構(gòu))。那么我現(xiàn)在關(guān)心的問題是:對于分類問題,到底是用一級結(jié)構(gòu)分類任務(wù)性能就足夠好了?還是說三級結(jié)構(gòu)優(yōu)于二級結(jié)構(gòu),且二級結(jié)構(gòu)優(yōu)于一級結(jié)構(gòu)?所以找到了相關(guān)的論文,重點關(guān)注其實驗部分,因為這可以分析出上面問題的答案,我能找到的有三篇講述層級結(jié)構(gòu)的論文,基本都是(單詞-句子-文檔)二級結(jié)構(gòu),這不重要,我們關(guān)心二級結(jié)構(gòu)性能是否優(yōu)于一級結(jié)構(gòu)就可以了。
首先看第一篇論文:Modelling,Visualising and Summarising Documents with a Single Convolutional Neural Network。這篇論文采用了二級結(jié)構(gòu),一級句子建模和二級文檔建模都采用CNN來做,我個人覺得如果兩級都采用CNN感覺意義不大,因為感覺第二級CNN并沒有引入什么新的信息,本質(zhì)上CNN都是學的N-GRAM片段作為特征,CNN從其機制上學不了特征間的順序關(guān)系,所以套上多層感覺意義不太大。這個論文實驗部分只對比了這個模型和隨機模型的效果是有提升的,但是并沒有做二級結(jié)構(gòu)和一級結(jié)構(gòu)的對比,所以感覺說服力不足,因為也許這個提升完全是因為引入了CNN而不是由于二級結(jié)構(gòu)導致的,所以感覺總體而言從方法到實驗都有點問題。
這個論文基本上不太能回答上述的問題。
再來看第二篇論文,A Hierarchical Neural Autoencoder for Paragraphsand Documents 這個論文使用二級結(jié)構(gòu)構(gòu)建Autoencoder來學習再現(xiàn)文章內(nèi)容,實驗部分結(jié)果如下圖:
說明了采用兩級結(jié)構(gòu)(Hierarchical)的神經(jīng)網(wǎng)絡(luò)效果要優(yōu)于一級(Standard)的結(jié)構(gòu),加上Attention效果更好(Hierarchical+Attention)。但是畢竟這是一個非監(jiān)督的生成任務(wù),至于用在監(jiān)督環(huán)境下是否二級結(jié)構(gòu)優(yōu)于一級結(jié)構(gòu)其實這個論文并沒有給出答案。而且我個人覺得有一種解釋在這種生成型任務(wù)中二級效果好于一級的原因:可能是一級結(jié)構(gòu)的Decoder生成內(nèi)容太長所以效果不好,而二級結(jié)構(gòu)每個句子都分別生成內(nèi)容,長度自然減少到句子級。這很可能是二級優(yōu)于一級的原因。所以,其實這個論文也不太能回答上面提到的問題。
然后來看第三篇論文,Document Modeling with Gated Recurrent Neural Network for Sentiment Classification ,這是用多級文檔結(jié)構(gòu)來做文檔級的情感分類問題的,在一級結(jié)構(gòu)分別采用了CNN和LSTM,而二級結(jié)構(gòu)采用了類似于LSTM或GRU的模型。
這個論文的實驗比較豐富, 從上面的實驗數(shù)據(jù)中可以分析得出如下結(jié)論:有監(jiān)督的CNN一級文檔建模(藍框Convolutional NN一行)效果明顯好于無監(jiān)督的單詞Word Embedding直接疊加求均值的方式(藍框SVM+AverageSG),這個符合預(yù)期,因為畢竟一個是有監(jiān)督的一個是無監(jiān)督的,有監(jiān)督的好于無監(jiān)督的很正常,而且SVM+AverageSG比其它簡單選取特征但是有監(jiān)督的效果都差也說明了這點;層級建模(紅框的兩個模型)效果也要顯著好于非層級建模(Convolutional NN),而第一級用LSTM(LSTM-GRNN那行)效果要稍微好于CNN模型(Conv-GRNN),這說明單詞級的順序關(guān)系對于情感分類也是有意義的。而如果將Conv-GRNN效果和Convolutional NN效果對比也能分析出一些結(jié)論,因為兩者的區(qū)別是:Conv-GRNN采用兩層結(jié)構(gòu),第一層句子語義組合采用CNN,第二級句子推導文檔語義采用類似于GRU的策略;而Convolutional NN類似于用CNN來只做一級語義推導的模型。而兩者的性能差異完全是由于第二級的RNN策略產(chǎn)生的,所以這說明句子級的RNN模型對于情感分析是很重要的。
這個實驗感覺應(yīng)該缺少一個基于LSTM的一級層級結(jié)構(gòu)實驗效果做對比,盡管可以證明一級層級結(jié)構(gòu)使用CNN是明顯不如多層結(jié)構(gòu)的,但是如果是一級層級結(jié)構(gòu)使用LSTM,比CNN能夠多捕獲單詞順序依賴信息,按理說應(yīng)該比那個Convolutional NN效果好,如果能夠補充這個實驗?zāi)敲炊鄬咏Y(jié)構(gòu)效果優(yōu)于單層結(jié)構(gòu)就能夠更有說服力,因為也許有可能紅框內(nèi)兩個實驗效果好于一級CNN模型是由于RNN能夠捕獲特征順序信息導致的提升,而并不一定是由于二級結(jié)構(gòu)優(yōu)于一級結(jié)構(gòu)導致的。雖然在一定程度上說明了層級結(jié)構(gòu)的優(yōu)勢,但是其實說服力也不足夠強,也不能完全回答最初提出的那個問題。
綜合上面文獻的實驗結(jié)果,其實目前我覺得這個問題起碼對于我來說還沒有太明確的答案,那么到底是否在有監(jiān)督學習任務(wù)下二級結(jié)構(gòu)效果明確就比一級結(jié)構(gòu)好呢?這個問題還需要繼續(xù)關(guān)注。
掃一掃關(guān)注微信號:“布洛卡區(qū)” ,深度學習在自然語言處理等智能應(yīng)用的技術(shù)研討與科普公眾號
總結(jié)
以上是生活随笔為你收集整理的多级神经网络结构表达文档语义性能更好吗的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用RNN解决句子对匹配问题的常见网络结
- 下一篇: CNN和RNN中如何引入BatchNor