使用RNN解决句子对匹配问题的常见网络结构
?????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? author:?張俊林
除了序列標注問題外,句子對匹配(Sentence Pair Matching)問題也是NLP中非常常見的一類問題,所謂“句子對匹配”,就是說給定兩個句子S1和S2,任務目標是判斷這兩個句子是否具備某種類型的關系。如果形式化地對這個問題定義,可以理解如下:
意思是給定兩個句子,需要學習一個映射函數,輸入是兩個句子對,經過映射函數變換,輸出是任務分類標簽集合中的某類標簽。既然我們要討論深度學習,那么這個映射函數F就是通過神經網絡來進行映射的,而標簽集合里的分類標簽具體代表的含義跟任務相關。
典型的例子就是Paraphrase任務,即要判斷兩個句子是否語義等價,所以它的分類標簽集合就是個{等價,不等價}的二值集合。除此外,還有很多其它類型的任務都屬于句子對匹配,比如問答系統,就是判斷兩個句子是否一個是問題一個是答案的關系,此類任務還有很多,關鍵是看你怎么理解一個任務的目標。
今天我們主要講講如果利用RNN來構造這個映射函數F,那么神經網絡的結構應該如何設計?雖然標題說是“常見”,但是其實講這方面的文獻非常之少。我把使用RNN解決句子對匹配的神經網絡結構抽象成三類情況,這三類也是相對容易想到的結構。當然,這里要注意,雖然我們這里說的是RNN,但是它代表了LSTM、GRU、多層深度網絡等各種變體形式,為行文方便,在此統一用RNN來指代。
|RNN網絡結構一
???????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖1.? RNN網絡結構一
?圖1展示了一個最容易想到的RNN網絡,對于兩個句子,分別套上一個RNN或者深層LSTM亦或雙向深層LSTM等,每個RNN的目的是抽取出這個句子的特征,然后將兩個句子抽取出的特征拼接成更上層的MLP多層神經網絡的輸入層,經過MLP的隱層使得兩個句子發生非線性映射關系,最后再通過SoftMax分類層給出最后的分類結果。
這樣就通過兩個RNN實現了對兩個句子是否具備某種關系作出分類判斷的決策,使用訓練數據可以獲得網絡參數,之后就可以將這個神經網絡用來對現實任務進行分類的工作。
|RNN網絡結構二
圖2 ?RNN網絡結構二
圖2展示了結構二的通用架構。就是把兩個句子S和T拼接起來,中間用一個特殊分隔符EOS分割,這里EOS不代表一個句子的結束,而是代表兩個句子的分隔符號,如此就構造出了RNN的輸入層。之后可以套上雙向以及深層網絡結構,在最高一層RNN層的輸出之上,套上一個Mean Pooling層。所謂Mean Pooling,具體做法就是把BLSTM各個節點的輸出結果求等權平均,首先把BLSTM各個輸出內容疊加,這是pooling的含義,然后除以輸入節點個數,這是mean的含義,Mean Pooling就是這個意思。
如何從物理意義上來理解Mean Pooling呢?這其實可以理解為在這一層,兩個句子中每個單詞都對最終分類結果進行投票,因為每個BLSTM的輸出可以理解為這個輸入單詞看到了所有上文和所有下文(包含兩個句子)后作出的兩者分類結果的判斷,而通過Mean Pooling層投出自己寶貴的一票。
在Mean Pooling之上,我們還可以套上一層SoftMax層,這樣就可以實現最終的分類目的。
通過以上方式,我們就通過輸入層、多層BLSTM層、Mean Pooling層和輸出層構造出一個通用的判斷兩個句子語義是否具備某種語義關系的RNN深度學習系統。
與網絡結構一相比,最大的不同在于:網絡結構一的兩個RNN之間沒有建立任何直接的聯系,無論層級有多深,RNN在此只是起到了提取各自句子特征的目的,而兩個句子發生關系是在MLP神經網絡結構里體現出的,也就是說網絡結構一是在兩個句子的整體特征之間建立起聯系的。而網絡結構二則在RNN層兩個句子之間的單詞之間就已經建立起了相互的關系,所以如果粗略地分析,感覺結構二應該能夠捕獲到的信息要多于結構一的那種架構所能捕獲到的信息,當然,這個只是直觀感覺。
|RNN網絡結構三
? 圖3 RNN網絡結構三
圖3展示了第三種RNN網絡結構。在輸入層和RNN層結構與網絡結構二是相同的,意思是在RNN層就使得兩個句子之間單詞發生相關關系,與網絡結構二不同的在于分類層,不像網絡結構二一樣套上一個Mean Pooling層接收每個單詞的分類判斷,而是在拼接后的最高層處BLSTM最后一個節點隱層之上(圖3可能有些不準確,要注意這里是節點的隱層狀態而非最終輸出值)套上一個SoftMax分類層,因為這里最后一個節點的隱層神經元狀態理論上把兩個句子各自的語義表示以及兩者之間的關系都編碼在其中了,然后直接在這些信息基礎上進行分類。當然,如果是采用雙向結構BiRNN或者BLSTM,可以將首節點和尾節點的隱層狀態一起拼接來作為最后分類的基礎中間值,因為對于雙向結構來說,頭節點也隱含了逆向的兩者關系編碼,其圖結構如下所示:
圖4 RNN網絡結構三之雙向結構
上面介紹了抽象出的三種典型RNN解決句子對匹配問題的網絡結構,至于說這三個結構哪個會更好,或者還是三者差不多,其實這里面是有文章可作的,比如你可以用若干個分類任務,分別采取三個架構,測試并分析對應的效果,得出哪個結構更好的結論,其實是具有很大的發表價值的,有興趣的同學可以試試看。
另外,很明顯,你仔細一想,其實是能夠想出很多新型RNN網絡結構的,而且非??赡苣壳斑€沒有文獻提到過,這里不細談了,以后有機會我會把我目前能想到的幾個變體分享出來。
掃一掃關注微信號:“布洛卡區” ,深度學習在自然語言處理等智能應用的技術研討與科普公眾號。
總結
以上是生活随笔為你收集整理的使用RNN解决句子对匹配问题的常见网络结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用RNN解决NLP中序列标注问题的通用
- 下一篇: 多级神经网络结构表达文档语义性能更好吗