去年,谷歌發(fā)布了機(jī)器學(xué)習(xí)模型 Transformer,該模型在機(jī)器翻譯及其他語言理解任務(wù)上的表現(xiàn)遠(yuǎn)遠(yuǎn)超越了以往算法。今天,谷歌發(fā)布該模型最新版本——Universal Transformer,彌補(bǔ)了在大規(guī)模語言理解任務(wù)上具有競爭力的實(shí)際序列模型與計(jì)算通用模型之間的差距,其 BLEU 值比去年的 Transformer 提高了 0.9。在多項(xiàng)有難度的語言理解任務(wù)上,Universal Transformer 的泛化效果明顯更好,且它在 bAbI 語言推理任務(wù)和很有挑戰(zhàn)性的 LAMBADA 語言建模任務(wù)上達(dá)到了新的當(dāng)前最優(yōu)性能。
去年,谷歌發(fā)布了一種新的機(jī)器學(xué)習(xí)模型 Transformer(參見:機(jī)器翻譯新突破:谷歌實(shí)現(xiàn)完全基于 attention 的翻譯架構(gòu)),該模型在機(jī)器翻譯及其他語言理解任務(wù)上的表現(xiàn)遠(yuǎn)遠(yuǎn)超越了現(xiàn)有算法。在 Transformer 之前,多數(shù)基于神經(jīng)網(wǎng)絡(luò)的機(jī)器翻譯方法依賴于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),后者利用循環(huán)(即每一步的輸出饋入下一步)進(jìn)行順序操作(例如,逐詞地翻譯句子)。盡管 RNN 在建模序列方面非常強(qiáng)大,但其序列性意味著該網(wǎng)絡(luò)在訓(xùn)練時非常緩慢,因?yàn)殚L句需要的訓(xùn)練步驟更多,其循環(huán)結(jié)構(gòu)也加大了訓(xùn)練難度。
與基于 RNN 的方法相比,Transformer 不需要循環(huán),而是并行處理序列中的所有單詞或符號,同時利用自注意力機(jī)制將上下文與較遠(yuǎn)的單詞結(jié)合起來。通過并行處理所有單詞,并讓每個單詞在多個處理步驟中注意到句子中的其他單詞,Transformer 的訓(xùn)練速度比 RNN 快很多,而且其翻譯結(jié)果也比 RNN 好得多。然而,在更小、更加結(jié)構(gòu)化的語言理解任務(wù)或簡單的算法任務(wù)中(如拷貝一個字符串(如將輸入「abc」轉(zhuǎn)換為「abcabc」)),Transformer 則表現(xiàn)欠佳。相比之下,在這些任務(wù)中表現(xiàn)良好的模型(如神經(jīng) GPU 和神經(jīng)圖靈機(jī))在大型語言理解任務(wù)(如翻譯)中表現(xiàn)不好。
谷歌研究人員在《Universal Transformers》一文中使用一種新型高效的時間并行循環(huán)(parallel-in-time recurrence)方式(可在更廣泛任務(wù)上產(chǎn)生更強(qiáng)大的結(jié)果)把標(biāo)準(zhǔn) Transformer 擴(kuò)展為計(jì)算通用(圖靈完備)模型。研究者將該模型建立在 Transformer 的并行結(jié)構(gòu)上,以保持其快速的訓(xùn)練速度。但是他們用單一、時間并行循環(huán)的變換函數(shù)的多次應(yīng)用代替了 Transformer 中不同變換函數(shù)的固定堆疊(即,相同的學(xué)習(xí)變換函數(shù)在多個處理步驟中被并行應(yīng)用于所有符號,其中每個步驟的輸出饋入下一個)。關(guān)鍵在于,RNN 逐個符號(從左到右)處理序列,而 Universal Transformer 同時處理所有符號(像 Transformer 一樣),然后使用自注意力機(jī)制在循環(huán)處理步驟(步驟數(shù)量可變)上,對每個符號的解釋進(jìn)行改進(jìn)。這種時間并行循環(huán)機(jī)制比 RNN 中使用的順序循環(huán)(serial recurrence)更快,也使得 Universal Transformer 比標(biāo)準(zhǔn)前饋 Transformer 更強(qiáng)大。
Universal Transformer 模型使用自注意力機(jī)制結(jié)合不同位置的信息,應(yīng)用循環(huán)變換函數(shù),以并行化方式重復(fù)為序列的每個位置細(xì)化一系列向量表征(如圖自 h_1 到 h_m)。箭頭表示操作間的依賴關(guān)系。
在每一步中,信息利用自注意力從每個符號(例如句中單詞)傳遞到其他符號,就像在原始 Transformer 中一樣。但是,現(xiàn)在這種轉(zhuǎn)換的次數(shù)(即循環(huán)步的數(shù)量)可以提前手動設(shè)置(比如設(shè)置為固定數(shù)字或輸入長度),也可以通過 Universal Transformer 本身進(jìn)行動態(tài)設(shè)定。為了實(shí)現(xiàn)后者,谷歌研究人員在每個位置都添加了一個自適應(yīng)計(jì)算機(jī)制,它可以分配更多處理步驟給較模糊或需要更多計(jì)算的符號。
用一個直觀的例子來說明這是如何起作用的,比如這句話「I arrived at the bank after crossing the river」。在這個案例中,與沒有歧義的「I」或「river」相比,推斷「bank」一詞最可能的含義需要用到更多的語境信息。當(dāng)我們用標(biāo)準(zhǔn) Transformer 對這個句子進(jìn)行編碼時,我們需要把同樣的計(jì)算量無條件地應(yīng)用于每個單詞。然而,Universal Transformer 的自適應(yīng)機(jī)制允許模型僅在更模糊的單詞上花費(fèi)更多計(jì)算,例如,使用更多步驟來整合消除單詞「bank」歧義所需的額外語境信息,而在沒那么模糊的單詞上則花費(fèi)較少的步驟。
起初,讓 Universal Transformer 僅重復(fù)應(yīng)用單一學(xué)習(xí)函數(shù)來處理輸入似乎是有限制性的,尤其是與應(yīng)用不同函數(shù)的固定序列的標(biāo)準(zhǔn) Transformer 相比。但是,學(xué)習(xí)如何重復(fù)應(yīng)用單一函數(shù)意味著應(yīng)用的數(shù)量(處理步驟)現(xiàn)在是可變的,而這是一個很重要的區(qū)別。如上所述,除了允許 Universal Transformer 對更模糊的符號應(yīng)用更多的計(jì)算之外,它還允許模型根據(jù)輸入的整體大小來調(diào)整函數(shù)應(yīng)用的數(shù)量(更長的序列需要更多的步驟),或者基于訓(xùn)練期間學(xué)習(xí)到的其它特性來動態(tài)地決定將函數(shù)應(yīng)用到輸入的任何給定部分的頻率。這使得 Universal Transformer 在理論上更加強(qiáng)大,因?yàn)樗梢杂行У貙W(xué)習(xí)對輸入的不同部分應(yīng)用不同的變換。而這是標(biāo)準(zhǔn) Transformer 無法做到的,因?yàn)樗芍粦?yīng)用一次的學(xué)習(xí)變換塊(learned Transformation block)的固定堆疊組成。
盡管 Universal Transformer 在理論上更加強(qiáng)大,但研究人員仍關(guān)心實(shí)驗(yàn)性能。實(shí)驗(yàn)結(jié)果證明,Universal Transformer 確實(shí)能夠從樣本中學(xué)習(xí)如何復(fù)制和反轉(zhuǎn)字符串,以及如何比 Transformer 或 RNN 更好地執(zhí)行整數(shù)加法(盡管不如神經(jīng) GPU 效果好)。此外,在多項(xiàng)有難度的語言理解任務(wù)上,Universal Transformer 的泛化效果明顯更好,且它在 bAbI 語言推理任務(wù)和很有挑戰(zhàn)性的 LAMBADA 語言建模任務(wù)上達(dá)到了新的當(dāng)前最優(yōu)性能。但或許最令人感興趣的是,Universal Transformer 在與基礎(chǔ) Transformer 使用相同數(shù)量參數(shù)、訓(xùn)練數(shù)據(jù)以相同方式進(jìn)行訓(xùn)練時,其翻譯質(zhì)量比后者提高了 0.9 個 BLEU 值。在去年 Transformer 發(fā)布時,它的性能比之前的模型提高了 2.0 個 BLEU 值,而 Universal Transformer 的相對改進(jìn)量是去年的近 50%。
因此,Universal Transformer 彌補(bǔ)了在大規(guī)模語言理解任務(wù)(如機(jī)器翻譯)上具有競爭力的實(shí)際序列模型與計(jì)算通用模型(如神經(jīng)圖靈機(jī)或神經(jīng) GPU)之間的差距,計(jì)算通用模型可使用梯度下降來訓(xùn)練,用于執(zhí)行隨機(jī)算法任務(wù)。谷歌很高興看到時間并行序列模型的近期進(jìn)展,以及處理深度中計(jì)算能力和循環(huán)的增加,谷歌希望 Universal Transformer 可以幫助研究人員構(gòu)建更加強(qiáng)大、更能高效利用數(shù)據(jù)的算法,泛化性能超越當(dāng)前最優(yōu)算法。
論文:Universal Transformers
論文鏈接:https://arxiv.org/pdf/1807.03819.pdf
Universal Transformer 代碼:https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/models/research/universal_transformer.py
摘要:自注意力前饋序列模型已被證明在序列建模任務(wù)上效果顯著,這些任務(wù)包括機(jī)器翻譯 [31]、圖像生成 [30] 和 constituency parsing [18],從而提供了可以替代循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的令人信服的方案,盡管 RNN 至今仍是許多序列建模問題事實(shí)上的標(biāo)準(zhǔn)架構(gòu)。然而,盡管取得了這些成功,像 Transformer [31] 這樣的前饋序列模型卻無法泛化至很多循環(huán)模型可以輕松處理的任務(wù)上(例如,在字符串或公式長度超過訓(xùn)練時模型觀察到的類型時,復(fù)制字符串甚至簡單的邏輯推斷 [28])。此外,與 RNN 相比,Transformer 模型在計(jì)算上不通用,這限制了其理論表達(dá)能力。本論文提出了 Universal Transformer,它可以解決這些實(shí)踐和理論缺陷。我們展示了它可以在多項(xiàng)任務(wù)中實(shí)現(xiàn)性能提升。Universal Transformer 不像 RNN 那樣使用對句中單個符號的循環(huán),而是使用每個循環(huán)步驟重復(fù)修改句子中所有符號的表征。為了結(jié)合句子不同部分的信息,該模型在每個循環(huán)步中都使用了自注意力機(jī)制。假設(shè)有充足的記憶,則其循環(huán)會使 Universal Transformer 成為計(jì)算通用模型。我們進(jìn)一步使用自適應(yīng)計(jì)算時間(adaptive computation time,ACT)機(jī)制,使模型動態(tài)調(diào)整句子中每個位置的表征被修改的次數(shù)。除了節(jié)省計(jì)算量以外,ACT 還能夠提高模型的準(zhǔn)確率。我們的實(shí)驗(yàn)結(jié)果表明,在許多算法任務(wù)及大量大規(guī)模語言理解任務(wù)中,Universal Transformer 的泛化性能大大增強(qiáng),在機(jī)器翻譯中的表現(xiàn)超越了基礎(chǔ) Transformer 及 LSTM,在 bAbI 語言推理及富有挑戰(zhàn)性的 LAMBADA 語言建模任務(wù)中達(dá)到了新的當(dāng)前最優(yōu)性能