<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          NMT對抗訓練的三部曲

          共 1977字,需瀏覽 4分鐘

           ·

          2022-04-20 21:33

          本文主要介紹NMT模型魯棒性的相關(guān)改進工作,介紹一下對抗訓練的三部曲,一作皆是ChengYong,分別中了2018,2019和2020的ACL。

          第一項工作為 Towards Robust Neural Machine Translation (ACL 2018)

          本文的問題引入為一個小實驗,即將機器翻譯的源句進行微小擾動(同義詞替換),69.74%的翻譯句子也隨之改變,并且原始輸入和擾動輸入對應(yīng)的翻譯句間BLEU僅為79.01,因此,作者希望通過對抗訓練來加強Encoder和Decoder的抗干擾能力。

          19f4be9d40272913bf4d21fbffdee76d.webp

          具體做法如上圖,首先是噪聲的引入,作者提出兩種方式:1)詞匯級別,計算余弦相似度進行同義詞替換;2)特征級別,在詞向量上加入高斯噪聲。然后是噪聲數(shù)據(jù)的使用,對應(yīng)上圖中三個損失函數(shù):1)Ltrue(x, y)是正常訓練NMT的損失函數(shù);2)Lnoisy(x', y)是加強Decoder的去噪能力,即對應(yīng)有噪聲的Hx',Decoder也能得到正確的輸出;3)Linv(x, x'),旨在加強Encoder的去噪能力,即針對噪聲數(shù)據(jù)x',Encoder得到的Hx'也應(yīng)與原表征Hx相近,訓練過程采用了min-max two-player策略,引入Discriminator進行交互對抗訓練,Encoder得到Hx和Hx'應(yīng)該盡可能相似騙過Discriminator,而Discriminator則要分開有、無噪聲的數(shù)據(jù),兩者迭代訓練以加強Encoder對噪聲數(shù)據(jù)x'的建模能力。

          文章優(yōu)勢在于不改變模型結(jié)構(gòu),可拓展到任意噪聲干擾或是針對特定任務(wù)進行設(shè)計,如作者對輸入數(shù)據(jù)進行刪除、替換等token級噪聲時,發(fā)現(xiàn)使用詞匯級別噪聲的引入訓練的模型更魯棒。

          第二項工作為 Robust Neural Machine Translation with Doubly Adversarial Inputs (ACL 2019)

          這項工作不同于上文的模型無關(guān),而是將NMT看成“白盒”,從而基于梯度生成對抗輸入,文章的核心思想就是下面這條式子,其中x',x分別代表有無噪聲的數(shù)據(jù),R(·)為相似性度量,后面的是負對數(shù)Loss,通俗來講就是找到噪聲不是太大的x'(保證x'與x語義相近),使得模型的Loss最大,這樣才能最有效地加強模型魯棒性。

          82b163fcabfb48a8830e2cd3b680b596.webp

          具體做法分為兩部分,分別是Encoder攻擊和Decoder防御。在Encoder端,x為Encoder的輸入,模型會算出某個詞表征xi的梯度gxi,然后在詞表中找出使Loss最大的x替換原有的詞xi,做法是在詞典中計算表征“e(x)-e(xi)”與gxi的相似度,使相似度最大的xi'為所得。同時,噪聲xi'不應(yīng)與原始xi差太遠,作者使用了Masked LM提取候選詞,在原句中,會將需要替換的詞先mask,然后選擇預(yù)測的topk作為候選項,至于哪些詞會被mask或替換則為隨機均勻采樣。

          4c370396d1e5c7e5116ff0dbf7db1338.webp

          在Decoder端,z為Decoder的輸入,與Encoder中的噪聲xi'類似,以同樣的方法得到zi',但針對zi的采樣與xi有關(guān),即xi隨機采樣,zi需要大概率在xi替換的同樣位置進行替換。因此,回望整個訓練方式,Encoder的作用是找到使梯度最大的xi'擾亂模型,Decoder的作用是即使輸入為zi',仍能輸入正確的結(jié)果,具有一定魯棒性。

          我覺得本文有兩點值得思考,首先是基于梯度最大來找噪聲詞,能夠更有力的對模型魯棒能力發(fā)起攻擊,其實這個可以更進一步,Encoder輸入中需要被替換的詞并非隨機采樣,而是找使Loss最大的詞,相關(guān)文章改進CE Loss為Focal Loss也就是這個思想,我們可以直覺判斷,模型建模較好的是高頻詞,建模不好的是低頻詞,低頻詞的Loss比較大,我們在大Loss的基礎(chǔ)上再找大梯度,這樣攻擊效果更強力,同時可以提高模型對低頻詞的魯棒性。第二點是作者對xi的替換處理,還要回詞典中尋找進行詞替換,這樣未免更加麻煩了,為什么不在一定范圍內(nèi),直接找梯度最大的向量進行替換了呢?如果 怕語義信息不相似,縮小相似度量范圍就好了,這樣更方便。

          第三項工作為 AdvAug: Robust Adversarial Augmentation for Neural Machine Translation (ACL 2020)

          這項工作是在第二項的基礎(chǔ)上進行了數(shù)據(jù)增強的改進,采用的方法為線性插值,首先針對原始數(shù)據(jù)(x, y),作者用第二項工作的方法造出一堆噪聲數(shù)據(jù),然后對噪聲數(shù)據(jù)進行線性插值生成更多的偽數(shù)據(jù),令人比較奇怪的是,作者對不同的parallel data pair同樣進行了線性插值,可能兩句話雖不同含義,但是插值后在向量空間,源句和目標句也能表達類似語義?

          3483ef0bac3a82154457bc6e4b8d9cb5.webp


          819daa2713455a1c59ffb6c7b4dec2da.webp



          瀏覽 131
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产高清无码在线 | 国产91久久久 | 大香蕉伊人在线手机版 | 九九热在线精品视频 | 国产精品婷婷久久久 |