大語(yǔ)言模型的預(yù)訓(xùn)練[1]:基本概念原理、神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型、Transformer模型原理詳解、Bert模型原理介紹
1.大語(yǔ)言模型的預(yù)訓(xùn)練
1.LLM預(yù)訓(xùn)練的基本概念
預(yù)訓(xùn)練屬于遷移學(xué)習(xí)的范疇?,F(xiàn)有的神經(jīng)網(wǎng)絡(luò)在進(jìn)行訓(xùn)練時(shí),一般基于反向傳播(Back Propagation,BP)算法,先對(duì)網(wǎng)絡(luò)中的參數(shù)進(jìn)行隨機(jī)初始化,再利用隨機(jī)梯度下降(Stochastic Gradient Descent,SGD)等優(yōu)化算法不斷優(yōu)化模型參數(shù)。而預(yù)訓(xùn)練的思想是,模型參數(shù)不再是隨機(jī)初始化的,而是通過(guò)一些任務(wù)進(jìn)行預(yù)先訓(xùn)練,得到一套模型參數(shù),然后用這套參數(shù)對(duì)模型進(jìn)行初始化,再進(jìn)行訓(xùn)練。
預(yù)訓(xùn)練將大量低成本收集的訓(xùn)練數(shù)據(jù)放在一起,經(jīng)過(guò)某種預(yù)訓(xùn)練的方法去學(xué)習(xí)其中的共性,然后將其中的共性 “移植” 到特定任務(wù)的模型中,再使用相關(guān)特定領(lǐng)域的少量標(biāo)注數(shù)據(jù)進(jìn)行 “微調(diào)”。因此,模型只需要從“共性” 出發(fā),去 “學(xué)習(xí)” 該特定任務(wù)的 “特殊” 部分。
例如:讓一個(gè)完全不懂英文的人去做英文法律文書(shū)的關(guān)鍵詞提取的工作會(huì)完全無(wú)法進(jìn)行,或者說(shuō)他需要非常多的時(shí)間去學(xué)習(xí),因?yàn)樗F(xiàn)在根本看不懂英文。但是,如果讓一個(gè)英語(yǔ)為母語(yǔ)但沒(méi)接觸過(guò)此類(lèi)工作的人去做這項(xiàng)任務(wù),他可能只需要相對(duì)比較短的時(shí)間學(xué)習(xí)如何去提取法律文書(shū)的關(guān)鍵詞就可以上手這項(xiàng)任務(wù)。在這里,英文知識(shí)就屬于 “共性” 的知識(shí),這類(lèi)知識(shí)不必要只通過(guò)英文法律文書(shū)的相關(guān)語(yǔ)料進(jìn)行學(xué)習(xí),而是可以通過(guò)大量英文語(yǔ)料,不管是小說(shuō)、書(shū)籍,還是自媒體,都可以是學(xué)習(xí)資料的來(lái)源。在該例中,讓完全不懂英文的人去完成這樣的任務(wù),這就對(duì)應(yīng)了傳統(tǒng)的直接訓(xùn)練方法,而完全不懂英文的人如果在早期系統(tǒng)學(xué)習(xí)了英文,再讓他去做同樣的任務(wù),就對(duì)應(yīng)了 “預(yù)訓(xùn)練 + 微調(diào)” 的思路,系統(tǒng)的學(xué)習(xí)英文即為 “預(yù)訓(xùn)練” 的過(guò)程。
大語(yǔ)言模型的預(yù)訓(xùn)練是指搭建一個(gè)大的神經(jīng)網(wǎng)絡(luò)模型并喂入海量的數(shù)據(jù)以某種方法去訓(xùn)練語(yǔ)言模型。大語(yǔ)言模型預(yù)訓(xùn)練的主要特點(diǎn)是訓(xùn)練語(yǔ)言模型所用的數(shù)據(jù)量夠多、模型夠大。
1.2 LLM預(yù)訓(xùn)練需求
預(yù)訓(xùn)練技術(shù)被廣泛應(yīng)用于各種機(jī)器學(xué)習(xí)任務(wù),主要是為了解決以下問(wèn)題:
- **數(shù)據(jù)稀缺性:**在許多任務(wù)中,標(biāo)記數(shù)據(jù)是很昂貴的,并且難以獲取。例如,在自然語(yǔ)言處理領(lǐng)域,需要大量的標(biāo)注數(shù)據(jù)才能訓(xùn)練模型。通過(guò)使用預(yù)訓(xùn)練技術(shù),可以利用未標(biāo)記的數(shù)據(jù)來(lái)訓(xùn)練模型,從而提高模型的性能和泛化能力;
- **先驗(yàn)知識(shí)問(wèn)題:**許多機(jī)器學(xué)習(xí)任務(wù)需要模型具備一定的先驗(yàn)知識(shí)和常識(shí),例如自然語(yǔ)言處理中的語(yǔ)言結(jié)構(gòu)和規(guī)則。通過(guò)使用預(yù)訓(xùn)練技術(shù),可以讓模型在未標(biāo)記數(shù)據(jù)上學(xué)習(xí)這些知識(shí),從而使其在各種任務(wù)上表現(xiàn)更好;
- **遷移學(xué)習(xí)問(wèn)題:**許多機(jī)器學(xué)習(xí)任務(wù)之間存在共性,例如自然語(yǔ)言處理中的語(yǔ)義理解和文本分類(lèi)等。通過(guò)使用預(yù)訓(xùn)練技術(shù),可以將模型從一個(gè)任務(wù)遷移到另一個(gè)任務(wù),從而提高模型在新任務(wù)上的性能;
- **模型可解釋性問(wèn)題:**預(yù)訓(xùn)練技術(shù)可以幫助模型學(xué)習(xí)抽象的特征,從而提高模型的可解釋性。例如,在自然語(yǔ)言處理中,預(yù)訓(xùn)練技術(shù)可以使模型學(xué)習(xí)單詞和短語(yǔ)的表示,從而提高模型的可解釋性。
綜上所述,預(yù)訓(xùn)練技術(shù)可以幫助機(jī)器學(xué)習(xí)模型解決數(shù)據(jù)稀缺性、先驗(yàn)知識(shí)和遷移學(xué)習(xí)等問(wèn)題,從而提高模型的性能和可解釋性,同時(shí)降低訓(xùn)練成本。
1.3 LLM預(yù)訓(xùn)練的基本原理
大語(yǔ)言模型預(yù)訓(xùn)練采用了 Transformer 模型的解碼器部分,由于沒(méi)有編碼器部分,大語(yǔ)言模型去掉了中間的與編碼器交互的多頭注意力層。如下圖所示,左邊是 Transformer 模型的解碼器,右邊是大語(yǔ)言模型的預(yù)訓(xùn)練架構(gòu)
1.3.1 方法
大語(yǔ)言模型預(yù)訓(xùn)練是通過(guò)上文的詞來(lái)預(yù)測(cè)下一個(gè)詞,屬于無(wú)監(jiān)督的預(yù)訓(xùn)練。比如,給定一個(gè)無(wú)監(jiān)督的語(yǔ)料U={u1?,...,un?}
,而預(yù)訓(xùn)練語(yǔ)言模型是要使得下面式子最大化:
L 1 ? ( U ) = Σ i ? P ( u i ? ∣ u i ? k ? , . . . , u i ? 1 ? ; Θ ) L1?(U)=Σi?P(ui?∣ui?k?,...,ui?1?;Θ) L1?(U)=Σi?P(ui?∣ui?k?,...,ui?1?;Θ)
即如下圖所示,通過(guò)上文,來(lái)預(yù)測(cè)下一個(gè)單詞,屬于自回歸模型,也叫做 AR 模型。
AR 模型,即指從左往右學(xué)習(xí)的模型。AR 模型從上文學(xué)習(xí),并將上一步的結(jié)果作為回歸模型的輸入,以預(yù)測(cè)下一個(gè)詞。在預(yù)測(cè)時(shí),AR 模型只能看到上文的詞,而無(wú)法知曉下文的詞。AR 模型通常用于生成式任務(wù),尤其是長(zhǎng)文本的生成能力很強(qiáng)。
在大語(yǔ)言模型的預(yù)訓(xùn)練中,還采用了 in-context learning
技術(shù)。為了讓模型能夠理解人類(lèi)的意圖,與人類(lèi)的思想對(duì)齊,會(huì)構(gòu)造類(lèi)似這樣數(shù)據(jù):在句子前加上一個(gè)任務(wù)(task),同時(shí)會(huì)給出完成該任務(wù)的幾個(gè)示例。例如,向模型輸入 “請(qǐng)將中文翻譯成英文。你好,Hello,再見(jiàn),goodbye,銷(xiāo)售,”,然后讓模型學(xué)習(xí)下一個(gè)輸出 “sell”。通過(guò)示例的個(gè)數(shù)又可以分為:
- few-show learning: 允許輸入數(shù)條示例和一則任務(wù)說(shuō)明;
- one-shot learning: 只允許輸入一條示例和一則任務(wù)說(shuō)明;
- zero-shot learning: 不允許輸入任何范例,只允許輸入一則任務(wù)說(shuō)明。
zero-shot learning 可以表示為:
p(output∣input,task)
通過(guò)引入 in-context learning 技術(shù),使得預(yù)訓(xùn)練的大語(yǔ)言模型直接擁有完成特定任務(wù)的能力。
1.3.2 訓(xùn)練
下面對(duì)大語(yǔ)言模型預(yù)訓(xùn)練過(guò)程中的批量訓(xùn)練、學(xué)習(xí)率、優(yōu)化器和訓(xùn)練穩(wěn)定性等方面進(jìn)行講解。
- **批量訓(xùn)練:**對(duì)于語(yǔ)言模型的預(yù)訓(xùn)練,通常將批量訓(xùn)練的大?。╞atch_size)設(shè)置為較大的數(shù)字來(lái)維持訓(xùn)練的穩(wěn)定性。在最新的大語(yǔ)言模型訓(xùn)練中,采用了動(dòng)態(tài)調(diào)整批量訓(xùn)練大小的方法,最終在訓(xùn)練期間批量訓(xùn)練大小達(dá)到百萬(wàn)規(guī)模。結(jié)果表明,動(dòng)態(tài)調(diào)度批量訓(xùn)練的大小可以有效地穩(wěn)定訓(xùn)練過(guò)程;
- **學(xué)習(xí)率:**大語(yǔ)言模型訓(xùn)練的學(xué)習(xí)率通常采用預(yù)熱和衰減的策略。學(xué)習(xí)率的預(yù)熱是指模型在最初訓(xùn)練過(guò)程的 0.1% 到 0.5% 之間逐漸將學(xué)習(xí)率提高到最大值。學(xué)習(xí)率衰減策略在后續(xù)訓(xùn)練過(guò)程中逐步降低學(xué)習(xí)率使其達(dá)到最大值的 10% 左右或者模型收斂;
- **優(yōu)化器:**Adam 優(yōu)化器和 AdamW 優(yōu)化器是常用的訓(xùn)練大語(yǔ)言模型的優(yōu)化方法,它們都是基于低階自適應(yīng)估計(jì)矩的一階梯度優(yōu)化。優(yōu)化器的超參數(shù)通常設(shè)置為:
β1?=0.9
、β2?=0.95
以及?=10?8
; - **訓(xùn)練穩(wěn)定性:**在大語(yǔ)言模型的預(yù)訓(xùn)練期間,經(jīng)常會(huì)遇到訓(xùn)練不穩(wěn)定的問(wèn)題,可能導(dǎo)致模型無(wú)法繼續(xù)訓(xùn)練下去。目前,解決這個(gè)問(wèn)題通常采用的方法有正則化和梯度裁。梯度裁剪的閾值通常設(shè)為 1.0,正則化系數(shù)為 0.1。然而,隨著大語(yǔ)言模型規(guī)模的擴(kuò)大,模型的損失函數(shù)值更可能會(huì)發(fā)生突變,導(dǎo)致模型訓(xùn)練的不穩(wěn)定性。為了解決大語(yǔ)言模型訓(xùn)練穩(wěn)定性的問(wèn)題,訓(xùn)練時(shí)在發(fā)生損失函數(shù)的突變后,回溯到上一個(gè)保存的模型(checkpoint),并跳過(guò)這一部分的訓(xùn)練數(shù)據(jù)繼續(xù)進(jìn)行模型的訓(xùn)練。
1.4LLM預(yù)訓(xùn)練的主要優(yōu)勢(shì)
大語(yǔ)言模型預(yù)訓(xùn)練是一種先通過(guò)海量數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練,然后再進(jìn)行微調(diào)的技術(shù),其目的是提高機(jī)器學(xué)習(xí)算法的性能和效率。大模型預(yù)訓(xùn)練的優(yōu)勢(shì)主要有以下幾點(diǎn):
- **提高模型的泛化能力:**通過(guò)大規(guī)模預(yù)訓(xùn)練,模型可以學(xué)習(xí)到更多的數(shù)據(jù)和知識(shí),從而提高其對(duì)未知數(shù)據(jù)的泛化能力;
- **減少訓(xùn)練時(shí)間和數(shù)據(jù)量:**預(yù)訓(xùn)練可以大幅減少訓(xùn)練時(shí)間和數(shù)據(jù)量,因?yàn)轭A(yù)訓(xùn)練的結(jié)果可以直接應(yīng)用到其它任務(wù)上,避免了重復(fù)訓(xùn)練;
- **提高算法的效率:**預(yù)訓(xùn)練可以使得算法更加高效,因?yàn)轭A(yù)訓(xùn)練的結(jié)果可以作為其它任務(wù)的初始值,避免從頭開(kāi)始訓(xùn)練的時(shí)間和計(jì)算資源浪費(fèi);
- **支持多種自然語(yǔ)言處理任務(wù):**預(yù)訓(xùn)練可以應(yīng)用于各種自然語(yǔ)言處理任務(wù),如文本分類(lèi)、情感分析、機(jī)器翻譯等,提高了自然語(yǔ)言處理技術(shù)的通用性和可拓展性;
- **提高模型的精度:**大模型預(yù)訓(xùn)練可以提高模型的精度和性能,從而使得機(jī)器學(xué)習(xí)算法在各種任務(wù)上得到更好的表現(xiàn)。
1.5 預(yù)訓(xùn)練后續(xù)階段
大語(yǔ)言模型預(yù)訓(xùn)練是指采用大量數(shù)據(jù)喂入大規(guī)模模型去訓(xùn)練語(yǔ)言模型,得到初始化的模型參數(shù)。隨著 ChatGPT 的出現(xiàn),在完成大語(yǔ)言模型的預(yù)訓(xùn)練后,還會(huì)采用監(jiān)督學(xué)習(xí)、獎(jiǎng)勵(lì)模型以及強(qiáng)化學(xué)習(xí)進(jìn)行進(jìn)一步的微調(diào),叫做 RLHF。預(yù)訓(xùn)練后續(xù)階段主要分為三個(gè)步驟(如下圖所示):
- 步驟 1:SFT 監(jiān)督微調(diào),訓(xùn)練監(jiān)督策略模型。在大語(yǔ)言模型的訓(xùn)練過(guò)程中,需要標(biāo)記者參與監(jiān)督過(guò)程;
- 步驟 2:獎(jiǎng)勵(lì)模型訓(xùn)練。借助標(biāo)記者的人工標(biāo)注,訓(xùn)練出合意的獎(jiǎng)勵(lì)模型,為監(jiān)督策略建立評(píng)價(jià)標(biāo)準(zhǔn);
- 步驟 3:PPO 強(qiáng)化學(xué)習(xí)模型訓(xùn)練,采用近端策略?xún)?yōu)化進(jìn)行強(qiáng)化學(xué)習(xí)。通過(guò)監(jiān)督學(xué)習(xí)策略生成 PPO 模型,將最優(yōu)結(jié)果用于優(yōu)化和迭代原有的 PPO 模型參數(shù)。
2.神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型知識(shí)
2.1 基于神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型
鑒于 n-gram 存在的問(wèn)題,人們開(kāi)始嘗試用神經(jīng)網(wǎng)絡(luò)來(lái)建立語(yǔ)言模型,提出了如下圖所示的前饋神經(jīng)網(wǎng)絡(luò)模型(FFNN Language Model,F(xiàn)FNNLM):
它通過(guò)學(xué)習(xí)詞的分布式表示來(lái)解決維度災(zāi)難,使得一個(gè)詞能夠使用一個(gè)低維向量(稱(chēng)之為 embedding)表示。從整體上看,上述模型屬于比較簡(jiǎn)單而傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型,主要由輸入層 - 隱藏層 - 輸出層組成,經(jīng)過(guò)前向傳播和反向傳播來(lái)進(jìn)行訓(xùn)練。
2.1.1 詞向量處理
基于神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型的輸入層為詞向量,詞語(yǔ)轉(zhuǎn)化為數(shù)字的最簡(jiǎn)單的形式就是 One-hot(獨(dú)熱編碼),簡(jiǎn)單來(lái)說(shuō)就是假設(shè)有一個(gè)大小為 V 的固定排序的詞表,里邊包含 V 個(gè)詞,假設(shè)第二個(gè)詞是 “電視”,那么用一個(gè)維度為 V 的特征向量表達(dá)就是
[
0
,
1
,
0
,
0
,
?
,
0
]
[0,1,0,0,? ,0]
[0,1,0,0,?,0],即該詞語(yǔ)在詞表中的位置對(duì)應(yīng)在特征向量中的位置的值為 1,其他位置都為 0。
但 One-hot 編碼有一個(gè)最大的問(wèn)題就是數(shù)據(jù)稀疏問(wèn)題,當(dāng)詞表很大(比如現(xiàn)在有一個(gè)含 80000 個(gè)詞的詞表)時(shí),數(shù)據(jù)稀疏會(huì)讓整個(gè)計(jì)算量都變得很大,且詞語(yǔ)之間的關(guān)聯(lián)關(guān)系得不到表達(dá)。
詞向量(Word Embedding)因此應(yīng)運(yùn)而生,它不用 One-hot 的稀疏向量來(lái)表征這個(gè)詞,而是用一個(gè)低維度的向量來(lái)表征這個(gè)詞,給定一個(gè)詞表征的矩陣 C,矩陣 C 的維度是 V?m,即 V 行,m 列。V 是詞表的大小,即每一行代表了詞表里的一個(gè)詞;m 是自己定的詞向量的維度,比如說(shuō)對(duì)于一個(gè) 80000 個(gè)詞的詞表,One-hot 向量要用 80000 維來(lái)表征 “電視” 這個(gè)詞,而詞向量用一個(gè) 100 維的向量來(lái)表征,m 就是 100。
用 “電視” 的 One-hot 向量
[
0
,
1
,
0
,
0
,
?
,
0
]
[0,1,0,0,?,0]
[0,1,0,0,?,0] 乘上面說(shuō)的矩陣 C,將得到一個(gè) m 維的向量,即詞向量,下圖為這個(gè)計(jì)算過(guò)程:
得到上面單個(gè)詞向量之后,將 n ? 1 個(gè)詞向量做一個(gè)全連接,即把這 n ? 1 個(gè)詞向量首尾相接地拼起來(lái)得到最終的輸入 x:
2.1.2 正向傳播
從輸入層到隱藏層:詞向量 x 作為輸入,權(quán)重 H 乘以輸入加上偏置 d,再加 tanh 函數(shù)作激活函數(shù),就得到了隱藏層:tanh(d+Hx)。
從隱藏層到輸出層:先計(jì)算由隱藏層到輸出層未歸一化的輸出值 y1,這里是一個(gè)簡(jiǎn)單的線(xiàn)性變化:
y
1
=
U
t
a
n
h
(
d
+
H
x
)
+
b
1
y1 = Utanh(d+Hx)+b1
y1=Utanh(d+Hx)+b1。這里的 U 是隱藏層到輸出層的參數(shù),b1 代表這一部分的偏置項(xiàng)。
從輸入層到輸出層:從輸入層到輸出層的直連,也是一個(gè)線(xiàn)性變換。這一部分的輸出值 y2 可以表示為:
y
2
=
W
x
+
b
2
y2=Wx+b2
y2=Wx+b2。W 和 b2 分別是這一部分的權(quán)重和偏置項(xiàng)。
輸出層:由上面的兩部分輸出值可以得到最終的 y:
y
=
y
1
+
y
2
=
b
+
W
x
+
U
t
a
n
h
(
d
+
H
x
)
y = y1+y2 = b+Wx+Utanh(d+Hx)
y=y1+y2=b+Wx+Utanh(d+Hx)
再將 y 經(jīng)過(guò)一個(gè)
s
o
f
t
m
a
x
softmax
softmax 函數(shù)做概率歸一化,便能得到一個(gè)維度為 V 的概率向量。
模型訓(xùn)練的目標(biāo)是最大化以下似然函數(shù):
其中
θ
=
(
b
,
d
,
W
,
U
,
H
,
C
)
θ=(b,d,W,U,H,C)
θ=(b,d,W,U,H,C),是模型的所有參數(shù),R 是正則化項(xiàng)。
反向傳播是根據(jù) loss 值更新參數(shù)的過(guò)程,這里不再贅述。
2.1.3 模型評(píng)價(jià)
神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型 (NNLM) 通過(guò)構(gòu)建神經(jīng)網(wǎng)絡(luò)的方式來(lái)探索和建模自然語(yǔ)言?xún)?nèi)在的依賴(lài)關(guān)系。優(yōu)缺點(diǎn)如下:
-
優(yōu)點(diǎn):
- 詞向量是可以自定義維度的,維度并不會(huì)因?yàn)樾聰U(kuò)展詞而發(fā)生改變,詞向量能夠很好的根據(jù)特征距離度量詞與詞之間的相似性;
- 好的詞向量能夠提高模型泛化能力;
- 相比于 n-gram,通過(guò)詞向量的降維,減小了參數(shù)空間,減少了計(jì)算量。
-
缺點(diǎn):
- 參數(shù)較多,模型訓(xùn)練時(shí)間長(zhǎng);
- 可解釋性較差。
2.2 循環(huán)神經(jīng)網(wǎng)絡(luò)概述
對(duì)于我們已經(jīng)學(xué)過(guò)的傳統(tǒng)神經(jīng)網(wǎng)絡(luò),它們能夠?qū)崿F(xiàn)分類(lèi)以及標(biāo)注任務(wù),但傳統(tǒng)神經(jīng)網(wǎng)絡(luò)處理具有前后遺存關(guān)系的數(shù)據(jù)時(shí),效果就不是十分理想了。這時(shí)不僅需要依賴(lài)當(dāng)前的輸入,還需要結(jié)合前一時(shí)刻或后一時(shí)刻的輸入作為參考。
循環(huán)神經(jīng)網(wǎng)絡(luò)的主要用途是處理和預(yù)測(cè)序列數(shù)據(jù)。循環(huán)神經(jīng)網(wǎng)絡(luò)最初就是為了刻畫(huà)一個(gè)序列當(dāng)前的輸出與之前信息的關(guān)系。從網(wǎng)絡(luò)結(jié)構(gòu)上來(lái)看,循環(huán)神經(jīng)網(wǎng)絡(luò)會(huì)記憶之前的信息,并利用之前的信息影響后面節(jié)點(diǎn)的輸出。也就是說(shuō),循環(huán)神經(jīng)網(wǎng)絡(luò)的隱藏層之間的節(jié)點(diǎn)是有連接的,隱藏層的輸入不僅包含輸入層的輸出,還包括上一時(shí)刻隱藏層的輸出。
2.2.1 一般循環(huán)神經(jīng)網(wǎng)絡(luò)
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)一般分為三層:輸入層、隱藏層、輸出層。輸入層的輸入經(jīng)過(guò)加權(quán)計(jì)算輸出到隱藏層,作為隱藏層的輸入。隱藏層再對(duì)從輸入層得到的輸入進(jìn)行加權(quán)計(jì)算輸入到輸出層,最后通過(guò)激活函數(shù),由輸出層輸出最終的結(jié)果。
循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)與其十分的相似,都是由輸入層、隱藏層和輸出層構(gòu)成,最大的區(qū)別在于循環(huán)神經(jīng)網(wǎng)絡(luò)的隱藏層多了一個(gè)自身到自身的環(huán)形連接,其結(jié)構(gòu)如下圖所示:
其中,x 表示輸入層,s 表示隱藏層的輸出,o 表示輸出層的值。U 是輸入 x 特征與隱藏層神經(jīng)元全連接的權(quán)重矩陣,V 則是隱藏層與輸出層全連接的權(quán)值矩陣。o 的輸出由權(quán)值矩陣 V 和隱藏層輸出 s 決定。s 的輸出不僅僅由權(quán)值矩陣 U 以及輸入 x 來(lái)決定,還要依賴(lài)于新的權(quán)值矩陣 W 以及上一次 s 的輸出。其中,W 表示上一次隱藏層的輸出到這一次隱藏層輸入的權(quán)值矩陣,該層被稱(chēng)為循環(huán)層。
2.2.2 單向循環(huán)神經(jīng)網(wǎng)絡(luò)
將一般循環(huán)神經(jīng)如下圖所示展開(kāi)便是單向循環(huán)神經(jīng)網(wǎng)絡(luò):
對(duì)于單向循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),你可以理解為網(wǎng)絡(luò)的輸入通過(guò)時(shí)間進(jìn)行向后傳播。當(dāng)前隱藏層的輸出 st 除了取決于當(dāng)前的輸入層的輸入向量 xt 外,還受到上一時(shí)刻隱藏層的輸出向量 st+1 的影響,因此,當(dāng)前時(shí)刻隱藏層的輸出信息包含了之前時(shí)刻的信息,表現(xiàn)出對(duì)之前信息記憶的能力??梢圆捎萌缦鹿綄?duì)單向循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行表示:
其中 o t ot ot 表示輸出層的結(jié)果,g 為輸出層的激活函數(shù),V 為輸出層的權(quán)值矩陣。 s t st st 表示隱藏層的結(jié)果,它由當(dāng)前時(shí)刻的輸入層輸入 x t xt xt 以及上一時(shí)刻隱藏層輸出 s t ? 1 st?1 st?1 共同決定,U 表示輸入層到隱藏層的權(quán)值矩陣,W 為上一時(shí)刻的值 s t ? 1 st?1 st?1 到這一次輸入的權(quán)值矩陣,f 為隱藏層的激活函數(shù)。循環(huán)神經(jīng)網(wǎng)絡(luò)的遞歸數(shù)學(xué)式如下所示:
2.2.3 基于循環(huán)神經(jīng)網(wǎng)絡(luò)的字符級(jí)語(yǔ)言模型
接下來(lái),我們看一下如何使用循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)構(gòu)建語(yǔ)言模型。 設(shè)小批量大小為 1,批量中的文本序列為 “machine”。為了簡(jiǎn)化后續(xù)部分的訓(xùn)練,我們考慮使用字符級(jí)語(yǔ)言模型(character-level language model), 將文本詞元化為字符而不是單詞。下圖演示了如何通過(guò)基于字符級(jí)語(yǔ)言建模的循環(huán)神經(jīng)網(wǎng)絡(luò),使用當(dāng)前的和先前的字符預(yù)測(cè)下一個(gè)字符。
在訓(xùn)練過(guò)程中,對(duì)每個(gè)時(shí)間步的輸出層的輸出進(jìn)行 softmax 操作,然后利用交叉熵?fù)p失計(jì)算模型輸出和標(biāo)簽之間的誤差。由于隱藏層中隱狀態(tài)的循環(huán)計(jì)算上圖中的第 3 個(gè)時(shí)間步的輸出 O3 由文本序列 “m”,“a” 和“c”確定。由于訓(xùn)練數(shù)據(jù)中這個(gè)文本序列的下一個(gè)字符是 “h”,因此第 3 個(gè)時(shí)間步的損失將取決于下一個(gè)字符的概率分布,而下一個(gè)字符是基于特征序列“m”,“a”,“c” 和這個(gè)時(shí)間步的標(biāo)簽 “h” 生成的。
2.2.4 模型評(píng)價(jià)
RNN 的優(yōu)點(diǎn):
- 能夠記憶上一時(shí)間的輸入信息。
- 處理任意長(zhǎng)度的輸入。
- 模型形狀不隨輸入長(zhǎng)度增加改變形狀。
- 權(quán)重隨時(shí)間共享
RNN 的缺點(diǎn):
- 計(jì)算速度慢。
- 難以獲取很久以前的信息。
- 無(wú)法考慮當(dāng)前狀態(tài)的任何未來(lái)輸入。
- 在 RNN 中經(jīng)常遇到梯度消失和爆炸現(xiàn)象。
3.Transformer 語(yǔ)言模型實(shí)現(xiàn)過(guò)程
3.1 Transformer 語(yǔ)言模型簡(jiǎn)介
Transformer 模型使用 Self-Attention 結(jié)構(gòu)取代在 NLP 任務(wù)中常用的 RNN 網(wǎng)絡(luò)結(jié)構(gòu)。相比 RNN 網(wǎng)絡(luò)結(jié)構(gòu),其最大的優(yōu)點(diǎn)是可以并行計(jì)算。Transformer 的整體模型架構(gòu)如下圖所示:
Transformer 本質(zhì)上是一個(gè) Encoder-Decoder 架構(gòu)。Transformer 的中間部分可以分為兩個(gè)部分:編碼組件和解碼組件。如下圖所示:
詞向量的輸入
Transformer 輸入是一個(gè)序列數(shù)據(jù),以我愛(ài)你為例:Encoder 的 inputs 就是 “I LOVE YOU” 分詞后的詞向量。
輸入 inputs embedding 后需要給每個(gè) word 的詞向量添加位置編碼 positional encoding。
3.1.1 位置編碼 positional encoding
一句話(huà)中同一個(gè)詞,如果詞語(yǔ)出現(xiàn)位置不同,意思可能發(fā)生翻天覆地的變化,例如:我欠他 100 和 他欠我 100。這兩句話(huà)的意思一個(gè)地獄一個(gè)天堂??梢?jiàn)獲取詞語(yǔ)出現(xiàn)在句子中的位置信息是一件很重要的事情。但是 Transformer 的是完全基于 self-Attention,而 self-attention 無(wú)法獲取詞語(yǔ)位置信息,就算打亂一句話(huà)中詞語(yǔ)的位置,每個(gè)詞還是能與其他詞之間計(jì)算 attention 值,就相當(dāng)于是一個(gè)功能強(qiáng)大的詞袋模型,對(duì)結(jié)果沒(méi)有任何影響。因此在輸入的時(shí)候需要給每一個(gè)詞向量添加位置編碼。
positional encoding 獲取過(guò)程:
Transformer 使用的是正余弦位置編碼。位置編碼通過(guò)使用不同頻率的正弦、余弦函數(shù)生成,然后和對(duì)應(yīng)的位置的詞向量相加,位置向量維度必須和詞向量的維度一致。過(guò)程如上圖,PE(positional encoding)計(jì)算公式如下:
pos 表示單詞在句子中的絕對(duì)位置,pos=0,1,2…,例如:YOU 在 “I LOVE YOU” 中的 pos=2;dmodel 表示詞向量的維度,在這里 dmodel=512;2i 和 2i+1 表示奇偶性,i 表示詞向量中的第幾維,例如這里 dmodel=512,故 i=0,1,2…255。
編碼組件由多層編碼器(Encoder)組成(在此處使用了 6 層編碼器)。解碼組件也是由相同層數(shù)的解碼器(Decoder)組成(在此處使用了 6 層)。如下圖所示:
3.1.2 Encoder
編碼器層的作用:作為編碼器的組成單元,每個(gè)編碼器層完成一次對(duì)輸入的特征提取過(guò)程,即編碼過(guò)程。
編碼器的作用:編碼器用于對(duì)輸入進(jìn)行指定的特征提取過(guò)程也稱(chēng)為編碼,由 N 個(gè)編碼器層堆疊而成。
每個(gè)編碼器層由兩個(gè)子層組成:Self-Attention 層(自注意力層)和 Position-wise Feed Forward Network(前饋網(wǎng)絡(luò),縮寫(xiě)為 FFN)如下圖所示。每個(gè)編碼器的結(jié)構(gòu)都是相同的,但是它們使用不同的權(quán)重參數(shù)。
編碼器的輸入會(huì)先流入 Self-Attention 層,它可以讓編碼器在對(duì)特定詞進(jìn)行編碼時(shí)使用輸入句子中的其他詞的信息(當(dāng)翻譯一個(gè)詞時(shí),不僅只關(guān)注當(dāng)前的詞,而且還會(huì)關(guān)注其他詞的信息)。然后 Self-Attention 層的輸出會(huì)流入前饋網(wǎng)絡(luò)。
解碼器也有編碼器中這兩層,但是它們之間還有一個(gè)注意力層(即 Encoder-Decoder Attention),用來(lái)幫解碼器關(guān)注輸入句子的相關(guān)部分(類(lèi)似于 seq2seq 模型中的注意力)。如下圖所示:
3.1.3 多頭注意力機(jī)制(Multi-head Attention)
通過(guò)添加一種多頭注意力機(jī)制,進(jìn)一步完善自注意力層。首先,通過(guò) h 個(gè)不同的線(xiàn)性變換對(duì) Query、Key 和 Value 進(jìn)行映射;然后,將不同的 Attention 拼接起來(lái);最后,再進(jìn)行一次線(xiàn)性變換?;窘Y(jié)構(gòu)如下圖所示:
每一組注意力用于將輸入映射到不同的子表示空間,這使得模型可以在不同子表示空間中關(guān)注不同的位置。整個(gè)計(jì)算過(guò)程可表示為:
在多頭注意力下,將輸入的 X 乘以 WQ、WK 和 WV 矩陣,從而為每組注意力單獨(dú)生成不同的 Query、Key 和 Value 矩陣。如下圖所示:
按照上面的方法,使用不同的權(quán)重矩陣進(jìn)行 8 次自注意力計(jì)算,得到 8 個(gè)不同的 Z 矩陣。接下來(lái)將這 8 個(gè)矩陣整合為一個(gè)矩陣。具體流程如下:
-
把 8 個(gè)矩陣{Z0,Z1,?,Z7}拼接。
-
把拼接后的矩陣和一個(gè)權(quán)重矩陣 WO 相乘。
-
得到最終的矩陣 Z,這個(gè)矩陣包含了所有注意力頭的信息。這個(gè)矩陣會(huì)輸入到 FFN 層。
3.1.4 Feed-Forward Networks
全連接層是一個(gè)兩層的神經(jīng)網(wǎng)絡(luò),先線(xiàn)性變換,然后 ReLU 非線(xiàn)性,再線(xiàn)性變換。公式如下:
這里的 x 就是 Multi-Head Attention 的輸出 Z,引用上面的例子,那么 Z 是 (2,64) 維的矩陣,假設(shè) W1 是(64,1024),其中 W2 與 W1 維度相反(1024,64),那么按照上面的公式:
FFN(Z)=(2,64)x(64,1024)x(1024,64)=(2,64),發(fā)現(xiàn)維度沒(méi)有發(fā)生變化,這兩層網(wǎng)絡(luò)就是為了將輸入的 Z 映射到更加高維的空間中 (2,64)x(64,1024)=(2,1024),然后通過(guò)非線(xiàn)性函數(shù) ReLU 進(jìn)行篩選,篩選完后再變回原來(lái)的維度。然后經(jīng)過(guò) Add&Normalize,輸入下一個(gè) encoder 中,經(jīng)過(guò) 6 個(gè) encoder 后輸入到 decoder。
3.1.5 Decoder
Decoder 的輸入分為兩類(lèi):
一種是訓(xùn)練時(shí)的輸入,一種是預(yù)測(cè)時(shí)的輸入。
訓(xùn)練時(shí)的輸入:已經(jīng)對(duì)準(zhǔn)備好對(duì)應(yīng)的 target 數(shù)據(jù)。例如翻譯任務(wù),Encoder 輸入 “I LOVE YOU”,Decoder 輸入 “我愛(ài)你”。
預(yù)測(cè)時(shí)的輸入:一開(kāi)始輸入的是起始符,然后每次輸入是上一時(shí)刻 Transformer 的輸出。例如,輸入 “”,輸出"I",輸入"I",輸出"I LOVE",輸入" 我愛(ài) “,輸出"I LOVE YOU”,輸入" 我愛(ài)你 “,輸出” 我愛(ài)你 " 結(jié)束。
解碼器層的作用:作為解碼器的組成單元,每個(gè)解碼器層根據(jù)給定的輸入,向目標(biāo)方向進(jìn)行特征提取操作,即解碼過(guò)程。
解碼器的作用:根據(jù)編碼器的結(jié)果以及. 上 - 次預(yù)測(cè)的結(jié)果,對(duì)下一次可能出現(xiàn)的 “值” 進(jìn)行特征表示。
3.1.6 Mask(掩碼)
Mask 表示掩碼,它對(duì)某些值進(jìn)行掩蓋,使其在參數(shù)更新時(shí)不產(chǎn)生效果。Transformer 模型里面涉及兩種 mask,分別是 Padding Mask 和 Sequence Mask。其中,Padding Mask 在所有的 scaled dot-product attention 里面都需要用到,而 Sequence Mask 只有在 Decoder 的 Self-Attention 里面用到。
Padding Mask: 由于每個(gè)批次輸入序列長(zhǎng)度不一樣,所以要對(duì)輸入序列進(jìn)行對(duì)齊。具體來(lái)說(shuō),就是給在較短的序列后面填充 0。但由于填充的位置,對(duì)于語(yǔ)句無(wú)實(shí)際意義,attention 機(jī)制不應(yīng)該把注意力放在這些位置上,所以需要進(jìn)行一些處理。具體做法是,把這些位置的值加上一個(gè)非常大的負(fù)數(shù) (負(fù)無(wú)窮),再經(jīng)過(guò) softmax,這些位置的概率就會(huì)接近 0。
Sequence Mask:Sequence Mask 是為了使得 Decoder 不能看見(jiàn)未來(lái)的信息。對(duì)于一個(gè)序列,在 t 時(shí)刻,解碼輸出只能依賴(lài)于 t 時(shí)刻之前的輸出,而不能依賴(lài) t 之后的輸出。因此需要隱藏 t 之后的信息。實(shí)現(xiàn)過(guò)程為:產(chǎn)生一個(gè)上三角矩陣,上三角的值全為 0,將這個(gè)矩陣作用在每一個(gè)序列上。
3.2 模型評(píng)價(jià)
-
Transformer 優(yōu)點(diǎn):
-
長(zhǎng)期依賴(lài)性建模:Transformer 模型通過(guò)使用自注意力機(jī)制(self-attention)可以更好地捕捉長(zhǎng)期依賴(lài)關(guān)系,這對(duì)于處理長(zhǎng)文本或具有遠(yuǎn)距離依賴(lài)性的任務(wù)非常重要。
-
并行計(jì)算:Transformer 模型中的自注意力機(jī)制和位置編碼可以使輸入序列的所有位置同時(shí)進(jìn)行處理,這導(dǎo)致模型可以高效地并行計(jì)算,加快訓(xùn)練和推理速度。
-
可解釋性:相對(duì)于傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),Transformer 模型在處理序列數(shù)據(jù)時(shí)更具可解釋性。由于自注意力機(jī)制可以指定每個(gè)位置與其他位置的相關(guān)性,因此可以更清晰地理解模型對(duì)輸入的處理過(guò)程。
-
模塊化架構(gòu):Transformer 模型以塊(block)為基本單元構(gòu)建,每個(gè)塊包含多層自注意力機(jī)制和前饋神經(jīng)網(wǎng)絡(luò)層。這種模塊化的架構(gòu)使得 Transformer 模型易于修改、擴(kuò)展和調(diào)整,研究人員和開(kāi)發(fā)者可以根據(jù)需要自由組合和堆疊塊。
-
多語(yǔ)言支持:Transformer 模型的設(shè)計(jì)使其能夠輕松地適應(yīng)不同的語(yǔ)言,無(wú)論是訓(xùn)練還是生成文本。這使得 Transformer 模型在機(jī)器翻譯和跨語(yǔ)言任務(wù)中表現(xiàn)出色。
-
-
Transformer 缺點(diǎn):
-
學(xué)習(xí)成本高:相對(duì)于傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò),Transformer 模型通常需要更大的計(jì)算資源和更長(zhǎng)的訓(xùn)練時(shí)間。這限制了它在資源受限的環(huán)境中的應(yīng)用。
-
過(guò)擬合風(fēng)險(xiǎn):Transformer 模型通常具有大量的參數(shù),當(dāng)訓(xùn)練數(shù)據(jù)不足時(shí)容易發(fā)生過(guò)擬合。這需要使用正則化技術(shù)、更多的數(shù)據(jù)或其他方法來(lái)控制模型的泛化性能。
-
序列位置信息建模:盡管 Transformer 模型引入了位置編碼來(lái)處理序列中的位置信息,但對(duì)于極長(zhǎng)的序列,位置編碼可能不足以準(zhǔn)確地捕捉遠(yuǎn)距離的依賴(lài)關(guān)系,這可能影響模型的性能。
-
對(duì)輸入序列長(zhǎng)度的敏感性:Transformer 模型的自注意力機(jī)制對(duì)輸入序列的長(zhǎng)度非常敏感。較長(zhǎng)的序列需要更多的計(jì)算資源,而較短的序列可能無(wú)法充分利用自注意力機(jī)制。因此,在設(shè)計(jì)模型時(shí)需要權(quán)衡輸入序列的長(zhǎng)度和計(jì)算效率之間的平衡。
-
4.Bert模型
BERT(Bidirectional Encoder Representations from Transformers)是一個(gè)預(yù)訓(xùn)練的語(yǔ)言表征模型。它強(qiáng)調(diào)了不再像以往一樣采用傳統(tǒng)的單向語(yǔ)言模型或者把兩個(gè)單向語(yǔ)言模型進(jìn)行淺層拼接的方法進(jìn)行預(yù)訓(xùn)練,而是采用新的掩蔽語(yǔ)言模型(masked language model),以致能生成深度雙向語(yǔ)言表征。
BERT 的特征抽取結(jié)構(gòu)為雙向的 Transformer,直接使用了 Transformer Encoder Block 結(jié)構(gòu),如上圖所示。
4.1 Bert 詞嵌入(Embedding)
Bert 的 Embedding 由三種 Embedding 求和而成,如下圖所示:
-
Token embedding 層是要將各個(gè)詞轉(zhuǎn)換成固定維度的向量。在 BERT 中,每個(gè)詞會(huì)被轉(zhuǎn)換成 768 維的向量表示。輸入文本在送入 token embeddings 層之前要先進(jìn)行 tokenization 處理。假設(shè)輸入文本是:“my dog is cute he likes playing”,會(huì)將兩個(gè)特殊的 token 會(huì)插入到 tokenization 的結(jié)果的開(kāi)頭 ([CLS]) 和結(jié)尾 ([SEP]) 。這兩個(gè) token 為后面的分類(lèi)任務(wù)和劃分句子對(duì)服務(wù)。
-
tokenization 使用的方法是 WordPiece tokenization。這是一個(gè)數(shù)據(jù)驅(qū)動(dòng)式的 tokenization 方法,旨在權(quán)衡詞典大小和 oov 詞(超出詞表外的詞)的個(gè)數(shù)。這種方法把例子中的 “playing” 切分成了 “play” 和“##ing”(此處不詳細(xì)展開(kāi))。使用 WordPiece tokenization 讓 BERT 在處理英文文本的時(shí)候僅需要存儲(chǔ) 30,522 個(gè)詞,而且很少遇到 oov 的詞。
-
經(jīng)過(guò)處理,上述句子被轉(zhuǎn)換成 “[CLS] my dog is cute [SEP] he likes play ##ing [SEP]”,也就是 11 個(gè) token。這樣,例子中的 7 個(gè)詞的句子就轉(zhuǎn)換成了 11 個(gè) token,然后接著得到了一個(gè)(11, 768) 的矩陣或者是(1, 11, 768) 的張量。
Segment Embeddings 層用來(lái)區(qū)別兩種句子,預(yù)訓(xùn)練除了 LM,還需要做判斷兩個(gè)句子先后順序的分類(lèi)任務(wù)。
- 前一個(gè)句子的每個(gè) token 都用 0 表示,后一個(gè)句子的每個(gè) token 都用 1 表示。如 “[CLS] my dog is cute [SEP] he likes play ##ing [SEP]” 表示成 “0 0 0 0 0 0 1 1 1 1 1”。如果輸入僅僅只有一個(gè)句子,那么它的 segment embedding 就是全 0。這也是一個(gè)(11, 768) 維的向量。
- Position Embeddings 層和 Transformer 的 Position Embeddings 不一樣,在 Transformer 中使用的是公式法,在 Bert 中是通過(guò)訓(xùn)練得到的。加入 position embeddings 會(huì)讓 BERT 理解 “I think, therefore I am” 中的第一個(gè) “I”和第二個(gè) “I” 應(yīng)該有著不同的向量表示。
- BERT 能夠處理最長(zhǎng) 512 個(gè) token 的輸入序列。通過(guò)讓 BERT 在各個(gè)位置上學(xué)習(xí)一個(gè)向量表示來(lái)講序列順序的信息編碼進(jìn)來(lái)。這意味著 Position Embeddings layer 實(shí)際上就是一個(gè)大小為 (512, 768) 的 lookup 表,表的第一行是代表第一個(gè)序列的第一個(gè)位置,第二行代表序列的第二個(gè)位置,以此類(lèi)推。因此,如果有這樣兩個(gè)句子 “Hello world” 和“Hi there”,“Hello”和 “Hi” 會(huì)由完全相同的 position embeddings,因?yàn)樗麄兌际蔷渥拥牡谝粋€(gè)詞。同理,“world”和 “there” 也會(huì)有相同的 position embedding。
4.2 預(yù)訓(xùn)練任務(wù)(Pre-training Task)
第一個(gè)任務(wù)是采用 MaskLM(掩蔽語(yǔ)言模型)的方式來(lái)訓(xùn)練語(yǔ)言模型,通俗地說(shuō)就是在輸入一句話(huà)的時(shí)候,隨機(jī)地選一些要預(yù)測(cè)的詞,然后用一個(gè)特殊的符號(hào) [MASK] 來(lái)代替它們,之后讓模型根據(jù)所給的標(biāo)簽去學(xué)習(xí)這些地方該填的詞。
第二個(gè)任務(wù)在雙向語(yǔ)言模型的基礎(chǔ)上額外增加了一個(gè)句子級(jí)別的連續(xù)性預(yù)測(cè)任務(wù),即預(yù)測(cè)輸入 BERT 的兩段文本是否為連續(xù)的文本,引入這個(gè)任務(wù)可以更好地讓模型學(xué)到連續(xù)的文本片段之間的關(guān)系。
BERT 使用了 Transformer 的 Encoder 模塊,分別用 12 層和 24 層 Transformer Encoder 組裝了兩套 BERT 模型,分別是:
其中層的數(shù)量 (即,Transformer Encoder 塊的數(shù)量) 為 L,隱藏層的維度為 H,自注意頭的個(gè)數(shù)為 A。將前饋 / 過(guò)濾器 (Transformer Encoder 端的 feed-forward 層) 的維度設(shè)置為 4H,即當(dāng) H=768 時(shí)是 3072;當(dāng) H=1024 是 4096 。
4.3 優(yōu)缺點(diǎn)
- 優(yōu)點(diǎn):效果好,能夠解決 11 項(xiàng) NLP 任務(wù)。Bert 微調(diào)下游任務(wù)的時(shí)候,即使數(shù)據(jù)集非常?。ū热缧∮?5000 個(gè)標(biāo)注樣本),模型性能也有不錯(cuò)的提升。
- 缺點(diǎn):1.BERT 的預(yù)訓(xùn)練任務(wù) MLM 使得能夠借助上下文對(duì)序列進(jìn)行編碼,但同時(shí)也使得其預(yù)訓(xùn)練過(guò)程與中的數(shù)據(jù)與微調(diào)的數(shù)據(jù)不匹配,難以適應(yīng)生成式任務(wù)。 2.BERT 沒(méi)有考慮預(yù)測(cè) [MASK] 之間的相關(guān)性,是對(duì)語(yǔ)言模型聯(lián)合概率的有偏估計(jì)。由于最大輸入長(zhǎng)度的限制,適合句子和段落級(jí)別的任務(wù),不適用于文檔級(jí)別的任務(wù)(如長(zhǎng)文本分類(lèi))。
5.關(guān)鍵知識(shí)點(diǎn)
-
大語(yǔ)言模型預(yù)訓(xùn)練:1.大語(yǔ)言模型預(yù)訓(xùn)練是遷移學(xué)習(xí)的一種 2.模型預(yù)訓(xùn)練的最主要特點(diǎn)是模型參數(shù)不是隨機(jī)初始化的,而是通過(guò)一些任務(wù)預(yù)訓(xùn)練過(guò)的 3.模型預(yù)訓(xùn)練可以提高模型的泛化能力 4.模型預(yù)訓(xùn)練后只需小量數(shù)據(jù)才能獲得很好的效果
-
大語(yǔ)言模型預(yù)訓(xùn)練技術(shù)能幫助解決:1.在許多機(jī)器學(xué)習(xí)任務(wù)中缺乏先驗(yàn)知識(shí) 2.許多NLP任務(wù)泛化能力較差 3.標(biāo)注數(shù)據(jù)太少等問(wèn)題
-
ChatGPT模型的微調(diào)包括哪個(gè)階段:訓(xùn)練監(jiān)督策略模型、訓(xùn)練獎(jiǎng)勵(lì)模型、采用近端策略?xún)?yōu)化進(jìn)行強(qiáng)化學(xué)習(xí)
-
基于神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型主要解決
自然語(yǔ)言生成
問(wèn)題 -
在前饋神經(jīng)網(wǎng)絡(luò)中,為了減小梯度消失的影響,常常采用
梯度裁剪
的方法是 -
基于循環(huán)神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型通常具有特點(diǎn):能夠預(yù)測(cè)下一個(gè)詞匯、能夠生成連續(xù)的文本、能夠理解自然語(yǔ)言
-
在基于循環(huán)神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型中,輸入的詞嵌入可以通過(guò)
預(yù)訓(xùn)練的詞向量、隨機(jī)初始化的矩陣
方式得到 -
Transformer 是一種基于
遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network)
網(wǎng)絡(luò)結(jié)構(gòu)的模型 -
transformer 中的 Self-Attention 機(jī)制能夠?qū)崿F(xiàn)
學(xué)習(xí)到輸入序列中每個(gè)位置的重要程度
-
在 Transformer 中,Encoder 和 Decoder 的區(qū)別在于:Encoder 包含多層 Self-Attention 和 Feed-Forward 層,而 Decoder 包含多層 Self-Attention、Encoder-Decoder Attention 和 Feed-Forward 層
更多優(yōu)質(zhì)內(nèi)容請(qǐng)關(guān)注公號(hào):汀丶人工智能;會(huì)提供一些相關(guān)的資源和優(yōu)質(zhì)文章,免費(fèi)獲取閱讀。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-580122.html
經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型中,輸入的詞嵌入可以通過(guò)預(yù)訓(xùn)練的詞向量、隨機(jī)初始化的矩陣
方式得到
-
Transformer 是一種基于
遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network)
網(wǎng)絡(luò)結(jié)構(gòu)的模型 -
transformer 中的 Self-Attention 機(jī)制能夠?qū)崿F(xiàn)
學(xué)習(xí)到輸入序列中每個(gè)位置的重要程度
-
在 Transformer 中,Encoder 和 Decoder 的區(qū)別在于:Encoder 包含多層 Self-Attention 和 Feed-Forward 層,而 Decoder 包含多層 Self-Attention、Encoder-Decoder Attention 和 Feed-Forward 層
更多優(yōu)質(zhì)內(nèi)容請(qǐng)關(guān)注公號(hào):汀丶人工智能;會(huì)提供一些相關(guān)的資源和優(yōu)質(zhì)文章,免費(fèi)獲取閱讀。
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-580122.html
到了這里,關(guān)于大語(yǔ)言模型的預(yù)訓(xùn)練[1]:基本概念原理、神經(jīng)網(wǎng)絡(luò)的語(yǔ)言模型、Transformer模型原理詳解、Bert模型原理介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!