自然語(yǔ)言處理-大模型篇

N-gram模型,根據(jù)歷史有限的長(zhǎng)度的總模型生成小模型的概率

//P表示某幾個(gè)詞在一起的概率
Never too late to learn = W(learn/never,too,late) = P(never, too) * P(never,too,late) *P(never,too,late,to)*P(never,too,late,to,learn)

該模型符合馬可夫鏈模型


image.png

神經(jīng)元組成

n個(gè)W權(quán)重和輸入值X,相乘后和一個(gè)b組成輸入,F代表函數(shù),輸出一個(gè)h代表輸出值

image.png

神經(jīng)元的前向計(jì)算

當(dāng)輸入的值交叉輸入神經(jīng)網(wǎng)絡(luò)時(shí),他從一個(gè)向量變成了一個(gè)X*W的矩陣,所以輸出的時(shí)候,h1他變成了一個(gè)向量,重復(fù)H1 * Wh1

圖片

*為什么F是非線性函數(shù),因?yàn)榫€性的F會(huì)將多層神經(jīng)網(wǎng)絡(luò)坍縮成一層,就是多層其實(shí)可以用單層表示,不符合神經(jīng)網(wǎng)絡(luò)的規(guī)律


image.png

常見非線性函數(shù)


image.png

sigmoid 可以解決二分類問題

softmax 可以計(jì)算概率問題,多分類問題


image.png

Z代表是最后的層
其中 z 是一個(gè)向量,z_i 和 z_j 是其中的一個(gè)元素,把他們變成e的z_i次方,除以他們e冪次方的總和,y_i的總和是1,代表概率分布

損失函數(shù)

訓(xùn)練的目的就是降低損失?

常用損失減小的辦法:
均方差
用預(yù)測(cè)值-正確值的平方,越小則代表越準(zhǔn)

image.png

交叉熵 -log(f(x))
交叉熵可以看作是在真實(shí)分布p下,使用預(yù)測(cè)分布q來編碼信息所需的平均位數(shù)。交叉熵越小,表示預(yù)測(cè)分布越接近真實(shí)分布,信息的損失越小。

交叉熵的應(yīng)用范圍:

交叉熵可以用來作為神經(jīng)網(wǎng)絡(luò)的損失函數(shù),用來優(yōu)化分類模型的性能。分類模型的目標(biāo)是讓預(yù)測(cè)的概率分布盡可能接近真實(shí)的概率分布,即讓交叉熵盡可能小。交叉熵作為損失函數(shù)有以下優(yōu)點(diǎn):

交叉熵與最大似然估計(jì)相關(guān),最小化交叉熵等價(jià)于最大化數(shù)據(jù)的似然函數(shù),即最大化模型的擬合程度。
交叉熵適用于梯度下降優(yōu)化,因?yàn)樗且粋€(gè)可微分的函數(shù),而且它的梯度與預(yù)測(cè)值和真實(shí)值的差值成正比,這樣可以有效地調(diào)整模型的參數(shù)。
交叉熵可以處理類別不平衡的問題,因?yàn)樗鼘?duì)每個(gè)類別的貢獻(xiàn)是不同的,即使某些類別的樣本很少,也可以通過交叉熵給予足夠的懲罰。

P13非常難懂

大概意思就是:

一個(gè)神經(jīng)網(wǎng)絡(luò)的開發(fā)方向:

1. 前向傳播(Forward Propagation):
  • 輸入數(shù)據(jù)傳入網(wǎng)絡(luò)。
  • 數(shù)據(jù)在每一層被加權(quán)和偏置處理,然后通常會(huì)通過一個(gè)激活函數(shù)(比如ReLU或Sigmoid)。
  • 最終產(chǎn)生輸出。
2. 計(jì)算損失(Loss Calculation):
  • 使用損失函數(shù)(比如均方誤差或交叉熵)計(jì)算網(wǎng)絡(luò)輸出與實(shí)際值之間的差距。
3. 反向傳播(Backpropagation):
  • 計(jì)算損失函數(shù)相對(duì)于每個(gè)參數(shù)的梯度。這個(gè)過程從輸出層開始,逐層向后進(jìn)行,直到輸入層。
  • 梯度告訴我們參數(shù)應(yīng)該如何改變以減少損失。
4. 更新參數(shù)(Update Parameters):
  • 使用計(jì)算出的梯度來更新網(wǎng)絡(luò)中的權(quán)重和偏置。
  • 這里的學(xué)習(xí)率決定了更新的步長(zhǎng)大小。
image.png
  • 求損失函數(shù)的梯度函數(shù),然后根據(jù)梯度就知道損失函數(shù)最陡峭或者最不陡峭的方向,然后根據(jù)學(xué)習(xí)率(0 - 1)乘以他得到梯度前進(jìn)的值

求該函數(shù)的斜率,維度多了就變成了求偏導(dǎo)數(shù)

正向-反向傳播可以求偏導(dǎo)數(shù)得到梯度下降法則

梯度下降法

P14:詞向量

Word2Vector
CBOW:根據(jù)輸入多個(gè)詞預(yù)測(cè)目標(biāo)詞


image.png

Skip-gram:根據(jù)target詞預(yù)測(cè)輸入詞


image.png
Negative Sampling 負(fù)采樣(減少計(jì)算量,采樣整個(gè)文本詞和采樣幾個(gè)詞)

采樣非目標(biāo)詞 后進(jìn)行softmax

Sub Sampling 負(fù)采樣(平衡罕見詞和常用詞)

1 - 根號(hào)(t/f(x))

RNN 循環(huán)神經(jīng)網(wǎng)絡(luò)
image.png

RNN容易出現(xiàn)梯度消失,或者梯度爆炸,沒聽懂

GRU 門控制單元

W和H加入一個(gè)Z控制輸入矩陣W和輸入H的調(diào)整

LSTM

image.png

ft的區(qū)間是是0-1之間,代表遺忘率

image.png
image.png
image.png
image.png

輸出門是計(jì)算ht的,傳送到下一層用的,講道理這個(gè)Ct和ht-1和Xt都用上了,非常復(fù)雜,視頻中說是對(duì)句子信息調(diào)整來修改表述

雙向RNN
image.png
卷積神經(jīng)網(wǎng)絡(luò) CNN

用于CV,Edge等圖像和NLP自然語(yǔ)言處理


image.png

Input x,類比圖像上的每個(gè)像素,Filter w代表覆蓋的像素區(qū)域滑塊. conv就是卷積操作
卷積核和每個(gè)覆蓋的值相乘,全部相加后變成一個(gè)值,就是特征值


深度學(xué)習(xí)流程

準(zhǔn)備數(shù)據(jù) -> 構(gòu)建模型 -> 訓(xùn)練模型 -> 驗(yàn)證模型 -> 測(cè)試模型

注意力機(jī)制 Attention

正常流程S1需要包含整個(gè)句子的內(nèi)容含義,這樣明顯太臃腫,屬于數(shù)據(jù)的瓶頸問題.
所以當(dāng)進(jìn)行玩Decoder解碼后,Encoder翻譯的每一個(gè)值S1開始,都與前面所以的隱向量進(jìn)行點(diǎn)積,求出關(guān)系密切程度,最后用Softmax找到分布關(guān)系最大的.此舉稱為注意力機(jī)制


image.png

最后拼接成為Yn = [On;Sn]向量去預(yù)測(cè)單詞,這里沒聽懂

直接連接Encoder和Decoder,防止梯度在RNN中傳播過長(zhǎng),可以解決梯度消失的問題,
可以解決信息瓶頸問題
可以直接可視化兩端的關(guān)系密切程度

缺點(diǎn)是順序執(zhí)行

Transformer

輸入層:

Byte Pair Encoding(BPE)

原理:
1.通過分解所有單詞變成字母,搜索字母表,找到最多出現(xiàn)的組合,變成一個(gè)新的詞

2.不斷重復(fù)1這個(gè)過程,同時(shí)刪除被合并且不再出現(xiàn)的詞,直到達(dá)到你輸入的詞匯數(shù)量限制

3.此時(shí)字典里面的每一個(gè)詞,稱為一個(gè)個(gè)Token

image.png

這里舉了一個(gè)英文最高級(jí)的例子,est,lowest,smartest,表示英文的最高級(jí),能助于模型理解詞性

解決了OOV問題(out of vocabulary),以前使用UNK代替,表示預(yù)處理造出了很多根本不存在的詞,這些詞也沒有辦法在文本中找到對(duì)應(yīng)的向量

位置編碼 Positional Encoding(PE)

很難,不太懂,原理:

Inusoidal Positional Encoding的原理是基于正弦和余弦函數(shù)的周期性特性。
這種編碼方式使得模型能夠?qū)W習(xí)到不同位置之間的相對(duì)位置信息,而不需要額外的參數(shù)或訓(xùn)練過程。
通過使用正弦和余弦函數(shù),可以保證不同位置的編碼之間存在一定的相似性,同時(shí)又能保持足夠的不同性,以區(qū)分不同位置的輸入。

具體而言,對(duì)于序列中的每個(gè)位置i和每個(gè)維度j,這里類似基數(shù)和偶數(shù)位,位置編碼PE(i, j)可以表示為:

PE(i, 2j) = sin(i / 10000^(2j/d_model))
PE(i, 2j+1) = cos(i / 10000^(2j/d_model))

其中,d_model是模型的隱藏層大?。磂mbedding的維度),i是位置,j是維度。
這樣,每個(gè)位置都會(huì)得到一個(gè)不同的編碼,而且編碼之間的差異會(huì)隨著位置的增加而增加,從而為模型提供了位置信息。

Transformer Block

image.png
多頭注意力機(jī)制 Multi-Head Attention

這章巨難!

像是對(duì)同一個(gè)X通過不同的W求了八個(gè)QKV,一共做了八次self attention
X代表輸入的某個(gè)token,W則是不同大模型通過訓(xùn)練出來的特定權(quán)重矩陣,代表不同的注意點(diǎn),比如一張圖,可以從顏色,形狀,材質(zhì),故事等方面去解析不同的attention,得到的X 乘以W,獲得不同的QKV,

可以參考這個(gè)大神講的,比較容易懂了Q、K、V 與 Multi-Head Attention 多頭注意力機(jī)制

image.png
image.png

本質(zhì)上是一種對(duì)token加權(quán)平均的做法,來表示哪個(gè)token更為重要,比如一句話中,主謂賓其實(shí)他們的權(quán)重是不一樣的,通常主語(yǔ)更重要,但是從語(yǔ)法來講,介詞和固定搭配反而比主語(yǔ)重要,多頭就是使用多個(gè)這種注意力對(duì)token進(jìn)行加權(quán),最后多頭平均在一起,那這句話的輸入就能從多維度去解讀,而不是僅僅在某一個(gè)維度,這是我的理解.其實(shí)沒太聽懂
驗(yàn)證了一下確實(shí)是這樣,通常會(huì)使用8頭,組成n x 512個(gè)維度去對(duì)一個(gè)token進(jìn)行釋義,其中QKV怎么來的,是通過transformer這個(gè)框架預(yù)訓(xùn)練的一個(gè)數(shù)據(jù)集計(jì)算出來的,里面包含了所有token他們之間的關(guān)系程度

預(yù)訓(xùn)練模型,就是基于語(yǔ)料對(duì)token進(jìn)行預(yù)處理的方法

通常針對(duì)你的自己的任務(wù),需要fine-turn自己合適的模型

Transformer實(shí)戰(zhàn)

  • 善用Hugging face,BERT,GPT預(yù)訓(xùn)練方式

  • 自動(dòng)Tokenization,完成token分割

image.png
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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