基於序列模型的隨機取樣

AIBigbull2050發表於2019-09-04
導語:本文回顧了一系列常用的序列模型取樣方法,包括基於蒙特卡洛的隨機取樣和隨機束搜尋,以及最近提出的基於Gumbel-Top-K的隨機束搜尋。

本文作者為李炎洋,來自東北大學自然語言處理實驗室,向雷鋒網 (公眾號:雷鋒網)AI科技評論獨家投稿。

對於目前基於神經網路的序列模型,很重要的一個任務就是從序列模型中取樣。比如解碼時我們希望能產生多個不一樣的結果,而傳統的解碼演算法只能產生相似的結果。又比如訓練時使用基於強化學習或者最小風險訓練的方法需要從模型中隨機採集多個不一樣的樣本來計算句子級的損失,而一般的確定性方法不能提供所需要的隨機性。本文回顧了一系列常用的序列模型取樣方法,包括基於蒙特卡洛的隨機取樣和隨機束搜尋,以及最近提出的基於Gumbel-Top-K的隨機束搜尋。表1展示了這三種方法各自的優缺點。

基於序列模型的隨機取樣


序列模型中的束搜尋

在此之前,我們首先回顧一下束搜尋。在序列模型中,束搜尋通常被用來提升模型解碼時的效能。預設的貪婪解碼總是在每一步挑選一個當前分數最高的詞來組成序列。相比起貪婪解碼,束搜尋每一步都挑選多個詞來組成多個候選序列,最後挑選分數最高的序列作為最終輸出。束搜尋雖然增加了計算量,但是也顯著提升了模型效能。圖1是一個束大小為2的束搜尋的例子:

基於序列模型的隨機取樣

圖1 束搜尋第一步

在解碼第一步的時候,束搜尋從句子開始符<START>開始,根據模型的打分logPLM(PLM是在給定字首的情況下模型輸出的下一詞分佈)來挑選詞表中得分最高的前兩個詞he和I,並用he和I的得分logPLM(he|<START> )和logPLM(I|<START> )分別作為候選序列<START> he和<START> I的得分。

基於序列模型的隨機取樣

圖2 計算束搜尋第二步打分

在解碼第二步的時候,根據模型的打分logPLM為已經生成部分內容的句子<START> he和<START> I各自挑選得分最高的前兩個詞,如<START> he會挑選hit和struck,<START> I會挑選was和got,然後組成一共四個候選序列<START> he hit,<START> he struck,<START> I was和<START> I got,並分別計算他們的得分,比如<START> he hit的得分等於<START> he這個序列的得分加上hit的得分           logPLM(hit|<START> he),如圖2所示。最後保留這四個候選序列中得分最高的前兩個序列

即<START> he hit和<START> I was,如圖3所示。

基於序列模型的隨機取樣

圖3 挑選束搜尋第二步候選

以此類推,束搜尋一直迭代到固定次數或者所有的候選序列都結束才停止。在這個例子中束搜尋在第六步停止,產生了兩個候選序列<START> he hit me with a pie和<START> he hit me with a tart,並挑選得分最高的<START> he hit me with a pie作為最終的結果,如圖4所示。

基於序列模型的隨機取樣

圖4 束搜尋最終結果

序列模型中的隨機取樣

從序列模型中採集多個樣本有兩種經典的方法:基於蒙特卡洛的隨機取樣和基於蒙特卡洛的束搜尋。

基於蒙特卡洛的隨機取樣

在序列模型中取樣的最簡單方法就是在貪婪搜尋的基礎上,在每一步挑選下一個詞的時候不是根據它們相應的得分logPLM而是根據模型輸出的下一個詞分佈PLM來隨機選取一個,這樣重複到固定長度或者挑選到句子結束符時停止。這樣我們獲得了一個樣本。如果需要採集多個樣本,那麼重複這個過程若干次便可得到多個樣本。

基於蒙特卡洛的隨機取樣雖然簡單,但是它面臨著嚴重的效率問題。如果模型輸出的下一個詞分佈PLM熵很低,即對於個別詞輸出機率特別高,那麼採集到的樣本將有很大一部分重複,比如接近收斂時候的模型。因此為了採集到固定數目的不同樣本,基於蒙特卡洛的隨機取樣可能需要遠遠大於所需樣本數的取樣次數,使得采樣過程十分低效。

基於蒙特卡洛的隨機束搜尋

基於蒙特卡洛的隨機束搜尋在採集多個不同樣本遠比基於蒙特卡洛的隨機取樣高效。假設現在束大小為K,基於蒙特卡洛的隨機束搜尋在束搜尋的基礎上,把根據下一詞的得分logPLM挑選前K個得分最高的詞的操作替換成根據下一個詞分佈PLM隨機挑選K個不同詞。因為每一步都挑選了不同的詞,因此最終產生的K個候選序列都不會相同,從而達到了高效採集K個樣本的目的。

但是基於蒙特卡洛的隨機束搜尋也面臨著方差的問題。在每一步中它都是根據PLM隨機挑選K個不同詞,它無法控制隨機取樣時的噪聲,也就是樣本分佈的方差跟每一步的PLM的方差相關,而PLM的方差是無法控制的,它可能非常大也可能非常小。因此在基於蒙特卡洛的隨機束搜尋採集到的樣本上估計的統計量會非常不穩定,比如在使用句子級損失的任務中採用樣本估計損失的時候會計算出不穩定的值,使模型訓練受到影響。

基於Gumbel-Top-K的隨機束搜尋

解決基於蒙特卡洛的隨機束搜尋的問題關鍵在於怎麼控制每一步隨機取樣時的噪聲。最近的論文提出使用了Gumbel-Top-K技巧來達到這個目的。

Gumbel-Top-K技巧

基於序列模型的隨機取樣

自底向上的取樣方法

如果我們把每個可能的句子當成一個單獨的類別來構造一個類別數非常龐大(假設所有句子長度相等,那麼有VT個類別,其中V是詞表大小,T是句子長度)的類別分佈,那麼便可以使用Gumbel-Top-K技巧來從這一個龐大的類別分佈中採集K個不同樣本,同時每個樣本都服從於原始的分佈。這也是論文提出的自底向上的取樣方法。

基於序列模型的隨機取樣

圖5 自底向上的取樣方法

圖5展示了一個詞表大小V=3(hello,world,!),句子長度T=3和樣本數K=2的例子。我們需要先從第一個詞開始列舉所有的9個可能的句子,同時使用模型計算這9個句子的機率。因為模型通常只能計算整個句子的機率,而Gumbel噪聲需要加到整個logit上,我們可以使用整個句子的對數機率

基於序列模型的隨機取樣

我們就完成了取樣,但是自頂向上的方法需要先列舉所有句子和計算其對數機率才能開始使用噪聲擾動每個句子的對數機率,那麼我們能不能從句子開始一邊列舉一邊計算和擾動生成的不同句子的對數機率?在此之前,我們必須先定義在列舉過程中中間生成的只有部分內容的句子的對數擾動機率。只有部分內容的句子(部分生成的句子)的對數擾動機率,比如例子中的<START> world,定義為以該部分生成的句子為字首的所有完整句子中對數擾動機率最大的一個

基於序列模型的隨機取樣

基於序列模型的隨機取樣

自頂向下的取樣方法

基於序列模型的隨機取樣

這樣,我們可以一邊列舉所有句子的同時計算句子的對數擾動機率。

更進一步地,我們可以看到,因為我們定義部分生成的句子的對數擾動機率為其對應的所有完整句子的最大的對數擾動機率,因此如果我們在列舉的時候只保留分數最高的K個候選,那麼我們可以保證最終的K個候選一定是所有句子中分數最高的前K個,因為部分生成的句子的對數擾動機率的定義已經說明一個內部節點的所有葉子節點的對數擾動機率不可能比它的對數擾動機率大,因此在當前一層中不是分數最高的前K個的話以後它任何一個後代節點也不可能是分數最高的前K個。這樣一個自頂向下的方法可以非常高效的採集K個不同樣本而不需要列舉所有句子。

基於序列模型的隨機取樣

圖6 自頂向下的取樣方法

圖6展示了一個K=2的自頂向下的取樣例子。我們先對<START>的對數機率進行擾動,得到-1.2,然後我們對所有候選序列<START> hello,<START> !和<START> world的對數機率進行擾動並進行糾正,得到-4.3,-3.2,-1.2,最後我們只保留對數擾動機率最高的<START> !和<START> world繼續進行擴充,最終得到<START> world hello和<START> world world兩個樣本。

展望

最新提出的基於Gumbel-Top-K的隨機束搜尋提供了一種高效的取樣手段。利用這種方法,我們可以:

1.    對於需要取樣來計算句子級損失的任務,可以更高效地訓練模型;

2.     類似於使用Gumbel-Softmax的梯度作為Gumbel-Max梯度的有偏估計,為Gumbel-Top-K尋找類          似的梯度有偏估計,使得模型可以直接最佳化其搜尋過程;

3.     機率化束搜尋,為束搜尋可能導致的一系列問題如過翻譯,漏譯等提供機率解釋。


參考文獻

Kool, W., Hoof, H.V., & Welling, M. (2019). Stochastic Beams and Where To Find Them: The Gumbel-Top-k Trick for Sampling Sequences Without Replacement. ICML.

Shen, S., Cheng, Y., He, Z., He, W., Wu, H., Sun, M., & Liu, Y. (2015). Minimum Risk Training for Neural Machine Translation. ArXiv, abs/1512.02433.


作者介紹

李炎洋,東北大學自然語言處理實驗室研究助理。東北大學自然語言處理實驗室由姚天順教授建立於 1980 年,現由朱靖波教授、肖桐博士領導,長期從事計算語言學的相關研究工作,主要包括機器翻譯、語言分析、文字挖掘等。團隊研發的支援119種語言互譯的小牛翻譯系統已經得到廣泛應用。





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2655960/,如需轉載,請註明出處,否則將追究法律責任。

相關文章