0
本文作者: 楊曉凡 | 2018-08-17 12:00 |
雷鋒網(wǎng) AI 科技評(píng)論按:NLP 任務(wù)中具有標(biāo)桿意義的 Transformer 模型喜提新升級(jí),不僅翻譯表現(xiàn)進(jìn)一步提升,更成為了圖靈完備的通用計(jì)算模型。
在過(guò)去的兩三年中,注意力機(jī)制(Attention Mechanism)逐漸進(jìn)入深度學(xué)習(xí)研究人員們的視野中,并開(kāi)始變得熱門(mén)。去年 6 月,谷歌大腦在論文《Attention Is All You Need》中提出了一個(gè)完全基于注意力機(jī)制的編解碼器模型 Transformer ,它完全拋棄了之前其它模型引入注意力機(jī)制后仍然保留的循環(huán)與卷積結(jié)構(gòu),然后在任務(wù)表現(xiàn)、并行能力和易于訓(xùn)練性方面都有大幅的提高。Transformer 從此也成為了機(jī)器翻譯和其它許多文本理解任務(wù)中的重要基準(zhǔn)模型。一年多之后的今天,谷歌大腦團(tuán)隊(duì)在新的論文 arxiv.org/abs/1807.03819 中提出了 Transformer 的升級(jí)模型「Universal Transformer」,并在博客撰文對(duì)其作了介紹。雷鋒網(wǎng) AI 科技評(píng)論把博文內(nèi)容編譯如下。
在 Transformer 出現(xiàn)之前,基于神經(jīng)網(wǎng)絡(luò)的機(jī)器翻譯模型多數(shù)都采用了 RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))的模型架構(gòu),它們依靠循環(huán)功能(每一步的輸出都要作為下一步的輸入)進(jìn)行有序的序列操作(句子中的單詞按照順序一個(gè)接一個(gè)地被翻譯)。雖然 RNN 架構(gòu)有較強(qiáng)的序列建模能力,但它們有序操作的天然屬性也意味著它們訓(xùn)練起來(lái)很慢、越長(zhǎng)的句子就需要越多的計(jì)算步驟,而且循環(huán)的架構(gòu)也給它們留下了流傳千里的「很難訓(xùn)練好的」壞名聲。
與這些基于 RNN 的方法形成鮮明對(duì)比的是,Transformer 模型中沒(méi)有任何循環(huán)結(jié)構(gòu)。它的設(shè)計(jì)是把序列中的所有單詞或者符號(hào)并行處理,同時(shí)借助自注意力機(jī)制可以從距離較遠(yuǎn)的詞中提取含義。由于 Transformer 并行處理所有的詞,以及每個(gè)單詞都可以在多個(gè)處理步驟內(nèi)與其他單詞之間產(chǎn)生聯(lián)系,它的訓(xùn)練速度也要比 RNN 模型快多了。尤其值得一提的是,它在翻譯任務(wù)中的表現(xiàn)要比 RNN 模型好很多。然而,在更小、更結(jié)構(gòu)化的語(yǔ)言理解任務(wù)中,甚至更簡(jiǎn)單的算法任務(wù)中,比如復(fù)制一個(gè)字符串(輸入字符串「abc」,要求輸出「abcabc」), Transformer 的表現(xiàn)就不怎么好。在這些任務(wù)中表現(xiàn)較好的模型,比如 Neural GPU 和 Neural Turing Machine,反倒是在翻譯這樣的大規(guī)模語(yǔ)言理解任務(wù)中表現(xiàn)糟糕。
在新論文「Universal Transformers」中,谷歌大腦的研究人員們對(duì)標(biāo)準(zhǔn)的 Transformer 模型進(jìn)行了拓展,讓它具有通用計(jì)算能力(也就是「圖靈完備」)。他們使用了一種新型的、注重效率的時(shí)間并行循環(huán)結(jié)構(gòu),并在更多任務(wù)中取得了有力的結(jié)果。他們保留了 Transformer 模型原有的并行結(jié)構(gòu),以便保持它的高訓(xùn)練速度,然后把 Transformer 一組幾個(gè)各異的固定的變換函數(shù)替換成了一組由單個(gè)的、時(shí)間并行的循環(huán)變換函數(shù)構(gòu)成的結(jié)構(gòu)(也就是說(shuō),在多個(gè)處理步驟中,同一個(gè)學(xué)到的變換函數(shù)可以并行作用于序列內(nèi)的所有符號(hào),同時(shí)每一步的輸出都成為下一步的輸入)。其中有個(gè)關(guān)鍵點(diǎn)是,相比于 RNN 處理序列的方式是一個(gè)符號(hào)接著一個(gè)符號(hào)從左至右依次處理,Universal Transformer 和 Transformer 一樣地一次同時(shí)處理所有的符號(hào),但 Universal Transformer 接下來(lái)會(huì)根據(jù)自我注意力機(jī)制對(duì)每個(gè)符號(hào)的解釋做數(shù)次并行的循環(huán)處理修飾。Universal Transformer 中時(shí)間并行的循環(huán)機(jī)制不僅比 RNN 中使用的串行循環(huán)速度更快,也讓 Universal Transformer 比標(biāo)準(zhǔn)的前饋 Transformer 更加強(qiáng)大。
在每個(gè)步驟中,每一個(gè)符號(hào)(比如句子中的一個(gè)詞)的信息都可以借助自我注意力機(jī)制與所有其他的符號(hào)進(jìn)行溝通,就和原本的 Transformer 一樣。不過(guò),要對(duì)每個(gè)符號(hào)應(yīng)用幾次這種變換(也就是循環(huán)步驟的數(shù)目)可以預(yù)先手工設(shè)置為某個(gè)值(比如設(shè)置為定制,或者設(shè)置與輸入長(zhǎng)度相關(guān)),也可以由 Universal Transformer 自己在執(zhí)行中動(dòng)態(tài)地選擇。為了能夠達(dá)到后一種效果,谷歌大腦的研究人員們?yōu)槊總€(gè)位置加入了一個(gè)自適應(yīng)計(jì)算機(jī)制,它可以為意義較為模糊的、或者需要更多計(jì)算次數(shù)的符號(hào)分配更多的處理步驟。
要展示這種設(shè)計(jì)為什么很有用,可以看一個(gè)很直觀的例子??紤]翻譯這個(gè)句子「I arrived at the bank after crossing the river」(我穿過(guò)小河以后來(lái)到了河岸邊/銀行)。在這個(gè)例子中,相比于意義較為明確的「I」和「river」,需要較多的語(yǔ)義上下文才能推測(cè)出「bank」在這里到底是指什么。當(dāng)標(biāo)準(zhǔn)的 Transformer 對(duì)這個(gè)句子進(jìn)行編碼的時(shí)候,計(jì)算量不作區(qū)分地等量分給了每一個(gè)詞?,F(xiàn)在在 Universal Transformer 中,它的自適應(yīng)計(jì)算機(jī)制可以讓模型僅在意義較為模糊的詞上進(jìn)行更多的計(jì)算,比如用更多的步驟把辨析「bank」需要的語(yǔ)義上下文信息集合起來(lái),同時(shí)也有可能讓意義比較明確的詞消耗的計(jì)算步驟減少。
僅僅允許 Universal Transformer 模型在輸入上反復(fù)執(zhí)行一種學(xué)到的轉(zhuǎn)換函數(shù),第一眼看上去似乎是個(gè)比較大的限制,尤其是標(biāo)準(zhǔn)的 Transformer 可以學(xué)習(xí)如何應(yīng)用一組各有不同的固定轉(zhuǎn)換函數(shù)。不過(guò)實(shí)際上,學(xué)習(xí)如何重復(fù)應(yīng)用一種轉(zhuǎn)換函數(shù)意味著應(yīng)用的次數(shù)(處理步驟數(shù)目)現(xiàn)在是可變的了,而這就帶來(lái)了巨大的區(qū)別。這不僅讓 Universal Transformer 可以在意義模糊的符號(hào)上花費(fèi)更多的更多計(jì)算,就像上面的例子那樣,它還可以進(jìn)一步地讓模型根據(jù)輸入的總長(zhǎng)度拓展轉(zhuǎn)換函數(shù)的應(yīng)用次數(shù)(更長(zhǎng)的序列可以做更多步驟),或者也可以根據(jù)訓(xùn)練中學(xué)到的一些其他序列性質(zhì)動(dòng)態(tài)決定輸入序列中的任意部分是否需要應(yīng)用轉(zhuǎn)換函數(shù)。理論上來(lái)講,這樣的設(shè)定讓 Universal Transformer 有更強(qiáng)的能力,因?yàn)樗梢?strong>高效地學(xué)習(xí)到為輸入中的不同部分應(yīng)用不同的變換。這就是標(biāo)準(zhǔn)的 Transformer 做不到的了,就是因?yàn)槠渲邪囊唤M固定的變換模塊只可以應(yīng)用一次。
理論上能夠增加模型能力當(dāng)然是好的,實(shí)證表現(xiàn)當(dāng)然也是要關(guān)心的。谷歌大腦的實(shí)驗(yàn)表明 Universal Transformer 確實(shí)可以在序列復(fù)制、倒序輸出、整數(shù)加法之類的任務(wù)中取得比 Transformer 以及 RNN 好得多的表現(xiàn)(雖然比 Neural GPU 模型還是要差那么一點(diǎn))。更進(jìn)一步地,在一組各有不同的有挑戰(zhàn)的語(yǔ)言理解任務(wù)中,Universal Transformer 的泛化性有大幅提升,在 bAbl 語(yǔ)言學(xué)推理任務(wù)和極具挑戰(zhàn)的 LAMBADA 語(yǔ)言建模任務(wù)中都取得了新的最好成績(jī)記錄。當(dāng)然了,最有意思的大概還是在語(yǔ)言翻譯任務(wù)中,相比于具有同樣參數(shù)數(shù)目、同樣訓(xùn)練方式、同樣訓(xùn)練數(shù)據(jù)的基準(zhǔn) Transformer,Universal Transformer 的翻譯質(zhì)量可以提高 0.9 BLEU。0.9 BLEU的提升具體是多大呢,當(dāng)原本的 Transformer 去年發(fā)表的時(shí)候,它相比更早的模型就有 2.0 BLEU 的表現(xiàn)提升,這基本上就是把提升的分?jǐn)?shù)繼續(xù)增加了 50%。
那么,Universal Transformer 就這樣兼具了大規(guī)模語(yǔ)言理解任務(wù)上的實(shí)用序列處理模型(比如機(jī)器翻譯模型)以及 Neural GPU 和 Neural Turing Machine 這樣的通用計(jì)算模型(它們可以通過(guò)梯度下降訓(xùn)練用來(lái)執(zhí)行任意的算法任務(wù))的優(yōu)點(diǎn)。谷歌大腦對(duì)于時(shí)間并行序列處理模型的近期發(fā)展抱有充分的熱情,且,除了拓展模型的計(jì)算容量以及在高深度的處理中增加循環(huán)之外,他們也希望更多的研究人員可以對(duì)這次提出的 Universal Transformer 的基礎(chǔ)結(jié)構(gòu)提出更多的改進(jìn),整個(gè)社區(qū)共同構(gòu)建出更強(qiáng)大、更數(shù)據(jù)高效、在當(dāng)前的成績(jī)之外取得更多泛化成果的模型。
Universal Transformer 的訓(xùn)練和評(píng)估代碼已開(kāi)源在 Tensor2Tensor 目錄:http://t.cn/RkvRgjU
論文地址:https://arxiv.org/abs/1807.03819
via ai.googleblog.com,雷鋒網(wǎng) AI 科技評(píng)論編譯
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。