- 什么是大語(yǔ)言模型
- Transformer模型
encoder-decoder框架
attention機(jī)制與self-attention機(jī)制
BERT模型
GPT-2模型
一壮莹、大語(yǔ)言模型的定義
大語(yǔ)言模型指的是那些在大規(guī)模文本語(yǔ)料上訓(xùn)練评腺、包含百億級(jí)別(或更多)參數(shù)的語(yǔ)言模型,是一系列的人工智能模型,旨在理解和生成人類(lèi)語(yǔ)言侍瑟。它們?cè)诖罅康奈谋緮?shù)據(jù)上進(jìn)行訓(xùn)練,可以執(zhí)行廣泛的任務(wù),包括文本總結(jié)能曾、翻譯、情感分析等等肿轨。
LLM的特點(diǎn)是規(guī)模龐大寿冕,包含數(shù)十億的參數(shù),幫助它們學(xué)習(xí)語(yǔ)言數(shù)據(jù)中的復(fù)雜模式椒袍。這些模型通惩粘基于深度學(xué)習(xí)架構(gòu),如轉(zhuǎn)化器驹暑,這有助于它們?cè)诟鞣NNLP任務(wù)上取得令人印象深刻的表現(xiàn)曙蒸。
目前的大語(yǔ)言模型(如GPT和BERT)采用與小模型類(lèi)似的Transformer架構(gòu)和預(yù)訓(xùn)練目標(biāo)(如 Language Modeling)捌治,與小模型的主要區(qū)別在于增加模型大小、訓(xùn)練數(shù)據(jù)和計(jì)算資源纽窟。拿 GPT 來(lái)說(shuō)肖油,GPT 其實(shí)出現(xiàn)了好幾代,GPT-3 它有 45 tb 的訓(xùn)練數(shù)據(jù)臂港,整個(gè)維基百科里面的數(shù)據(jù)只相當(dāng)于他訓(xùn)練數(shù)據(jù)的 0. 6%森枪。
二、Transformer
首先介紹 Transformer 的整體結(jié)構(gòu)审孽,下圖是 Transformer 用于中英文翻譯的整體結(jié)構(gòu):
Encoder-Decoder框架——attention機(jī)制——Transformer——BERT/GPT
2.1 Encoder-Decoder(編碼-解碼)
Encoder:將可變長(zhǎng)度的輸入序列編碼成一個(gè)固定長(zhǎng)度的向量县袱;
Decoder:將固定長(zhǎng)度的向量解碼成一個(gè)可變長(zhǎng)度的輸出序列;
不同的任務(wù)可以選擇不同的編碼器和解碼器 (RNN佑力,CNN式散,LSTM,GRU)打颤。
2.11 簡(jiǎn)單回顧RNN
假設(shè)時(shí)刻t時(shí)暴拄,輸入為xt ,隱藏層狀態(tài)為ht 编饺,可以看到ht 與當(dāng)前輸入xt 和上一時(shí)刻的隱藏層狀態(tài)有關(guān)
2.12 編碼與解碼
通過(guò)RNN進(jìn)行編碼乖篷,t時(shí)刻的ht 可以表示為ht=f(ht-1,xt),在獲得各個(gè)時(shí)刻的隱藏狀態(tài)后,最終在T時(shí)刻透且,將信息匯總生成最后的語(yǔ)義編碼c
在解碼過(guò)程中同樣用RNN進(jìn)行解碼撕蔼,用st來(lái)表示隱藏層狀態(tài),可以看到隱藏層的狀態(tài)更新秽誊,不僅跟上一時(shí)刻的隱藏層輸出st-1和當(dāng)前時(shí)刻的輸入c有關(guān)鲸沮,還跟上一時(shí)刻的輸出yt-1有關(guān):
st=f(st-1,yt-1,c)
因此我們預(yù)測(cè)下一個(gè)輸出yt:p(yt|{y1,y2,...,yt-1},c)=g(st,y1,c) ,這里g函數(shù)一般為softmax函數(shù)锅论。
Encoder-Decoder結(jié)構(gòu)可以忽略傳統(tǒng)RNN模型對(duì)于語(yǔ)序的要求讼溺,但是也有局限性。最大的局限性就在于編碼和解碼之間的唯一聯(lián)系就是一個(gè)固定長(zhǎng)度的語(yǔ)義向量c棍厌。它能儲(chǔ)存的信息就是有限的肾胯,當(dāng)句子長(zhǎng)度不斷變長(zhǎng),由于后方的decoder網(wǎng)絡(luò)的所有信息都來(lái)自中間狀態(tài)耘纱,中間狀態(tài)需要表達(dá)的信息就越來(lái)越多敬肚。
2.2 Attention 機(jī)制
簡(jiǎn)單的說(shuō),模型在產(chǎn)生輸出的時(shí)候束析,需要讓其產(chǎn)生一個(gè)“注意力范圍”表示接下來(lái)輸出的時(shí)候要重點(diǎn)關(guān)注輸入序列中的哪些部分艳馒,然后根據(jù)關(guān)注的區(qū)域來(lái)產(chǎn)生下一個(gè)輸出,如此往復(fù)。模型的大概示意圖如下所示 :
對(duì)于Decoder的隱藏層弄慰,就變成了st=f(st-1,yt-1,ct)第美,其中ct指的是在t時(shí)刻encoder模塊的隱藏層ht加權(quán)平均的結(jié)果。
- Encoder網(wǎng)絡(luò)按照原來(lái)的方法計(jì)算出h1,h2,...ht
- 計(jì)算Decoder網(wǎng)絡(luò)陆爽,對(duì)于第k個(gè)輸出詞語(yǔ),計(jì)算出得到ck所需要的h1,h2,...ht的權(quán)重αk,由此得到ck
- 將sk-1,yk-1,ck帶入g(sk-1,yk-1,ck)得到sk,并帶入網(wǎng)絡(luò)得到輸出yk
- 重復(fù)直到網(wǎng)絡(luò)輸出<end>什往。
(如何計(jì)算權(quán)重:設(shè)計(jì)一個(gè)以si,hj為輸入的網(wǎng)絡(luò)用softmax算概率作為權(quán)重)
2.21 self-attention
Query、Value 慌闭、Key
attention函數(shù)可以理解為利用向量key和value將一次查詢(xún)進(jìn)行映射的過(guò)程别威。
做法:針對(duì)某query,計(jì)算所有key對(duì)query的點(diǎn)乘,為了減少方差驴剔,除以sqrt(dk)省古,并使用softmax歸一化該權(quán)重,最后和value點(diǎn)乘得到輸出丧失。由于每個(gè)輸出僅與所欲的輸入有關(guān)豺妓,所以我們可以并行計(jì)算多個(gè)查詢(xún)。多個(gè)query形成矩陣Q布讹,同時(shí)多個(gè)key和value形成矩陣K琳拭、V,因此attention函數(shù)的計(jì)算公式:
2.3 transformer模型
:輸入 + 中間部分(Multi-Head Attention + FeedForward + Add & Normalize)+ 輸出
2.31 輸入層
encoder的輸入層和decoder的輸入層是一樣的結(jié)構(gòu)炒事,都是token embedding(詞向量)+ positional embedding(位置向量)臀栈,得到最終的輸入向量蔫慧。(為什么要用位置向量:因?yàn)?Transformer 不采用 RNN 的結(jié)構(gòu)挠乳,而是使用全局信息,不能利用單詞的順序信息姑躲,而這部分信息對(duì)于 NLP 來(lái)說(shuō)非常重要睡扬。所以 Transformer 中使用位置 Embedding 保存單詞在序列中的相對(duì)或絕對(duì)位置。)token embedding 有很多種方式可以獲取黍析,例如可以采用 Word2Vec卖怜、Glove 等算法預(yù)訓(xùn)練得到,也可以在 Transformer 中訓(xùn)練得到阐枣。
2.32 Encoder
Multi-Head Attention
Add & Normalize
殘差連接就是將輸入向量加上輸出向量后傳給下一層马靠。例如:假設(shè)一個(gè)輸入向量x,經(jīng)過(guò)一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)蔼两,得到輸出向量f(x)甩鳄,即:x->f(x),這時(shí)加上殘差連接额划,相當(dāng)于在輸出向量中加入輸入向量妙啃,輸出結(jié)構(gòu)變?yōu)?em>f(x)+x。這樣就避免了梯度消失的問(wèn)題,因?yàn)閷?duì)x求偏導(dǎo)時(shí)揖赴,總會(huì)有一個(gè)常數(shù)項(xiàng)1馆匿。
因此,Add & Normalize層的實(shí)質(zhì)是燥滑,輸出向量經(jīng)過(guò)殘差連接與輸入向量相加然后通過(guò)LayerNorm進(jìn)行歸一化渐北,將最后結(jié)果向量傳給下一層。
Feed Forward
是一個(gè)兩層的全連接層铭拧,第一層的激活函數(shù)為 Relu腔稀,第二層不使用激活函數(shù)。
通過(guò)上面描述的 Multi-Head Attention, Feed Forward, Add & Norm 就可以構(gòu)造出一個(gè) Encoder block羽历,通過(guò)多個(gè) Encoder block 疊加就可以組成 Encoder焊虏。
第一個(gè) Encoder block 的輸入為句子單詞的表示向量矩陣,后續(xù) Encoder block 的輸入是前一個(gè) Encoder block 的輸出秕磷,最后一個(gè) Encoder block 輸出的矩陣就是編碼信息矩陣 C诵闭,這一矩陣后續(xù)會(huì)用到 Decoder 中。
2.34 Decoder
與 Encoder block 相似澎嚣,但是存在一些區(qū)別:包含兩個(gè) Multi-Head Attention 層疏尿。
- 第一個(gè) Multi-Head Attention 層采用了 Masked 操作。
- 第二個(gè) Multi-Head Attention 層的K, V矩陣使用 Encoder 的編碼信息矩陣C進(jìn)行計(jì)算易桃,而Q使用上一個(gè) Decoder block 的輸出計(jì)算褥琐。
最后有一個(gè) Softmax 層計(jì)算下一個(gè)翻譯單詞的概率。
流程總結(jié):
- encoder層
- 每個(gè)詞向量(token embedding)? 對(duì)應(yīng)的位置向量(positional embedding)=> 每個(gè)詞的輸入向量x
- 輸入向量通過(guò)多頭自注意力機(jī)制(Multi-Head Attention)得到的向量與輸入向量進(jìn)行殘差連接與歸一化(Add & Normalize)向量向量
- 將歸一化得到的每個(gè)詞的向量繼續(xù)做前向神經(jīng)網(wǎng)絡(luò)(Feed Forward)
- 最后再進(jìn)行一次殘差連接與歸一化(Add & Normalize)
此時(shí)一層encoder層結(jié)束晤郑,將得到的結(jié)果向量當(dāng)成輸入向量繼續(xù)傳給第二層的encoder敌呈,依次傳遞計(jì)算,直到6層encoder計(jì)算結(jié)束造寝,將最后結(jié)果向量保留磕洪,之后會(huì)傳給decoder層計(jì)算。
- decoder層
- 當(dāng)前詞及之前詞的詞向量(token embedding)? 對(duì)應(yīng)的位置向量(positional embedding)=> 當(dāng)前詞及之前詞的輸入向量x
- 輸入向量x同樣經(jīng)過(guò)mask的多頭自注意力機(jī)制(Multi-Head Attention)處理和殘差連接與歸一化
- 對(duì)歸一化的輸出繼續(xù)進(jìn)行Attention處理诫龙,這層的k析显、v是來(lái)自于encoder層的結(jié)果,而q是本身上一層的結(jié)果
- 接下來(lái)幾步和上面encoder的步驟是一樣的签赃,最后得到結(jié)果向量谷异,作為decoder第二層的輸入向量。然后依次進(jìn)行以上步驟锦聊,直到6層decoder全部計(jì)算結(jié)束歹嘹。
3.linear和softmax輸出