學(xué)完這個(gè)教程,小白也能構(gòu)建Transformer,DeepMind科學(xué)家推薦
從視覺(jué)化矩陣乘法教起
Pine 發(fā)自 凹非寺
量子位 | 公眾號(hào) QbitAI
真正零門(mén)檻!小白都能輕松看懂的Transformer教程來(lái)了。
在自然語(yǔ)言處理和計(jì)算機(jī)視覺(jué)領(lǐng)域,Transformer先后替代了RNN、CNN的地位成為首選模型,最近爆火的ChatGPT也都是基于這個(gè)模型。
換言之,想進(jìn)入機(jī)器學(xué)習(xí)的領(lǐng)域,就必須得懂Transformer。
這不,量子位就發(fā)現(xiàn)了一篇零基礎(chǔ)也能學(xué)的教程,作者是前微軟、Facebook首席數(shù)據(jù)科學(xué)家,也是MIT機(jī)械工程的碩博士,從視覺(jué)化矩陣乘法開(kāi)始,帶你一步步入門(mén)。
DeepMind研究科學(xué)家Andrew Trask也轉(zhuǎn)發(fā)評(píng)論道:
這是我至今見(jiàn)過(guò)最好的教程,它對(duì)入門(mén)者非常非常友好。
這條帖子也是掀起了一陣熱度,瀏覽量已經(jīng)有近30w。
網(wǎng)友們也紛紛在評(píng)論區(qū)作出“碼住”狀。
從視覺(jué)化矩陣乘法開(kāi)始學(xué)
因?yàn)檫@是一個(gè)新手入門(mén)的教程,所以在正式學(xué)Transformer之前,會(huì)有很多介紹矩陣乘法和反向傳播的內(nèi)容。
并且在介紹的過(guò)程中,作者逐個(gè)添加學(xué)習(xí)Transforme所需要了解的概念,并加以解釋。
具體有多新手友好,我們先來(lái)淺看下這篇教程~
基礎(chǔ)概念解釋
首先,了解Transformer的第一步就是編碼,就是把所有的單詞轉(zhuǎn)換成數(shù)字,進(jìn)而可以進(jìn)行數(shù)學(xué)計(jì)算。
一般來(lái)說(shuō),將符號(hào)轉(zhuǎn)換為數(shù)字的有效方法是先對(duì)所有單詞符號(hào)分配數(shù)字,每個(gè)單詞符號(hào)都會(huì)對(duì)應(yīng)一個(gè)獨(dú)立的數(shù)字,然后單詞組成的句子便可以通過(guò)數(shù)字序列來(lái)表示了。
舉個(gè)簡(jiǎn)單的例子,比如files=1、find=2和my=3。然后,句子“ Find my files”可以表示為數(shù)字序列[2,3,1]。
不過(guò)這里介紹的是另外一種方法,即獨(dú)熱編碼。
具體來(lái)說(shuō),就是將單詞符號(hào)轉(zhuǎn)換成一個(gè)數(shù)組,這個(gè)數(shù)組中只能有一個(gè)1,其他全為0。還是上面那個(gè)例子,用這種方式表示的話如下圖。
這樣一來(lái),句子“Find my files”就變成了一維數(shù)組的序列,壓縮到一塊也就像是二維數(shù)組了。
接下來(lái)就要再來(lái)了解下點(diǎn)積和矩陣乘法了。
點(diǎn)積這里也就不再過(guò)多贅述,元素相乘再相加便可以了。
它有兩個(gè)作用,一個(gè)是用來(lái)度量兩個(gè)單詞之間的相似性,一個(gè)是顯示單詞的表示強(qiáng)度。
相似性很容易判別,一個(gè)單詞的獨(dú)熱矢量和自己的點(diǎn)積是1,和其他的點(diǎn)積為0.
至于表示強(qiáng)度,和一個(gè)能夠表示不同權(quán)重的值向量進(jìn)行點(diǎn)乘便可以了。
矩陣乘法,看下面這幅圖便足矣。
從簡(jiǎn)單的序列模型開(kāi)始介紹
了解完這些基礎(chǔ)概念之后,就要步入正軌了,開(kāi)始學(xué)習(xí)Transformer是如何處理命令的。
還是用例子來(lái)解釋?zhuān)_(kāi)發(fā)NLP計(jì)算機(jī)界面時(shí),假設(shè)要處理3種不同的命令
- Show me my directories please.(請(qǐng)給我看看我的目錄)
- Show me my files please.(請(qǐng)給我看看我的檔案)
- Show me my photos please.(請(qǐng)給我看看我的照片)
可以用下面這個(gè)流程圖(馬爾可夫鏈)來(lái)表示,箭頭上的數(shù)字表示下一個(gè)單詞出現(xiàn)的概率。
接下來(lái)解釋將馬爾可夫鏈轉(zhuǎn)換為矩陣形式了,如下圖。
每一列代表一個(gè)單詞,并且每一列中的數(shù)字代表這個(gè)單詞會(huì)出現(xiàn)的概率。
因?yàn)楦怕屎涂偸菫?,所以每行的數(shù)字相加都為1。
以my為例,要想知道它的下一個(gè)單詞的概率,可以創(chuàng)建一個(gè)my的獨(dú)熱向量,乘上面的轉(zhuǎn)移矩陣便能得出了
再然后,作者又詳細(xì)介紹了二階序列模型,帶跳躍的二階序列模型,掩碼。
至此,關(guān)于Transformer,已經(jīng)學(xué)到了最核心的部分,至少已經(jīng)了解了在解碼時(shí),Transformer是如何做的。
不過(guò)了解Transformer工作的原理和重新建造Transformer模型之間還是有很大差距的,后者還得考慮到實(shí)際情況。
因此教程中還進(jìn)一步展開(kāi),作了更大篇幅的學(xué)習(xí)教程,包括Transformer最重要的注意力機(jī)制。
換句話說(shuō),這個(gè)教程就是從最基礎(chǔ)的東西教我們重新構(gòu)建一個(gè)Transformer模型。
更加具體內(nèi)容就不在這里一一列出了,感興趣的朋友可以戳文末鏈接學(xué)習(xí)。
目錄先放在這里,可以根據(jù)自己的基礎(chǔ)知識(shí)選擇從哪個(gè)階段開(kāi)始學(xué)起:
1、獨(dú)熱(one-hot)編碼
2、點(diǎn)積
3、矩陣乘法
4、矩陣乘法查表
5、一階序列模型
6、二階序列模型
7、帶跳躍的二階序列模型
—-分割線—-(學(xué)完上面這些,就已經(jīng)把握住Transformer的精髓了,不過(guò)要想知道Transformer,還得往下看)
8、矩陣乘法中的注意力
9、二階矩陣乘法序列模型
10、完成序列
11、嵌入
12、位置編碼
13、解除嵌入
14、softmax函數(shù)
15、多頭注意力機(jī)制
16、使用多頭注意力機(jī)制的原因
17、重現(xiàn)單頭注意力機(jī)制
18、多頭注意力塊之間的跳過(guò)連接
19、橫向規(guī)范化(Layer normalization)
20、多注意力層
21、解碼器堆棧
22、編碼器堆棧
23、編碼器和解碼器棧之間的交叉注意塊
—-又一個(gè)分割線—-(如果你學(xué)到這里,那說(shuō)明Transformer你已經(jīng)掌握得差不多了,后面講的東西就是關(guān)于如何讓神經(jīng)網(wǎng)絡(luò)表現(xiàn)良好了)
24、字節(jié)對(duì)編碼(Byte pair encoding)
作者介紹
Brandon Rohrer,目前是Linkedin的一名機(jī)器學(xué)習(xí)工程師,曾先后在微軟,F(xiàn)acebook擔(dān)任首席數(shù)據(jù)科學(xué)家。
在Facebook工作期間,他建立了一種更精確的電網(wǎng)映射預(yù)測(cè)模型,以評(píng)估全球的中壓電網(wǎng)的連通性和路由。
寫(xiě)教程算是Brandon的一大愛(ài)好了,目前他所有的教程都不斷更新在他的新書(shū)《如何訓(xùn)練你的機(jī)器人》中,帖子的跨度從職業(yè)發(fā)展到各種編程工具的介紹。
傳送門(mén):
https://e2eml.school/transformers.html#softmax
更多教程:
https://e2eml.school/blog.html
- GPT-5不能停!吳恩達(dá)田淵棟反對(duì)千人聯(lián)名,OpenAI CEO也發(fā)聲了2023-03-30
- ChatGPT標(biāo)注數(shù)據(jù)比人類(lèi)便宜20倍,80%任務(wù)上占優(yōu)勢(shì) | 蘇黎世大學(xué)2023-03-29
- 馬斯克嘲諷比爾蓋茨不懂AI/ 蘋(píng)果收購(gòu)AI視頻公司/ 壁仞GPU聯(lián)創(chuàng)出走…今日更多新鮮事在此2023-03-28
- GPT-4老板:AI可能會(huì)殺死人類(lèi),已經(jīng)出現(xiàn)我們無(wú)法解釋的推理能力2023-03-28