大模型基礎(chǔ)補(bǔ)全計(jì)劃(一)---重溫一些深度學(xué)習(xí)相關(guān)的數(shù)學(xué)知識
PS:要轉(zhuǎn)載請注明出處,本人版權(quán)所有。
PS: 這個只是基于《我自己》的理解,
如果和你的原則及想法相沖突,請諒解,勿噴。
環(huán)境說明
??無
前言
??遙記在2021年左右,我寫了一系列關(guān)于深度學(xué)習(xí)視覺方向基礎(chǔ)學(xué)習(xí)的文章,它們?nèi)缦拢?/p>
- DL基礎(chǔ)補(bǔ)全計(jì)劃(一)---線性回歸及示例(Pytorch,平方損失) https://githubio.e-x.top/2021/07/04/blog_idx_105/
- DL基礎(chǔ)補(bǔ)全計(jì)劃(二)---Softmax回歸及示例(Pytorch,交叉熵?fù)p失) https://githubio.e-x.top/2021/07/11/blog_idx_106/
- DL基礎(chǔ)補(bǔ)全計(jì)劃(三)---模型選擇、欠擬合、過擬合 https://githubio.e-x.top/2021/07/18/blog_idx_107/
- DL基礎(chǔ)補(bǔ)全計(jì)劃(四)---對抗過擬合:權(quán)重衰減、Dropout https://githubio.e-x.top/2021/08/01/blog_idx_108/
- DL基礎(chǔ)補(bǔ)全計(jì)劃(五)---數(shù)值穩(wěn)定性及參數(shù)初始化(梯度消失、梯度爆炸) https://githubio.e-x.top/2021/08/08/blog_idx_109/
- DL基礎(chǔ)補(bǔ)全計(jì)劃(六)---卷積和池化 https://githubio.e-x.top/2021/08/15/blog_idx_110/
??那時候的我,還一心沉醉在視覺算法模型落地到側(cè)端的各個場景,雖然對NLP有所了解,但是當(dāng)時還未料想到,在后面的幾年,由大語言模型引爆的大模型領(lǐng)域是如此的火爆。到了2023左右,開始逐漸的接觸大模型,逐漸的將其應(yīng)用到自己的工作中,逐漸在工作中將大模型遷移到側(cè)端。從2024年開始,意識到如果要在以后將大模型應(yīng)用的更好,急需要補(bǔ)充一些大模型及NLP相關(guān)的知識才能更好的理解它。因此有了從本文開始的一系列文章。
??從本文開始,預(yù)計(jì)從數(shù)學(xué)知識開始,到transformer及LLM結(jié)束(挖坑),挑選一些內(nèi)容來學(xué)習(xí)記錄。
概率論、數(shù)理統(tǒng)計(jì)
??
基本概念
??在統(tǒng)計(jì)學(xué)中,把需要調(diào)查或者研究的某一現(xiàn)象或者事物的全部數(shù)據(jù)稱為統(tǒng)計(jì)總體(簡稱 總體population),其所屬的數(shù)據(jù)分布稱為 總體分布 (population distribution), 單個數(shù)據(jù)稱為個體(individual)。我們從統(tǒng)計(jì)總體中抽取樣本的過程稱為抽樣(sampling),一次抽樣的結(jié)果稱為一份樣本(sample),一份樣本中包含的個體數(shù)據(jù)的數(shù)量稱為本容量(sample size)。
??可以把分布(distribution)看作對事件的概率分配,P(X)表示為隨機(jī)變量X上的分布(distribution), 分布告訴我們X獲得某一值的概率
??概率(probability)在給定的樣本空間中,A事件的發(fā)生的可信度, 表示為P(A)
??推斷統(tǒng)計(jì)學(xué)(或稱統(tǒng)計(jì)推斷,英語:statistical inference), 指統(tǒng)計(jì)學(xué)中,研究如何根據(jù)樣本(sample)數(shù)據(jù)去推斷總體(population)特征(或者參數(shù))的方法, 比如根據(jù)樣本的平均值去估計(jì)總體的均值參數(shù)。 它是在對樣本數(shù)據(jù)進(jìn)行描述的基礎(chǔ)上,對統(tǒng)計(jì)總體的未知數(shù)量特征做出以概率形式表述的推斷。
??通常我們會假設(shè)總體分布服從某種已知的概率分布,但是分布的某些參數(shù)是不確定的, 比如全國身高數(shù)據(jù)服從正態(tài)分布,但是期望和方差不知道, 這時我們期望能通過樣本推斷(估計(jì))出總體正態(tài)分布的期望和方差參數(shù)。
??概率(probability)和統(tǒng)計(jì)(statistics)看似兩個相近的概念,其實(shí)研究的問題剛好相反。
- 概率研究的是,已經(jīng)知道了模型和參數(shù)后,給出一個事件發(fā)生的概率。θ是已知確定的,x是變量,這個函數(shù)叫做概率函數(shù)(probability function),它描述對于不同的樣本點(diǎn)x,其出現(xiàn)概率是多少(表示不同x出現(xiàn)的概率)。概率函數(shù)記作\(P(X=x_i|\theta)\)。
- 統(tǒng)計(jì)是根據(jù)給出的觀測數(shù)據(jù),利用這些數(shù)據(jù)進(jìn)行建模和參數(shù)的預(yù)測。x是已知確定的,θ是變量,這個函數(shù)叫做似然函數(shù)(likelihood function), 它描述對于不同的模型參數(shù)θ,出現(xiàn)x這個樣本點(diǎn)的概率是多少(表示不同θ下,x出現(xiàn)的概率)。此時的函數(shù)也記作\(L(\theta|X=x_i)\)。
聯(lián)合概率
??給定任意值a和b,聯(lián)合概率可以回答:A=a和B=b同時滿足的概率是多少,其表示為 \(P(A=a,B=b)=P(A=a)*P(B=b)\)
條件概率
??聯(lián)合概率的不等式帶給我們一個有趣的比率:\(0<= \frac{P(A=a,B=b)}{P(A=a)} <=1\),表示為\(P(B=b|A=a)\), 代表在A=a已發(fā)生的情況下,B=b的概率。也就是 $P(B=b|A=a) = \frac{P(A=a,B=b)}{P(A=a)} $。
貝葉斯定理
??因?yàn)闂l件概率公式:$P(B=b|A=a) = \frac{P(A=a,B=b)}{P(A=a)} ,P(A=a|B=b) = \frac{P(A=a,B=b)}{P(B=b)} \(。然后我們觀察兩個條件概率表達(dá)式,可看到有公有的聯(lián)合概率部分,改變方程即可得到:\)P(A,B) = P(A|B) * P(B) = P(B|A) * P(A)$ ,這個就是貝葉斯公式。
此外此定理在深度學(xué)習(xí)中有一些特殊的解釋:
- P(A|B):在事件 B 已經(jīng)發(fā)生的情況下,事件 A 發(fā)生的后驗(yàn)概率 。
- P(B|A):在事件 A 已經(jīng)發(fā)生的情況下,事件 B 發(fā)生的似然 。
- P(A):事件 A 的先驗(yàn)概率(在沒有額外信息時對 A 的概率估計(jì))。
- P(B):事件 B 的邊緣概率(即 B 發(fā)生的總概率)。
首先我們定義一個深度學(xué)習(xí)的模型為:\(P(\theta,D) = \frac{P(D|\theta) * P(\theta)}{P(D)}\), 其參數(shù)為 θ,訓(xùn)練數(shù)據(jù)為 D。我們的目標(biāo)是根據(jù)數(shù)據(jù) D 來更新對參數(shù) θ 的估計(jì),這里我們來看一個例子:
- $P(\theta | D) $:在觀察到數(shù)據(jù) D 后,參數(shù) $\theta $ 的后驗(yàn)分布 。
- $P(\theta) $:參數(shù) $\theta $ 的先驗(yàn)分布 (在沒有看到數(shù)據(jù)之前對參數(shù)的假設(shè))。
- $P(D | \theta) $:在給定參數(shù) \(\theta\) 的情況下,生成數(shù)據(jù) D 的似然函數(shù) 。
- $P(D) $:數(shù)據(jù) D 的邊緣概率 (歸一化常數(shù))
邊際化
??B的概率相當(dāng)于計(jì)算A的所有可能選擇,并將所有選擇的聯(lián)合概率聚合在一起:\(P(B) = \sum\limits_{i=1}^{n} P(A_i,B) , P(A) = \sum\limits_{i=1}^{n} P(B_i,A)\)
期望、均值、方差、概率
??一個隨機(jī)變量X的期望(expectation,或平均值(average))表示為: \(E(X) = \sum\limits_{x=1}^{n} x_i * P(X=x_i)\)
??均值是一個統(tǒng)計(jì)量(基于樣本構(gòu)造的函數(shù)),更偏統(tǒng)計(jì)學(xué)的概念;而期望完全由隨機(jī)變量的概率分布所確定(更偏概率學(xué)的概念),類似于在“上帝視角”下去計(jì)算均值,所謂上帝視角是指你擁有的是總體并且知道總體所有取值出現(xiàn)的概率
??希望衡量隨機(jī)變量X與其期望值的偏置。這可以通過方差來量化:\(V(X) = \frac{\sum\limits_{i=1}^{n}(x_i-E(X_i))^2}{n}\)
似然函數(shù)及最大似然估計(jì)
??似然估計(jì)函數(shù),其可以解釋為:假設(shè)我們有一個關(guān)于X的概率分布是\(P(X=x|\theta)\),\(\theta\)是關(guān)于X的概率分布的參數(shù)。假如我們從關(guān)于X的概率分布是\(P(X=x|\theta)\)中抽取n個樣本(這個時候往往我們是不知道其參數(shù)\(\theta\)的),這個時候我們想去估計(jì)\(\theta\),因此我們可以定義似然函數(shù)為: \(L(\theta|x_i,i\in{n}) = \prod\limits_{i=1}^{n} P(x_i|\theta)\)。
??注意,我們可以知道由于有n個樣本,每個樣本都有一個\(P(x_i|\theta)\),因此n個樣本的聯(lián)合概率就是似然函數(shù),根據(jù)聯(lián)合概率的定義,似然函數(shù)就是描述在\(x_i\)出現(xiàn)概率已知的情況下,出現(xiàn)\(\theta\)的概率。
??最大似然估計(jì)(Maximum Likelihood Estimation,MLE),又叫極大似然估計(jì),是統(tǒng)計(jì)學(xué)中應(yīng)用最廣泛的一種未知參數(shù)估計(jì)方法。 它可以在已知隨機(jī)變量屬于哪種概率分布的前提下, 利用隨機(jī)變量的一些觀測值估計(jì)出分布的一些參數(shù)值。
??最大似然估計(jì)函數(shù) 就是 對似然估計(jì)函數(shù) 取對數(shù),以簡化乘積的計(jì)算。那么其定義是:\(L(\theta|x_i,i\in{n}) = \sum\limits_{i=1}^{n} \ln{P(x_i|\theta)}\),對其求最大值就等于對其求 負(fù)最小值,其定義為:\(-\ln_{}{L(\theta|x_i,i\in{n})} = -\sum\limits_{i=1}^{n} \ln(P(x_i|\theta))\)
信息論
??
基本概念
??根據(jù)信息論中的定義:
- 信息量,事件發(fā)生概率越大,所攜帶的信息量越小。定義為:\(I(x)=\log_{2}(\frac{1}{P(x)})=-\log_{2}(P(x))=表示此事件的最少比特位數(shù)\) ,其也蘊(yùn)含了我們需要使用多個比特才能表示信息量。
- 信息熵,一個隨機(jī)變量的熵是指該變量可能的結(jié)果所蘊(yùn)含的不確定性的平均水平。可以類別期望的定義,這里得到信息量的均值:\(H(X)=-\sum\limits_{i=0}^{n-1}P(Xi)\log_{2}(P(Xi))\)
- KL差異:定義原概率分布為P(X),近似概率分布為Q(X),假如X是離散隨機(jī)變量,KL差異定義為:\(D_{KL}(P(X)||Q(X))=\sum\limits_{i=0}^{n-1}P(Xi)\log_{2}(P(Xi)/Q(Xi))=\sum\limits_{i=0}^{n-1}P(Xi)[\log_{2}(P(Xi)) - \log_{2}(Q(Xi))]\)
- 交叉熵(cross-entropy),交叉熵定義為:\(H(P,Q)=-\sum\limits_{i=0}^{n-1}P(Xi)\log_{2}(Q(Xi))\),我們可以看到\(H(P,Q)=H(P)+D_{KL}(P||Q)\)
深度學(xué)習(xí)中的交叉熵
??假如: 數(shù)據(jù)集{X, Y}有n個樣本,有特征向量\(x_i \in X\),獨(dú)熱標(biāo)簽向量\(y_i \in Y\),當(dāng)前模型最終softmax輸出的向量\(\hat{y}_i\)。首先,我們將\(\hat{y}_i\)當(dāng)做給定特征向量\(x_i\)的每個類別的條件概率。因此我們可以得到:\(\hat{y}_i=P(y_i|x_i)\)
??根據(jù)似然函數(shù)定義:\(L(\theta) = \prod_{i=1}^{n} P(y_i|x_i,\theta)\),其代表給定\(x_i, \theta\)情況下,觀察到\(y_i\)的概率。
??根據(jù)似然函數(shù),要使得其值為最大值,及 對其取負(fù)對數(shù),此外根據(jù)我們之前的定義:我們將\(\hat{y}_i\)當(dāng)做給定特征向量\(x_i\)的每個類別的條件概率。因此我們得到 \(-log{L(\theta)} = -log{\prod\limits_{i=1}^{n} P(y_i|x_i,\theta)} = -\sum\limits_{i=1}^{n} log{P(y_i|x_i,\theta)}= -\sum\limits_{i=1}^{n} log{\hat{y_i}}\)
??我們通過信息論中的定義得到交叉熵?fù)p失函數(shù)定義:\(l(y,\hat{y}) = - \sum\limits_{j=1}^{q} y_j * log{\hat{y}_j}\) ,其描述的是標(biāo)簽\(y_j\)和預(yù)測值\(\hat{y_j}\)兩個分布之間的差異值。
??我們對其交叉損失函數(shù)進(jìn)行多個樣本的求和可以得到:\(\sum\limits_{i=1}^{n}{l(y,\hat{y})} = - \sum\limits_{i=1}^{n}{\sum\limits_{j=1}^{q} y_j * log{\hat{y}_j}}\)
??由于\(y_j\)是標(biāo)簽的熱獨(dú)向量,只有對應(yīng)類別概率為1,其他類別為0,因此\(\sum\limits_{j=1}^{q} y_j * log{\hat{y}_j} = log{\hat{y}_j}\),因此可以得到交叉熵?fù)p失和似然函數(shù)之間的關(guān)系:$\sum\limits_{i=1}^{n}{l(y,\hat{y})} = - \sum\limits_{i=1}{n}{\sum\limits_{j=1} y_j * log{\hat{y}j}} = - \sum\limits^{n}{log{\hat{y}_j}} $
??從這里可以知道交叉熵?fù)p失函數(shù)與負(fù)對數(shù)似然函數(shù)的關(guān)系。
困惑度(Perplexity)
??這里我們討論如何度量語言模型的質(zhì)量。這里根據(jù)參考文件中的建議,不要直接使用交叉熵來理解,要從另外一個角度來理解。
??如果想要壓縮文本,我們可以根據(jù)當(dāng)前詞元集預(yù)測的下一個詞元。 一個更好的語言模型應(yīng)該能讓我們更準(zhǔn)確地預(yù)測下一個詞元。 因此,它應(yīng)該允許我們在壓縮序列時花費(fèi)更少的比特。 所以我們可以通過一個序列中所有的個詞元的交叉熵?fù)p失的平均值來衡量:
\(\frac{1}{n}\sum\limits_{t=1}^{n} -\log P(x_t|x_{t-1}, ...., x_1)\),我們看這個公式的含義就是每個預(yù)測的詞元信息量求和,然后再求平均值,最后平均值越小,意味著我們整個模型蘊(yùn)含的信息量越小,我們要壓縮這個文本需要的比特最少。
??由于歷史原因,自然語言處理的科學(xué)家更喜歡使用一個叫做困惑度(perplexity)的量。 簡而言之,它是上面提到的信息量均值的指數(shù):\(\exp(\frac{1}{n}\sum\limits_{t=1}^{n} -\log P(x_t|x_{t-1}, ...., x_1))\)
??我們來看一下困惑度的特性(信息量取值是[0,1]):
- 當(dāng)最好情況下,因此當(dāng)每個變量預(yù)測概率都是1,信息量為0,困惑度是\(\exp^0 = 1\)
- 當(dāng)最壞情況下,因此當(dāng)每個變量預(yù)測概率都是0,信息量為無窮大,困惑度是\(\exp^{\infty} = \infty\)
后記
??看了上面這些內(nèi)容,有些是以前接觸過的,有些是新的體驗(yàn) 總的來說,腦袋大了。
參考文獻(xiàn)

PS: 請尊重原創(chuàng),不喜勿噴。
PS: 要轉(zhuǎn)載請注明出處,本人版權(quán)所有。
PS: 有問題請留言,看到后我會第一時間回復(fù)。
posted on 2025-02-15 19:50 SkyOnSky 閱讀(386) 評論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號