ChatGPT原理理解和結(jié)構(gòu)解讀

〖前言〗問(wèn)了200+個(gè)問(wèn)題后,終于完全搭建起來(lái)對(duì)Chat@GPT本身的原理理解和結(jié)構(gòu)了解,形成的理解文件90%的內(nèi)容都是他生成的。但是結(jié)構(gòu)化這篇文章以及深入時(shí)刻,是自己完成的。今后的學(xué)習(xí)和工作可能都需要和他來(lái)共同完成了。

1 從概率角度理解生成式模型原理

1.1 總體理解

?? GPT(Generative Pre-trained Transformer)是一種基于Transformer結(jié)構(gòu)的自然語(yǔ)言處理模型,可以用于生成各種文本,如對(duì)話、文章等。它是通過(guò)預(yù)訓(xùn)練來(lái)學(xué)習(xí)語(yǔ)言模型,然后在特定任務(wù)上微調(diào)以獲取更好的性能。在預(yù)訓(xùn)練階段,模型使用無(wú)標(biāo)注的大量文本數(shù)據(jù)來(lái)學(xué)習(xí)單詞之間的相互關(guān)系和語(yǔ)言規(guī)律,從而能夠生成新的文本。

??生成結(jié)果是根據(jù)輸入序列上下文和之前學(xué)習(xí)到的語(yǔ)義信息生成的。

??在訓(xùn)練時(shí),GPT 模型使用了大量的語(yǔ)料庫(kù)進(jìn)行訓(xùn)練,因此它在全局上學(xué)習(xí)到了單詞之間的相互作用(可以被看作是單詞間排列順序的條件概率)和語(yǔ)義信息(單詞的相似性,關(guān)聯(lián)程度)。在生成輸出序列時(shí),模型可以利用之前學(xué)習(xí)到的語(yǔ)義信息(先驗(yàn)分布)和輸入序列的上下文(參數(shù),構(gòu)成似然函數(shù)),生成合理的輸出序列。文章分為四章。第一章先從概率的角度,從數(shù)學(xué)上來(lái)理解其原理。第二章從具體的技術(shù)以及處理邏輯進(jìn)行說(shuō)明。前兩章都分為訓(xùn)練模型和生成文本兩個(gè)過(guò)程來(lái)說(shuō)的。第三章從模型結(jié)構(gòu)的四個(gè)類別層描述起功能和數(shù)據(jù)處理方式。第四章對(duì)于一些重要的框架和機(jī)制做了描述。

1.2 從條件概率來(lái)理解學(xué)習(xí)過(guò)程

??可以從條件概率角度來(lái)理解這個(gè)學(xué)習(xí)過(guò)程。具體來(lái)說(shuō),對(duì)于一個(gè)給定的句子S,我們可以計(jì)算它的條件概率p(S),
p(S)= p(w_1 )×p(w_2∣w_1 )×p(w_3∣w_{1:2} )×… ×p(w_n∣w_{1:n-1} )
??其中 w1, w2, ..., wn 表示句子中的單詞或者片段。在訓(xùn)練過(guò)程中,我們可以通過(guò)最大化句子的條件概率來(lái)學(xué)習(xí)模型參數(shù)。一個(gè)句子的存在的概率就是就是排在后面的單詞和它前面片段結(jié)合的條件概率。

??在訓(xùn)練時(shí),GPT 模型的目標(biāo)是最大化訓(xùn)練集中所有輸出序列的似然函數(shù),即最大化,\prod_{i=1}^{N} p(w_i \mid q_i),其中 N 是訓(xùn)練集中的樣本數(shù)量。這可以看做是最大化似然函數(shù)的形式。
在訓(xùn)練時(shí),GPT 模型會(huì)學(xué)習(xí)到單詞之間的相互作用和語(yǔ)義信息,將這些信息編碼到模型參數(shù)中,從而得到了當(dāng)前這個(gè)句子中構(gòu)成單詞的分布。

1.3 從貝葉斯公式理解文本生成過(guò)

??在生成文本時(shí),我們可以利用預(yù)訓(xùn)練語(yǔ)言模型中的條件概率分布來(lái)生成下一個(gè)單詞,這個(gè)條件概率分布可以認(rèn)為是先驗(yàn)分布。另外,我們可以將生成文本的詞語(yǔ)排布看作是似然函數(shù),利用生成模型中的聯(lián)合概率分布來(lái)計(jì)算生成的新文本的似然函數(shù)。
??GPT模型可以理解為求解條件概率P(θ|x),其中X是輸入序列,θ是輸出序列。使用貝葉斯公式可以將該條件概率展開(kāi)成為似然函數(shù)×先驗(yàn)分布的乘積除以一個(gè)邊緣分布。在GPT模型中,先驗(yàn)分布通常是均勻分布,邊緣分布可以理解為所有可能輸出序列的概率分布。因此,GPT模型的生成過(guò)程就是通過(guò)最大化似然函數(shù)來(lái)擬合條件概率的右側(cè)部分,從而找出片段后(局部)最大概率。即給定輸入序列,理解輸出序列的概率分布。
π(θ|x)=\frac{L(x|θ)π(θ)}{\int_Θ L(x|θ)π(θ) dθ}=\frac{L(x|θ)π(θ)}{π(x)}
??在這里,似然函數(shù)可以理解為句子中片段出現(xiàn)概率的乘積,先驗(yàn)分布一般可以選擇均勻分布。
??可以從貝葉斯公式的角度來(lái)理解這個(gè)學(xué)習(xí)過(guò)程。在這里,似然函數(shù)可以理解為句子中片段出現(xiàn)概率的乘積,先驗(yàn)分布一般可以去均勻分布。具體來(lái)說(shuō),對(duì)于一個(gè)給定的句子 S,我們可以計(jì)算它的條件概率 p(S),即 p(S) = p(w_1) \times p(w_2 \mid w_1) \times p(w_3 \mid w_{1:2}) \times ... \times p(w_n \mid w_{1:n-1})
??其中 w_1, w_2, ..., w_n 表示句子中的單詞或者片段。在訓(xùn)練過(guò)程中,我們可以通過(guò)最大化句子的條件概率來(lái)學(xué)習(xí)模型參數(shù)可以從貝葉斯公式的角度來(lái)理解。在訓(xùn)練時(shí),GPT 模型使用了大量的語(yǔ)料庫(kù)進(jìn)行訓(xùn)練,學(xué)習(xí)到了單詞之間的相互作用和語(yǔ)義信息,這可以看做學(xué)習(xí)到了先驗(yàn)分布 p(w)。在生成輸出序列時(shí),模型會(huì)根據(jù)輸入序列的上下文和之前學(xué)習(xí)到的語(yǔ)義信息,計(jì)算條件概率 p(w_i \mid w_{<i}),這可以看做計(jì)算了后驗(yàn)概率 p(w_i \mid w_{<i})=\frac{p(w_i, w_{<i})}{p(w_{<i})},其中 p(w_i, w_{<i}) 是先驗(yàn)概率 p(w) 和條件概率 p(w_i \mid w_{<i}) 的乘積,p(w_{<i}) 是歸一化因子。因此,GPT 模型可以看做是在訓(xùn)練時(shí)學(xué)習(xí)到了先驗(yàn)概率,而在生成輸出時(shí)計(jì)算了后驗(yàn)概率。
??X是一個(gè)由多個(gè)句子的token構(gòu)成的序列,而θ是由模型生成的token構(gòu)成的文本序列。 可以將根據(jù)輸入的問(wèn)題進(jìn)行訓(xùn)練看做構(gòu)成似然函數(shù)。具體來(lái)說(shuō),假設(shè)輸入的問(wèn)題是 q,則可以將模型生成的輸出序列 w 的概率 p(w \mid q) 看做似然函數(shù)。
??在生成輸出序列時(shí),模型會(huì)根據(jù)輸入序列的上下文和之前學(xué)習(xí)到的語(yǔ)義信息,計(jì)算條件概率 p(w_i \mid w_{<i}),從而生成合理的輸出序列。

1.4 利用條件概率生成輸出

??輸出是一個(gè)分類函數(shù),但是它的輸出不是通過(guò)softmax函數(shù)進(jìn)行歸一化的,而是通過(guò)一個(gè)線性變換來(lái)得到的。這個(gè)線性變換的權(quán)重矩陣是模型訓(xùn)練過(guò)程中學(xué)習(xí)到的。
??在生成輸出序列時(shí),模型會(huì)利用之前學(xué)習(xí)到的語(yǔ)義信息和輸入序列的上下文,計(jì)算條件概率 p(w_i \mid w_{<i}),從而生成下一個(gè)單詞。之前生成的單詞是指前面已經(jīng)生成的單詞。通過(guò)不斷生成下一個(gè)單詞,就可以構(gòu)成一個(gè)完整的句子。在這個(gè)過(guò)程中,模型會(huì)根據(jù)生成的單詞和輸入序列的上下文,計(jì)算出每個(gè)單詞作為下一個(gè)單詞的概率,然后按照這些概率進(jìn)行采樣來(lái)生成下一個(gè)單詞。最終,生成的輸出序列可以看做是在當(dāng)前這個(gè)中構(gòu)成單詞的分布下,根據(jù)輸入序列的上下文和之前生成的單詞生成的。
??具體來(lái)說(shuō),GPT 模型使用條件概率 p(w_i \mid w_{<i}) 來(lái)計(jì)算給定輸入序列中位置 i處的單詞 wi的概率,其中w<i 表示輸入序列中位置 1 到位置i-1 處的單詞組成的序列。
??在生成輸出序列時(shí),模型會(huì)根據(jù)之前生成的單詞和輸入序列的上下文,利用條件概率 p(w_i \mid w_{<i}) 生成下一個(gè)單詞。p(w_i \mid w_{<i})=\prod_{j=1}^{i-1} p(w_i \mid w_j)
??而不是根據(jù)問(wèn)題中的所有 token 在條件句子中形成的聯(lián)合分布得到的最大概率。因此,在生成輸出結(jié)果時(shí),模型并沒(méi)有直接利用條件句子中所有 token 在全部語(yǔ)料中形成的聯(lián)合分布。
??GPT模型可以理解為求解條件概率π(θ|x),其中x是輸入序列,θ是輸出序列。x是一個(gè)句子中的 token 轉(zhuǎn)換為為詞向量后,按照句子中詞的順序構(gòu)成的一個(gè)矩陣,θ是對(duì)這個(gè)句子輸出的內(nèi)容。求解過(guò)程并不是直接條件概率的映射進(jìn)行擬合(這種方式是判別式模型),而是要使用bayes定理進(jìn)行展開(kāi),通過(guò)擬合公式的右邊部分來(lái)計(jì)算條件概率。對(duì)于這個(gè)內(nèi)容,按照貝葉斯公式來(lái)理解其中的數(shù)學(xué)原理,進(jìn)而得到GPT模型運(yùn)行的基本邏輯。
??在 GPT 模型中,輸入序列 x是一個(gè)由詞向量組成的矩陣,每個(gè)詞向量代表輸入序列中的一個(gè)單詞。GPT 模型在進(jìn)行訓(xùn)練時(shí),通過(guò)最大化訓(xùn)練語(yǔ)料庫(kù)中所有單詞的聯(lián)合概率 p(w_i \mid w_{<i})=\prod_{j=1}^{i-1} p(w_i \mid w_j)來(lái)擬合參數(shù)θ,其中wt 表示輸入序列中第 t個(gè)位置的單詞, w<t 表示輸入序列中第 1個(gè)位置到第 t-1個(gè)位置的單詞組成的序列。
??GPT 模型是一個(gè)生成式語(yǔ)言模型(Generative Language Model),其目標(biāo)是對(duì)語(yǔ)言進(jìn)行建模,即對(duì)給定的輸入序列(通常是一個(gè)句子)生成對(duì)應(yīng)的輸出序列(即該句子的下一個(gè)詞)。GPT 模型的參數(shù) θ 是一個(gè)包含多個(gè)層和神經(jīng)元的深度神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)通過(guò)最大化訓(xùn)練數(shù)據(jù)集中所有單詞的聯(lián)合概率來(lái)進(jìn)行訓(xùn)練。
??因此,GPT 模型的目標(biāo)是對(duì)給定的輸入序列生成對(duì)應(yīng)的輸出序列,而不是對(duì)給定的輸入序列和輸出序列進(jìn)行條件概率的計(jì)算。因此,GPT 模型不涉及到條件概率 \pi(\theta \mid x) 的計(jì)算,也不需要使用貝葉斯定理對(duì)條件概率進(jìn)行展開(kāi)。
??可以這樣理解,一個(gè)句子的存在概率是指在已知前面的單詞序列的情況下,下一個(gè)單詞出現(xiàn)的概率。這個(gè)概率可以通過(guò)條件概率來(lái)計(jì)算,即給定前面的單詞序列,計(jì)算下一個(gè)單詞出現(xiàn)的概率。這個(gè)概率可以被看作是一個(gè)句子的存在概率,因?yàn)樗硎玖嗽谝阎懊娴膯卧~的情況下,下一個(gè)單詞出現(xiàn)的可能性。
??在GPT模型中,先驗(yàn)分布π(θ)通常是均勻分布,邊緣分布可以理解為所有可能輸出序列的概率分布。因此,GPT模型的訓(xùn)練過(guò)程就是通過(guò)最大化似然函數(shù)L(x|θ)來(lái)擬合條件概率的右側(cè)部分,既后驗(yàn)分布π(θ|x)。即給定輸入序列,輸出后驗(yàn)分布中,概率最大的那一個(gè)分布。
??在實(shí)際計(jì)算中,邊緣分布通??梢院雎?,只需要計(jì)算似然函數(shù)即可。對(duì)于一個(gè)給定的輸入序列x,模型的輸出序列θ的概率可以表示為P(θ|x) ,而在計(jì)算時(shí),只需要計(jì)算每個(gè)θ的概率,然后排序選擇概率最大的θ即可。

2 GPT模型訓(xùn)練和生成過(guò)程

2.1 預(yù)訓(xùn)練模型(無(wú)監(jiān)督學(xué)習(xí))

??在訓(xùn)練過(guò)程中,前向傳播和反向傳播是交替進(jìn)行的。每個(gè)神經(jīng)元和注意力頭組成的單元中會(huì)同時(shí)進(jìn)行前向傳播和反向傳播。在前向傳播中,模型將輸入傳遞到輸出層中,得到一個(gè)預(yù)測(cè)結(jié)果。在反向傳播中,模型根據(jù)預(yù)測(cè)結(jié)果和真實(shí)結(jié)果之間的誤差來(lái)更新模型參數(shù),以使得預(yù)測(cè)結(jié)果更加接近真實(shí)結(jié)果
??在訓(xùn)練時(shí),GPT 模型一次只對(duì)一個(gè)句子進(jìn)行訓(xùn)練,但是它使用了大量的語(yǔ)料庫(kù)進(jìn)行訓(xùn)練,因此在全局上可以理解語(yǔ)義。在訓(xùn)練時(shí),GPT 模型通過(guò)學(xué)習(xí)語(yǔ)料庫(kù)中單詞之間的相互作用來(lái)捕捉語(yǔ)義信息,并將這些信息編碼到模型參數(shù)中。在生成輸出序列時(shí),模型可以利用之前學(xué)習(xí)到的語(yǔ)義信息,結(jié)合輸入序列上下文,生成合理的輸出序列。

2.1.1 語(yǔ)言模型參數(shù)、神經(jīng)網(wǎng)絡(luò)不同類型層的作用

??定義語(yǔ)言模型的參數(shù) θ,包括詞向量、全連接層的權(quán)重和偏置等。假設(shè)我們使用的是一個(gè)基于神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型,那么我們需要定義網(wǎng)絡(luò)的結(jié)構(gòu),包括輸入層、隱含層和輸出層。輸入層接收一個(gè)單詞序列,隱含層對(duì)輸入的單詞序列進(jìn)行特征提取,輸出層計(jì)算每個(gè)單詞的條件概率。每個(gè)輸入的 token 對(duì)應(yīng)輸入層中的一個(gè)神經(jīng)元.

2.1.2 分詞、詞向量、片段、詞向量空間

從大量的語(yǔ)料庫(kù)中獲取句子,將每個(gè)句子拆分成單詞,并將每個(gè)單詞編碼成一個(gè)向量。這些向量可以通過(guò)訓(xùn)練來(lái)得到。常用的編碼方法包括詞袋模型、TF-IDF 模型和詞向量模型等。對(duì)于每個(gè)句子,將它拆分成多個(gè)片段,每個(gè)片段包含前面的若干個(gè)單詞和下一個(gè)單詞。

2.1.2.1 Token

??“春天的原野上,到處一片生機(jī)勃勃,百花盛開(kāi),其中最美麗、最耀眼的當(dāng)然是牡丹”。 分詞后的結(jié)果可能是:春天/原野/生機(jī)勃勃/百花盛開(kāi)/美麗/耀眼/牡丹。去掉停用詞后,輸入的 token 可以是:春天、原野、生機(jī)勃勃、百花盛開(kāi)、美麗、耀眼、牡丹??梢詫⑦@句話劃分為以下片段:春天的原野上、到處一片生機(jī)勃勃、百花盛開(kāi)、其中最美麗、最耀眼的、當(dāng)然是牡丹。自注意力機(jī)制可以發(fā)現(xiàn)一個(gè)句子中各個(gè)單詞的相對(duì)重要性,包括片段中各個(gè)單詞的相對(duì)重要性。
??Tokens 在這里指的是單詞或者片段,具體使用哪種方式取決于具體的訓(xùn)練方法和模型結(jié)構(gòu)。

2.1.2.2 位置信息

??單詞的位置信息是通過(guò)位置編碼來(lái)表示的。位置編碼是一種將位置信息嵌入到詞向量中的方法,可以幫助模型更好地理解單詞之間的位置關(guān)系。具體來(lái)說(shuō),對(duì)于一個(gè)單詞在句子中的位置 i,它的位置編碼是一個(gè) d 維向量,可以表示為\text{PE}(i, j) = \text{sin}(i/10000^{2j/d})PE(i,j)=sin(i/100002j/d)或者\text{PE}(i, j) = \text{cos}(i/10000^{2j/d})PE(i,j)=cos(i/100002j/d),其中 j表示位置編碼的維度。

2.1.2.3 詞向量

??通過(guò)自監(jiān)督學(xué)習(xí)的方式嵌入到詞向量空間中的。具體地,模型通過(guò)預(yù)測(cè)輸入序列中缺失的詞語(yǔ)來(lái)學(xué)習(xí)到每個(gè)詞語(yǔ)的嵌入向量,這個(gè)過(guò)程中,模型會(huì)將每個(gè)詞語(yǔ)的嵌入向量調(diào)整到和上下文語(yǔ)境相適應(yīng)的位置,從而形成了一個(gè)具有語(yǔ)義信息的詞向量空間。在ChatGPT中,詞向量空間是一個(gè)768維的空間,每個(gè)詞語(yǔ)都可以在這個(gè)空間中表示為一個(gè)768維的向量。
??詞向量是一種將自然語(yǔ)言中的詞匯轉(zhuǎn)化為向量表示的技術(shù)。詞向量可以將詞匯的語(yǔ)義信息編碼為向量空間中的向量,使得在向量空間中相似的詞匯在向量上也更加接近。而詞向量空間則是指這些詞向量所組成的向量空間,它可以被看作是一個(gè)高維的向量空間,其中每個(gè)維度都對(duì)應(yīng)著一個(gè)語(yǔ)義特征。通過(guò)將詞匯映射到這個(gè)向量空間中,可以更好地描述詞匯之間的語(yǔ)義關(guān)系。
??詞向量通常是將單詞映射到連續(xù)的向量空間中,這個(gè)映射過(guò)程可以通過(guò)神經(jīng)網(wǎng)絡(luò)模型中的嵌入層(embedding layer)來(lái)實(shí)現(xiàn)。在嵌入層中,每個(gè)單詞都會(huì)被映射成一個(gè)向量,這個(gè)向量通常包含多個(gè)維度,每個(gè)維度代表一個(gè)語(yǔ)義特征。在詞向量空間中,每個(gè)單詞都對(duì)應(yīng)著一個(gè)向量,這個(gè)向量可以被看作是這個(gè)單詞在向量空間中的位置。在向量空間中,相似的單詞會(huì)比較接近,而不相似的單詞會(huì)比較遠(yuǎn)。

2.1.2.4 詞向量空間

??可以被用于很多自然語(yǔ)言處理任務(wù),如文本分類、信息檢索、機(jī)器翻譯等。在這些任務(wù)中,我們通常需要比較不同的文本或單詞之間的相似度,以便進(jìn)行分類、聚類、匹配等操作。通過(guò)將文本或單詞映射到向量空間中,可以將文本或單詞的語(yǔ)義信息編碼為向量表示,從而更好地描述它們之間的相似度和差異性。因此,詞向量空間可以被看作是自然語(yǔ)言處理中一種非常重要的工具和技術(shù)。
??舉個(gè)例子來(lái)說(shuō),假設(shè)我們有一個(gè)句子:“I love machine learning”。我們可以利用詞向量技術(shù)將這個(gè)句子中的每個(gè)單詞都轉(zhuǎn)化為一個(gè)向量表示,從而得到一個(gè)詞向量序列。這個(gè)詞向量序列可以被看作是一組向量,其中每個(gè)向量都代表了一個(gè)單詞在向量空間中的位置。
??例如,我們可以使用GloVe算法預(yù)訓(xùn)練出一個(gè)詞向量空間,其中每個(gè)單詞都被映射為一個(gè)300維的向量。我們可以將"I"、"love"、"machine"和"learning"這四個(gè)單詞分別映射為四個(gè)向量,然后將它們組合成一個(gè)詞向量序列。這個(gè)詞向量序列可以被看作是一組在300維向量空間中的點(diǎn),其中每個(gè)點(diǎn)都代表了一個(gè)單詞在向量空間中的位置。
??在這個(gè)向量空間中,我們可以使用余弦相似度等方法來(lái)計(jì)算不同單詞之間的相似度和距離。例如,我們可以計(jì)算"machine"和"learning"兩個(gè)單詞在向量空間中的余弦相似度,以衡量它們之間的語(yǔ)義相似度。這樣,我們就可以利用詞向量空間來(lái)計(jì)算不同單詞之間的相似度和距離,從而更好地描述它們之間的語(yǔ)義關(guān)系。
??詞向量空間和數(shù)學(xué)上的向量空間在一定程度上是相似的,都具有向量的加法、標(biāo)量乘法等基本運(yùn)算規(guī)則。
??具體來(lái)說(shuō),詞向量空間中的向量可以被看作是由一組數(shù)值所組成的元素,這些數(shù)值對(duì)應(yīng)著向量空間中的不同維度。這些向量可以進(jìn)行加法、標(biāo)量乘法等基本運(yùn)算,且滿足向量空間的8條運(yùn)算規(guī)則,如加法結(jié)合律、加法交換律、標(biāo)量乘法分配律等。
??但與數(shù)學(xué)上的向量空間不同的是,詞向量空間是一種非常高維度的向量空間,其中每個(gè)維度對(duì)應(yīng)著一個(gè)語(yǔ)義特征。這些語(yǔ)義特征的意義通常是由模型自動(dòng)學(xué)習(xí)得到的,而不是人為定義的。因此,詞向量空間中的向量在表示語(yǔ)義信息方面具有很大的優(yōu)勢(shì),可以被廣泛應(yīng)用于自然語(yǔ)言處理任務(wù)中。事實(shí)上,這里的詞向量空間如果做一個(gè)類比,但是符合歐幾里得空間的規(guī)則。

2.1.3 片段通過(guò)自注意力機(jī)制求條件概率

??對(duì)于每個(gè)句子,將它拆分成多個(gè)片段,每個(gè)片段包含前面的若干個(gè)單詞和下一個(gè)單詞。例如,對(duì)于句子 "I love natural language processing.",可以將它拆分成多個(gè)片段,例如 "I love natural", "love natural language",等等。這些片段可以看做是條件概率p(w_i \mid w_{<i}) 的樣本。
??在語(yǔ)料訓(xùn)練模型時(shí),輸出層計(jì)算每個(gè)單詞的條件概率,一般服從 softmax 分布。具體來(lái)說(shuō),對(duì)于一個(gè)給定的輸入序列 p(w_i \mid w_{<i}),輸出層會(huì)計(jì)算每個(gè)單詞 wn 作為下一個(gè)單詞的概率分布p(w_n \mid w_{1:n-1}),然后根據(jù)這個(gè)概率分布進(jìn)行采樣。
??輸入層輸入的是片段,而不是單詞,每個(gè)片段對(duì)應(yīng)一個(gè)輸入層的神經(jīng)元。片段是由若干個(gè)單詞組成的,通過(guò)這種方式,模型可以更好地捕捉上下文信息,并得到更準(zhǔn)確的條件概率。
??片段的條件概率是通過(guò)自注意力機(jī)制計(jì)算得到的。具體來(lái)說(shuō),對(duì)于一個(gè)片段 i,模型會(huì)將它的前面若干個(gè)單詞輸入到自注意力機(jī)制中,通過(guò)自注意力機(jī)制計(jì)算出單詞之間的相關(guān)性和相對(duì)重要性,然后將這些信息傳遞給輸出層,計(jì)算片段的條件概率。
??通過(guò)“片段”求條件概率,并使用自注意力機(jī)制算出了句子中單詞之間的相關(guān)性和相對(duì)重要性。片段是一種將輸入序列拆分成多個(gè)片段的方法,通過(guò)這種方法,模型可以更好地捕捉上下文信息,并得到更準(zhǔn)確的條件概率。自注意力機(jī)制和片段的條件概率是密切相關(guān)的,片段的條件概率是通過(guò)自注意力機(jī)制計(jì)算得到的,自注意力機(jī)制可以幫助模型學(xué)習(xí)單詞之間的相互作用和重要性。

2.1.4 使用拆分好的片段訓(xùn)練模型

??具體來(lái)說(shuō),對(duì)于每個(gè)片段 i,模型的目標(biāo)是最大化條件概率 p(w_i \mid w_{<i}) ,即最大化 logp(w_i \mid w_{<i})。這可以通過(guò)交叉熵?fù)p失函數(shù)來(lái)實(shí)現(xiàn)。在訓(xùn)練時(shí),模型會(huì)根據(jù)條件概率的定義,將 w_{<i}輸入到模型中,然后輸出下一個(gè)單詞 wi 的概率分布。模型的目標(biāo)是讓這個(gè)概率分布盡可能接近真實(shí)的下一個(gè)單詞的分布。具體來(lái)說(shuō),我們可以使用反向傳播算法來(lái)更新模型的參數(shù),使得模型的預(yù)測(cè)結(jié)果和真實(shí)結(jié)果之間的誤差最小。
??使用拆分好的片段訓(xùn)練模型和 BERT 中的遮蔽方法相似。具體來(lái)說(shuō),對(duì)于每個(gè)片段 i,我們將它的最后一個(gè)單詞作為輸出,并將前面的單詞作為輸入。這樣,模型就可以預(yù)測(cè)下一個(gè)單詞的概率分布。
??對(duì)于每個(gè)片段,模型會(huì)計(jì)算它作為下一個(gè)片段的條件概率。具體來(lái)說(shuō),模型會(huì)將每個(gè)片段的前面若干個(gè)片段輸入到自注意力機(jī)制中,通過(guò)自注意力機(jī)制計(jì)算片段之間的相關(guān)性和相對(duì)重要性,然后將這些信息傳遞給輸出層,計(jì)算片段的條件概率。
??在語(yǔ)料訓(xùn)練模型時(shí),輸出層計(jì)算每個(gè)單詞的條件概率,一般服從 softmax 分布。具體來(lái)說(shuō),對(duì)于一個(gè)給定的輸入序列 w_{1:n-1},輸出層會(huì)計(jì)算每個(gè)單詞 w_n作為下一個(gè)單詞的概率分布 p(w_n \mid w_{1:n-1}),然后根據(jù)這個(gè)概率分布進(jìn)行采樣。
??學(xué)習(xí)到的是每個(gè)單詞作為下一個(gè)單詞的條件概率,所有句子的條件概率在全局上是將每個(gè)單詞作為下一個(gè)單詞的條件概率相乘得到的

2.1.5 語(yǔ)料庫(kù)中單詞分布

??通過(guò)大量的訓(xùn)練樣本,模型逐漸學(xué)習(xí)到了單詞之間的相互作用和語(yǔ)義信息,從而得到了一個(gè)在當(dāng)前語(yǔ)料庫(kù)中構(gòu)成單詞的分布。如果需要用到新的語(yǔ)料庫(kù)進(jìn)行訓(xùn)練,需要重新從步驟 2 開(kāi)始進(jìn)行。
??通過(guò)大量的訓(xùn)練樣本,得到了一個(gè)在當(dāng)前語(yǔ)料庫(kù)中構(gòu)成單詞的分布,其一般服從多項(xiàng)式分布。具體來(lái)說(shuō),對(duì)于一個(gè)長(zhǎng)度為 n 的句子,其構(gòu)成單詞的分布可以看做是一個(gè) n 元多項(xiàng)式分布,其中每個(gè)元素表示一個(gè)單詞,每個(gè)元素的取值表示該單詞在句子中出現(xiàn)的次數(shù)。
??多項(xiàng)式分布是一種概率分布,用來(lái)描述在一次試驗(yàn)中,每個(gè)可能的結(jié)果出現(xiàn)的次數(shù)的概率分布。在自然語(yǔ)言處理中,可以將一個(gè)句子看作一個(gè)多項(xiàng)式分布,其中每個(gè)元素表示一個(gè)單詞,每個(gè)元素的取值表示該單詞在句子中出現(xiàn)的次數(shù)。
??對(duì)于一個(gè)語(yǔ)料庫(kù)中的所有句子,可以將它們看作是一個(gè)大的組合分布。具體來(lái)說(shuō),每個(gè)句子可以看作是一個(gè)多項(xiàng)式分布,其中每個(gè)元素表示一個(gè)單詞或者片段,每個(gè)元素的取值表示該單詞或者片段在句子中出現(xiàn)的次數(shù)。所有句子的條件概率在全局上可以通過(guò)將每個(gè)句子的條件概率相乘得到,即p(w_1, w_2, ..., w_n) = \prod_{i=1}^n p(w_i \mid w_{1:i-1})p(w1,w2,...,wn)= \prod_i1np(w_i∣w_{1:i?1}),其中w_1, w_2, ..., w_n表示所有句子中的單詞或者片段。
??學(xué)習(xí)到的單詞語(yǔ)義信息是指模型通過(guò)訓(xùn)練學(xué)習(xí)到了單詞之間的相互關(guān)系和語(yǔ)義信息。例如,模型可以學(xué)習(xí)到"dog"和"cat"這兩個(gè)單詞之間有一定的相似性,因?yàn)樗鼈兺ǔ6加脕?lái)描述寵物。

2.2 微調(diào)模型(有監(jiān)督學(xué)習(xí))

??微調(diào)模型則是將預(yù)訓(xùn)練模型進(jìn)一步調(diào)整,使其適應(yīng)某個(gè)特定的自然語(yǔ)言生成任務(wù),如機(jī)器翻譯、對(duì)話生成等。在這個(gè)階段,會(huì)使用帶標(biāo)簽的數(shù)據(jù)來(lái)微調(diào)模型參數(shù),這個(gè)過(guò)程是有監(jiān)督學(xué)習(xí)。
??在已經(jīng)訓(xùn)練好的LLM模型基礎(chǔ)上,使用特定領(lǐng)域的數(shù)據(jù)對(duì)模型進(jìn)行調(diào)整,以適應(yīng)特定領(lǐng)域的語(yǔ)言和知識(shí)。微調(diào)的結(jié)果是一個(gè)在特定領(lǐng)域數(shù)據(jù)上進(jìn)行優(yōu)化過(guò)的模型。微調(diào)通常使用現(xiàn)有深度學(xué)習(xí)框架,如TensorFlow、PyTorch等來(lái)實(shí)現(xiàn)。

2.2.1 基本策略

??ChatGPT模型和微調(diào)模型使用的都是基于Transformer的神經(jīng)網(wǎng)絡(luò)模型,但是微調(diào)模型會(huì)在預(yù)訓(xùn)練模型的基礎(chǔ)上進(jìn)行進(jìn)一步的修改和調(diào)整,以適應(yīng)具體任務(wù)的需求。
??二者的計(jì)算策略類似,都是采用反向傳播算法進(jìn)行梯度下降優(yōu)化,目標(biāo)是最小化損失函數(shù)。但微調(diào)模型中的損失函數(shù)會(huì)針對(duì)具體任務(wù)進(jìn)行設(shè)計(jì),與預(yù)訓(xùn)練模型的損失函數(shù)可能不同。
??二者算法的具體差異在于目標(biāo)函數(shù)的設(shè)計(jì)。預(yù)訓(xùn)練模型中的目標(biāo)函數(shù)通常是固定的,如語(yǔ)言模型的目標(biāo)函數(shù)可以是最大化預(yù)測(cè)下一個(gè)詞的概率。而微調(diào)模型中的目標(biāo)函數(shù)會(huì)根據(jù)具體任務(wù)進(jìn)行設(shè)計(jì),如在對(duì)話生成任務(wù)中可以采用交叉熵?fù)p失函數(shù)。
??二者處理數(shù)據(jù)過(guò)程的異同,在預(yù)訓(xùn)練模型中,數(shù)據(jù)通常是無(wú)標(biāo)簽的,因此只需要進(jìn)行簡(jiǎn)單的預(yù)處理即可。而在微調(diào)模型中,數(shù)據(jù)通常是帶標(biāo)簽的,需要進(jìn)行更復(fù)雜的數(shù)據(jù)預(yù)處理和標(biāo)注,以便用于模型的訓(xùn)練和評(píng)估。此外,在微調(diào)模型中,通常需要對(duì)數(shù)據(jù)進(jìn)行分批次訓(xùn)練,以便于加速計(jì)算和優(yōu)化模型的訓(xùn)練效果。
??在微調(diào)ChatGPT模型時(shí),使用的成本函數(shù)或風(fēng)險(xiǎn)函數(shù)通常是根據(jù)具體任務(wù)而定的。例如,在對(duì)話生成任務(wù)中,可以采用交叉熵?fù)p失函數(shù)作為成本函數(shù),來(lái)衡量生成的對(duì)話文本與目標(biāo)對(duì)話文本之間的差異。在文本分類任務(wù)中,可以采用分類交叉熵?fù)p失函數(shù)作為成本函數(shù),來(lái)衡量分類器的分類性能。而在機(jī)器翻譯任務(wù)中,可以采用序列到序列模型,并使用負(fù)對(duì)數(shù)似然損失函數(shù)作為成本函數(shù),來(lái)衡量翻譯模型對(duì)目標(biāo)語(yǔ)言文本的預(yù)測(cè)準(zhǔn)確度。

2.2.2 微調(diào)ChatGPT模型的基本步驟

(1)準(zhǔn)備數(shù)據(jù)集:根據(jù)任務(wù)要求,準(zhǔn)備帶標(biāo)簽的數(shù)據(jù)集。可以采用現(xiàn)有的數(shù)據(jù)集,也可以自己構(gòu)造數(shù)據(jù)集。
(2)加載預(yù)訓(xùn)練模型:將預(yù)訓(xùn)練的ChatGPT模型加載到內(nèi)存中,并根據(jù)任務(wù)需求調(diào)整模型的超參數(shù)。
(3)設(shè)置微調(diào)模型:根據(jù)具體任務(wù),對(duì)預(yù)訓(xùn)練模型進(jìn)行微調(diào),并設(shè)置成本函數(shù)或風(fēng)險(xiǎn)函數(shù)。
(4)訓(xùn)練模型:使用訓(xùn)練集對(duì)微調(diào)模型進(jìn)行訓(xùn)練,并根據(jù)驗(yàn)證集的表現(xiàn)調(diào)整模型參數(shù)。
(5)評(píng)估模型:使用測(cè)試集對(duì)微調(diào)模型進(jìn)行評(píng)估,并計(jì)算模型在測(cè)試集上的性能指標(biāo)。
(6)模型應(yīng)用:將微調(diào)后的模型應(yīng)用到具體的任務(wù)中,并進(jìn)行實(shí)際應(yīng)用。

2.2.3 開(kāi)源框架

??目前有一些開(kāi)源框架可以用于微調(diào)ChatGPT模型,常見(jiàn)的包括:
(1)PyTorch:是目前最流行的深度學(xué)習(xí)框架之一,支持GPU加速,并提供了豐富的自然語(yǔ)言處理工具庫(kù),包括預(yù)訓(xùn)練模型、微調(diào)模型等。
(2)TensorFlow:也是一種流行的深度學(xué)習(xí)框架,支持GPU加速,并提供了豐富的自然語(yǔ)言處理工具庫(kù)。
(3)HuggingFace Transformers:是一個(gè)基于PyTorch和TensorFlow的自然語(yǔ)言處理工具庫(kù),提供了豐富的預(yù)訓(xùn)練模型和微調(diào)模型的接口,可以方便地進(jìn)行ChatGPT模型的微調(diào)。

2.3 生成輸出

??在生成文本任務(wù)中,我們通常會(huì)使用語(yǔ)言模型來(lái)描述文本的生成過(guò)程。語(yǔ)言模型可以看作是一個(gè)條件概率分布,它會(huì)給定一段文本的前綴(前面的一些單詞),預(yù)測(cè)下一個(gè)單詞出現(xiàn)的概率分布。在預(yù)訓(xùn)練語(yǔ)言模型中,我們會(huì)給定一個(gè)大規(guī)模的語(yǔ)料庫(kù),利用最大似然估計(jì)等方法,學(xué)習(xí)出每個(gè)單詞在上下文中出現(xiàn)的條件概率分布。
??在生成文本時(shí),我們可以利用預(yù)訓(xùn)練語(yǔ)言模型,根據(jù)輸入的前綴,生成下一個(gè)單詞。生成下一個(gè)單詞的過(guò)程可以看作是從條件概率分布中采樣得到的,因此可以將生成下一個(gè)單詞的過(guò)程看作是從條件概率分布中采樣得到的,這個(gè)條件概率分布可以認(rèn)為是先驗(yàn)分布。
??在生成文本時(shí),我們通常會(huì)給定一個(gè)初始的文本片段,然后利用預(yù)訓(xùn)練語(yǔ)言模型,生成接下來(lái)的文本。在這個(gè)過(guò)程中,我們可以將初始的文本片段看作是已知的觀測(cè)值,而生成的新文本可以看作是未知的潛在變量,因此可以將生成文本的詞語(yǔ)排布看作是似然函數(shù)。具體地說(shuō),我們可以將生成新文本的過(guò)程看作是在給定初始文本片段的條件下,生成新的文本的過(guò)程。這個(gè)過(guò)程可以表示為一個(gè)聯(lián)合概率分布,其中初始文本片段和生成的新文本都是隨機(jī)變量。我們可以利用生成模型中的聯(lián)合概率分布,來(lái)計(jì)算生成的新文本的似然函數(shù)。
??總之,在生成文本時(shí),我們可以利用預(yù)訓(xùn)練語(yǔ)言模型中的條件概率分布來(lái)生成下一個(gè)單詞,這個(gè)條件概率分布可以認(rèn)為是先驗(yàn)分布。另外,我們可以將生成文本的詞語(yǔ)排布看作是似然函數(shù),利用生成模型中的聯(lián)合概率分布來(lái)計(jì)算生成的新文本的似然函數(shù)。

2.3.1 給定輸入序列

??給定一個(gè)輸入序列,例如 "I love natural"。
??如果希望第一次回答就詳細(xì)一些,可以盡可能提供更多的背景信息和上下文,讓我更好地理解問(wèn)題所在和問(wèn)題的意圖。

2.3.2 編碼輸入序列

??將輸入序列編碼成向量,并將它輸入到訓(xùn)練好的模型中。
??在生成語(yǔ)句時(shí),輸入序列的編碼方法和訓(xùn)練模型時(shí)的編碼方法是一樣的。對(duì)于同一個(gè)詞,在訓(xùn)練時(shí)和生成語(yǔ)句時(shí),它的詞向量是相同的。

2.3.3 模型獲得語(yǔ)義理解計(jì)算條件概率生成單詞

??模型會(huì)根據(jù)輸入序列的上下文和之前學(xué)習(xí)到的語(yǔ)義信息,計(jì)算條件概率 p(w_i \mid w_{<i}) ,從而生成下一個(gè)單詞。具體來(lái)說(shuō),模型會(huì)根據(jù)之前生成的單詞和輸入序列的上下文,計(jì)算出每個(gè)單詞作為下一個(gè)單詞的概率,然后按照這些概率進(jìn)行采樣來(lái)生成下一個(gè)單詞。具體來(lái)說(shuō),我們可以使用貪心算法或者 beam search 算法來(lái)生成下一個(gè)單詞。
??貪心算法是一種生成句子的方法,它每次選擇當(dāng)前概率最大的單詞作為下一個(gè)單詞。具體來(lái)說(shuō),在給定輸入序列的情況下,貪心算法會(huì)計(jì)算每個(gè)單詞作為下一個(gè)單詞的概率分布,然后選擇概率最大的單詞作為下一個(gè)單詞。由于貪心算法只考慮了當(dāng)前單詞的概率,因此可能會(huì)導(dǎo)致生成的句子不夠準(zhǔn)確或者不夠流暢。
??Beam search 算法是一種改進(jìn)的生成句子的方法,它考慮了多個(gè)候選分支。具體來(lái)說(shuō),在給定輸入序列的情況下,Beam search 算法會(huì)計(jì)算每個(gè)單詞作為下一個(gè)單詞的概率分布,并選擇概率最大的 k 個(gè)單詞作為候選分支。然后,對(duì)于每個(gè)候選分支,再計(jì)算下一個(gè)單詞的概率分布,并選擇概率最大的 k 個(gè)單詞作為下一個(gè)候選分支。這樣,算法可以同時(shí)考慮多個(gè)分支,從而得到更準(zhǔn)確、更流暢的句子生成結(jié)果
??輸出的第一個(gè)單詞不是固定的,它根據(jù)輸入的問(wèn)題和上下文來(lái)確定。

2.3.4 生成完整句子

??重復(fù)步驟 3,直到生成一個(gè)完整的句子。在生成句子時(shí),我們可以設(shè)置一個(gè)最大長(zhǎng)度,以避免生成無(wú)限長(zhǎng)的句子。
??在生成文本的過(guò)程中,模型會(huì)逐步生成單詞,并根據(jù)之前已經(jīng)生成的單詞來(lái)計(jì)算下一個(gè)單詞的概率。輸入的片段在計(jì)算條件概率時(shí)起到了重要的作用,可以幫助模型更好地捕捉上下文信息,生成更加準(zhǔn)確的文本。
??輸出句子的最大長(zhǎng)度可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,一般在幾十個(gè)單詞到幾百個(gè)單詞之間。

2.3.5 形成文章

??通過(guò)不斷生成下一個(gè)句子,可以生成一篇文章。在這個(gè)過(guò)程中,模型會(huì)根據(jù)生成的單詞和輸入序列的上下文,計(jì)算出每個(gè)單詞作為下一個(gè)單詞的概率,然后按照這些概率進(jìn)行采樣來(lái)生成下一個(gè)單詞。最終,生成的輸出序列可以看做是在當(dāng)前這個(gè)語(yǔ)料庫(kù)中構(gòu)成單詞的分布下,根據(jù)輸入序列的上下文和之前生成的單詞生成的。
??因?yàn)槲业幕卮鹗腔谖业睦斫夂椭R(shí)儲(chǔ)備的,而我的理解和知識(shí)儲(chǔ)備可能會(huì)隨著時(shí)間和經(jīng)驗(yàn)的積累而改變,所以即使問(wèn)題的表述完全一樣,不同的人或者不同的時(shí)間來(lái)問(wèn),我的回答也可能會(huì)不同。
??GPT模型中先驗(yàn)分布通常是均勻分布,實(shí)際上是一個(gè)無(wú)信息分布。如果想更好地利用先驗(yàn)信息,可以嘗試使用其他分布,比如正態(tài)分布、Gamma分布等。不同的先驗(yàn)分布可能會(huì)對(duì)模型的訓(xùn)練和預(yù)測(cè)產(chǎn)生不同的影響,需要根據(jù)具體情況進(jìn)行選擇和調(diào)整。
??邊緣分布在計(jì)算似然函數(shù)時(shí)起到歸一化作用,確保預(yù)測(cè)結(jié)果的概率和為1。
??GPT模型的訓(xùn)練過(guò)程是基于最大似然估計(jì)的方法,即最大化訓(xùn)練數(shù)據(jù)的似然函數(shù)。在訓(xùn)練過(guò)程中,使用交叉熵作為風(fēng)險(xiǎn)函數(shù),用于衡量模型輸出和實(shí)際標(biāo)簽之間的差異。在每次迭代中,通過(guò)反向傳播算法對(duì)模型參數(shù)進(jìn)行更新,使得模型能夠更好地?cái)M合訓(xùn)練數(shù)據(jù)。

3 隱式模型結(jié)構(gòu)

3.1 基于深度神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)

??GPT模型的總體架構(gòu)是一個(gè)基于Transformer架構(gòu)的生成式語(yǔ)言模型。它由多個(gè)相同的Transformer模塊組成,每個(gè)模塊包括多個(gè)注意力頭和前饋神經(jīng)網(wǎng)絡(luò)。輸入序列經(jīng)過(guò)多個(gè)Transformer模塊的處理后,最終輸出一個(gè)概率分布,表示對(duì)下一個(gè)詞的預(yù)測(cè)。

3.2 嵌入層

??在GPT模型中,輸入層之前通常會(huì)有一個(gè)嵌入層(embedding layer),用于將輸入的詞轉(zhuǎn)化為對(duì)應(yīng)的詞向量。嵌入層中每個(gè)詞都會(huì)有一個(gè)對(duì)應(yīng)的唯一向量表示,這個(gè)向量通常會(huì)在訓(xùn)練過(guò)程中不斷調(diào)整,以使得模型在表示詞之間的關(guān)系時(shí)更加準(zhǔn)確。嵌入層的輸出作為輸入層中的神經(jīng)元,然后通過(guò)神經(jīng)網(wǎng)絡(luò)的處理來(lái)得到最終的輸出。

3.2.1 詞向量的語(yǔ)義維度和分布式表示

??詞向量的每個(gè)維度可以表示不同的語(yǔ)義維度,例如情感、主題、詞性等。具體的語(yǔ)義維度可以根據(jù)任務(wù)和數(shù)據(jù)集的不同而有所差異。例如,在情感分類任務(wù)中,情感是一個(gè)重要的語(yǔ)義維度;在主題分類任務(wù)中,主題是一個(gè)重要的語(yǔ)義維度;在詞性標(biāo)注任務(wù)中,詞性是一個(gè)重要的語(yǔ)義維度。
??詞向量的分布式表示可以舉例如下:假設(shè)有一個(gè)詞匯表,其中包含3個(gè)詞語(yǔ):cat、dog和fish。使用分布式表示,每個(gè)詞語(yǔ)可以表示為一個(gè)長(zhǎng)度為4的向量,例如cat可以表示為[0.2, -0.1, 0.5, 0.3],dog可以表示為[0.4, 0.2, -0.3, 0.1],fish可以表示為[-0.2, 0.6, 0.1, -0.4]。這些向量的每個(gè)維度表示不同的語(yǔ)義維度,例如第一個(gè)維度可以表示動(dòng)物的大小,第二個(gè)維度可以表示動(dòng)物的種類,第三個(gè)維度可以表示動(dòng)物的顏色,第四個(gè)維度可以表示動(dòng)物的行為。使用這種分布式表示,可以更好地捕捉詞語(yǔ)之間的語(yǔ)義關(guān)系,例如cat和dog的向量之間的距離比cat和fish的向量之間的距離更近,這是因?yàn)閏at和dog之間有更多的語(yǔ)義相似性。

3.3 輸入層

??在輸入層中,神經(jīng)元的數(shù)量是固定的,它們表示輸入tokens的向量表示。具體來(lái)說(shuō),在GPT模型中,輸入tokens會(huì)先通過(guò)一個(gè)嵌入層,將每個(gè)token轉(zhuǎn)化為一個(gè)d維的詞向量,然后作為輸入層中的神經(jīng)元。
??在chatGPT中,在輸入層中,沒(méi)有被激活的神經(jīng)元的輸出通常為0,表示這些神經(jīng)元對(duì)應(yīng)的輸入在當(dāng)前時(shí)刻不存在。這些神經(jīng)元的權(quán)重和偏置項(xiàng)通常被初始化為隨機(jī)值,以便在訓(xùn)練過(guò)程中逐步調(diào)整。
??輸入層中的神經(jīng)元沒(méi)有注意力機(jī)制,它們只是將輸入tokens映射為一個(gè)d維的詞向量,但是在接下來(lái)的處理中,這個(gè)詞向量會(huì)被多個(gè)注意力頭共同處理,以得到更好的表示。

3.4 隱藏層

??GPT模型是一個(gè)深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其中使用了Transformer架構(gòu)。Transformer架構(gòu)是一種基于注意力機(jī)制的神經(jīng)網(wǎng)絡(luò)架構(gòu),它由編碼器和解碼器兩個(gè)部分組成。在編碼器中,輸入的tokens經(jīng)過(guò)多個(gè)層的處理,得到一個(gè)表示輸入序列的向量;在解碼器中,通過(guò)輸入之前已經(jīng)生成的tokens,來(lái)生成下一個(gè)token。Transformer架構(gòu)使用了注意力機(jī)制,能夠更好地捕捉輸入序列中的上下文信息。
??每個(gè)神經(jīng)元和注意力頭都是一個(gè)單元,其中每個(gè)神經(jīng)元和注意力頭之間有多個(gè)線性連接。具體來(lái)說(shuō),GPT-2模型中每個(gè)隱藏層有768個(gè)神經(jīng)元,每個(gè)注意力頭有12個(gè)。因此,每個(gè)隱藏層和注意力頭之間有9,216個(gè)線性連接。ChatGPT模型通常有1.5億至1.7億個(gè)參數(shù)。
??前饋是在每一層的神經(jīng)元中存在的,注意力頭層的輸入也需要通過(guò)前饋網(wǎng)絡(luò)進(jìn)行處理。
??在chatGPT中,神經(jīng)元層和注意力頭之間的連接不是殘差網(wǎng)絡(luò)連接,而是通過(guò)多頭注意力機(jī)制來(lái)實(shí)現(xiàn)。
??每個(gè)注意力頭的輸入由上一層的所有神經(jīng)元組成,然后分別進(jìn)行不同的線性變化和注意力計(jì)算,最后將輸出連接在一起形成一個(gè)向量,作為下一層神經(jīng)元的輸入。
??在隱藏層中,每個(gè)層都由多個(gè)注意力頭和前饋神經(jīng)網(wǎng)絡(luò)組成。在自注意力機(jī)制中,每個(gè)頭都會(huì)計(jì)算出不同的注意力權(quán)重,將不同的注意力權(quán)重加權(quán)平均后得到輸出,從而更好地捕捉輸入序列中的上下文信息。在前饋神經(jīng)網(wǎng)絡(luò)中,輸入經(jīng)過(guò)一個(gè)全連接層和激活函數(shù)后得到輸出,然后接入殘差網(wǎng)絡(luò)中,最終輸出.
??殘差網(wǎng)絡(luò)連接在神經(jīng)元層之間存在。在GPT模型中,每個(gè)隱藏層的神經(jīng)元都會(huì)通過(guò)殘差連接與下一個(gè)隱藏層的神經(jīng)元相連,以便信息能夠更好地傳遞和保留。ChatGPT中的連接方式采用殘差網(wǎng)絡(luò)結(jié)構(gòu),每一層的輸出會(huì)與該層輸入相加,再進(jìn)行激活函數(shù)處理。
??在隱藏層中,每個(gè)層都是全聯(lián)接的,也就是說(shuō),每個(gè)神經(jīng)元都與上一層的所有神經(jīng)元相連。同時(shí),為了防止過(guò)擬合,會(huì)在每個(gè)層中應(yīng)用dropout機(jī)制,隨機(jī)地將一些神經(jīng)元的輸出置為0。

3.5 輸出層

??輸出是一個(gè)分類函數(shù),但是它的輸出不是通過(guò)softmax函數(shù)進(jìn)行歸一化的,而是通過(guò)一個(gè)線性變換來(lái)得到的。這個(gè)線性變換的權(quán)重矩陣是模型訓(xùn)練過(guò)程中學(xué)習(xí)到的。
?? 輸出層只有一個(gè)分類函數(shù),通常是softmax函數(shù)。它將模型的輸出轉(zhuǎn)化為一個(gè)概率分布,表示每個(gè)單詞在當(dāng)前上下文中出現(xiàn)的概率。由于是一個(gè)概率分布,因此所有輸出的概率之和為1。
softmax(z_j) = \frac{e^{z_j}}{\sum_{k=1}^{K}e^{z_k}}
??其中z_j表示第i個(gè)神經(jīng)元的輸出,softmax(z_j)表示第i個(gè)神經(jīng)元的激活值。softmax函數(shù)的輸出可以看作是一個(gè)概率分布,表示不同類別的概率
??分類函數(shù)得到的是單詞間排列順序的條件概率,也就是說(shuō),對(duì)于給定的上下文,模型會(huì)計(jì)算出每個(gè)單詞在當(dāng)前位置出現(xiàn)的概率,然后按照概率從高到低進(jìn)行排列。
??輸出的分類函數(shù)和注意力機(jī)制中的多分類不一樣。在GPT模型中,輸出是通過(guò)一個(gè)線性變換得到的,這個(gè)線性變換的權(quán)重是通過(guò)模型訓(xùn)練過(guò)程中學(xué)習(xí)到的,而不是對(duì)softmax進(jìn)行線性變換。分類函數(shù)的輸出是一個(gè)向量,每個(gè)元素表示輸入序列中對(duì)應(yīng)位置的詞語(yǔ)在詞典中的概率得分,而多分類中的輸出是一個(gè)概率分布,表示每個(gè)類別的概率。

3.6 參數(shù)及超參數(shù)

3.6.1 參數(shù)情況

3.6.1.1 權(quán)重、偏置

??ChatGPT模型中的參數(shù)包括神經(jīng)網(wǎng)絡(luò)中各個(gè)層的權(quán)重矩陣和偏置向量。在Transformer結(jié)構(gòu)中,每個(gè)層包括多頭自注意力機(jī)制(Multi-Head Attention)和前饋神經(jīng)網(wǎng)絡(luò)(Feed-Forward Network)兩個(gè)子層。每個(gè)子層都有自己的權(quán)重矩陣和偏置向量。

3.6.1.2 位置編碼

??位置編碼的向量也是模型的參數(shù)之一。
??單詞的位置信息是通過(guò)位置編碼來(lái)表示的。位置編碼是一種將位置信息嵌入到詞向量中的方法,可以幫助模型更好地理解單詞之間的位置關(guān)系。具體來(lái)說(shuō),對(duì)于一個(gè)單詞在句子中的位置 i,它的位置編碼是一個(gè) d 維向量,可以表示為 \text{PE}(i, j) = \text{sin}(i/10000^{2j/d}) 或者 \text{PE}(i, j) = \text{cos}(i/10000^{2j/d}),其中 j 表示位置編碼的維度。

3.6.2 超參數(shù)

??超參數(shù)包括模型的層數(shù)、隱藏單元數(shù)、詞向量維度、學(xué)習(xí)率、批大小等。這些超參數(shù)可以通過(guò)實(shí)驗(yàn)和調(diào)參來(lái)確定,以達(dá)到最佳的性能和效果

3.6.2.1 神經(jīng)元激活函數(shù)

??在GPT模型中,激活函數(shù)通常采用GELU函數(shù),它是一種基于高斯分布的激活函數(shù),能夠更好地處理負(fù)數(shù)輸入。具體來(lái)說(shuō),GELU函數(shù)的公式為:f(x) = x * P(X <= x),其中P(X <= x)是標(biāo)準(zhǔn)正態(tài)分布的累積分布函數(shù)。
ChatGPT模型中,人工神經(jīng)元的激活函數(shù)是gelu激活函數(shù),其數(shù)學(xué)表達(dá)式如下
gelu(x) =x\Phi(x)=x\Phi(\sqrt{2/\pi}(x+0.044715x^3)))

3.6.2.2 學(xué)習(xí)率

學(xué)習(xí)率是一個(gè)超參數(shù),通常需要在訓(xùn)練過(guò)程中進(jìn)行調(diào)整。在訓(xùn)練初期,通常會(huì)使用較大的學(xué)習(xí)率,以便快速收斂;而在訓(xùn)練后期,學(xué)習(xí)率會(huì)逐漸降低,以避免過(guò)擬合。

4 重要知識(shí)點(diǎn)

4.1 自注意力機(jī)制

??自注意力機(jī)制(self-attention mechanism)是一種用于自然語(yǔ)言處理中的神經(jīng)網(wǎng)絡(luò)技術(shù),它可以在輸入序列中對(duì)不同位置之間的關(guān)系進(jìn)行建模。自注意力機(jī)制的基本思想是:通過(guò)對(duì)輸入序列中的每個(gè)位置進(jìn)行加權(quán)匯聚,來(lái)計(jì)算出該位置與其他位置之間的依賴關(guān)系和相似度。
在自注意力機(jī)制中,每個(gè)輸入向量都會(huì)被映射為三個(gè)向量:查詢向量(query vector)、鍵向量(key vector)和值向量(value vector)。然后,對(duì)于每個(gè)查詢向量,都會(huì)計(jì)算它與所有鍵向量之間的相似度,并將相似度作為權(quán)重對(duì)值向量進(jìn)行加權(quán)求和。最終得到的輸出是由所有值向量的加權(quán)和組成的向量。這個(gè)過(guò)程可以看作是一個(gè)對(duì)輸入序列中的每個(gè)位置進(jìn)行加權(quán)匯聚的過(guò)程,同時(shí)可以有效地捕捉輸入序列中各個(gè)位置之間的依賴關(guān)系。

4.2 Transformer框架

??Transformer框架是一種用于序列到序列(sequence-to-sequence)學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)模型,它由編碼器(encoder)和解碼器(decoder)兩部分組成。Transformer框架中使用了自注意力機(jī)制和殘差連接等技術(shù),能夠更好地處理輸入序列中的上下文信息和語(yǔ)義信息,同時(shí)也能夠更好地處理序列中不同位置之間的依賴關(guān)系。
??在Transformer框架中,編碼器和解碼器都由多個(gè)編碼器層和解碼器層組成,每個(gè)層中都包含多頭注意力機(jī)制和前饋神經(jīng)網(wǎng)絡(luò)。編碼器層和解碼器層都采用殘差連接和層歸一化技術(shù),能夠更好地防止模型訓(xùn)練過(guò)程中的梯度消失和爆炸問(wèn)題。
??相比于傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò),Transformer框架具有更好的并行性和更短的訓(xùn)練時(shí)間,因此在自然語(yǔ)言處理領(lǐng)域中得到了廣泛的應(yīng)用,例如機(jī)器翻譯、文本生成、問(wèn)答系統(tǒng)等

4.3 風(fēng)險(xiǎn)函數(shù)

??在GPT模型中,通常使用的風(fēng)險(xiǎn)函數(shù)是交叉熵?fù)p失函數(shù)。它用于衡量模型的預(yù)測(cè)結(jié)果與真實(shí)結(jié)果之間的差距。在訓(xùn)練過(guò)程中,通常不會(huì)使用正則項(xiàng),但可以通過(guò)添加L1或L2正則化來(lái)防止過(guò)擬合。
在GPT模型中,交叉熵作為風(fēng)險(xiǎn)函數(shù)的具體函數(shù)如下:
H(p,q)=-\sum_{x}p(x)\log q(x)
??其中,p(x)p(x)表示真實(shí)的標(biāo)簽(樣本的實(shí)際類別),q(x)q(x)表示模型對(duì)樣本的預(yù)測(cè)結(jié)果,H(p,q)H(p,q)表示模型的交叉熵?fù)p失。交叉熵?fù)p失函數(shù)的目標(biāo)是最小化模型預(yù)測(cè)結(jié)果與真實(shí)標(biāo)簽之間的差異,從而提高分類模型的準(zhǔn)確率。

4.4 殘差連接

??殘差連接(Residual Connection)是一種在神經(jīng)網(wǎng)絡(luò)中常用的技術(shù),用于解決深層神經(jīng)網(wǎng)絡(luò)中梯度消失(Gradient Vanishing)和梯度爆炸(Gradient Exploding)的問(wèn)題。在殘差連接中,網(wǎng)絡(luò)的某些層將原始輸入作為一個(gè)跨層連接(Skip Connection)的一部分,與中間層的輸出相加,從而將原始輸入的信息傳遞到后續(xù)層中。這種跨層連接可以減少網(wǎng)絡(luò)的深度,緩解梯度消失和梯度爆炸的問(wèn)題,提高網(wǎng)絡(luò)的性能和訓(xùn)練效果.
??在殘差網(wǎng)絡(luò)中,一般使用殘差塊(Residual Block)來(lái)實(shí)現(xiàn)殘差連接的功能。
x_{i+1}= x_i + F(x_i,W_i)
??其中,x_i,表示殘差塊的輸入,F(xiàn) 表示殘差塊的非線性變換函數(shù),一般是ReLU,W_i表示殘差塊中的權(quán)重參數(shù)。x_{i+1}表示殘差塊的輸出,它等于輸入x_i和非線性變換函數(shù) F 的輸出之和。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容