丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預覽,將在時失效
人工智能 正文
發(fā)私信給AI研習社-譯站
發(fā)送

0

多圖帶你讀懂 Transformers 的工作原理

本文作者: AI研習社-譯站 2019-03-19 10:11
導語:Transformer是一類神經(jīng)網(wǎng)絡架構(gòu),現(xiàn)在越來越受歡迎了。

多圖帶你讀懂 Transformers 的工作原理

本文為 AI 研習社編譯的技術(shù)博客,原標題 :

How Transformers Work

作者 | Giuliano Giacaglia

翻譯 | 胡瑛皓       

校對 | 醬番梨        審核 | 約翰遜·李加薪       整理 | 立魚王

原文鏈接:

https://towardsdatascience.com/transformers-141e32e69591

Transformer是一類神經(jīng)網(wǎng)絡架構(gòu),現(xiàn)在越來越受歡迎了。Transformer最近被OpenAI用于訓練他們的語言模型,同時也被DeepMind的AlphaStar?采用,用于他們的程序擊敗那些頂級星際玩家。

Transformer是為了解決序列傳導問題或神經(jīng)網(wǎng)絡機器翻譯而設計的,意味著任何需要將輸入序列轉(zhuǎn)換為輸出序列的任務都可以用,包括語音識別和文本到語音轉(zhuǎn)換等。

多圖帶你讀懂 Transformers 的工作原理

序列傳導。綠色表示輸入,藍色表示模型,紫色表示輸出。動圖摘自:jalammar.github.io

對于需要進行序列傳導的模型,有必要有某種記憶。例如,我們將以下句子翻譯到另一種語言(法語):

“The Transformers” are a Japanese [[hardcore punk]] band. The band was formed in 1968, during the height of Japanese music history”

本例中,第二句話中的“the band”一詞指代第一句中引入的“The Transformers”。當你讀到第二句中的"the band",你知道它指的是“The Transformers” band。這可能對翻譯很重要。事實上,后一句話中的某個詞指代前幾句話中出現(xiàn)的某個詞,像這樣的例子很多。

翻譯這樣的句子,模型需要找出之間的依賴和關(guān)聯(lián)。循環(huán)神經(jīng)網(wǎng)絡 (RNNs)和卷積神經(jīng)網(wǎng)絡(CNNs)由于其特性已被使用來解決這個問題。 讓我們回顧一下這兩種架構(gòu)及其缺點。


   循環(huán)神經(jīng)網(wǎng)絡

循環(huán)神經(jīng)網(wǎng)絡內(nèi)部有循環(huán),允許信息保存其中。

多圖帶你讀懂 Transformers 的工作原理

輸入表示為 x_t

如上圖所示,我們看到神經(jīng)網(wǎng)絡的一部分A,處理輸入x_t,然后輸出h_t。A處循環(huán)使得信息可從前一步傳遞至后一步。

可以換一種方式思考這些循環(huán)。循環(huán)神經(jīng)網(wǎng)絡可認為是同一網(wǎng)絡A的多重備份,每個網(wǎng)絡將信息傳遞給其后續(xù)網(wǎng)絡。看一下如果我們將循環(huán)展開會如何:

多圖帶你讀懂 Transformers 的工作原理

展開的循環(huán)神經(jīng)網(wǎng)絡

圖中鏈式本質(zhì)清楚地表明循環(huán)神經(jīng)網(wǎng)絡與序列和列表相關(guān)。 如果以這種方式翻譯一段文本,需要將文本中的每個單詞設置為其輸入。循環(huán)神經(jīng)網(wǎng)絡將序列中前面的詞語的信息傳入后一個神經(jīng)網(wǎng)絡,這樣便可以利用和處理這些信息。

下圖展示了sequence to sequence模型通常是如何用循環(huán)神經(jīng)網(wǎng)絡工作的。每個單詞被單獨處理,然后將編碼階段的隱狀態(tài)傳入解碼階段以生成結(jié)果句子,然后這樣就產(chǎn)生了輸出。

多圖帶你讀懂 Transformers 的工作原理

動圖摘自此文:jalammar.github.io

長期依賴的問題

考慮一下這類模型,即使用之前看到的單詞預測下一個單詞。如果我們需要預測這句話“the clouds in the ___”的下一個單詞,不需要額外的語境信息,很顯然下個單詞是“sky”。

這個例子里,相關(guān)信息和需預測單詞的距離很近。循環(huán)神經(jīng)網(wǎng)絡可以學習前面的信息,并找出句中下一個單詞。

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:colah.github.io

但有些情況我們需要更多語境信息。例如試圖預測這句話的最后一個單詞: “I grew up in France… I speak fluent ___”。 最靠近這個單詞的信息建議這很有可能是一種語言,但當你想確定具體是哪種語言時,我們需要語境信息France,而這出現(xiàn)在較前面的文本中。

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:colah.github.io

當相關(guān)信息和詞語之間距離變得很大時,RNN變得非常低效。那是因為,需要翻譯的信息經(jīng)過運算中的每一步,傳遞鏈越長,信息就越可能在鏈中丟失。

理論上RNN可以學習這些長期依賴關(guān)系,不過實踐表現(xiàn)不佳,學不到這些信息。因而出現(xiàn)了LSTM,一種特殊的RNN,試圖解決這類問題。


   Long-Short Term Memory (LSTM)

我們平時安排日程時,通常會為不同的約會確定不同的優(yōu)先級。如果有什么重要行程安排,我們通常會取消一些不那么重要的會議,去參加那些重要的。

RNN不會那么做。無論什么時候都會不斷往后面加信息,它通過應用函數(shù)轉(zhuǎn)換全部現(xiàn)有信息。在過程中所有信息都被修改了,它不去考慮哪些重要,哪些不重要。

LSTMs在此基礎(chǔ)上利用乘法和加法做了一些小改進。在LSTMs里,信息流經(jīng)一種機制稱為細胞狀態(tài)。LSTM便可以選擇性的記憶或遺忘那些重要或不重要的事情了。

LSTM內(nèi)部看起來像是這樣:

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:colah.github.io

每個細胞的輸入為x_t (在句子到句子翻譯這類應用中x_t是一個單詞), 上一輪細胞狀態(tài)以及上一輪的輸出。模型基于這些輸入計算改變其中信息,然后產(chǎn)生新的細胞狀態(tài)和輸出。本文不會詳細講每個細胞的實現(xiàn)機制。如果你想了解這些細胞的運作機制,推薦你看一下Christopher的博客:

Understanding LSTM Networks -- colah's blog
這些循環(huán)使得循環(huán)神經(jīng)網(wǎng)絡看起來有點神秘。 但如果再細想一下,事實上
https://colah.github.io/posts/2015-08-Understanding-LSTMs/

采用細胞狀態(tài)后,在翻譯過程中,句子中對翻譯單詞重要的信息會被一輪一輪傳遞下去。

LSTM的問題

總體來說問題LSTM的問題與RNN一樣,例如當句子過長LSTM也不能很好的工作。原因在于保持離當前單詞較遠的上下文的概率以距離的指數(shù)衰減。

那意味著當出現(xiàn)長句,模型通常會忘記序列中較遠的內(nèi)容。RNN與LSTM模型的另一個問題,由于不得不逐個單詞處理,因此難以并行化處理句子。不僅如此,也沒有長短范圍依賴的模型。總之,LSTM和RNN模型有三個問題:

  • 順序計算,不能有效并行化

  • 沒有顯示的建模長短范圍依賴

  • 單詞之間的距離是線性的


   Attention

為了解決其中部分問題,研究者建立了一項能對特定單詞產(chǎn)生注意力的技能。

當翻譯一個句子,我會特別注意我當前正在翻譯的單詞。當我錄制錄音時,我會仔細聆聽我正在寫下的部分。如果你讓我描述我所在的房間,當我這樣做的時候,我會瞥一眼描述的物體。

神經(jīng)網(wǎng)絡用attention可以做到同樣的效果,專注于給出信息的那部分。例如,RNN可注意另一RNN的輸出。在每個時點它聚焦于其他RNN不同的位置。

為了解決這些問題,注意力(attention)是一種用于神經(jīng)網(wǎng)絡的技術(shù)。 對于RNN模型,與其只編碼整個句子的隱狀態(tài),我們可以把每個單詞的隱狀態(tài)一起傳給解碼器階段。在RNN的每個步驟使用隱藏狀態(tài)進行解碼。詳見下面動圖

多圖帶你讀懂 Transformers 的工作原理

綠色步驟是編碼階段,紫色步驟是解碼階段,動圖摘自此文:jalammar.github.io

其背后的想法是句子每個單詞都有相關(guān)信息。為了精確解碼,需要用注意力機制考慮輸入的每個單詞。

對于要放入序列傳導RNN模型的注意力,我們分成編碼和解碼兩步。一步以綠色表示另一步以紫色表示。綠色步驟稱為編碼階段紫色步驟稱為解碼階段。

多圖帶你讀懂 Transformers 的工作原理

動圖摘自此文:jalammar.github.io

綠色步驟負責由輸入建立隱狀態(tài)。我們把句子中每個單詞產(chǎn)生的所有隱狀態(tài)傳入解碼階段,而不是和過去的attention一樣,僅傳遞一個隱狀態(tài)給解碼器。每個隱狀態(tài)都會在解碼階段被使用,去找出網(wǎng)絡應該注意的地方。

比如,當我們翻譯這句 “Je suis étudiant”法語句子到英語時,需要在翻譯時解碼步驟去查不同的單詞。

多圖帶你讀懂 Transformers 的工作原理

此動圖展示當翻譯“Je suis étudiant”至英語時,如何給每個隱狀態(tài)賦予權(quán)重。顏色越深對于每個單詞的權(quán)重越大。動圖摘自此文:jalammar.github.io

或再比如,當你將“L’accord sur la zone économique européenne a été signé en ao?t 1992.” 法語翻譯成英語,下圖展示了需要對每個輸入賦予多少注意力。

多圖帶你讀懂 Transformers 的工作原理

翻譯 “L’accord sur la zone économique européenne a été signé en ao?t 1992.”法語句子到英文。圖片摘自此文:jalammar.github.io

不過我們前面討論的一些問題,用帶attention的RNN仍然無法解決。比如,不可能并行處理輸入的單詞。對較大的文本語料,增加了翻譯文本的用時。


   卷積神經(jīng)網(wǎng)絡

卷積神經(jīng)網(wǎng)絡可以幫助解決這些問題,可以做到:

  • 并行化 (按層)

  • 利用局部依賴

  • 位置間的距離是對數(shù)級的

一些最流行的序列傳導網(wǎng)絡, 例如 Wavenet和Bytenet就采用卷積神經(jīng)網(wǎng)絡。

多圖帶你讀懂 Transformers 的工作原理

Wavenet, 模型采用卷積神經(jīng)網(wǎng)絡 (CNN). 動圖摘自此文

卷積神經(jīng)網(wǎng)絡可并行處理是因為,輸入的每個單詞可被同時處理并不必依賴于前一個單詞翻譯的結(jié)果。不僅如此,輸出單詞與任何CNN輸入的單詞的“距離”是log(N)?數(shù)量級—?—?即輸入單詞到輸出單詞連線形成的樹的高度 (如上面動圖所示)。 這比RNN輸出到其輸入的距離要好很多,因為其距離是N數(shù)量級。

問題在于卷積神經(jīng)網(wǎng)絡在翻譯句子過程中不一定有助于解決依賴問題。這就是transformers被創(chuàng)造出來的原因,它結(jié)合了CNN和attention機制.


   Transformers

Transformers模型試圖結(jié)合卷積神經(jīng)網(wǎng)絡和attention機制解決并行化問題。attention機制提升模型從一個序列轉(zhuǎn)換為另一個序列的速度。

我們來看一下Transformer是如何工作的。Transformer是一類用attention來提速的模型,具體來說使用的是self-attention。

多圖帶你讀懂 Transformers 的工作原理

Transformer, 圖片摘自此文:jalammar.github.io

從內(nèi)部來看Transformer與之前模型架構(gòu)相似,只是Transformer由6個編碼器和6個解碼器組成。

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:jalammar.github.io

編碼器非常相似,所有編碼器都具有相同的架構(gòu)。解碼器也有相同的屬性諸如互相之間非常相似。編碼器有兩層: self-attention層和前饋神經(jīng)網(wǎng)絡層。

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:jalammar.github.io

編碼器的輸入先進入self-attention層,有助于編碼器在編碼句中特定單詞時可參考輸入句子中其他單詞。解碼器也包含這兩層,不過在兩層中間增加了attention層,以幫助解碼器聚焦到輸入句子的相關(guān)部分。

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:jalammar.github.io


   Self-Attention

注: 這部分轉(zhuǎn)自Jay Allamar的博文
https://jalammar.github.io/illustrated-transformer/

我們來看一下模型中各種不同的向量/張量,它們在已訓練模型組件中如何流轉(zhuǎn),從而把輸入轉(zhuǎn)化成輸出的。 由于這是一個NLP應用實例,我們先用詞嵌入算法把每個輸入的詞語轉(zhuǎn)換為詞向量。

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:jalammar.github.io

每個單詞被轉(zhuǎn)換為一個長度512的向量。圖中我們用這些簡單的方塊表示這些向量。

僅在最底層的解碼器處進行詞嵌入轉(zhuǎn)換。對于所有編碼器,它們都接收大小為512的向量列表

最底層的編碼器接收的是詞嵌入,但其他編碼器接收的輸入是其下一層的直接輸出。當輸入序列中的單詞做詞嵌入轉(zhuǎn)換后,數(shù)據(jù)就按順序流經(jīng)各層編碼器的2層結(jié)構(gòu)。

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:jalammar.github.io

此處我們開始看到Transformer的一個重要特性,每個位置上的單詞在編碼器中流經(jīng)自己的路徑。在self-attention層處理這些路徑的依賴關(guān)系。前饋神經(jīng)網(wǎng)絡不處理這些依賴關(guān)系。這樣當數(shù)據(jù)流經(jīng)前饋神經(jīng)網(wǎng)絡時,不同的路徑可被并行執(zhí)行。

接下來,我們將切換到一句短句實例,看一下在編碼器的子層里會發(fā)生什么。

Self-Attention

首先讓我們來看一下如何用向量計算self-attention,然后再看一下利用矩陣運算的實現(xiàn)方式。

多圖帶你讀懂 Transformers 的工作原理

找出句中單詞之間的關(guān)系并給出正確的注意力。圖片摘自此文:http://web.stanford.edu

self-attention計算的第一步是通過編碼器的輸入向量 (本例中是每個單詞的詞嵌入向量) 建立Query, Key和Value三個向量,我們通過輸入的詞嵌入向量乘以之前訓練完成的三個矩陣得到。

注意,這些新向量的長度小于詞嵌入向量的長度。這里取64,而詞嵌入向量及編碼器的輸入輸出長度為512。這是一個架構(gòu)性選擇,向量長度不需要變得更小,使得多頭注意力(multiheaded attention)計算基本穩(wěn)定。

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:jalammar.github.io

將詞向量x1乘以權(quán)重矩陣WQ得到q1,即與這個單詞關(guān)聯(lián)的“query”向量。這樣,我們最終分別得到輸入句子里每個單詞的“query”,“key”和“value”投射。

那“query”, “key”和“value”向量是什么?

它們是一種抽象,在計算和考慮注意力時會被用到。如果你讀了下文里關(guān)于注意力的計算方法,你就差不多明白各向量的角色。

計算self-attention的第二步是計算一項得分(score)。我們以計算句中第一個單詞Thinking的self-attention為例。我們需要計算句中每個單詞針對這個詞的得分。當我們在特定的位置編碼一個單詞時,該得分決定了在輸入句子的其他部分需要放多少焦點。

得分等于當前詞的query向量與需評分詞語的key向量的點積。因此,如果需要計算#1位置處單詞的self-attention,第一個得分是q1與k1的點積,第二個得分就是q1和k2的點積。

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:jalammar.github.io

第三第四步是將所有得分除以8(論文中取的是向量維數(shù)開根號—?—?64,這樣會得到更穩(wěn)定的梯度。當然也可以用其他值,不過這是默認值),然后將結(jié)果放入一個softmax操作. softmax方法正則化這些得分,使它們都大于0且加和為1。

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:jalammar.github.io

這個經(jīng)過softmax的score決定了該單詞在這個位置表達了多少。很顯然當前位置所在的單詞會得到最高的softmax得分,不過有時候有助于算法注意到其他與當前單詞相關(guān)的單詞。

第五步,將每個value向量乘以softmax得分 (準備對它們求和)。這里的意圖是保持需要聚焦的單詞的value,并且去除不相關(guān)的單詞(乘以一個很小的數(shù)字比如0.001)。

第六步,求和加權(quán)后的value向量。這就產(chǎn)生了(對于第一個單詞)在self-attention層上此位置的輸出。

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:jalammar.github.io

這樣self-attention計算就結(jié)束了。結(jié)果向量就可以拿來作為前饋神經(jīng)網(wǎng)絡的輸入。不過實際實現(xiàn)中,考慮到性能該計算由矩陣形式運算完成。我們現(xiàn)在看一下,我們已經(jīng)知道如何在詞級別計算了。

Multihead attention

Transformer基本上就是這么工作的。此外還有一些其他細節(jié)使其工作得更好。比如,實現(xiàn)中使用了多頭注意力的概念,而不是只在一個維度上計算注意力。

其背后的想法是,當你翻譯一個單詞時,基于不同的問題,會對于同一個單詞產(chǎn)生不同的注意力,如下圖所示。比如說當你在翻譯“I kicked the ball”句中的“kicked”時,你會問“Who kicked”。由于問題不同,當翻譯成另一種語言時結(jié)果可能改變?;蛘邌柫似渌麊栴},比如“Did what?”,等…

多圖帶你讀懂 Transformers 的工作原理

多圖帶你讀懂 Transformers 的工作原理

多圖帶你讀懂 Transformers 的工作原理

圖片摘自此文:http://web.stanford.edu

Positional Encoding

Transfomer的另一個重要步驟是為每個詞增加了位置編碼。由于每個單詞的位置與翻譯相關(guān),所以編碼每個單詞的位置是有用的。


   總結(jié)

本文概述transformers是怎么工作的,以及在序列傳導問題中使用的原因。如果你希望更深入的理解模型運作的原理及相關(guān)差異。推薦閱讀以下帖子、文章和視頻資料。

  1. The Unreasonable Effectiveness of Recurrent Neural Networks

  2. Understanding LSTM Networks

  3. Visualizing A Neural Machine Translation Model

  4. The Illustrated Transformer

  5. The Transformer?—?Attention is all you need

  6. The Annotated Transformer

  7. Attention is all you need attentional neural network models

  8. Self-Attention For Generative Models

  9. OpenAI GPT-2: Understanding Language Generation through Visualization

  10. WaveNet: A Generative Model for Raw Audio

想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻?

點擊【多圖帶你讀懂 Transformers 的工作原理】或長按下方地址:

https://ai.yanxishe.com/page/TextTranslation/1558

AI研習社今日推薦雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)

卡耐基梅隆大學 2019 春季《神經(jīng)網(wǎng)絡自然語言處理》是CMU語言技術(shù)學院和計算機學院聯(lián)合開課,主要內(nèi)容是教學生如何用神經(jīng)網(wǎng)絡做自然語言處理。神經(jīng)網(wǎng)絡對于語言建模任務而言,可以稱得上是提供了一種強大的新工具,與此同時,神經(jīng)網(wǎng)絡能夠改進諸多任務中的最新技術(shù),將過去不容易解決的問題變得輕松簡單。

加入小組免費觀看視頻:https://ai.yanxishe.com/page/groupDetail/33

多圖帶你讀懂 Transformers 的工作原理


雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

多圖帶你讀懂 Transformers 的工作原理

分享:
相關(guān)文章

知情人士

AI研習社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學習知識的門檻。(原雷鋒字幕組)
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
立即設置 以后再說