3.7 注意力模型直觀理解-深度學習第五課《序列模型》-Stanford吳恩達教授

注意力模型直觀理解 (Attention Model Intuition)

在本週大部分時間中,你都在使用這個編碼解碼的構架(a Encoder-Decoder architecture)來完成機器翻譯。當你使用RNN讀一個句子,於是另一個會輸出一個句子。我們要對其做一些改變,稱爲注意力模型(the Attention Model),並且這會使它工作得更好。注意力模型或者說注意力這種思想(The attention algorithm, the attention idea)已經是深度學習中最重要的思想之一,我們看看它是怎麼運作的。

在這裏插入圖片描述

像這樣給定一個很長的法語句子,在你的神經網絡中,這個綠色的編碼器要做的就是讀整個句子,然後記憶整個句子,再在感知機中傳遞(to read in the whole sentence and then memorize the whole sentences and store it in the activations conveyed her)。而對於這個紫色的神經網絡,即解碼網絡(the decoder network)將生成英文翻譯,Jane去年九月去了非洲,非常享受非洲文化,遇到了很多奇妙的人,她回來就嚷嚷道,她經歷了一個多棒的旅行,並邀請我也一起去。人工翻譯並不會通過讀整個法語句子,再記憶裏面的東西,然後從零開始,機械式地翻譯成一個英語句子。而人工翻譯,首先會做的可能是先翻譯出句子的部分,再看下一部分,並翻譯這一部分。看一部分,翻譯一部分,一直這樣下去。你會通過句子,一點一點地翻譯,因爲記憶整個的像這樣的的句子是非常困難的。你在下面這個編碼解碼結構中,會看到它對於短句子效果非常好,於是它會有一個相對高的Bleu分(Bleu score),但是對於長句子而言,比如說大於30或者40詞的句子,它的表現就會變差。Bleu評分看起來就會像是這樣,隨着單詞數量變化,短的句子會難以翻譯,因爲很難得到所有詞。對於長的句子,效果也不好,因爲在神經網絡中,記憶非常長句子是非常困難的。在這個和下個視頻中,你會見識到注意力模型,它翻譯得很像人類,一次翻譯句子的一部分。而且有了注意力模型,機器翻譯系統的表現會像這個一樣,因爲翻譯只會翻譯句子的一部分,你不會看到這個有一個巨大的下傾(huge dip),這個下傾實際上衡量了神經網絡記憶一個長句子的能力,這是我們不希望神經網絡去做的事情。在這個視頻中,我想要給你們注意力機制運行的一些直觀的東西。然後在下個視頻中,完善細節。

在這裏插入圖片描述

注意力模型源於Dimitri, Bahdanau, Camcrun Cho, Yoshe Bengio。(Bahdanau D, Cho K, Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate[J]. Computer Science,2014.)雖然這個模型源於機器翻譯,但它也推廣到了其他應用領域。我認爲在深度學習領域,這個是個非常有影響力的,非常具有開創性的論文。

讓我們用一個短句舉例說明一下,即使這些思想可能是應用於更長的句子。但是用短句來舉例說明,講解這些思想會更簡單。我們有一個很平常的句子:(法語)Jane visite l’Afrique en Septembre。假定我們使用RNN,在這個情況中,我們將使用一個雙向的RNNa bidirectional RNN),爲了計算每個輸入單詞的的特徵集(set of features),你必須要理解輸出 y^<1>\hat{y}^{<1>}y^<3>\hat{y}^{<3>} 一直到 y^<5>\hat{y}^{<5>} 的雙向RNN。但是我們並不是只翻譯一個單詞,讓我們先去掉上面的 YY ,就用雙向的RNN。我們要對單詞做的就是,對於句子裏的每五個單詞,計算一個句子中單詞的特徵集,也有可能是周圍的詞,讓我們試試,生成英文翻譯。我們將使用另一個RNN生成英文翻譯,這是我平時用的RNN記號。我不用 AA 來表示感知機(the activation),這是爲了避免和這裏的感知機(the activations)混淆。我會用另一個不同的記號,我會用 SS 來表示RNN的隱藏狀態(the hidden state in this RNN),不用 A<1>A^{<1>} ,而是用 S<1>S^{<1>} 。我們希望在這個模型裏第一個生成的單詞將會是Jane,爲了生成Jane visits Africa in September。於是等式就是,當你嘗試生成第一個詞,即輸出,那麼我們應該看輸入的法語句子的哪個部分?似乎你應該先看第一個單詞,或者它附近的詞。但是你別看太遠了,比如說看到句尾去了。所以注意力模型就會計算注意力權重(a set of attention weights),我們將用 a<1,1>a^{<1,1>} 來表示當你生成第一個詞時你應該放多少注意力在這個第一塊信息處。然後我們算第二個,這個叫注意力權重, a<1,2>a^{<1,2>} 它告訴我們當你嘗試去計算第一個詞Jane時,我們應該花多少注意力在輸入的第二個詞上面。同理這裏是 a<1,3>a^{<1,3>} ,接下去也同理。這些將會告訴我們,我們應該花多少注意力在記號爲 CC 的內容上。這就是RNN的一個單元,如何嘗試生成第一個詞的,這是RNN的其中一步,我們將會在下個視頻中講解細節。對於RNN的第二步,我們將有一個新的隱藏狀態 S<2>S^{<2>} ,我們也會用一個新的注意力權值集(a new set of the attention weights),我們將用 a<2,1>a^{<2,1>} 來告訴我們什麼時候生成第二個詞, 那麼visits就會是第二個標籤了(the ground trip label)。我們應該花多少注意力在輸入的第一個法語詞上。然後同理 a<2,2>a^{<2,2>},接下去也同理,我們應該花多少注意力在visite詞上,我們應該花多少注意在詞l’Afique上面。當然我們第一個生成的詞Jane也會輸入到這裏,於是我們就有了需要花注意力的上下文。第二步,這也是個輸入,然後會一起生成第二個詞,這會讓我們來到第三步 S<3>S^{<3>} ,這是輸入,我們再有上下文C,它取決於在不同的時間集(time sets),上面的 a<3>a^{<3>} 。這個告訴了我們我們要花注意力在不同的法語的輸入詞上面。 然後同理。有些事情我還沒說清楚,但是在下個視頻中,我會講解一些細節,比如如何準確定義上下文,還有第三個詞的上下文,是否真的需要去注意句子中的周圍的詞。這裏要用到的公式以及如何計算這些注意力權重(these attention weights),將會在下個視頻中講解到。在下個視頻中你會看到 a<3,t>a^{<3,t>} ,即當你嘗試去生成第三個詞,應該是l’Afique,就得到了右邊這個輸出,這個RNN步驟應該要花注意力在 tt 時的法語詞上,這取決於在 tt 時的雙向RNN的激活值。那麼它應該是取決於第四個激活值,它會取決於上一步的狀態,它會取決於 S<2>S^{<2>} 。然後這些一起影響你應該花多少注意在輸入的法語句子的某個詞上面。我們會在下個視頻中講解這些細節。但是直觀來想就是RNN向前進一次生成一個詞,在每一步直到最終生成可能是<EOS>。這些是注意力權重,即 a<t,t>a^{<t,t>} 告訴你,當你嘗試生成第 tt 個英文詞,它應該花多少注意力在第 tt 個法語詞上面。當生成一個特定的英文詞時,這允許它在每個時間步去看周圍詞距內的法語詞要花多少注意力。

我希望這個視頻傳遞了關於注意力模型的一些直觀的東西。我們現在可能對算法的運行有了大概的感覺,讓我們進入到下個視頻中,看看具體的細節。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章