0
本文作者: 汪思穎 | 2019-05-05 10:41 |
雷鋒網 AI 科技評論消息,本文作者中國科學院自動化研究所張家俊,他為雷鋒網 AI 科技評論撰寫了基于 BIFT 的獨家解讀。正文內容如下:
前言:
概括地講,自然語言處理包括兩大任務:自然語言文本理解和自然語言文本生成。自然語言文本理解就是讓機器洞悉人們所言之意,自然語言文本生成旨在讓機器像人一樣表達和說話。文本理解的關鍵在于對已知文本的上下文表征和建模,而文本生成的本質是在文本理解的基礎上準確流暢地產生自然語言文本。
自然語言理解既可以利用上文信息也可以利用下文信息,高效的雙向編碼能力正是 BERT 成功的關鍵因素之一。但是,自然語言生成由于都默認自左往右地逐詞產生文本輸出,預測某個時刻的輸出只能利用上文的歷史信息而無法訪問還未生成的未來信息。例如將漢語句子“有五個人”自動翻譯為英語時,從左到右的理想預測結果是“There”、“are”、“five” 和“persons”。雖然“persons”能夠判別第二個詞語應該是“are”而不是“is”,但是由于在預測第二個單詞時,只能依賴已經產生的單詞“There”,而無法參考還未生成的“five”和“persons”。這個簡單的例子就能反映出傳統(tǒng)自左往右自然語言生成的弊端。我們提出的 BIFT 希望打破這種文本生成模式,采用同步雙向推斷模型為每個時刻的預測同時提供歷史信息和未來知識。通過大量實驗,我們發(fā)現 BIFT 相比于當前最好的模型,在幾乎不犧牲效率的前提下能夠獲得十分顯著的性能提升, 并且已經成功應用于在線機器翻譯系統(tǒng),相關代碼和使用說明請參考 Github 鏈接:https://github.com/ZNLP/sb-nmt
使用 BIFT 一詞就是希望讓大家聯(lián)想到 2018 年風靡全球的自然語言處理神器 BERT(Bidirectional Encoder Representation from Transformer)。將 BIFT 和 BERT 放在一起,我們期望更好地探討兩者的聯(lián)系和區(qū)別。如果不想詳細了解,記住一句話那就可以了:BERT 著眼于編碼器 Encoder,目標是提升自然語言理解的能力;BIFT 改變解碼范式,旨在改善自然語言生成的效果。
BIFT 是我們近一年來的研究工作成果,在 2018 年 10 月份 BERT 誕生時,我們其中的一項工作(Synchronous Bidirectional Neural Machine Translation)已經被 Transactions on ACL 條件接收。BERT 非常偉大,在十多個自然語言理解任務中刷到最高分。相比而言,我們當時的工作只是在機器翻譯任務上做出了卓有成效的嘗試,所以肯定無法與 BERT 相提并論,只是聯(lián)系在一起更容易描述和讓大家理解。BIFT 目前在機器翻譯和自動摘要兩個自然語言生成任務(尤其是機器翻譯任務)中取得了顯著效果,我們希望 BIFT 在其他自然語言生成任務中也能大放異彩。
BIFT 和 BERT 有一個共同點:都是基于 2017 年 Google 提出的完全注意機制驅動的 Transformer 框架(如圖 1 所示)。編碼器 Encoder 對輸入文本進行深層語義表示,解碼器 Decoder 依據輸入文本的語義表示產生輸出文本。編碼器和解碼器都是由多層網絡堆積而成,編碼器中的每一層主要包括自我注意機制(Self-Attention)和前饋網絡(Feed-Forward Network)兩個子層,每個子層后面會緊接一個正則化操作,并且層與層之間會有殘差連接。相比編碼器,解碼器中的每一層有兩點不同,一方面,自我注意機制只能利用已經生成的部分歷史前綴信息,而需要屏蔽還未產生的未來信息;另一方面,自我注意機制和前饋網絡之間還包括一個建模輸出和輸入關系的 Encoder-Decoder 注意機制。
圖 1:Transformer 框架
從 Transformer 的框架可以看出,自我注意是其有別于循環(huán)神經網絡和卷積神經網絡的本質。以漢語到英語的機器翻譯任務為例,圖 2 和圖 3 展示了編碼器和解碼器中自我注意機制的工作流程。圖 2 顯示的編碼模塊中,對于輸入的單詞序列,每個單詞首先映射為低維實數向量,① 表示第一個單詞與包括自身的所有單詞計算相關度,并對所有單詞的向量表示依據相關度進行加權獲得序列第一個單詞更深一層的語義表示;② 采用相同的方式,平行計算輸入序列中每個位置更深一層的語義表示;③ 利用相同的自我注意機制可以生成多層語義表示。
圖 3 顯示的解碼模塊中,第一個輸出單詞為開始符,與編碼器中每個位置的語義表示進行注意機制計算并加權得到第二層語義信息,① 采用相同的方式可以獲得更多層的語義信息,最后利用 softmax 函數預測下一個時刻的輸出“there”;② 預測下一個輸出單詞時,首先需要進行輸出端的注意機制計算過程,然后再與編碼器的語義表示進行注意機制計算;③ 進行相同的操作獲得多層語音信息,再由 softmax 函數給出下一個時刻應該輸出的單詞“are”;④ 重復 ② 和 ③ 最終生成整個文本序列(一般直到產生結束符“</s>”,停止解碼過程)。
圖 2:Transformer 的編碼器示意圖
圖 3:Transformer 的解碼器示意圖
圖 4: Transformer 編碼器的 Self-attention 工作機理
圖 5: Transformer 解碼器的 Self-attention 工作機理
圖 4 與圖 5 分別展示了 Transformer 編碼器和解碼器中自我注意機制的計算方法:首先將詞向量轉化為具有相同維度的查詢 Q、鍵 K 和值 V,然后用 Q 與 K 計算相關性,最后用相關性對 V 加權獲得某個位置更深一層的語義表示。兩張圖的核心區(qū)別體現在圖 4 編碼器中每個位置的上層語義表示學習都可以利用上文和下文信息,而圖 5 解碼器中每個位置的上層語義表示學習只能利用已經產生的歷史信息。
BERT:
BERT 無疑是 2018 年自然語言處理領域最令人興奮的模型。BERT 以 Transformer 的編碼器 Encoder 為模型框架的核心,為了處理自然語言理解中的分類和序列標注兩大任務,BERT 在 Transformer 編碼器的最上層添加一個特殊分類器(圖 6 所示)或為每個位置添加一個分類器(圖 7 所示)。
BERT 的成功主要可以歸結到四點因素:(1)預訓練(pre-training)和精細調優(yōu)(fine-tuning)的模型架構;(2)以 Transformer 深層雙向編碼器為模型核心;(3)以 Masked LM 和下個句子預測任務構建優(yōu)化目標函數;(4)超大規(guī)模訓練數據的利用。對比 ELMo(Embeddings from Language Model)和 GPT(Generative Pre-trained Transformer)發(fā)現,BERT 最大的優(yōu)勢之一在于使用了 Transformer 中基于自我注意機制的雙向編碼模型。
圖 6:BERT 中的分類模型
圖 7: BERT 中的序列標注模型
BIFT:
圖 8 簡單展示了自然語言文本理解與自然語言文本生成之間的架構差別。自然語言文本理解中,輸入文本是給定的,從而雙向編碼是很自然的選擇。對于自然語言文本生成而言,由于輸出文本不可預知,傳統(tǒng)自左往右的解碼方式僅僅能充分利用已經產生的歷史信息,而無法利用還未生成的未來信息。于是,我們便提出一個如圖 9 所示的大膽想法:能否像雙向編碼一樣,設計一種雙向解碼機制,從而有效建模歷史和未來信息?
圖 8:自然語言文本理解與自然語言文本生成的對比示意圖
圖 9:單向解碼和雙向解碼的對比示意圖
1. 雙向推斷的概率模型
自然語言文本生成任務中,我們一般采用下面的式子建模輸出文本 y=與 x=
之間的關系:
這就是典型的從左往右的文本生成范式。當然,也可以采用從右往左的文本生成范式:
但是上述兩種方式都無法同時利用歷史和未來信息。那么能否在預測 時同時依賴
和
呢?這種想法顯然不太實際。因為,預測
時需要
已知,而預測
時需要
已知,可見是矛盾的,所以預測某個時刻的輸出時無法同時利用全部的歷史和未來信息。我們的想法是最大限度地挖掘和利用歷史與未來信息,從而提出同步雙向推斷的解碼機制:
我們的想法可以由圖 10 簡要說明:自然語言文本生成模型保持從左往右和從右往左的同步解碼,但是在每個時刻兩個方向的解碼都進行充分的交互。預測 時不僅可以利用歷史預測結果
,同時可以利用未來信息
;預測
時,不僅可以利用該解碼方向的歷史預測結果
,還可以同時利用另一個解碼方向的未來信息
。越到中間部分,可利用的歷史和未來信息就越豐富和完整。
圖 10:同步雙向推斷的解碼機制示意圖
以預測 為例,圖 11 展示了同步雙向推斷模型的同步雙向注意機制。
表示與 L2R 解碼方向歷史預測結果的自我注意機制的計算結果;同時,我們也計算 L2R 解碼方向 i 時刻的隱層狀態(tài)與未來預測信息(R2L 解碼方向的生成結果)的自我注意機制結果
。最后,綜合歷史信息
和未來信息
,獲得 L2R 解碼方向 i 時刻更豐富的語義信息
。類似地,R2L 解碼方向也可以綜合歷史信息和未來信息,預測
。
圖 11:同步雙向推斷模型
2. 雙向推斷模型的柱搜索解碼算法
圖 12:同步雙向推斷模型的柱搜索算法示意圖
圖 12 給出了同步雙向推斷模型的柱搜索解碼算法示意圖。以柱大小 b=4 為例,每一時刻 L2R 和 R2L 方向利用同步雙向注意機制 SBAtt 進行同步解碼,并分別保留 b/2 個最優(yōu)候選。如果當前時刻預測結果為結束符?/s?,則將該候選放入完整候選列表。當完整候選列表達到 b 的規(guī)模,則停止解碼,輸出列表中概率最大的候選作為最終輸出。如果最終結果來自于 R2L 方向,則需要在輸出前對結果進行逆序操作。詳細算法流程見算法 1。
算法 1:同步雙向推斷模型的柱搜索解碼算法
3. 參數訓練
由于同步雙向推斷模型在解碼過程中,L2R 和 R2L 方向同步并行解碼,那么訓練過程中針對平行句對(x,y),L2R 方向希望生成標準答案 ,同時 R2L 方向希望生成標準答案的逆序結果
。給定包含 T 個平行句對的訓練數據集
,我們旨在學習一套模型參數以最大化訓練數據的對數似然:
當訓練過程中計算 的概率時,如果同步雙向推斷模型直接采用
,將會遇到一個自己預測自己的問題。例如,計算
時,
包括
,便導致
預測自己。顯然,這樣的訓練方式無法學習到合理的模型參數。因此,我們提出兩種參數優(yōu)化策略,分別是兩階段法(two-pass training)和微調法(fine-tuning)。
在兩階段法中,我們首先在訓練數據上獨立學習 L2R 和 R2L 推斷模型。然后 L2R 和 R2L 模型分別用來對訓練數據的輸入端進行解碼,分別得到 和
。在第二階段的訓練過程中,我們利用
而不是
來計算
,同樣的道理,我們利用
,而不是
來計算
。
在微調法中,我們首先訓練一個如下述公式所示的沒有交互的 L2R 和 R2L 平行推斷模型,其中每個訓練實例是一個三元組 (在
和
的句首分別加上特殊符號 l2r 和 r2l )。
上述訓練過程收斂時,我們從訓練數據中隨機選取少量的平行句對(譬如 10% 的數據),并且利用該初始模型解碼這些數據的輸入序列,得到新的三元組。最后,我們就可以利用這些三元組像兩階段法一樣微調同步雙向推斷模型。對比兩種訓練策略,我們會發(fā)現微調法不需要利用兩個獨立模型對整個訓練數據進行解碼、不需要在整個訓練數據上進行再次參數訓練,該訓練策略可能在實際中更受歡迎。我們的實驗主要基于兩階段法,但我們也會給出兩種策略的對比結果。
4. 實驗結果
實際上,我們將同步雙向推斷模型不僅用于 Transformer,還用于基于循環(huán)神經網絡 RNN 的序列生成模型。在應用場景方面,我們不僅測試了機器翻譯的效果,同時也在句子摘要任務上進行了驗證。這里只要介紹機器翻譯任務上的結果。
我們分別在漢語-英語和英語-德語兩個機器翻譯任務上進行了測試。漢語-英語采用約 200 萬的雙語訓練數據,英語-德語采用與 Transformer 一樣的設置。表 1 和表 2 分別展示了不同模型在漢英和英德機器翻譯任務上的結果。
從表 1 可以看出,無論采用循環(huán)神經網絡還是 Transformer,同步雙向推斷模型都能夠顯著提升譯文質量。特別是在 Transformer 框架下,BIFT 模型展示了令人驚喜的提升空間。
表 1:不同機器翻譯模型在漢英任務上的結果。
RNMT 表示基于 LSTM 的序列生成模型;RNMT (R2L)表示采用從右往左解碼模式;BI-RNMT 是我們提出的基于同步雙向推斷的序列生成模型;Rerank-NMT 是一種譯文重排序系統(tǒng),即對 L2R 和 R2L 的候選結果利用全局特征進行重排序,選擇最優(yōu)結果;ABD-NMT 是一種異步雙向解碼模型,即首先進行 R2L 解碼,然后利用 R2L 解碼結果優(yōu)化 L2R 解碼過程。
表 2:不同機器翻譯模型在英德任務上的結果
表 2 展示的英德機器翻譯結果可以對比當前最好的模型。GNMT 是 2016 年 Google 發(fā)布的基于深層 LSTM 的序列生成模型;Conv 是 2017 年 Facebook 提出的基于卷積神經網絡的序列生成模型;AttIsAll 是 2017 年 Google 提出的 Transformer 模型。表中的 Transformer 是我們重現的模型??梢园l(fā)現,BIFT 模型在相同的實驗設置下,可以顯著超越當前最優(yōu)的模型,取得了最好的結果。
表 3 給出了不同機器翻譯模型的參數規(guī)模、訓練和解碼效率的對比結果??梢园l(fā)現,BIFT 模型沒有增加參數規(guī)模,而且?guī)缀鯖]有犧牲解碼速度。
表 3:不同機器翻譯模型的參數規(guī)模、 訓練和解碼效率對比。Train 欄表示每秒鐘完成的 Batch 訓練數目,Test 欄表示每秒鐘翻譯的句子數目。
表 4:參數訓練策略的實驗對比結果
表 4 給出了兩種參數訓練策略的實驗對比結果??梢钥吹?,無論是哪種訓練策略,翻譯質量都能得到大幅提升。雖然微調法沒有兩階段法有效,但是也能獲得 2 個 BLEU 值的性能提升??紤]到微調法簡單、方便易部署,我們相信這種參數訓練策略在現實場景中會更受歡迎。更詳細的模型描述和更多更豐富的實驗分
析可以參考下面的兩篇文章:
Jiajun Zhang, Long Zhou, Yang Zhao and Chengqing Zong. 2019. Synchronous Bidirectional Inference for Neural Sequence Generation. arXiv preprint arXiv: 1902.08955
Long Zhou, Jiajun Zhang and Chengqing Zong. 2019. Synchronous Bidirectional Neural Machine Translation. Transactions on ACL, Vol. 7, pp. 91-105, 2019.
雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。