免費做頭像網(wǎng)站色盲圖
文章目錄
- 前言
- 論文閱讀
- 研究現(xiàn)狀
- 工作內(nèi)容
- 模型架構(gòu)
- 訓(xùn)練過程
- 實驗結(jié)果
- 模型代碼
- 其他評價
前言
Transformer可以說是深度學(xué)習(xí)領(lǐng)域最重要的,里程碑式的工作之一,發(fā)表于2017年的NIPS。該模型開創(chuàng)了自MLP(多層感知機)、CNN(卷積神經(jīng)網(wǎng)絡(luò))和RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))之后的第四種基礎(chǔ)模型。這項工作也成為當前AIGC盛行的最重要的基礎(chǔ),是Google公司對人工智能領(lǐng)域的卓越貢獻。
Transformer論文中的所有作者都是共同一作,這種情況一般是比較少見的。但是,這篇文章中也詳細介紹了每一名作者對文章所做的貢獻是什么,而非只是給每個作者的貢獻用幾個很虛的詞進行描述。反觀當今學(xué)術(shù)界的共同一作掛名現(xiàn)象,不得不說有些論文的共同一作已經(jīng)失去了原本的意義,可悲可嘆。
根據(jù)2024年3月份的最新消息,實際上Transformer中二作Shazeer貢獻最大。
論文閱讀
研究現(xiàn)狀
- 目前的主流序列轉(zhuǎn)錄模型:主流的序列轉(zhuǎn)錄模型使用復(fù)雜的循環(huán)神經(jīng)網(wǎng)絡(luò)或卷積神經(jīng)網(wǎng)絡(luò),包含一個編碼器和一個解碼器。性能最好的模型中,會在編碼器和解碼器之間增加一種注意力機制。對于自然語言處理中的主流序列轉(zhuǎn)錄任務(wù),目前最好的方法都是基于RNN、LSTM和GRU的。
- 循環(huán)神經(jīng)網(wǎng)絡(luò)存在的問題:循環(huán)神經(jīng)網(wǎng)絡(luò)需要通過上一個時間步的隱藏狀態(tài)和當前時刻的輸入來獲取當前時間步的隱藏狀態(tài),這樣就妨礙了模型的并行程度。
- 注意力機制在編解碼器中的應(yīng)用現(xiàn)狀:注意力機制往往用于循環(huán)神經(jīng)網(wǎng)絡(luò)編解碼器中,將編碼器的內(nèi)容高效地傳遞給解碼器,但是,目前還沒有僅僅基于注意力機制的模型架構(gòu)。
工作內(nèi)容
- 研究概述:本文提出了一種簡單的網(wǎng)絡(luò)架構(gòu)Transformer,該架構(gòu)完全基于注意力機制,而舍棄了循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)。該模型中將循環(huán)神經(jīng)網(wǎng)絡(luò)中的所有循環(huán)層替換為了多頭注意力,不僅能夠取得更好的性能,而且受益于很好的并行策略,該模型的訓(xùn)練時間也顯著更低。
- 與CNN和RNN的聯(lián)系:Transformer中通過多頭注意力機制,模擬卷積神經(jīng)網(wǎng)絡(luò)的多輸出通道的優(yōu)點;通過完全并行,克服了循環(huán)神經(jīng)網(wǎng)絡(luò)中需要逐時間步計算隱藏狀態(tài)的缺點。
模型架構(gòu)
- 編解碼器架構(gòu):Transoformer仍然基于編解碼器的基本架構(gòu),即包含一個編碼器和一個解碼器。
- 詞元嵌入層: 將每一個詞元轉(zhuǎn)換為一個向量;
- 編碼器:編碼器由6個完全相同的神經(jīng)網(wǎng)絡(luò)層組成,每個層都包含兩個子層,分別是一個多頭注意力子層和一個MLP子層(包含兩個線性層)。這兩個子層內(nèi)部都有殘差連接,輸出都經(jīng)過了層歸一化。編碼器的輸出作為解碼器的輸入。出于方便殘差連接的簡單考慮,所有輸出向量的維度都控制為512。
- 解碼器:解碼器也由多個相同的塊構(gòu)成。與編碼器的塊不同,解碼器的塊中包含三個子塊,其中兩個子塊與編碼器的兩個子塊相同,但是第三個子塊是一個帶掩碼的多頭注意力機制子塊(當然其中也有殘差連接和層歸一化)。之所以需要帶掩碼的模塊,是因為按照邏輯,解碼器在計算某個時間步的輸出時不應(yīng)該看到該時間步及其之后的輸入內(nèi)容,因為所有時間步的輸入是一次性傳入解碼器的。
- 層歸一化:對每一個樣本對應(yīng)的特征向量做一個標準化。
- 注意力機制:注意力機制中有三個重要概念,分別是Key(簡稱K)、Value(簡稱V)和Query(簡稱Q)。計算注意力機制的過程如下:首先,需要計算Query和每個Key之間的相似度;然后,根據(jù)Query和每個Key之間的相似度為每個Value分配權(quán)重,與Query越相似的Key對應(yīng)Value的權(quán)重越大;最后,對Value進行加權(quán)平均求和,即獲得最終的Output。Transformer中,除了解碼器中的多頭注意力子層,對于輸入的序列,該序列同時作為Q K和V,即被稱為自注意力機制。
- 兩種常見的注意力機制:加性注意力機制和點積注意力機制。Transformer中采用的是改進型的點積注意力機制。
- 相似度的計算:最簡單的相似度計算可以采用余弦相似度,即將兩個向量進行內(nèi)積,值越大表示兩個向量的方向越相近,也就是相似度越高。在Transformer中,對點積注意力進行了Scale改進,也就是除以Key的維度的平方根,從而防止傳遞的梯度過小使得模型難以訓(xùn)練。
- 多頭注意力機制:Transformer中沒有做高維的注意力函數(shù)計算,相反,它將注意力函數(shù)中的各個序列都進行了投影降維,并基于降維后的序列,進行了8次注意力函數(shù)計算,并將計算的結(jié)果拼接在一起。這樣的方式模擬了卷積神經(jīng)網(wǎng)絡(luò)中的多通道輸出,從而盡可能地保留了特征識別結(jié)果的多樣性。
- 位置編碼:由于注意力機制的計算過程之中并沒有蘊含時序信息,因此需要顯式地向模型中輸入時序信息。在Transformer中,在輸入部分增加了位置編碼,該位置編碼是基于當前詞元的位置下標和三角函數(shù)進行計算的。最終,將位置編碼和嵌入后的詞元向量直接相加,就得到了每個詞的完整表示。
訓(xùn)練過程
采用8張NVIDIA P100 GPU進行訓(xùn)練(現(xiàn)在Google的工作大部分都是基于更快的TPU進行訓(xùn)練的了,而非使用GPU),使用Adam優(yōu)化器。對于學(xué)習(xí)率,采用的是一種先提升后降低的策略;模型中采用了大量Dropout技術(shù)進行正則化,dropout率設(shè)置為0.1。另外,還使用了Inception V3中的標簽平滑化操作來進行另一種正則化。
實驗結(jié)果
- 機器翻譯任務(wù):在兩個機器翻譯任務(wù)上,該模型在性能上更加優(yōu)越,并且有更高的并行程度,需要顯著更少的訓(xùn)練時間。在一項英語到德語的翻譯實驗中,該模型比包括集群算法在內(nèi)的最好結(jié)果高出了兩個BLEU;在另一項英語到法語的翻譯任務(wù)中,該模型實現(xiàn)在所有單模型中最好的性能,并且訓(xùn)練的速度要比其他的架構(gòu)都快很多。
- 另一項NLP任務(wù):另外,在另一個NLP任務(wù)上,Transformer也取得了很好的效果。
模型代碼
存放于Github上的tensor2tensor模塊中。
其他評價
由于注意力機制對整個模型的歸納偏置更少,因此往往需要更多的數(shù)據(jù)和更大的模型才能達到很好的效果。