NLP訓練營 第六周

2021-09-03 01:27:36 字數 2659 閱讀 6658

機器翻譯、序列到序列、注意力模型:machine translation, seq2seq and attention

gru和nmt的高階

作業:assignment 3.1

用神經網路做機器翻譯叫做nmt(neural machine translation)。課程前半部分講了機器翻譯的發展史。

一開始的做法是encoder的最後一層,作為decoder第一層的輸入。所有的資訊都存在了encoder的最後一層中,往後傳著傳著會丟失,咋辦?要麼用lstm,要麼把encoder的最後一層的隱狀態,輸入給每乙個decoder中。這個在上節課其實也講過。

為優化同乙個損失函式調整所有引數

distributed representation

更好地利用詞語、短語之間的相似性

better exploitation of context

利用更多上下文——原文和部分譯文的上下文

生成的文字更流暢

可能跟上述優勢有關

nmt還避免了傳統mt中的黑盒子(reorder之類)模型。nmt也存在弱點

最初的思想是待翻譯的句子的所有資訊都只有encoder最後一刻的隱狀態來向後傳遞,這導致在稍微長一些的句子上,效果就驟降。想到乙個隱狀態可能存不下待翻譯的長句子中的所有資訊,那麼就拿多個隱狀態輸入給後面的decoder不就好了?我們將這個隱狀態稱為c1, c2, ...

這個隱狀態c又是怎麼來的?

舉個例子:把「我愛中國」翻譯成「i love china」。很明顯,「我」->「i」;「愛」->「love」;「中國」->「china」。當decoder要輸出「i」的時候,注意力應該集中在「我」這個單詞上,那麼令

c1 = 權重α1 * 隱狀態h

剩下的問題就是權重α是怎麼來的。

實際上αt是利用decoder的t-1的隱狀態h't-1和encoder的隱狀態h,通過學習模型得到的。設乙個打分函式叫score()。對於在decoder裡的單元,應該關注哪些時刻的encoder狀態呢?關注的強度是多少呢?可以先打個分:score(h't-1, h)。再把decoder裡的每個單元得分拿出來softmax一下,就得到了概率,也就是應該關注的對應的encoder單元的強度。

score函式可以有這幾種選擇,中間那個比較好,因為wa給了兩個向量更複雜的interinteraction

以上圖為例,

當α1=(1,0,0,0)或者以乙個概率形式(0.97, 0.01, 0.01, 0.01)出現的時候,就能滿足把「i」的翻譯集中在「我」這個詞的隱狀態h1上。

計算權重的方法不同,分為 hard attention, soft attention, global attention,local attention等等。

在模型給定原文s1的情況下計算譯文s2的概率p(s2|s1)之後,就會到了傳統問題上,找出最可能的譯文s2*。不可能生成所有的翻譯並逐個打分。目前有三種思路:

根據之前的詞語依概率生成當前詞語

這有個問題是會產生高方差的差效果,且同乙個句子每次翻譯的結果不一樣。

貪婪搜尋,直接選當前最可能的單詞

缺點:這並不是全域性最優,前面錯後面就會受影響

束搜尋記錄每個時刻,k個最可能的選項,從這k個詞,接上詞表裡的所有詞,就是下一時刻可能出現的情況,從中再選出k個概率最大的出來。

不用說,束搜尋是最好的。

學生提問為啥gru不會有梯度消失

f就是隱狀態h,注意gru中這裡的加號,如果更新門ut是0的話,那麼新狀態ht就和前乙個狀態ht-1是乙個線性的關係,反向求導的時候梯度一定是存在的。

bleu (bilingual evaluation understudy) ,中文名稱為雙語互譯質量輔助工具。是用來衡量機器翻譯文字與參考文字之間的相似程度的指標,取值範圍在0-1, 取值越靠近1表示機器翻譯結果越好。

n-gram。n看做乙個視窗大小,這個視窗從句子最左依次滑到句子最右

懲罰因子bp。針對翻譯譯文長度比參考譯文要短的情況,需要加上懲罰因子懲罰。

有了上面兩條知識,可以用下面的公式算出bleu

其中pn是n-gram的精度。pn = (n-gram在翻譯譯文和參考譯文中出現的最小次數 / n-gram在翻譯譯文中出現次數)

wn是權重,自己定

也可以取個對數:log(bleu),更好算。

大詞表問題指的是softmax的計算難度,可以參照下面這篇部落格:

第六周訓練總結

前四天看了一下國慶 的題目,只出了e題。這個題目要求求區間最值,區間最值其實和區間求和差不多,就是將sum陣列的含義轉移到 max,然後通過特定的區間更新 max。在區間求和中,當我們維護max i 的時候,要找到它前面所有的 max j 來更新,畫圖可知,max i 需要的max 只有max i ...

第六周訓練總結(4 5)

這周刷題主要是以線性dp為主,按照慣例,先陳述一下這週的感受。接觸dp有一段時間了,很難的乙個專題,能看題解看明白,但自己怎麼著都想不過來。應該是從上週日開始,連續兩天碰到了許多求最大欄位和的問題,也從中學到了許多,下面會主要介紹一下介紹一下。不過這周雖然主要進行的dp的刷題,但搜尋卻出現的頻率挺高...

05 NLP訓練營 詞向量

分布式表示法不依賴於詞典,向量裡面都是非零的資料,解決了one hot向量表示的稀疏性和向量長度過大的問題。one hot向量維度要和詞典一樣,而分布式表示法維度通常小於300。先來看看上面的分布式表示法再來計算相似度。歐式距離 因此可以得到結論是 sim 運動,爬山 sim 我們,爬山 這個是符合...