你可能不需要固定词表:一种与词表无关的组合式词向量方法
論文標題:
Grounded Compositional Outputs for Adaptive Language Modeling
論文作者:
Nikolaos Pappas (UW), Phoebe Mulcaire (UW), Noah A. Smith (UW)
論文鏈接:
https://arxiv.org/abs/2009.11523
代碼鏈接:
https://github.com/Noahs-ARK/groc (Coming soon)
過去的幾乎所有深度模型在輸入和輸出的時候都使用一個固定的詞向量矩陣,它的大小就是預定義好的詞表的大小。
但是,在測試的時候遇到OOV,或者用在其他領域的時候,模型的效果就會大打折扣。如果要覆蓋更多的詞,無疑就是增大詞表,這樣的話,詞向量矩陣也會隨之增大。
如何盡可能覆蓋更多的詞,同時也不會顯著增加參數量,甚至保持參數量不變,是處理此類問題的一個關鍵所在。
本文提出了一種與詞表無關的詞向量方法,每個詞的詞向量都是由它內部的字符、WordNet中的關系與定義組合得到的,這樣對于所有詞而言,參數量就固定了。
同時,對于任何詞,即使沒有在原來的詞向量矩陣中,這種方法也可以得到詞向量。這樣就可以達到我們的目標。
在開始介紹之前需要說明,本文說的詞表并不是詞庫,因為無論如何,包括我們人類也都是需要存儲詞的。這里的詞表指一個固定的詞向量矩陣,在訓練完之后,對任何任務,這個矩陣在推理的時候是不變的。
本文的方法可以理解為:對不同的任務可以有不同的,而中的每個詞向量都是組合得到的而不是自己去學到的,所以總的參數量就和本身無關。這一點需要尤其注意。
詞向量矩陣
詞向量矩陣在各類NLP模型中是一個標配,它把詞表中的每個詞映射為一個與之對應的向量,在訓練結束之后,這個矩陣就是固定的,對于生成類任務而言,所有要生成的詞也是從中選擇的。
詞向量矩陣分為兩類:輸入矩陣和輸出矩陣。這兩個矩陣可以相同,也可以不同,但一般來說,它們的大小都是固定的,即。
顯然,詞表越大,參數量就越多。如果想要減少參數量,令是一個不錯的選擇。再進一步,令輸出矩陣是輸入矩陣的一個函數可以在一定程度上區分兩者,即。如下圖所示。
但無論是哪種方法,正如我們上面說的,它們的大小都是恒定的,如果遇到不同領域的文本,或者一些情況下我們想要引入更多的不包含在現有詞表中的詞時,就會產生大量的OOV,這些詞在不存在,從而影響模型效果。
那么,轉變一下思路:我們現實中的詞不都是通過詞典去定義嗎,而且一個詞的意思往往能通過組成它的字推導出來(這在英語中尤其明顯)。
所以,我們能不能采用一種組合式的方式,不是對每個詞都去學一個它獨有的詞向量,而是用它的表層形式(Surface Form)、詞典定義(Definition)和關系(Relation),去得到它的詞向量。
這樣一來,通過特定的實現,無論我們有多少詞,模型的參數量都是恒定不變的;同時,如果在測試的時候遇到一個沒有見過的詞,也可以用這種方式去得到它的詞向量,從而解決上面的問題。
GroC: 組合式詞向量
下圖是GroC(Grounded Compositional)詞向量的示意圖。方法很簡單,對每個詞,無論是在不在某個詞表中,它的詞向量都由三部分得到:表層形式(Surface Form),關系形式(Relational Form)和定義形式(Definitional Form)。然后把這三者拼接起來就是詞本身的詞向量了。
表層向量就用一個字級別的CNN+Highway實現,關系向量就是WordNet中它的所有同義詞和近義詞表層向量的平均,而定義向量就是詞的定義中所有詞表層向量的平均。如果一個詞沒有出現在WordNet中,就相應地把設為0即可。
用這種方法,訓練和測試完全可以用不同的詞表。比如說現在測試用的詞表是,那么就可以match用GroC得到它其中每個詞的詞向量。
但是上面我們說了,一般模型有輸入和輸出向量,而GroC只能得到一個向量,為了進一步區分二者,我們依然可以把輸出向量看作是輸入向量的函數,即:
最后得到的就是真正的輸出向量。
注意,在訓練的時候這種方法肯定會比一般的詞向量方法開銷更大,因為要得到三個組成向量。為此,可以不用每次都更新參數,而是以一定概率進行,具體詳見原文。在推理的時候,也可以緩存已有的。
實驗
In-Domain Language Model
in-domain語言模型任務考慮的是固定詞表,即訓練和測試的詞表相同。數據集有penn和wikitext2。所有任務的模型都是LSTM,但是輸出詞向量矩陣的方法不同,有Lookup Table,Convolutional,Tied,Bilinear,Deep Residual,Adaptive和GroC。下表是實驗結果。
可以看到,GroC參數量極少,但可以非常顯著地提升效果。其主要原因可能是能夠更好地處理低頻詞和OOV,而GroC可以在某種程度上建立詞表中各個詞的聯系。下圖是不同詞頻段的中位數損失,可以看到,GroC相比所有其他方法,在所有詞頻段上都有提升,而提升最大的就是低頻段。
那么,GroC的不同組成向量的貢獻是多少呢?下表探究了不同組成成分的影響,其中out就是函數。可以看到,單獨移除一個組成向量影響不是很大,但是移除兩個的影響就非常大了。
Cross-Domain Language Model
既然我們說GroC可以在測試的時候有不同的詞表,那么它在不同詞表上的效果又如何呢?為此,我們繼續在cross-domain上實驗。
數據集來著News Crawl,Common Crawl和WikiText-103,下表是數據情況。
所有模型都在2007上訓練,在targt domain上測試。比較的模型有GroC和Tied,而且都有三種遷移方法:Unigram(一種統計方法),Local Cache(一種插值方法)和Finetuning(在target domain上微調)。
下表是實驗結果。無論是zero-resource,還是low-resource,不管是near-domain還是far-domain,或是不同遷移方法,幾乎都是GroC顯著超過Tied和Base方法。由此可見GroC在處理OOV時的威力。
小結
本文提出了組合式的詞向量方法,基于詞本身的表層形式和詞典中的信息,可以用固定的參數得到任意多詞的詞向量,不但可以在詞表很大的時候減少參數,而且能夠有效緩解OOV問題。盡管在訓練的時候可能更慢,但通過一定手段也是可以加速的。
這類方法在之前其實有很多,比如Retrofit等,但是本文的重心在于輸出矩陣,對如何在輸出的時候緩解常見的如低頻詞的影響,如何利用現有的語言學知識等問題來說,都有一定的啟發。
當然本文也有不足,比如沒有分析以此得到的詞向量的性質(比如經典的Queen:Girl=King:Boy任務),不能直觀觀察它們的語言學性質如何,不過從諸多實驗的效果來看,GroC的可靠性還是可以得到保障的。
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的你可能不需要固定词表:一种与词表无关的组合式词向量方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 床垫为什么加乳胶?
- 下一篇: 腾讯张军:鸿蒙原生版微信会随机向部分用户