Encoder-Decoder 模型(seq2seq咱枉、集束搜索、貪心搜索)簡記

seq2seq顧名思義就是模型的輸入和輸出均是序列(sequence)徒恋,機(jī)器翻譯模型是seq2seq的一典型例子蚕断。

RNN-Encoder-Decoder模型

1、機(jī)器翻譯模型

機(jī)器翻譯模型

上圖的機(jī)器翻譯模型由左邊的多對一RNN(many to one)和右邊的一對多RNN(one to many)組成入挣,左邊綠色部分是編碼器(encodeer)基括,右邊紫色部分是解碼器(decodeer)?某種語言的句子序列通過編碼器生成一個(gè)向量作為其代表财岔,傳遞給解碼器作為解碼器的輸入向量风皿,輸出另一種語言的句子序列河爹。

根據(jù)語言模型可以發(fā)現(xiàn),機(jī)器翻譯模型的解碼器與語言模型幾乎相同桐款,只是語言模型中的預(yù)輸入向量a^{<0>}\vec{0} 咸这,而機(jī)器翻譯模型的解碼器的輸入a^{<0>}是編碼器輸出的向量,所以機(jī)器翻譯模型又叫條件語言模型(condition language model)魔眨。

語言模型告訴我們的是一個(gè)句子的概率媳维,機(jī)器翻譯解碼器的作用在編碼器傳遞的向量的基礎(chǔ)上,隨機(jī)抽樣得到多種翻譯遏暴,再通過某種算法找出句子概率最大的一個(gè)侄刽,即最合適的翻譯結(jié)果。

每種翻譯結(jié)果的可能性=P(y^{<1>},..., y^{}\vert x)朋凉,其中y^{<i>}是翻譯結(jié)果的第i個(gè)詞州丹,T_y是翻譯結(jié)果總詞數(shù),x是輸入的需要翻譯的句子序列杂彭,x=[x^{<1>},...,x^{}]墓毒。


2.1、集束搜索和貪心搜索比較

在尋找最佳翻譯結(jié)果(概率最大的結(jié)果)時(shí)常用的算法是集束搜索(beam search)亲怠。在討論集束搜索之前所计,先對比另外一種算法,貪心搜索(greedy search)团秽,這種對比也體現(xiàn)了集束搜索的最大優(yōu)點(diǎn)主胧。

簡單的來說,貪心算法是先挑出一個(gè)最可能的詞习勤,在此基礎(chǔ)上再挑出第二個(gè)最有可能的詞讥裤,以此類推,使每個(gè)詞的概率最大化姻报。集束搜索是站在整個(gè)詞序列整體的角度上使其概率最大化。典型的結(jié)果是间螟,通過貪心搜索得到的翻譯結(jié)果可能會(huì)包含一些日常使用中詞頻較高的詞吴旋。

比如較理想的翻譯結(jié)果為“Jane is visiting Africa in September”時(shí),通過貪心搜索得到的結(jié)果可能是“Jane is going to be visiting Africa in September” 厢破,因?yàn)樵谟⒄Z中“is”后加“going to”的頻率要比加“visiting”的頻率高很多荣瑟。致使翻譯結(jié)果中穿插一些高頻詞組,讓翻譯結(jié)果冗長摩泪,不簡潔笆焰,所以不是最佳。

關(guān)于集束搜索得內(nèi)容參見:集束搜索


2.2见坑、集束搜索

法語“Jane visite l’Afrique en septembre”?希望翻譯成英文句子 “Jane is visiting Africa in September”

集束搜索有一個(gè)參數(shù):集束寬(beam width)嚷掠,表示在生成每個(gè)翻譯結(jié)果\hat{y}^{<i>}時(shí)會(huì)考慮集束寬個(gè)候選結(jié)果捏检。本文此后討論時(shí)設(shè)集束寬為3。

在生成每個(gè)結(jié)果\hat{y}^{<i>}時(shí)不皆,通過softmax得到字典中所有詞的概率向量贯城,維度與字典維度相同,從中取概率最高的3個(gè)詞存于內(nèi)存作為候選霹娄。

第一步能犯,生成翻譯結(jié)果的第一個(gè)詞,即完成編碼器與解碼器的連接犬耻。第一個(gè)結(jié)果詞的概率為?P(y^{<1>} \vert x)踩晶,x為輸入的法語句子序列。

第一步示意圖

第二步枕磁,生成后面的結(jié)果序列渡蜻。第二個(gè)詞在確定第一個(gè)詞的基礎(chǔ)上搜索,以此類推透典。假設(shè)經(jīng)過學(xué)習(xí)后y^{<1>} 的候選為“Jane”晴楔、“in”、“september”(此處暫不考慮大小寫)峭咒。在第二步中税弃,第一個(gè)和第二個(gè)單詞的聯(lián)合概率是關(guān)心的重點(diǎn),即P(y^{<1>} ,y^{}\vert x).

P(y^{<1>} 凑队,y^{}\vert x)=P(y^{} \vert x)P(y^{} \vert x,y^{})所以最終可以考慮每個(gè)時(shí)間步輸出概率的乘積则果。

第二步示意圖

由于此處集束寬為3载矿,所以y^{<1>} 的3個(gè)候選詞“Jane”秃励、“in”相寇、“september”要重復(fù)上述操作们镜。

3個(gè)候選詞重復(fù)操作

由于集束寬為3赦颇,假設(shè)字典中詞數(shù)為1w脯倚,那么考慮第一纲酗、二個(gè)詞會(huì)產(chǎn)生3w個(gè)可能的結(jié)果脚猾,并得到所有組合的聯(lián)合概率P(y^{<1>} 霍狰,y^{}\vert x)抡草。因?yàn)榧鴮挒?,從3w個(gè)結(jié)果中挑選出聯(lián)合概率最高的3個(gè)結(jié)果作為候選存于內(nèi)存蔗坯,同時(shí)保存每個(gè)候選的P(y^{<1>} 康震,y^{}\vert x),以便最終計(jì)算整個(gè)句子的概率宾濒。


第三步腿短,以此類推,得到整個(gè)句子的翻譯結(jié)果。



2.3橘忱、集束搜索的改進(jìn)

集束搜索的目的是最大化下式赴魁,即翻譯結(jié)果句子的概率

1、因?yàn)槭接叶说拿總€(gè)概率P值都大于0小于1鹦付,其乘積結(jié)果會(huì)是一個(gè)很小的數(shù)尚粘,造成數(shù)值下溢(numerical underflow)?。了解決這個(gè)問題 敲长,將最大化的乘積式(即輸出結(jié)果序列的聯(lián)合概率)取對數(shù)?郎嫁,由?logM*N=logM+logN?公式得,上述需要最大化的乘積式可以轉(zhuǎn)化為\log的和祈噪。

2泽铛、還有一個(gè)問題是概率P值大于0小于1,結(jié)果越長句子P越小辑鲤,而我們尋找的是句子概率最大的結(jié)果盔腔,這就會(huì)造成集束搜索偏向更短的翻譯結(jié)果。解決方法是歸一化月褥。因此將原先的公式除以翻譯后句子序列長度弛随,這樣很明顯的減少了對輸出長的結(jié)果的懲罰。(\alpha 指數(shù)小于1宁赤,是為了緩和直接除以T_{y} 帶來的影響)?

3舀透、有時(shí)得到的結(jié)果不理想,我們需要知道是機(jī)器翻譯模型(RNN構(gòu)造)出了問題决左,還是集束搜索算法出了問題愕够。

需要翻譯法語句子:?Jane visite l’Afrique en septembre?,驗(yàn)證集中人工翻譯的正確答案為?Jane visits Africa in September將人工翻譯的結(jié)果標(biāo)記為y^\ast  ,使用訓(xùn)練完成的機(jī)器翻譯模型翻譯結(jié)果為?Jane visited Africa last September?并將其標(biāo)記為\hat{y} 佛猛。

RNN編碼器和解碼器的功能是計(jì)算P(y \vert x),所以可以通過比較?P(y^* \vert x)P(\hat{y} \vert x)的大小就能判斷問題出現(xiàn)的地方惑芭。

P(y^* \vert x)\geq P(\hat{y} \vert x),說明集束搜索算法選擇的\hat{y} 并不能使P(y \vert x)最大,不是最佳\hat{y} 继找,所以是算法問題遂跟。

P(y^* \vert x)\leq  P(\hat{y} \vert x),首先假設(shè)驗(yàn)證集的y^\ast  是更好的結(jié)果婴渡,然而根據(jù)左式得到的是\hat{y} 比?y^\ast  更好幻锁,這說明機(jī)器翻譯模型的RNN構(gòu)造出現(xiàn)問題,不能對結(jié)果的P(y \vert x)做出有效判斷缩搅,它應(yīng)該判斷更好的翻譯結(jié)果有更高的P(y \vert x)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末触幼,一起剝皮案震驚了整個(gè)濱河市硼瓣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖堂鲤,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亿傅,死亡現(xiàn)場離奇詭異,居然都是意外死亡瘟栖,警方通過查閱死者的電腦和手機(jī)葵擎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來半哟,“玉大人酬滤,你說我怎么就攤上這事≡⒄牵” “怎么了盯串?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長戒良。 經(jīng)常有香客問我体捏,道長,這世上最難降的妖魔是什么糯崎? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任几缭,我火速辦了婚禮,結(jié)果婚禮上沃呢,老公的妹妹穿的比我還像新娘年栓。我一直安慰自己,他們只是感情好樟插,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布韵洋。 她就那樣靜靜地躺著,像睡著了一般黄锤。 火紅的嫁衣襯著肌膚如雪搪缨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天鸵熟,我揣著相機(jī)與錄音副编,去河邊找鬼。 笑死流强,一個(gè)胖子當(dāng)著我的面吹牛痹届,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播打月,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼队腐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奏篙?” 一聲冷哼從身側(cè)響起柴淘,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤迫淹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后为严,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敛熬,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年第股,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了应民。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夕吻,死狀恐怖诲锹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梭冠,我是刑警寧澤辕狰,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站控漠,受9級特大地震影響蔓倍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盐捷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一偶翅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碉渡,春花似錦聚谁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至习霹,卻和暖如春朵耕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淋叶。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工阎曹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人煞檩。 一個(gè)月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓处嫌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親斟湃。 傳聞我的和親對象是個(gè)殘疾皇子熏迹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容