
我們都知道并且喜歡使用Google翻譯,這個(gè)網(wǎng)站可以瞬時(shí)翻譯100種不同的人類語(yǔ)言,就好像有魔法一樣。他甚至存在于我們的手機(jī)和智能手表上面
Google翻譯背后的科技被稱為機(jī)器翻譯。它改變了世界,在本來(lái)根本不可能的情況下讓(不同語(yǔ)言的)人們完成了溝通。
但我們都知道,在過(guò)去的15年里,高中學(xué)生已經(jīng)使用Google翻譯...額 ...協(xié)助他們完成他們的西班牙語(yǔ)作業(yè)。這已經(jīng)不是新聞了…?
事實(shí)證明,在過(guò)去兩年,深度學(xué)習(xí)已經(jīng)完全改寫(xiě)了我們的機(jī)器翻譯方法。那些對(duì)語(yǔ)言翻譯一無(wú)所知的深度學(xué)習(xí)研究人員正在利用一個(gè)個(gè)相對(duì)簡(jiǎn)單的機(jī)器學(xué)習(xí)解決方案,來(lái)打敗世界上最好的專家建造的語(yǔ)言翻譯系統(tǒng)。
這一突破背后的技術(shù)被稱為序列到序列學(xué)習(xí)sequence to sequence learning。這是一項(xiàng)非常強(qiáng)大的技術(shù),被用于解決許多種類的問(wèn)題。在我們看到它如何被用于翻譯之后,我們還將學(xué)習(xí)這個(gè)算法是怎樣用來(lái)編寫(xiě)AI聊天機(jī)器人和描述圖片的。
我們開(kāi)始吧!
讓計(jì)算機(jī)翻譯
那么我們?cè)撊绾尉帉?xiě)代碼,才能讓計(jì)算機(jī)翻譯人類的語(yǔ)言呢?
最簡(jiǎn)單的方法,就是把句子中的每個(gè)單詞,都替換成翻譯后的目標(biāo)語(yǔ)言單詞。這里有一個(gè)簡(jiǎn)單的例子,把西班牙語(yǔ)逐字翻譯成英語(yǔ):
我們只是用匹配的英語(yǔ)單詞替換每個(gè)西班牙單詞。
這很容易實(shí)現(xiàn),因?yàn)槟闼枰且槐咀值鋪?lái)查找每個(gè)單詞的翻譯。但結(jié)果并不好,因?yàn)樗雎粤苏Z(yǔ)法和上下文的聯(lián)系。因此,下一件你可能要做的事,就是開(kāi)始添加特定語(yǔ)言規(guī)則以改進(jìn)結(jié)果。例如,你可能將兩個(gè)常用詞翻譯為詞組。你可能互換名詞和形容詞的順序,因?yàn)樗麄冊(cè)谖靼嘌勒Z(yǔ)中以相反的順序出現(xiàn):
這真的有效!如果我們就繼續(xù)添加更多的規(guī)則,直到我們可以應(yīng)對(duì)每一部分語(yǔ)法,我們的程序應(yīng)該就能夠翻譯任何句子了,對(duì)吧?這就是最早的機(jī)器翻譯系統(tǒng)的工作原理。語(yǔ)言學(xué)家提出了許多復(fù)雜的規(guī)則,并逐一編程實(shí)現(xiàn)。一些世界上最聰明的語(yǔ)言學(xué)家在冷戰(zhàn)期間辛勤努力了多年,才創(chuàng)建出了一些更容易理解俄羅斯人交流的翻譯系統(tǒng)。
不幸的是,這種套路只對(duì)簡(jiǎn)單問(wèn)題適用,比如說(shuō)像天氣預(yù)報(bào)這樣結(jié)構(gòu)簡(jiǎn)單的文檔。它對(duì)于真實(shí)世界的文字來(lái)說(shuō)并不可靠。問(wèn)題是,人類語(yǔ)言并不總是遵循固定的規(guī)則。人類語(yǔ)言充滿了各種特殊情況,區(qū)域差異,或者干脆就不按套路出牌(#‵′)凸。我們說(shuō)英語(yǔ)的方式更多地受到幾百年前入侵的人的影響,而不是由坐下來(lái)定義語(yǔ)法規(guī)則的人。
利用統(tǒng)計(jì)數(shù)據(jù)使計(jì)算機(jī)更好地翻譯
在基于規(guī)則的系統(tǒng)失效之后,一些新的翻譯方法被開(kāi)發(fā)出來(lái)了,他們基于概率和統(tǒng)計(jì)的模型而不是語(yǔ)法規(guī)則。建造一個(gè)基于統(tǒng)計(jì)的翻譯系統(tǒng)需要大量的訓(xùn)練數(shù)據(jù),其中完全相同的文本被翻譯成至少兩種語(yǔ)言。這種雙重翻譯的文本稱為平行語(yǔ)料庫(kù)parallel corpora。18世紀(jì)的科學(xué)家以同樣的方式在羅塞塔石碑上面從希臘語(yǔ)中找出埃及象形文字。(譯者注:羅塞塔石碑,高1.14米,寬0.73米,制作于公元前196年,刻有古埃及國(guó)王托勒密五世登基的詔書(shū)。石碑上用希臘文字、古埃及文字和當(dāng)時(shí)的通俗體文字刻了同樣的內(nèi)容,這使得近代的考古學(xué)家得以有機(jī)會(huì)對(duì)照各語(yǔ)言版本的內(nèi)容后,解讀出已經(jīng)失傳千余年的埃及象形文之意義與結(jié)構(gòu),而成為今日研究古埃及歷史的重要里程碑)以同樣的方式,計(jì)算機(jī)可以使用平行語(yǔ)料庫(kù)猜測(cè)如何將文本從一種語(yǔ)言轉(zhuǎn)換為另一種語(yǔ)言。
幸運(yùn)的是,有很多雙重翻譯的文本已經(jīng)存在在世界的各個(gè)角落。例如,歐洲議會(huì)將其訴訟程序翻譯成21種語(yǔ)言。因此,研究人員經(jīng)常使用這些數(shù)據(jù)來(lái)幫助建造翻譯系統(tǒng)。
訓(xùn)練數(shù)據(jù)通常令人興奮!但這只是無(wú)數(shù)條政府文件而已...
用概率的思維思考
統(tǒng)計(jì)翻譯系統(tǒng)的根本不同,在于它們?cè)噲D生成不止一個(gè)精確的翻譯。相反,他們生成成千上萬(wàn)種可能的翻譯,然后他們按照可能最正確的給這些翻譯排名。他們通過(guò)與訓(xùn)練數(shù)據(jù)的相似性來(lái)估計(jì)有多“正確”。以下是它的工作原理:
第1步:將原始句子分成塊
首先,我們將我們的句子分成簡(jiǎn)單的塊,每一塊都可以輕松翻譯:
第2步:找到每一塊的所有可能的翻譯
接下來(lái),我們將翻譯每塊文字,我們將通過(guò)尋找我們數(shù)據(jù)庫(kù)中所有人類翻譯過(guò)的相同詞塊來(lái)完成我們的翻譯。
要著重注意的是,我們不只是在一本簡(jiǎn)簡(jiǎn)單單的翻譯字典中查找這些詞塊。相反,我們看到是真實(shí)的人在真實(shí)的句子中如何翻譯這些相同的詞。這有助于我們捕獲到在不同語(yǔ)境中所有不同的表達(dá)方式:
即使最常見(jiàn)的短語(yǔ)也有很多種可能的翻譯
這些可能的翻譯中的有一些會(huì)比其他翻譯更頻繁地使用。根據(jù)我們訓(xùn)練數(shù)據(jù)中每個(gè)翻譯出現(xiàn)的頻率,我們可以給它設(shè)定一個(gè)分?jǐn)?shù)。例如,有人說(shuō)“Quiero”更多的時(shí)候是指“我想要”而不是“我嘗試”。所以,我們可以使用我們訓(xùn)練數(shù)據(jù)中 “Quiero”被翻譯成“我想要”的頻率,給“我想要”這個(gè)翻譯更多的權(quán)重。
第3步:生成所有可能的句子,找到最有可能的那句
接下來(lái),我們將使用這些詞塊的每種可能翻譯來(lái)組合生成一堆可能的句子。
從第二步中列出的翻譯過(guò)的詞塊中,我們可以通過(guò)不同組合方式生成將近2,500個(gè)不同的句子。下面是一些例子:
I love | to leave | at | the seaside | more tidy.
I mean | to be on | to | the open space | most lovely.
I like | to be |on | per the seaside | more lovely.
I mean | to go | to | the open space | most tidy.
但在真實(shí)世界中,因?yàn)橛胁煌恼Z(yǔ)序和詞塊分解方法,所以實(shí)際上有更多可能的詞塊組合:
I try | to run | at | the prettiest | open space.
I want | to run | per | the more tidy | open space.
I mean | to forget | at | the tidiest | beach.
I try | to go | per | the more tidy | seaside.
現(xiàn)在需要掃描所有這些生成的句子,找到那個(gè)聽(tīng)起來(lái)“最像人話”的句子。
為此,我們將每個(gè)生成的句子與來(lái)自英語(yǔ)書(shū)籍和新聞故事的數(shù)百萬(wàn)個(gè)真實(shí)句子進(jìn)行比較。我們擁有的英語(yǔ)文本越多越好。
我們采用這種可能的翻譯:
I try | to leave | per | the most lovely | open space.
很可能沒(méi)有人用英語(yǔ)寫(xiě)過(guò)這樣的句子,所以它不會(huì)與我們的數(shù)據(jù)庫(kù)任何句子非常相似。我們給這個(gè)可能的翻譯設(shè)定一個(gè)低概率的得分。
但看看下面這個(gè)可能的翻譯:
I want | to go | to | the prettiest | beach.
這個(gè)句子和我們的訓(xùn)練集中的句子很類似,所以它將獲得一個(gè)高概率的得分。
在嘗試過(guò)所有可能的句子之后,我們會(huì)選擇那個(gè),既是最有可能的詞塊翻譯,又與真實(shí)英語(yǔ)句子最相似,的句子。
我們最后的翻譯將是“I want | to go | to | the prettiest | beach.
我想去最漂亮的海灘?!辈诲e(cuò)!
有里程碑意義的統(tǒng)計(jì)機(jī)器翻譯
當(dāng)有足夠多的訓(xùn)練數(shù)據(jù)的時(shí)候,統(tǒng)計(jì)機(jī)器翻譯系統(tǒng)的性能要優(yōu)于基于語(yǔ)言規(guī)則的系統(tǒng)。 Franz Josef Och基于這些想法并做出了改進(jìn),并在21世紀(jì)初使用它們構(gòu)建了Google翻譯。機(jī)器翻譯終于可以被全世界使用。
早期的時(shí)候,基于概率翻譯的“愚蠢”方法居然比語(yǔ)言學(xué)家設(shè)計(jì)規(guī)則系統(tǒng)做的更好,這讓每個(gè)人都感到驚訝。這導(dǎo)致了80年代的時(shí)候,研究人員會(huì)(有點(diǎn)刻薄的)說(shuō):“每當(dāng)我炒了一個(gè)語(yǔ)言學(xué)家魷魚(yú)的時(shí)候,我的翻譯準(zhǔn)確度就會(huì)上升?!?nbsp;Frederick Jelinek
統(tǒng)計(jì)機(jī)器翻譯的局限性
雖然統(tǒng)計(jì)機(jī)器翻譯系統(tǒng)效果還不錯(cuò),但是他們難于構(gòu)建和維護(hù)。每一對(duì)需要翻譯的新語(yǔ)言,都需要專業(yè)人士對(duì)一個(gè)全新的多步驟“翻譯流水線”進(jìn)行調(diào)試和修整。
因?yàn)闃?gòu)建這些不同的流水線需要做太多工作,所以我們必須進(jìn)行權(quán)衡。如果你要用Google翻譯把格魯吉亞語(yǔ)翻譯成泰盧固語(yǔ)(印度東部德拉維拉語(yǔ)言),那么作為一個(gè)中間步驟,它必須先翻譯成英語(yǔ)。因?yàn)椴](méi)有太多格魯吉亞到泰盧固語(yǔ)的翻譯需求,所以在這一對(duì)語(yǔ)言上投入太多并沒(méi)有太大意義。相比于英語(yǔ)翻譯到法語(yǔ),它可能會(huì)使用一個(gè)更低級(jí)的“翻譯流水線”。
如果我們能讓計(jì)算機(jī)為我們做所有令人討厭的開(kāi)發(fā)工作,這不更好么?
讓電腦翻譯的更好——無(wú)需昂貴的專家們
機(jī)器翻譯的核心是一個(gè)黑盒系統(tǒng),它通過(guò)查看訓(xùn)練數(shù)據(jù),自己就可以學(xué)習(xí)如何翻譯。使用統(tǒng)計(jì)機(jī)器翻譯,人們?nèi)匀恍枰⒑驼{(diào)整多步驟的統(tǒng)計(jì)模型。
2014年,KyungHyun Cho的團(tuán)隊(duì)取得了突破。他們發(fā)現(xiàn)了一種應(yīng)用深度學(xué)習(xí)來(lái)構(gòu)建這種黑盒系統(tǒng)的方法。他們的深度學(xué)習(xí)模型采用平行語(yǔ)料庫(kù),并使用它來(lái)學(xué)習(xí)如何在無(wú)任何人為干預(yù)的情況下在這兩種語(yǔ)言之間進(jìn)行翻譯。
兩個(gè)宏偉的方法使這成為可能 - 循 環(huán)神經(jīng)網(wǎng)絡(luò)和編碼。通過(guò)巧妙地結(jié)合這兩個(gè)想法,我們可以建立一個(gè)能夠自學(xué)的翻譯系統(tǒng)。
循環(huán)神經(jīng)網(wǎng)絡(luò)
我們已經(jīng)在第2章討論過(guò)了循環(huán)神經(jīng)網(wǎng)絡(luò),讓我們快速回顧一下。
一個(gè)常規(guī)(非循環(huán))神經(jīng)網(wǎng)絡(luò)是泛型機(jī)器學(xué)習(xí)算法,接收一序列數(shù)字并計(jì)算結(jié)果(基于先前的訓(xùn)練)。神經(jīng)網(wǎng)絡(luò)可以用作一個(gè)黑盒子,來(lái)解決很多問(wèn)題。例如,我們可以基于房子的屬性,使用神經(jīng)網(wǎng)絡(luò)來(lái)計(jì)算房屋的近似價(jià)格:
但是像大多數(shù)機(jī)器學(xué)習(xí)算法一樣,神經(jīng)網(wǎng)絡(luò)是無(wú)狀態(tài)(Stateless)的。你輸入一序列數(shù)字,神經(jīng)網(wǎng)絡(luò)計(jì)算并輸出結(jié)果。如果再次輸入相同的數(shù)字,它總是計(jì)算出相同的結(jié)果。它沒(méi)有進(jìn)行過(guò)的計(jì)算的記憶。換句話說(shuō),2 + 2總是等于4。
一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network或簡(jiǎn)稱RNN)是一個(gè)稍微改進(jìn)過(guò)的神經(jīng)網(wǎng)絡(luò)的版本,區(qū)別是RNN先前的狀態(tài)是可以被當(dāng)做輸入,再次帶入到下一次計(jì)算中去。這意味著之前的計(jì)算結(jié)果會(huì)更改未來(lái)計(jì)算的結(jié)果!
人類痛恨他:一個(gè)黑科技就讓機(jī)器變得更聰明!
我們?yōu)槭裁匆@樣做?無(wú)論我們上次計(jì)算結(jié)果是什么,2 + 2不應(yīng)該總是等于4么?
這個(gè)技巧允許神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)數(shù)據(jù)序列中的規(guī)律。例如,基于句子的前幾個(gè)詞,你可以使用它來(lái)預(yù)測(cè)句子中下一個(gè)最有可能的單詞是什么:
實(shí)現(xiàn)智能手機(jī)輸入法的“自動(dòng)更正”的方法之一…
當(dāng)你想要學(xué)習(xí)數(shù)據(jù)中的規(guī)律時(shí),RNN將會(huì)非常有用。因?yàn)槿祟愓Z(yǔ)言其實(shí)只是一個(gè)大而復(fù)雜的“規(guī)律”,自然語(yǔ)言處理的各個(gè)領(lǐng)域越來(lái)越多地使用RNN。
如果你想了解更多關(guān)于RNN,你可以閱讀第2章,我們使用了RNN來(lái)生成一本海明威寫(xiě)作風(fēng)格的假書(shū),然后使用同一個(gè)RNN生成了超級(jí)馬里奧兄弟的游戲關(guān)卡。
編碼
我們需要回顧的另一個(gè)想法是編碼Encoding。在第4章中作為臉部識(shí)別的一部分,我們談到了編碼。為了解釋編碼,讓我們稍作調(diào)整,了解一下如何用電腦區(qū)分兩個(gè)人。
當(dāng)你試圖用電腦區(qū)分兩張臉時(shí),你從每張臉收集不同的測(cè)量值,并與其他臉部比較這些測(cè)量值。例如,我們可以測(cè)量耳朵的大小或眼間的間距,比較兩個(gè)圖片的測(cè)量值以確定他們是否是同一個(gè)人。
你可能已經(jīng)從觀看熱門(mén)影視劇CSI當(dāng)中對(duì)這個(gè)想法耳熟能詳了。
把面部特征轉(zhuǎn)換為一系列測(cè)量值的想法就是編碼的例子之一。我們獲取到原始數(shù)據(jù)(面部圖片),并將其轉(zhuǎn)換為代表這張臉的一系列測(cè)量值(編碼)。
但是像我們?cè)诘?章中看到的,我們不必提出一個(gè)具體的面部特征列表來(lái)測(cè)量我們自己。相反,我們可以使用神經(jīng)網(wǎng)絡(luò),讓它自動(dòng)從面部生成測(cè)量值。找出哪些測(cè)量值能夠區(qū)分兩個(gè)相似的人,計(jì)算機(jī)在這方面比我們做的更好:
這些是由神經(jīng)網(wǎng)絡(luò)產(chǎn)生的面部特征測(cè)量值,訓(xùn)練后的該神經(jīng)網(wǎng)絡(luò)可以保證不同的數(shù)字代表了不同人的面部。
這是我們的編碼。它讓我們用簡(jiǎn)單的東西(128個(gè)數(shù)字)代表非常復(fù)雜的東西(一張臉的圖片)?,F(xiàn)在比較兩張臉更加容易了,因?yàn)槲覀冎恍枰容^這128個(gè)數(shù)字而不是比較整張臉的圖像。
你猜怎么著?我們可以用句子做同樣的事情!我們可以把任何一個(gè)句子表達(dá)成一系列獨(dú)特的編碼:這一序列數(shù)字代表的是英語(yǔ)句子“有趣的機(jī)器學(xué)習(xí)!”。不同的句子將由不同的數(shù)字集表示。
為了生成這個(gè)編碼,我們將句子輸入到RNN中,一次一個(gè)詞。最后一個(gè)詞處理之后的最終結(jié)果,就將是表示整個(gè)句子的數(shù)值:
因?yàn)镽NN具有記憶功能,能夠記住處理過(guò)得每個(gè)詞,所以它計(jì)算的最終編碼表示句子中的所有詞。
棒極了,所以現(xiàn)在我們有一種方法來(lái)把一個(gè)整個(gè)句子表示成一組獨(dú)特的數(shù)字!我們不知道編碼中的每個(gè)數(shù)字是什么意思,但這并不重要。只要每一句話都能由一組獨(dú)特的數(shù)字標(biāo)識(shí)出來(lái),那么我們就不需要準(zhǔn)確地知道這些數(shù)字是如何生成的。
讓我們開(kāi)始翻譯吧!
好的,所以我們知道怎樣使用RNN去個(gè)一句話編碼并生成一組獨(dú)特的數(shù)字。它有什么用呢?事情從這兒開(kāi)始變得酷炫了!
如果我們使用兩個(gè)RNNs并將它們首尾相連呢?第一個(gè)RNN可以給句子生成編碼。然后,第二RNN遵循相反的邏輯,解碼得到原始句子:
當(dāng)然,編碼然后再解碼并得到原始語(yǔ)句并沒(méi)有太大用處。但是如果(這里是問(wèn)題的關(guān)鍵),我們訓(xùn)練第二個(gè)RNN,使它解碼成西班牙語(yǔ)而不是英語(yǔ),這會(huì)怎樣?我們可以使用平行語(yǔ)料庫(kù)訓(xùn)練數(shù)據(jù)來(lái)訓(xùn)練它:
就像這樣,我們有一個(gè)通用的方法,將一序列英語(yǔ)單詞轉(zhuǎn)換成同樣的西班牙語(yǔ)單詞序列!
這是一個(gè)強(qiáng)有力的想法l這種方法主要受限于你擁有的訓(xùn)練數(shù)據(jù)量和你可以投入的計(jì)算機(jī)生產(chǎn)力。機(jī)器學(xué)習(xí)研究人員僅僅在在兩年前發(fā)明了這個(gè)方法,但它已經(jīng)表現(xiàn)的和統(tǒng)計(jì)機(jī)器翻譯系統(tǒng)一樣好了,而后者花了20年時(shí)間才開(kāi)發(fā)完善。
l這不依賴于任何關(guān)于人類語(yǔ)言規(guī)則的了解。算法自己計(jì)算出這些規(guī)則。這意味著你不需要專業(yè)人士來(lái)調(diào)整“翻譯流水線”的各個(gè)步驟,計(jì)算機(jī)為你把這個(gè)做好了。
l這種方法適用于幾乎任何種類的序列到序列sequence-to-sequence問(wèn)題!而且事實(shí)證明,許多有趣的問(wèn)題都實(shí)際上是 序列到序列的問(wèn)題。繼續(xù)閱讀了解其他你可以做的酷炫的事!
注意,我們忽略了一些處理真實(shí)數(shù)據(jù)會(huì)碰到的問(wèn)題。例如,如何處理不同長(zhǎng)度的輸入和輸出?這還需要一些額外的工作(請(qǐng)參見(jiàn)bucketing和padding)。非常用詞翻譯也是一個(gè)問(wèn)題。
構(gòu)建你自己的序列到序列翻譯系統(tǒng)
如果你想建立自己的語(yǔ)言翻譯系統(tǒng),這兒有一個(gè)包括可以在英語(yǔ)和法語(yǔ)之間翻譯的TensorFlow的demo。然而,這并不是給膽小鬼或預(yù)算有限的人準(zhǔn)備的。這仍然是一項(xiàng)新技術(shù),并且資源有限。即使你有一臺(tái)帶有高級(jí)顯卡的高級(jí)電腦,可能也需要連續(xù)一個(gè)月的時(shí)間來(lái)訓(xùn)練你自己的語(yǔ)言翻譯系統(tǒng)。
此外,序列到序列語(yǔ)言翻譯技術(shù)正在及快速地改進(jìn),以至于難以跟上。許多最近的改進(jìn)(如添加注意機(jī)制attention mechanism或上下文跟蹤tracking context)顯著改善了翻譯結(jié)果,但這些發(fā)展太過(guò)前沿,以至于他們甚至還沒(méi)有維基百科頁(yè)面。如果你想做認(rèn)真的去做任何序列到序列學(xué)習(xí),隨著技術(shù)的發(fā)展,你需要持續(xù)保持更新。
序列到序列模型的無(wú)窮力量
那么,我們還能用序列到序列模型做什么呢?
大約一年前,Google的研究人員表示,你可以使用序列到序列模型來(lái)建造AI機(jī)器人。這個(gè)想法是如此簡(jiǎn)單,并且令人震驚的是,它真的有效。
首先,他們獲取了一些Google員工和Google技術(shù)支持小組之間的聊天記錄。然后他們訓(xùn)練了序列到序列模型,其中輸入的句子就是雇員的問(wèn)題,而技術(shù)支持團(tuán)隊(duì)的回復(fù)是該句子的“翻譯”。
當(dāng)用戶與機(jī)器人進(jìn)行交互時(shí),他們將使用該系統(tǒng)“翻譯”每個(gè)用戶的消息以獲得機(jī)器人的響應(yīng)。
他們最終得到的是一個(gè)半智能機(jī)器人,(有時(shí))可以回答真正的技術(shù)支持問(wèn)題。下面是一部分用戶和機(jī)器人之間的對(duì)話示例:
人:連接被拒絕或類似的東西
機(jī)器:我可以知道你連接的網(wǎng)絡(luò)連接的版本嗎?
人:我不確定我知不知道
機(jī)器:是網(wǎng)絡(luò)連接提示任何用戶證書(shū)?
人類:是的
機(jī)器:你現(xiàn)在在家還是在工作?辦公室?
人:我在家
機(jī)器:試試這個(gè)。 goto <URL redacted>頁(yè)面,然后輸入您的姓名和密碼
人類:完成
機(jī)器:嘗試使用<NAME redacted>登錄,然后檢查其是否正常工作
人類:是的,現(xiàn)在它在工作!
機(jī)器:棒極了。還有什么我可以幫助你的?
他們還試圖建立一個(gè)基于數(shù)百萬(wàn)部電影字幕的聊天機(jī)器人。他們的想法是,使用電影角色之間的對(duì)話作為一種訓(xùn)練機(jī)器人像人一樣說(shuō)話的方式。輸入句子是一名角色的一句話,“翻譯”是另一名角色在對(duì)話里回應(yīng)他的內(nèi)容:
他們得到了很有意思的結(jié)果。機(jī)器人不僅僅像一個(gè)人,更是顯示出了一點(diǎn)點(diǎn)智能化:
人類:我的名字是david。我的名字是什么?
機(jī)器:david。
人:我的名字是約翰。我的名字是什么?
機(jī)器:約翰。
人類:你是領(lǐng)導(dǎo)還是追隨者?
機(jī)器:我是領(lǐng)導(dǎo)者。
人類:你是追隨者還是領(lǐng)導(dǎo)者?
機(jī)器:我是領(lǐng)導(dǎo)者。
這只是可能性的開(kāi)始。我們將不局限于將一個(gè)句子轉(zhuǎn)換成另一個(gè)句子,同樣,我們制作一個(gè)圖像到序列的模型,它可以將圖像轉(zhuǎn)換為文本!
Google的另一個(gè)團(tuán)隊(duì)通過(guò)將第一個(gè)RNN替換為卷積神經(jīng)網(wǎng)絡(luò)(如我們?cè)诘?章中所了解的那樣)。這允許輸入是圖片而不是句子,其余的工作基本相同:
就像這樣,(只要我們有很多很多的訓(xùn)練數(shù)據(jù))我們就可以把圖片變成單詞!
Andrej Karpathy把這個(gè)想法進(jìn)行了拓展,以構(gòu)建一個(gè)通過(guò)分別處理圖像的多個(gè)區(qū)域,來(lái)詳細(xì)描述圖像的系統(tǒng):
Andrej Karpathy論文中的圖片
這個(gè)想法使得我們可以構(gòu)建一個(gè),能夠按照奇怪的要求找到特定圖片的圖片搜索引擎,甚至有研究人員正在研究相反的問(wèn)題,僅僅基于文本描述產(chǎn)生一個(gè)完整的圖片!
從這些例子,你可以開(kāi)始想象的各種可能性。 到目前為止,序列到序列應(yīng)用在從語(yǔ)音識(shí)別到計(jì)算機(jī)視覺(jué)各個(gè)領(lǐng)域。 我猜,明年會(huì)有更多的應(yīng)用。