3.2 选择最可能的句子-深度学习第五课《序列模型》-Stanford吴恩达教授
選擇最可能的句子 (Picking the most likely sentence)
在seq2seq機(jī)器翻譯模型和我們?cè)诘谝恢苷n程所用的語(yǔ)言模型之間有很多相似的地方,但是它們之間也有許多重要的區(qū)別,讓我們來(lái)一探究竟。
你可以把機(jī)器翻譯想成是建立一個(gè)條件語(yǔ)言模型,在語(yǔ)言模型中上方是一個(gè)我們?cè)诘谝恢芩⒌哪P?#xff0c;這個(gè)模型可以讓你能夠估計(jì)句子的可能性,這就是語(yǔ)言模型所做的事情。你也可以將它用于生成一個(gè)新的句子,如果你在圖上的該處(下圖編號(hào)1所示),有 x<1>x^{<1>}x<1> 和 x<2>x^{<2>}x<2> ,那么在該例中 x<2>=y<1>x^{<2>}=y^{<1>}x<2>=y<1> ,但是 x<1>x^{<1>}x<1> 、 x<2>x^{<2>}x<2> 等在這里并不重要。為了讓圖片看起來(lái)更簡(jiǎn)潔,我把它們先抹去,可以理解為 x<1>x^{<1>}x<1> 是一個(gè)全為0的向量,然后 x<2>x^{<2>}x<2> 、 x<3>x^{<3>}x<3> 等都等于之前所生成的輸出,這就是所說(shuō)的語(yǔ)言模型。
而機(jī)器翻譯模型是下面這樣的,我這里用兩種不同的顏色來(lái)表示,即綠色和紫色,用綠色(上圖編號(hào)2所示)表示encoder網(wǎng)絡(luò),用紫色(上圖編號(hào)3所示)表示decoder網(wǎng)絡(luò)。你會(huì)發(fā)現(xiàn)decoder網(wǎng)絡(luò)看起來(lái)和剛才所畫(huà)的語(yǔ)言模型幾乎一模一樣,機(jī)器翻譯模型其實(shí)和語(yǔ)言模型非常相似,不同在于語(yǔ)言模型總是以零向量(上圖編號(hào)4所示)開(kāi)始,而encoder網(wǎng)絡(luò)會(huì)計(jì)算出一系列向量(上圖編號(hào)2所示)來(lái)表示輸入的句子。有了這個(gè)輸入句子,decoder網(wǎng)絡(luò)就可以以這個(gè)句子開(kāi)始,而不是以零向量開(kāi)始,所以我把它叫做條件語(yǔ)言模型(conditional language model)。相比語(yǔ)言模型,輸出任意句子的概率,翻譯模型會(huì)輸出句子的英文翻譯(上圖編號(hào)5所示),這取決于輸入的法語(yǔ)句子(上圖編號(hào)6所示)。換句話(huà)說(shuō),你將估計(jì)一個(gè)英文翻譯的概率,比如估計(jì)這句英語(yǔ)翻譯的概率,“Jane is visiting Africa in September.”,這句翻譯是取決于法語(yǔ)句子,“Jane visite I’Afrique en septembre.”,這就是英語(yǔ)句子相對(duì)于輸入的法語(yǔ)句子的可能性,所以它是一個(gè)條件語(yǔ)言模型。
現(xiàn)在,假如你想真正地通過(guò)模型將法語(yǔ)翻譯成英文,通過(guò)輸入的法語(yǔ)句子模型將會(huì)告訴你各種英文翻譯所對(duì)應(yīng)的可能性。 xxx 在這里是法語(yǔ)句子"Jane visite l’Afrique en septembre.",而它將告訴你不同的英語(yǔ)翻譯所對(duì)應(yīng)的概率。顯然你不想讓它隨機(jī)地進(jìn)行輸出,如果你從這個(gè)分布中進(jìn)行取樣得到 P(y∣x)P(y|x)P(y∣x) ,可能取樣一次就能得到很好的翻譯,“Jane is visiting Africa in September.”。但是你可能也會(huì)得到一個(gè)截然不同的翻譯,“Jane is going to be visiting Africa in September.”,這句話(huà)聽(tīng)起來(lái)有些笨拙,但它不是一個(gè)糟糕的翻譯,只是不是最好的而已。有時(shí)你也會(huì)偶然地得到這樣的翻譯,“In September, Jane will visit Africa.”,或者有時(shí)候你還會(huì)得到一個(gè)很糟糕的翻譯,“Her African friend welcomed Jane in September.”。所以當(dāng)你使用這個(gè)模型來(lái)進(jìn)行機(jī)器翻譯時(shí),你并不是從得到的分布中進(jìn)行隨機(jī)取樣,而是你要找到一個(gè)英語(yǔ)句子 yyy (上圖編號(hào)1所示),使得條件概率最大化。所以在開(kāi)發(fā)機(jī)器翻譯系統(tǒng)時(shí),你需要做的一件事就是想出一個(gè)算法,用來(lái)找出合適的 yyy 值,使得該項(xiàng)最大化,而解決這種問(wèn)題最通用的算法就是束搜索(Beam Search),你將會(huì)在下節(jié)課見(jiàn)到它。
不過(guò)在了解束搜索之前,你可能會(huì)問(wèn)一個(gè)問(wèn)題,為什么不用貪心搜索(Greedy Search)呢?貪心搜索是一種來(lái)自計(jì)算機(jī)科學(xué)的算法,生成第一個(gè)詞的分布以后,它將會(huì)根據(jù)你的條件語(yǔ)言模型挑選出最有可能的第一個(gè)詞進(jìn)入你的機(jī)器翻譯模型中,在挑選出第一個(gè)詞之后它將會(huì)繼續(xù)挑選出最有可能的第二個(gè)詞,然后繼續(xù)挑選第三個(gè)最有可能的詞,這種算法就叫做貪心搜索,但是你真正需要的是一次性挑選出整個(gè)單詞序列,從 y<1>y^{<1>}y<1> 、 y<2>y^{<2>}y<2> 到 y<Ty>y^{<T_y>}y<Ty?> 來(lái)使得整體的概率最大化。所以這種貪心算法先挑出最好的第一個(gè)詞,在這之后再挑最好的第二詞,然后再挑第三個(gè),這種方法其實(shí)并不管用,為了證明這個(gè)觀點(diǎn),我們來(lái)考慮下面兩種翻譯。
第一串(上圖編號(hào)1所示)翻譯明顯比第二個(gè)(上圖編號(hào)2所示)好,所以我們希望機(jī)器翻譯模型會(huì)說(shuō)第一個(gè)句子的 P(y∣x)P(y|x)P(y∣x) 比第二個(gè)句子要高,第一個(gè)句子對(duì)于法語(yǔ)原文來(lái)說(shuō)更好更簡(jiǎn)潔,雖然第二個(gè)也不錯(cuò),但是有些啰嗦,里面有很多不重要的詞。但如果貪心算法挑選出了"Jane is"作為前兩個(gè)詞,因?yàn)樵谟⒄Z(yǔ)中g(shù)oing更加常見(jiàn),于是對(duì)于法語(yǔ)句子來(lái)說(shuō)"Jane is going"相比"Jane is visiting"會(huì)有更高的概率作為法語(yǔ)的翻譯,所以很有可能如果你僅僅根據(jù)前兩個(gè)詞來(lái)估計(jì)第三個(gè)詞的可能性,得到的就是going,最終你會(huì)得到一個(gè)欠佳的句子,在 P(y∣x)P(y|x)P(y∣x) 模型中這不是一個(gè)最好的選擇。
我知道這種說(shuō)法可能比較粗略,但是它確實(shí)是一種廣泛的現(xiàn)象,當(dāng)你想得到單詞序列 y<1>y^{<1>}y<1> 、 y<2>y^{<2>}y<2> 一直到最后一個(gè)詞總體的概率時(shí),一次僅僅挑選一個(gè)詞并不是最佳的選擇。當(dāng)然,在英語(yǔ)中各種詞匯的組合數(shù)量還有很多很多,如果你的字典中有10,000個(gè)單詞,并且你的翻譯可能有10個(gè)詞那么長(zhǎng),那么可能的組合就有10,000的10次方這么多,這僅僅是10個(gè)單詞的句子,從這樣大一個(gè)字典中來(lái)挑選單詞,所以可能的句子數(shù)量非常巨大,不可能去計(jì)算每一種組合的可能性。所以這時(shí)最常用的辦法就是用一個(gè)近似的搜索算法,這個(gè)近似的搜索算法做的就是它會(huì)盡力地,盡管不一定總會(huì)成功,但它將挑選出句子 yyy 使得條件概率最大化,盡管它不能保證找到的 yyy 值一定可以使概率最大化,但這已經(jīng)足夠了。
最后總結(jié)一下,在本視頻中,你看到了機(jī)器翻譯是如何用來(lái)解決條件語(yǔ)言模型問(wèn)題的,這個(gè)模型和之前的語(yǔ)言模型一個(gè)主要的區(qū)別就是,相比之前的模型隨機(jī)地生成句子,在該模型中你要找到最有可能的英語(yǔ)句子,最可能的英語(yǔ)翻譯,但是可能的句子組合數(shù)量過(guò)于巨大,無(wú)法一一列舉,所以我們需要一種合適的搜索算法,讓我們?cè)谙鹿?jié)課中學(xué)習(xí)集束搜索。
總結(jié)
以上是生活随笔為你收集整理的3.2 选择最可能的句子-深度学习第五课《序列模型》-Stanford吴恩达教授的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 3.1 基础模型-深度学习第五课《序列模
- 下一篇: 3.3 集束搜索-深度学习第五课《序列模