在自然語言進行中,很多任務的輸入是變長的文本序列,而傳統分類器的輸入需要固定大小。是以,我們需要将變長的文本序清單示成固定長度的向量。以句子為例,一個句子的表示(也稱為編碼)可以看成是句子中所有詞的語義組合。是以,句子編碼方法近兩年也受到廣泛關注。句子編碼主要研究如何有效地從詞嵌入通過不同方式的組合得到句子表示。其中,比較有代表性方法有四種。
第一種是神經詞袋模型,簡單對文本序列中每個詞嵌入進行平均,作為整個序列的表示。這種方法的缺點是丢失了詞序資訊。對于長文本,神經詞袋模型比較有效。但是對于短文本,神經詞袋模型很難捕獲語義組合資訊。
第二種方法是遞歸神經網絡,按照一個外部給定的拓撲結構(比如成分句法樹),不斷遞歸得到整個序列的表示[9] 。遞歸神經網絡的一個缺點是需要給定一個拓撲結構來确定詞和詞之間的依賴關系,是以限制其使用範圍。一種改進的方式引入門機制來自動學習拓撲結構[10] 。
第三種是循環神經網絡,将文本序列看作時間序列,不斷更新,最後得到整個序列的表示。但是簡單的循環神經網絡存在長期依賴問題,不能有效利用長間隔的曆史資訊。是以,人們經常使用兩個改進的模型:長短時記憶神經網絡(LSTM) [11] 和基于門機制的循環單元(GRU) [12] 。
第四種是卷積神經網絡,通過多個卷積層和子采樣層,最終得到一個固定長度的向量。在一般的深度學習方法中,因為輸入是固定維數的,是以子采樣層的大小和層數是固定的。為了能夠處理變長的句子,一般采用兩種方式。一種是層數固定,但是子采樣的大小不固定。根據輸入的長度和最終向量的維數來動态确定子采樣層的大小[13] 。另外一種是将輸入的句子通過加入零向量補齊到一個固定長度,然後利用固定大小的卷積網絡來得到最終的向量表示[14] 。
在上述四種基本方法的基礎上,很多研究者綜合這些方法的優點,提出了一些組合模型。Tai 等人[15]基于句法樹的長短時記憶神經網絡(Tree - LSTM), 将标準 LSTM 的時序結構改為文法樹結構,在文本分類上得到非常好提升。Zhu 等人[16]提出了一種遞歸卷積神經網絡模型,在遞歸神經網絡的基礎上引入卷積層和子采樣層,這樣更有效地提取特征組合,并且支援多叉樹的拓撲結構。
如果處理的對象是比句子更長的文本序列(比如篇章),為了降低模型複雜度,一般采用階層化的方法。先得到句子編碼,然後以句子編碼為輸入,進一步得到篇章的編碼。
在上述模型中,循環神經網絡因為非常适合處理文本序列,是以被廣泛應用在很多自然語言處理任務上。