前言
為什么我們使用chatgpt問(wèn)一個(gè)問(wèn)題,回答時(shí),他是一個(gè)字或者一個(gè)詞一個(gè)詞的蹦出來(lái),感覺(jué)是有個(gè)人在輸入,顯得很高級(jí),其實(shí)這這一個(gè)詞一個(gè)詞蹦不是為了高級(jí)感,而是他的實(shí)現(xiàn)原理決定的,下面我們看下為什么是一個(gè)一個(gè)蹦出來(lái)的

?
大模型的本質(zhì)
特斯拉前AI總監(jiān)Andrej Karpathy將大語(yǔ)言模型簡(jiǎn)單的描述為: 大模型的本質(zhì)就是兩個(gè)文件,一個(gè)是參數(shù)文件,一個(gè)是包含運(yùn)行這些參數(shù)的代碼文件。
參數(shù)文件是組成整個(gè)神經(jīng)網(wǎng)絡(luò)的權(quán)重,代碼文件是用來(lái)運(yùn)行這個(gè)神經(jīng)網(wǎng)絡(luò)的代碼,可以是C或者其他任何編程語(yǔ)言寫(xiě)的,當(dāng)然目前主要都是Python

?
那么接下來(lái)的問(wèn)題就是:參數(shù)從哪里來(lái)?
這就引到了模型訓(xùn)練。
本質(zhì)上來(lái)說(shuō),大模型訓(xùn)練就是對(duì)互聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行有損壓縮(大約10TB文本),需要一個(gè)巨大的GPU集群來(lái)完成。
以700億參數(shù)的Llama 2(Facebook開(kāi)源的羊駝大模型)為例,就需要6000塊GPU,然后花上12天得到一個(gè)大約140GB的“壓縮文件”,整個(gè)過(guò)程耗費(fèi)大約200萬(wàn)美元。
而有了“壓縮文件”,模型就等于靠這些數(shù)據(jù)對(duì)世界形成了理解。

大模型是如何工作的
簡(jiǎn)單來(lái)說(shuō),大模型的工作原理就是依靠這些壓縮數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)對(duì)所給序列中的下一個(gè)單詞進(jìn)行預(yù)測(cè)。
?
比如我們問(wèn)將“中 華 人民 ”輸入進(jìn)去后,請(qǐng)大模型補(bǔ)充完整,可以想象是分散在整個(gè)網(wǎng)絡(luò)中的十億、上百億參數(shù)依靠神經(jīng)元相互連接,順著這種連接就找到了下一個(gè)連接的詞,然后給出概率,比如“共和國(guó)(97%)”,就形成了“中華人民共和國(guó)”的完整句子。然后繼續(xù)將“中華人民共和國(guó)”作為輸入,繼續(xù)依·靠神經(jīng)元相互連接,順著這種連接就找到了下一個(gè)連接的詞,然后給出概率,比如“中華人民共和國(guó) 成立于1949年(98%)”.


根據(jù)維基百科我們可以看到中華人民共和國(guó)出現(xiàn)了571次,概率非常大,實(shí)際上大模型就是對(duì)給出序列的下一個(gè)詞的概率預(yù)測(cè)

?
這就是為什么我們剛才講大語(yǔ)言模型都是一個(gè)詞一個(gè)詞的蹦了,你可以理解大模型就是一個(gè)很牛逼的成語(yǔ)接龍大師
?
那么大模型又是如何訓(xùn)練,并預(yù)測(cè)下一個(gè)詞的呢?
?
神經(jīng)網(wǎng)絡(luò)
看到“神經(jīng)網(wǎng)絡(luò)”幾個(gè)字就覺(jué)得復(fù)雜了不往下看了,別緊張,一點(diǎn)都不復(fù)雜,讓我們繼續(xù)看。
歷史上,科學(xué)家一直希望模擬人的大腦,造出可以思考的機(jī)器。人為什么能夠思考?科學(xué)家發(fā)現(xiàn),原因在于人體的神經(jīng)網(wǎng)絡(luò)。

?
?外部刺激通過(guò)神經(jīng)末梢,轉(zhuǎn)化為電信號(hào),轉(zhuǎn)導(dǎo)到神經(jīng)細(xì)胞(又叫神經(jīng)元)。
?無(wú)數(shù)神經(jīng)元構(gòu)成神經(jīng)中樞。
?神經(jīng)中樞綜合各種信號(hào),、做出判斷。
?人體根據(jù)神經(jīng)中樞的指令,對(duì)外部刺激做出反應(yīng)。
感知器
最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)“感知器”,早在1957年就被發(fā)明,并使用了.直到今天還在用

上圖的圓圈就代表一個(gè)感知器。它接受多個(gè)輸入(x1,x2,x3...),產(chǎn)生一個(gè)輸出(output),好比神經(jīng)末梢感受各種外部環(huán)境的變化,最后產(chǎn)生電信號(hào)。
為了簡(jiǎn)化模型,我們約定每種輸入只有兩種可能:1 或 0。如果所有輸入都是1,表示各種條件都成立,輸出就是1;如果所有輸入都是0,表示條件都不成立,輸出就是0。
?
下面來(lái)看一個(gè)例子。最近剛上映一部好萊塢大片,張三拿不定主意。周末要不要去看電影.
決定他要不要去看電影有三個(gè)因素(特征)。
?天氣:周末是否晴天?
?價(jià)格:票價(jià)是否可承受?
?女朋友:能否找到女朋友一起去?
這就構(gòu)成一個(gè)感知器。上面三個(gè)因素就是外部輸入,最后的決定就是感知器的輸出。如果三個(gè)因素都是 Yes(使用1表示),輸出就是1(去看電影);如果都是 No(使用0表示),輸出就是0(不去看電影)。
?
權(quán)重和閾值
那么:如果某些因素成立,另一些因素不成立,輸出是什么?比如,周末是好天氣,票價(jià)也不貴,但是張三找不到女朋友,他還會(huì)不會(huì)去看電影呢?
現(xiàn)實(shí)中,各種因素很少具有同等重要性:某些因素是決定性因素,另一些因素是次要因素。因此,可以給這些因素指定權(quán)重(weight),代表它們不同的重要性。
?天氣:權(quán)重為8
?價(jià)格:權(quán)重為4
?女朋友:權(quán)重為4
上面的權(quán)重表示,天氣是決定性因素,女朋友和價(jià)格都是次要因素。
?
如果三個(gè)因素都為1,它們乘以權(quán)重的總和就是 8 + 4 + 4 = 16。
如果天氣和價(jià)格因素為1,女朋友因素為0,總和就變?yōu)?8 + 0 + 4 = 12。
這時(shí),還需要指定一個(gè)閾值(threshold)。如果總和大于閾值,感知器輸出1,否則輸出0。假定閾值為8,那么 12 > 8,小明決定去看電影。閾值的高低代表了意愿的強(qiáng)烈,閾值越低就表示越想去,越高就越不想去。

這就是一個(gè)包含了輸入層、隱藏層、輸出層、權(quán)重的一個(gè)非常簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)例子。當(dāng)然實(shí)際場(chǎng)景會(huì)比這個(gè)更復(fù)雜,對(duì)于神經(jīng)網(wǎng)絡(luò)小白來(lái)說(shuō),已有了一個(gè)感性的認(rèn)識(shí).
?
上面圖中的連接是神經(jīng)元中最重要的東西。每一個(gè)連接上都有一個(gè)權(quán)重。
上面我們自定義了幾個(gè)因素的權(quán)重
?天氣:權(quán)重為8
?價(jià)格:權(quán)重為4
?女朋友:權(quán)重為4
但是實(shí)際情況,這個(gè)權(quán)重我們只是初始化了一個(gè)值,通過(guò)大量的數(shù)據(jù)進(jìn)行訓(xùn)練,然后不斷的調(diào)整得到的權(quán)重值.例如隨機(jī)利用1萬(wàn)人的習(xí)慣數(shù)據(jù),他們是否都是天氣好的時(shí)候去看電影,沒(méi)女朋友的時(shí)候不去看電影等等.這個(gè)權(quán)重值就是經(jīng)過(guò)訓(xùn)練不斷更新得到的.這樣就可以預(yù)測(cè)張三會(huì)不會(huì)去看電影
?
這就是一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),一個(gè)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程就是讓權(quán)重的值調(diào)整到最佳,以使得整個(gè)網(wǎng)絡(luò)的預(yù)測(cè)效果最好。最終的訓(xùn)練結(jié)果可能是“女朋友”這個(gè)權(quán)重占98,其他都是次要的

?
玩一玩神經(jīng)網(wǎng)絡(luò)
上面我們講的都是一些簡(jiǎn)單的例子,下面我們看一個(gè)簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)在線演示和實(shí)驗(yàn)的平臺(tái)
TenforFlow Playground 又名 TensorFlow 游樂(lè)場(chǎng),是一個(gè)用來(lái)圖形化教學(xué)的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)在線演示和實(shí)驗(yàn)的平臺(tái),非常強(qiáng)大且極其易用。如果您已經(jīng)有一部分神經(jīng)網(wǎng)絡(luò)知識(shí),使用此工具,可以快速體驗(yàn)一個(gè)算法工程師的調(diào)參工作。
在線體驗(yàn)地址: http://playground.tensorflow.org/
開(kāi)源github地址:https://github.com/tensorflow/playground?
?
下圖可簡(jiǎn)單理解為,正在訓(xùn)練1萬(wàn)人,以天氣、價(jià)格、女朋友這三個(gè)特征,進(jìn)行訓(xùn)練,判斷什么情況下會(huì),人們會(huì)去看電影、什么情況下不會(huì)去看電影


上圖標(biāo)明了該頁(yè)面上每個(gè)部分的含義,剛開(kāi)始不用全部都理解,感興趣再去研究每部分都是干嘛的,下面列了理解該頁(yè)面的一些解釋。
?
1.運(yùn)行控制區(qū),這里主要對(duì)算法執(zhí)行進(jìn)行控制,可以啟動(dòng)、暫停和重置
2.迭代次數(shù)展示區(qū),這里展示當(dāng)前算法執(zhí)行到了哪一次迭代
3.超參數(shù)選擇區(qū),這里可以調(diào)整算法的一些超參數(shù),不同的超參能解決不同的算法問(wèn)題,得到不同的效果
4.數(shù)據(jù)集調(diào)整區(qū),數(shù)據(jù)集定義了我們要解決怎樣的問(wèn)題,數(shù)據(jù)集是機(jī)器學(xué)習(xí)最為重要的一環(huán),
5.特征向量選擇,從數(shù)據(jù)集中抓取出的可以用來(lái)被訓(xùn)練的特征值
6.神經(jīng)網(wǎng)絡(luò)區(qū)域,算法工程師構(gòu)建的用于數(shù)據(jù)擬合的網(wǎng)絡(luò)
7.預(yù)測(cè)結(jié)果區(qū),展示此算法的預(yù)測(cè)結(jié)果
?
一些名詞解釋
?參數(shù):通常是指網(wǎng)絡(luò)中可以通過(guò)訓(xùn)練數(shù)據(jù)自動(dòng)學(xué)習(xí)和調(diào)整的那些數(shù)值,例如權(quán)重(weights)和偏置(biases)。這些參數(shù)是模型在學(xué)習(xí)過(guò)程中不斷調(diào)整的,以便更好地預(yù)測(cè)或分類(lèi)數(shù)據(jù)。
?超參數(shù):則是指那些控制訓(xùn)練過(guò)程本身的參數(shù)。不同于模型參數(shù),超參數(shù)通常是在訓(xùn)練開(kāi)始之前設(shè)置的,并且在訓(xùn)練過(guò)程中保持不變。換句話說(shuō),超參數(shù)是用來(lái)定義模型結(jié)構(gòu)(例如有多少層、每層有多少個(gè)神經(jīng)元)和控制訓(xùn)練過(guò)程(例如學(xué)習(xí)速率、訓(xùn)練輪數(shù))的高級(jí)設(shè)置。
?線性:指的是一種直接比例關(guān)系,即輸出直接隨輸入按固定比例變化。用通俗的話說(shuō),就像你加速汽車(chē),速度的增加與你踩油門(mén)的力度成正比。比如,假設(shè)你的工資是按小時(shí)計(jì)算的,這時(shí)候工資(輸出)和工作時(shí)間(輸入)之間就是線性關(guān)系。
?非線性:則是指輸出和輸入之間的關(guān)系不是直接比例的,即輸出不會(huì)直接隨輸入按固定比例變化。通俗來(lái)說(shuō),就像你對(duì)一只橡皮筋施力,開(kāi)始時(shí)很容易拉長(zhǎng),但越往后拉越難,力的增加和橡皮筋的伸長(zhǎng)之間就是非線性關(guān)系。在現(xiàn)實(shí)生活中,很多復(fù)雜的現(xiàn)象(如天氣變化)都是非線性的。
?激活函數(shù):在神經(jīng)網(wǎng)絡(luò)中用來(lái)引入非線性因素,使得網(wǎng)絡(luò)能夠?qū)W習(xí)和模擬復(fù)雜的輸入與輸出之間的關(guān)系。簡(jiǎn)單來(lái)說(shuō),激活函數(shù)就像是決定神經(jīng)元是否應(yīng)該被激活(即對(duì)信息做出反應(yīng))的開(kāi)關(guān)。例如,ReLU(Rectified Linear Unit,修正線性單元)激活函數(shù)是一種常用的激活函數(shù),它的作用是:如果輸入是正數(shù)就原樣輸出,如果是負(fù)數(shù)就輸出0。這樣的非線性特性讓神經(jīng)網(wǎng)絡(luò)能夠處理更加復(fù)雜和抽象的任務(wù),比如圖像識(shí)別和語(yǔ)言處理。
?學(xué)習(xí)率:是在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí)用來(lái)控制模型學(xué)習(xí)進(jìn)度的一個(gè)參數(shù)。簡(jiǎn)單講就是每次給權(quán)重添加多少值,如果加的越多,容易學(xué)習(xí)過(guò)頭,如果加的太低,學(xué)習(xí)次數(shù)就會(huì)變多
?正則化:是一種用于避免模型過(guò)擬合的技術(shù),可以理解為給模型訓(xùn)練加上一種約束或者懲罰。
?正則率:(通常用λ表示)則是控制正則化強(qiáng)度的參數(shù)。正則率的值越大,對(duì)模型復(fù)雜度的懲罰就越重,模型就越傾向于更加簡(jiǎn)單,但過(guò)高的正則率可能導(dǎo)致模型過(guò)于簡(jiǎn)單,無(wú)法捕捉數(shù)據(jù)的關(guān)鍵特征,即欠擬合。因此,選擇合適的正則率是保持模型泛化能力和擬合能力之間平衡的關(guān)鍵。
?
特別注意:不是學(xué)習(xí)的越精準(zhǔn)、越?jīng)]瑕疵越好,過(guò)度擬合或?qū)е抡`判

?
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過(guò)程本質(zhì)上就是在學(xué)習(xí)數(shù)據(jù)的分布
?
Transformer架構(gòu)(深度學(xué)習(xí)模型)
有了上面的感性理解后,讓我們稍微加一點(diǎn)點(diǎn)難度,理解一下Transformer架構(gòu)。
目前絕大多數(shù)的開(kāi)源大模型都是基于Transformer架構(gòu)的。Transformer架構(gòu)自2017年由Vaswani等人在論文《Attention is All You Need》中提出以來(lái),迅速成為自然語(yǔ)言處理(NLP)領(lǐng)域的主流架構(gòu),廣泛應(yīng)用于各種任務(wù),如機(jī)器翻譯、文本生成、問(wèn)答系統(tǒng)等等。Transformer模型的核心創(chuàng)新是自注意力機(jī)制(Self-Attention Mechanism),這使得模型能夠在處理序列數(shù)據(jù)時(shí),有效地捕捉序列內(nèi)各元素之間的關(guān)系,無(wú)論它們?cè)谛蛄兄械奈恢萌绾芜h(yuǎn)近。
1、向量、矩陣
講Transformer之前,先回憶一下高中知識(shí):向量、矩陣

向量相加得到另一個(gè)向量,可以理解為兩條向量一共走了多少路徑,的直線距離

向量相乘,可以看成向量B在向量A的垂線上的正射投影和向量A的長(zhǎng)度的乘積

矩陣其實(shí)就是多維向量組,如圖就是3個(gè)向量組成的1個(gè)矩陣

?
矩陣相乘,請(qǐng)查看動(dòng)畫(huà)演示
?http://matrixmultiplication.xyz/?

?
感興趣并想深入研究的同學(xué),可以自行溫習(xí)一下向量、向量的加、乘法、三角函數(shù)、矩陣、線性代數(shù)等基礎(chǔ)知識(shí)。有以上幾張圖的基本理解就完全足夠理解下面我們即將要講的大模型核心架構(gòu)Transformer了。
?
2、Transformer架構(gòu)圖
下圖就是一個(gè)Transformer的架構(gòu)圖,現(xiàn)在讓我們看Transformer時(shí)如何實(shí)現(xiàn)訓(xùn)練的

從下往上大致分為這樣一個(gè)流程,樣本文字轉(zhuǎn)數(shù)字向量--->增加位置信息--->自身的語(yǔ)義關(guān)系學(xué)習(xí)---->數(shù)字縮放(歸一化)---->輸出概率---->對(duì)應(yīng)的文字。下面讓我們逐一的來(lái)看每一層都做了什么。
3、訓(xùn)練文字的token化與嵌入向量

?
對(duì)輸入的文本進(jìn)行token的數(shù)字轉(zhuǎn)換,每個(gè)字對(duì)應(yīng)一個(gè)從編碼庫(kù)中標(biāo)記出來(lái)的一個(gè)token向量.得到一個(gè)4行x64列的這么一個(gè)矩陣,每一行代表了1個(gè)token(1個(gè)token其實(shí)就是一個(gè)向量,chatgpt按token收費(fèi),其中的token就是這個(gè)意思),每列代表了這個(gè)token在不同語(yǔ)義下的1個(gè)數(shù)字
?
是如何標(biāo)記的呢,實(shí)際上是通過(guò)一張超級(jí)大的編碼字典表中查找到的.
目前常用的是openai開(kāi)源的向量查找表庫(kù)tiktoken
?https://github.com/openai/tiktoken?

?
為什么有多列呢?因?yàn)槊總€(gè)字可能存在多種意思,例如“思”字, 你是什么意思?我沒(méi)什么意思,就是意思意思,每個(gè)思字是不同含義的.
?
?輸入:樣本訓(xùn)練文本。
?輸出:token化的詞嵌入向量矩陣。
?
4、位置信息編碼
經(jīng)過(guò)token化和嵌入向量得到的數(shù)據(jù)矩陣還不能給模型訓(xùn)練.
例如,張麻子正在打李麻子,這句話中,通過(guò)token化嵌入向量后,不明確“麻子”這個(gè)詞指代的是哪個(gè)麻子,所以需要進(jìn)行位置編碼,需要讓我們?cè)谟?xùn)練的過(guò)程中即知道token、又知道語(yǔ)義,還需知道位置,怎么引入位置呢?

?

?
當(dāng)添加位置信息編碼時(shí),不可能像咱們現(xiàn)在這樣,每個(gè)位置的編碼是整數(shù)順序大小的,我們這里只有“中華人民”四個(gè)字,所以是1、2、3、4的位置編碼,如果我們有1萬(wàn)字,位置編碼就會(huì)很大,導(dǎo)致向量比較分散,如何解決呢?
sin,cos正好可以拿來(lái)做位置編碼,因?yàn)檎?、余弦的值永遠(yuǎn)都在-1~1之間
奇數(shù)位置:sin(f(x))
偶數(shù)位置:cos(f(x))

?
token矩陣與位置編碼矩陣相加,得到的矩陣就可以丟給模型去訓(xùn)練了
?
?輸入:詞嵌入向量矩陣。
?輸出:通過(guò)增加位置編碼后,得到可訓(xùn)練的帶位置信息的向量矩陣。
?
5、自注意力機(jī)制
注意:這一小節(jié)是核心,這一小節(jié)是核心,這一小節(jié)是核心
漢字的序順并不定一影閱響讀

1.自注意力層讓模型能夠在處理一個(gè)單詞時(shí)考慮到句子中的其他單詞。這使得模型能夠捕捉單詞之間的關(guān)系,比如代詞和它所指代的名詞。
例子:在處理句子"漢字的序順并不定一影閱響讀"時(shí),自注意力層會(huì)幫助模型理解"序"和"順"的關(guān)系。
想象一下,你正在一個(gè)聚會(huì)上,周?chē)泻芏嗳嗽诹奶?。你的大腦會(huì)自動(dòng)地選擇性地聽(tīng)某些人的話,這取決于你認(rèn)為誰(shuí)的話對(duì)當(dāng)前的對(duì)話最重要或最有趣。也就是說(shuō),即便所有的聲音都進(jìn)入了你的耳朵,你的大腦還是會(huì)“關(guān)注”某些特定的聲音或信息。這個(gè)過(guò)程,就有點(diǎn)像自注意力機(jī)制在做的事情。
?
在自然語(yǔ)言處理(NLP)中,當(dāng)我們給模型輸入一個(gè)句子,比如:“我愛(ài)吃蘋(píng)果”,模型的目標(biāo)可能是理解這個(gè)句子的意思,或者翻譯成另一種語(yǔ)言。自注意力機(jī)制允許模型在處理每個(gè)詞(比如“蘋(píng)果”)時(shí),不僅考慮這個(gè)詞本身,還要考慮它與句子中其他詞的關(guān)系。模型會(huì)“關(guān)注”句子中的每個(gè)詞,然后根據(jù)這些詞之間的關(guān)系來(lái)決定哪些詞是更重要的。
自注意力機(jī)制會(huì)為句子中的每個(gè)詞生成一個(gè)“權(quán)重”,這個(gè)權(quán)重反映了當(dāng)前處理的詞對(duì)句子中其他詞的關(guān)注程度。比如,在處理“蘋(píng)果”這個(gè)詞時(shí),模型可能會(huì)給“吃”這個(gè)詞分配更高的權(quán)重,因?yàn)檫@兩個(gè)詞之間有直接的關(guān)系。通過(guò)這種方式,模型就可以更好地理解每個(gè)詞在句子中的作用,進(jìn)而更好地理解整個(gè)句子的意思。回到前面的句子“漢字的序順并不定一影閱響讀”,看下圖,“順”字跟句子中其他字之間都會(huì)生成一個(gè)關(guān)系權(quán)重,經(jīng)過(guò)大量的訓(xùn)練,“順”字對(duì)“序”字的權(quán)重最大。

簡(jiǎn)單來(lái)說(shuō),自注意力就是模型在處理信息時(shí),能夠“自己決定”去關(guān)注哪些相關(guān)的信息,這樣做可以幫助模型更好地理解和處理數(shù)據(jù)。
?
如何實(shí)現(xiàn)的呢?自注意力機(jī)制的核心思想是讓每個(gè)輸入元素(如一個(gè)詞)能夠關(guān)注到其他輸入元素,從而捕捉到序列中的全局依賴(lài)關(guān)系。矩陣乘法在自注意力機(jī)制中起到了關(guān)鍵作用,使用矩陣相乘,找到位置相似的向量,即最終得到比較合理的權(quán)重值

矩陣相乘后,值越大說(shuō)明詞與詞之間的關(guān)注度越高
大致的訓(xùn)練過(guò)程是這樣的:“順”字對(duì)“序”字的關(guān)注度,是在訓(xùn)練的過(guò)程中不斷的調(diào)整向量坐標(biāo)(權(quán)重),以達(dá)到最佳效果


自注意力層實(shí)際上做了兩件事,1是計(jì)算詞與詞之間的關(guān)注度權(quán)重,同時(shí)加權(quán)求和后輸出新的矩陣(預(yù)測(cè)出的詞的得分矩陣)
計(jì)算詞與詞之間的關(guān)注度權(quán)重(Attention Scores):自注意力機(jī)制首先會(huì)計(jì)算序列中每個(gè)詞對(duì)于其他所有詞的關(guān)注度權(quán)重。這個(gè)過(guò)程通常涉及將輸入序列的每個(gè)元素(例如,每個(gè)詞)轉(zhuǎn)換成三個(gè)向量:查詢(xún)(Query)、鍵(Key)和值(Value),通過(guò)計(jì)算查詢(xún)向量與鍵向量之間的相似度(通常是點(diǎn)積或某種歸一化形式的點(diǎn)積),來(lái)得出這些權(quán)重。這些權(quán)重表明了序列中每個(gè)元素對(duì)其他元素的重要性程度。
?
加權(quán)求和后輸出新的矩陣:一旦計(jì)算出關(guān)注度權(quán)重,自注意力機(jī)制會(huì)使用這些權(quán)重對(duì)值(Value)向量進(jìn)行加權(quán)求和,以生成每個(gè)位置新的表示。這個(gè)過(guò)程實(shí)質(zhì)上是根據(jù)每個(gè)元素對(duì)序列中其他元素的關(guān)注度,重新組合了原始信息。這樣,輸出的新矩陣中的每個(gè)元素都融合了整個(gè)序列的信息,反映了序列內(nèi)部的復(fù)雜依賴(lài)關(guān)系。
?
?輸入:一個(gè)表示序列的矩陣 ( X )。
?線性變換:生成查詢(xún)(Q)、鍵(K)、和值(V)矩陣。
?注意力計(jì)算:并計(jì)算詞之間的關(guān)注度權(quán)重。
?輸出:通過(guò)注意力權(quán)重對(duì)值矩陣 ( V ) 進(jìn)行加權(quán)求和,得到自注意力機(jī)制的輸出矩陣。
6、 歸一化注意力分?jǐn)?shù)
歸一化是一種將數(shù)據(jù)按照一定規(guī)則縮放到一個(gè)特定范圍(通常是0到1之間或者是-1到1之間)的過(guò)程。這個(gè)過(guò)程可以幫助我們?cè)谔幚頂?shù)據(jù)時(shí),減少數(shù)據(jù)之間因?yàn)榱烤V(單位大?。┎煌瑤?lái)的影響,使得數(shù)據(jù)之間的比較或者計(jì)算更加公平和合理。同時(shí)提高訓(xùn)練速度和穩(wěn)定性
?
歸一化后的注意力分?jǐn)?shù)可以被解釋為概率,表示一個(gè)詞關(guān)注另一個(gè)詞的程度。
?
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過(guò)程本質(zhì)上是在學(xué)習(xí)數(shù)據(jù)的分布,如果沒(méi)有進(jìn)行歸一化的處理,那么每一批次的訓(xùn)練數(shù)據(jù)的分布是不一樣的,
?從大的方向上來(lái)看,神經(jīng)網(wǎng)絡(luò)則需要在這多個(gè)分布當(dāng)中找到平衡點(diǎn)
?從小的方向上來(lái)看 ,由于每層的網(wǎng)絡(luò)輸入數(shù)據(jù)分布在不斷地變化 ,那么會(huì)導(dǎo)致每層網(wǎng)絡(luò)都在找平衡點(diǎn),顯然網(wǎng)絡(luò)就變得難以收斂。
下圖中,我們可以看到數(shù)據(jù)歸一化后的效果。 原始值(藍(lán)色)現(xiàn)在以零(紅色)為中心。 這確保了所有特征值現(xiàn)在都處于相同的比例。

例子說(shuō)明歸一化:
再舉個(gè)簡(jiǎn)單的例子,假設(shè)一個(gè)班級(jí)里有5個(gè)學(xué)生參加了一次考試,分?jǐn)?shù)分別是
學(xué)生A=90分
學(xué)生B=80分
學(xué)生C=70分
學(xué)生D=60分
學(xué)生E=50分
這個(gè)分?jǐn)?shù)比較大,對(duì)于如果我們想將這些分?jǐn)?shù)歸一化到0到1之間,我們可以將每個(gè)學(xué)生的分?jǐn)?shù)減去最低分50分,然后再除以最高分和最低分的差值,即40分(90-50)。這樣,90分就變成了1((90-50)/40),50分就變成了0((50-50)/40),其他分?jǐn)?shù)也會(huì)相應(yīng)轉(zhuǎn)換到0到1之間的某個(gè)值。這個(gè)過(guò)程就是歸一化。通過(guò)歸一化,我們可以更直觀地看出每個(gè)學(xué)生的成績(jī)?cè)诎嗉?jí)中的相對(duì)位置。
7、 前饋神經(jīng)網(wǎng)絡(luò)
通過(guò)以上步驟,輸出的內(nèi)容基本都是向量矩陣,都是線性的,并且每個(gè)詞都是獨(dú)立處理的,單詞之間沒(méi)有信息的交換,然而,前饋神經(jīng)網(wǎng)絡(luò)可以訪問(wèn)之前由頭注意力復(fù)制的任何信息。前饋層由神經(jīng)元組成,這些神經(jīng)元是可以計(jì)算其輸入加權(quán)和的數(shù)學(xué)函數(shù)。前饋層之所以強(qiáng)大,是因?yàn)樗写罅康倪B接。例如,GPT-3 的前饋層要大得多:輸出層有 12288 個(gè)神經(jīng)元(對(duì)應(yīng)模型的 12288 維詞向量),隱藏層有 49152 個(gè)神經(jīng)元。
?
自注意力機(jī)制:在這一步,每個(gè)詞會(huì)觀察周?chē)脑~,以找出與自己相關(guān)的上下文信息。
前饋神經(jīng)網(wǎng)絡(luò):在這一步,每個(gè)詞會(huì)根據(jù)自己收集到的上下文信息,進(jìn)行信息的整合和處理。

在數(shù)學(xué)和物理學(xué)中,非線性是指任何不遵循加法原理(輸出不是輸入的直接倍數(shù))或者乘法原理(系統(tǒng)的響應(yīng)不是輸入的簡(jiǎn)單線性組合)的現(xiàn)象。
?
8、 訓(xùn)練與推理
以上訓(xùn)練過(guò)程實(shí)際上就是我們文章開(kāi)頭提到的“大模型訓(xùn)練就是對(duì)互聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行有損壓縮”的有損壓縮的過(guò)程。
?訓(xùn)練:是指使用大量的數(shù)據(jù)對(duì)模型進(jìn)行學(xué)習(xí)和優(yōu)化的過(guò)程。在這個(gè)過(guò)程中,模型學(xué)習(xí)數(shù)據(jù)中的模式、特征、規(guī)律等,調(diào)整自身的參數(shù)以盡可能準(zhǔn)確地對(duì)各種輸入做出預(yù)測(cè)或輸出。
?推理:則是在訓(xùn)練完成后,將新的數(shù)據(jù)輸入到已訓(xùn)練好的模型中,讓模型基于其學(xué)到的知識(shí)和模式進(jìn)行計(jì)算、分析并給出相應(yīng)的輸出或預(yù)測(cè)結(jié)果??梢哉f(shuō)訓(xùn)練是讓模型具備能力,而推理是運(yùn)用這種能力來(lái)處理具體的任務(wù)和問(wèn)題。
?
其實(shí)上面我們只講了大模型訓(xùn)練的過(guò)程,沒(méi)有講推理的過(guò)程,推理的過(guò)程跟訓(xùn)練的過(guò)程大致相同,相差就是訓(xùn)練的過(guò)程是沉淀結(jié)果,推理是直接計(jì)算完成之后輸出,并沉淀結(jié)果。感興趣的同學(xué)可以自己下來(lái),我們網(wǎng)上經(jīng)??吹降腡ransformer架構(gòu)圖如下,左邊是輸入,右邊是輸出,可以看出輸入、輸出的中間部分基本是相同的
我們可以簡(jiǎn)單理解左邊部分時(shí)訓(xùn)練的過(guò)程、右邊部分時(shí)推理的過(guò)程.時(shí)間關(guān)系,推理的過(guò)程咱們先不講了,感興趣的同學(xué)可以下去看看

審核編輯 黃宇
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4838瀏覽量
107756 -
大模型
+關(guān)注
關(guān)注
2文章
3650瀏覽量
5179
發(fā)布評(píng)論請(qǐng)先 登錄
高中數(shù)學(xué)公式大全
誰(shuí)有無(wú)任何功率器件的移動(dòng)電源管理芯片?
讓你在不看任何數(shù)學(xué)公式的情況下理解傅里葉分析
CONTROLSUITE安裝后打開(kāi)無(wú)任何操作按鍵
FOC有哪些數(shù)學(xué)公式
Virtual Device Manager無(wú)任何虛擬硬件,點(diǎn)擊Refresh不能解決如何處理?
CH573觸摸按鍵無(wú)任何AD數(shù)據(jù)的變化怎么解決?
高等數(shù)學(xué)公式大全
數(shù)學(xué)公式編輯器 V3.1
MathType7.4數(shù)學(xué)公式編輯器應(yīng)用程序免費(fèi)下載
由數(shù)學(xué)公式和電磁理論分析PCB產(chǎn)品的特性和原理
特性阻抗的數(shù)學(xué)公式和各種參數(shù)詳細(xì)概述
如何在Arduino UNO上實(shí)現(xiàn)數(shù)學(xué)公式
無(wú)任何數(shù)學(xué)公式理解大模型基本原理
評(píng)論