前言
為什么我們使用chatgpt問一個問題,回答時,他是一個字或者一個詞一個詞的蹦出來,感覺是有個人在輸入,顯得很高級,其實這這一個詞一個詞蹦不是為了高級感,而是他的實現(xiàn)原理決定的,下面我們看下為什么是一個一個蹦出來的
?
大模型的本質(zhì)
特斯拉前AI總監(jiān)Andrej Karpathy將大語言模型簡單的描述為: 大模型的本質(zhì)就是兩個文件,一個是參數(shù)文件,一個是包含運(yùn)行這些參數(shù)的代碼文件。
參數(shù)文件是組成整個神經(jīng)網(wǎng)絡(luò)的權(quán)重,代碼文件是用來運(yùn)行這個神經(jīng)網(wǎng)絡(luò)的代碼,可以是C或者其他任何編程語言寫的,當(dāng)然目前主要都是Python
?
那么接下來的問題就是:參數(shù)從哪里來?
這就引到了模型訓(xùn)練。
本質(zhì)上來說,大模型訓(xùn)練就是對互聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行有損壓縮(大約10TB文本),需要一個巨大的GPU集群來完成。
以700億參數(shù)的Llama 2(Facebook開源的羊駝大模型)為例,就需要6000塊GPU,然后花上12天得到一個大約140GB的“壓縮文件”,整個過程耗費(fèi)大約200萬美元。
而有了“壓縮文件”,模型就等于靠這些數(shù)據(jù)對世界形成了理解。
大模型是如何工作的
簡單來說,大模型的工作原理就是依靠這些壓縮數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)對所給序列中的下一個單詞進(jìn)行預(yù)測。
?
比如我們問將“中 華 人民 ”輸入進(jìn)去后,請大模型補(bǔ)充完整,可以想象是分散在整個網(wǎng)絡(luò)中的十億、上百億參數(shù)依靠神經(jīng)元相互連接,順著這種連接就找到了下一個連接的詞,然后給出概率,比如“共和國(97%)”,就形成了“中華人民共和國”的完整句子。然后繼續(xù)將“中華人民共和國”作為輸入,繼續(xù)依·靠神經(jīng)元相互連接,順著這種連接就找到了下一個連接的詞,然后給出概率,比如“中華人民共和國 成立于1949年(98%)”.
根據(jù)維基百科我們可以看到中華人民共和國出現(xiàn)了571次,概率非常大,實際上大模型就是對給出序列的下一個詞的概率預(yù)測
?
這就是為什么我們剛才講大語言模型都是一個詞一個詞的蹦了,你可以理解大模型就是一個很牛逼的成語接龍大師
?
那么大模型又是如何訓(xùn)練,并預(yù)測下一個詞的呢?
?
神經(jīng)網(wǎng)絡(luò)
看到“神經(jīng)網(wǎng)絡(luò)”幾個字就覺得復(fù)雜了不往下看了,別緊張,一點都不復(fù)雜,讓我們繼續(xù)看。
歷史上,科學(xué)家一直希望模擬人的大腦,造出可以思考的機(jī)器。人為什么能夠思考?科學(xué)家發(fā)現(xiàn),原因在于人體的神經(jīng)網(wǎng)絡(luò)。
?
?外部刺激通過神經(jīng)末梢,轉(zhuǎn)化為電信號,轉(zhuǎn)導(dǎo)到神經(jīng)細(xì)胞(又叫神經(jīng)元)。
?無數(shù)神經(jīng)元構(gòu)成神經(jīng)中樞。
?神經(jīng)中樞綜合各種信號,、做出判斷。
?人體根據(jù)神經(jīng)中樞的指令,對外部刺激做出反應(yīng)。
感知器
最簡單的神經(jīng)網(wǎng)絡(luò)“感知器”,早在1957年就被發(fā)明,并使用了.直到今天還在用
上圖的圓圈就代表一個感知器。它接受多個輸入(x1,x2,x3...),產(chǎn)生一個輸出(output),好比神經(jīng)末梢感受各種外部環(huán)境的變化,最后產(chǎn)生電信號。
為了簡化模型,我們約定每種輸入只有兩種可能:1 或 0。如果所有輸入都是1,表示各種條件都成立,輸出就是1;如果所有輸入都是0,表示條件都不成立,輸出就是0。
?
下面來看一個例子。最近剛上映一部好萊塢大片,張三拿不定主意。周末要不要去看電影.
決定他要不要去看電影有三個因素(特征)。
?天氣:周末是否晴天?
?價格:票價是否可承受?
?女朋友:能否找到女朋友一起去?
這就構(gòu)成一個感知器。上面三個因素就是外部輸入,最后的決定就是感知器的輸出。如果三個因素都是 Yes(使用1表示),輸出就是1(去看電影);如果都是 No(使用0表示),輸出就是0(不去看電影)。
?
權(quán)重和閾值
那么:如果某些因素成立,另一些因素不成立,輸出是什么?比如,周末是好天氣,票價也不貴,但是張三找不到女朋友,他還會不會去看電影呢?
現(xiàn)實中,各種因素很少具有同等重要性:某些因素是決定性因素,另一些因素是次要因素。因此,可以給這些因素指定權(quán)重(weight),代表它們不同的重要性。
?天氣:權(quán)重為8
?價格:權(quán)重為4
?女朋友:權(quán)重為4
上面的權(quán)重表示,天氣是決定性因素,女朋友和價格都是次要因素。
?
如果三個因素都為1,它們乘以權(quán)重的總和就是 8 + 4 + 4 = 16。
如果天氣和價格因素為1,女朋友因素為0,總和就變?yōu)?8 + 0 + 4 = 12。
這時,還需要指定一個閾值(threshold)。如果總和大于閾值,感知器輸出1,否則輸出0。假定閾值為8,那么 12 > 8,小明決定去看電影。閾值的高低代表了意愿的強(qiáng)烈,閾值越低就表示越想去,越高就越不想去。
這就是一個包含了輸入層、隱藏層、輸出層、權(quán)重的一個非常簡單的神經(jīng)網(wǎng)絡(luò)例子。當(dāng)然實際場景會比這個更復(fù)雜,對于神經(jīng)網(wǎng)絡(luò)小白來說,已有了一個感性的認(rèn)識.
?
上面圖中的連接是神經(jīng)元中最重要的東西。每一個連接上都有一個權(quán)重。
上面我們自定義了幾個因素的權(quán)重
?天氣:權(quán)重為8
?價格:權(quán)重為4
?女朋友:權(quán)重為4
但是實際情況,這個權(quán)重我們只是初始化了一個值,通過大量的數(shù)據(jù)進(jìn)行訓(xùn)練,然后不斷的調(diào)整得到的權(quán)重值.例如隨機(jī)利用1萬人的習(xí)慣數(shù)據(jù),他們是否都是天氣好的時候去看電影,沒女朋友的時候不去看電影等等.這個權(quán)重值就是經(jīng)過訓(xùn)練不斷更新得到的.這樣就可以預(yù)測張三會不會去看電影
?
這就是一個簡單的神經(jīng)網(wǎng)絡(luò),一個神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程就是讓權(quán)重的值調(diào)整到最佳,以使得整個網(wǎng)絡(luò)的預(yù)測效果最好。最終的訓(xùn)練結(jié)果可能是“女朋友”這個權(quán)重占98,其他都是次要的
?
玩一玩神經(jīng)網(wǎng)絡(luò)
上面我們講的都是一些簡單的例子,下面我們看一個簡單神經(jīng)網(wǎng)絡(luò)在線演示和實驗的平臺
TenforFlow Playground 又名 TensorFlow 游樂場,是一個用來圖形化教學(xué)的簡單神經(jīng)網(wǎng)絡(luò)在線演示和實驗的平臺,非常強(qiáng)大且極其易用。如果您已經(jīng)有一部分神經(jīng)網(wǎng)絡(luò)知識,使用此工具,可以快速體驗一個算法工程師的調(diào)參工作。
在線體驗地址: http://playground.tensorflow.org/
開源github地址:https://github.com/tensorflow/playground?
?
下圖可簡單理解為,正在訓(xùn)練1萬人,以天氣、價格、女朋友這三個特征,進(jìn)行訓(xùn)練,判斷什么情況下會,人們會去看電影、什么情況下不會去看電影
上圖標(biāo)明了該頁面上每個部分的含義,剛開始不用全部都理解,感興趣再去研究每部分都是干嘛的,下面列了理解該頁面的一些解釋。
?
1.運(yùn)行控制區(qū),這里主要對算法執(zhí)行進(jìn)行控制,可以啟動、暫停和重置
2.迭代次數(shù)展示區(qū),這里展示當(dāng)前算法執(zhí)行到了哪一次迭代
3.超參數(shù)選擇區(qū),這里可以調(diào)整算法的一些超參數(shù),不同的超參能解決不同的算法問題,得到不同的效果
4.數(shù)據(jù)集調(diào)整區(qū),數(shù)據(jù)集定義了我們要解決怎樣的問題,數(shù)據(jù)集是機(jī)器學(xué)習(xí)最為重要的一環(huán),
5.特征向量選擇,從數(shù)據(jù)集中抓取出的可以用來被訓(xùn)練的特征值
6.神經(jīng)網(wǎng)絡(luò)區(qū)域,算法工程師構(gòu)建的用于數(shù)據(jù)擬合的網(wǎng)絡(luò)
7.預(yù)測結(jié)果區(qū),展示此算法的預(yù)測結(jié)果
?
一些名詞解釋
?參數(shù):通常是指網(wǎng)絡(luò)中可以通過訓(xùn)練數(shù)據(jù)自動學(xué)習(xí)和調(diào)整的那些數(shù)值,例如權(quán)重(weights)和偏置(biases)。這些參數(shù)是模型在學(xué)習(xí)過程中不斷調(diào)整的,以便更好地預(yù)測或分類數(shù)據(jù)。
?超參數(shù):則是指那些控制訓(xùn)練過程本身的參數(shù)。不同于模型參數(shù),超參數(shù)通常是在訓(xùn)練開始之前設(shè)置的,并且在訓(xùn)練過程中保持不變。換句話說,超參數(shù)是用來定義模型結(jié)構(gòu)(例如有多少層、每層有多少個神經(jīng)元)和控制訓(xùn)練過程(例如學(xué)習(xí)速率、訓(xùn)練輪數(shù))的高級設(shè)置。
?線性:指的是一種直接比例關(guān)系,即輸出直接隨輸入按固定比例變化。用通俗的話說,就像你加速汽車,速度的增加與你踩油門的力度成正比。比如,假設(shè)你的工資是按小時計算的,這時候工資(輸出)和工作時間(輸入)之間就是線性關(guān)系。
?非線性:則是指輸出和輸入之間的關(guān)系不是直接比例的,即輸出不會直接隨輸入按固定比例變化。通俗來說,就像你對一只橡皮筋施力,開始時很容易拉長,但越往后拉越難,力的增加和橡皮筋的伸長之間就是非線性關(guān)系。在現(xiàn)實生活中,很多復(fù)雜的現(xiàn)象(如天氣變化)都是非線性的。
?激活函數(shù):在神經(jīng)網(wǎng)絡(luò)中用來引入非線性因素,使得網(wǎng)絡(luò)能夠?qū)W習(xí)和模擬復(fù)雜的輸入與輸出之間的關(guān)系。簡單來說,激活函數(shù)就像是決定神經(jīng)元是否應(yīng)該被激活(即對信息做出反應(yīng))的開關(guān)。例如,ReLU(Rectified Linear Unit,修正線性單元)激活函數(shù)是一種常用的激活函數(shù),它的作用是:如果輸入是正數(shù)就原樣輸出,如果是負(fù)數(shù)就輸出0。這樣的非線性特性讓神經(jīng)網(wǎng)絡(luò)能夠處理更加復(fù)雜和抽象的任務(wù),比如圖像識別和語言處理。
?學(xué)習(xí)率:是在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時用來控制模型學(xué)習(xí)進(jìn)度的一個參數(shù)。簡單講就是每次給權(quán)重添加多少值,如果加的越多,容易學(xué)習(xí)過頭,如果加的太低,學(xué)習(xí)次數(shù)就會變多
?正則化:是一種用于避免模型過擬合的技術(shù),可以理解為給模型訓(xùn)練加上一種約束或者懲罰。
?正則率:(通常用λ表示)則是控制正則化強(qiáng)度的參數(shù)。正則率的值越大,對模型復(fù)雜度的懲罰就越重,模型就越傾向于更加簡單,但過高的正則率可能導(dǎo)致模型過于簡單,無法捕捉數(shù)據(jù)的關(guān)鍵特征,即欠擬合。因此,選擇合適的正則率是保持模型泛化能力和擬合能力之間平衡的關(guān)鍵。
?
特別注意:不是學(xué)習(xí)的越精準(zhǔn)、越?jīng)]瑕疵越好,過度擬合或?qū)е抡`判
?
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程本質(zhì)上就是在學(xué)習(xí)數(shù)據(jù)的分布
?
Transformer架構(gòu)(深度學(xué)習(xí)模型)
有了上面的感性理解后,讓我們稍微加一點點難度,理解一下Transformer架構(gòu)。
目前絕大多數(shù)的開源大模型都是基于Transformer架構(gòu)的。Transformer架構(gòu)自2017年由Vaswani等人在論文《Attention is All You Need》中提出以來,迅速成為自然語言處理(NLP)領(lǐng)域的主流架構(gòu),廣泛應(yīng)用于各種任務(wù),如機(jī)器翻譯、文本生成、問答系統(tǒng)等等。Transformer模型的核心創(chuàng)新是自注意力機(jī)制(Self-Attention Mechanism),這使得模型能夠在處理序列數(shù)據(jù)時,有效地捕捉序列內(nèi)各元素之間的關(guān)系,無論它們在序列中的位置如何遠(yuǎn)近。
1、向量、矩陣
講Transformer之前,先回憶一下高中知識:向量、矩陣
向量相加得到另一個向量,可以理解為兩條向量一共走了多少路徑,的直線距離
向量相乘,可以看成向量B在向量A的垂線上的正射投影和向量A的長度的乘積
矩陣其實就是多維向量組,如圖就是3個向量組成的1個矩陣
?
矩陣相乘,請查看動畫演示
?http://matrixmultiplication.xyz/?
?
感興趣并想深入研究的同學(xué),可以自行溫習(xí)一下向量、向量的加、乘法、三角函數(shù)、矩陣、線性代數(shù)等基礎(chǔ)知識。有以上幾張圖的基本理解就完全足夠理解下面我們即將要講的大模型核心架構(gòu)Transformer了。
?
2、Transformer架構(gòu)圖
下圖就是一個Transformer的架構(gòu)圖,現(xiàn)在讓我們看Transformer時如何實現(xiàn)訓(xùn)練的
從下往上大致分為這樣一個流程,樣本文字轉(zhuǎn)數(shù)字向量--->增加位置信息--->自身的語義關(guān)系學(xué)習(xí)---->數(shù)字縮放(歸一化)---->輸出概率---->對應(yīng)的文字。下面讓我們逐一的來看每一層都做了什么。
3、訓(xùn)練文字的token化與嵌入向量
?
對輸入的文本進(jìn)行token的數(shù)字轉(zhuǎn)換,每個字對應(yīng)一個從編碼庫中標(biāo)記出來的一個token向量.得到一個4行x64列的這么一個矩陣,每一行代表了1個token(1個token其實就是一個向量,chatgpt按token收費(fèi),其中的token就是這個意思),每列代表了這個token在不同語義下的1個數(shù)字
?
是如何標(biāo)記的呢,實際上是通過一張超級大的編碼字典表中查找到的.
目前常用的是openai開源的向量查找表庫tiktoken
?https://github.com/openai/tiktoken?
?
為什么有多列呢?因為每個字可能存在多種意思,例如“思”字, 你是什么意思?我沒什么意思,就是意思意思,每個思字是不同含義的.
?
?輸入:樣本訓(xùn)練文本。
?輸出:token化的詞嵌入向量矩陣。
?
4、位置信息編碼
經(jīng)過token化和嵌入向量得到的數(shù)據(jù)矩陣還不能給模型訓(xùn)練.
例如,張麻子正在打李麻子,這句話中,通過token化嵌入向量后,不明確“麻子”這個詞指代的是哪個麻子,所以需要進(jìn)行位置編碼,需要讓我們在訓(xùn)練的過程中即知道token、又知道語義,還需知道位置,怎么引入位置呢?
?
?
當(dāng)添加位置信息編碼時,不可能像咱們現(xiàn)在這樣,每個位置的編碼是整數(shù)順序大小的,我們這里只有“中華人民”四個字,所以是1、2、3、4的位置編碼,如果我們有1萬字,位置編碼就會很大,導(dǎo)致向量比較分散,如何解決呢?
sin,cos正好可以拿來做位置編碼,因為正弦、余弦的值永遠(yuǎn)都在-1~1之間
奇數(shù)位置:sin(f(x))
偶數(shù)位置:cos(f(x))
?
token矩陣與位置編碼矩陣相加,得到的矩陣就可以丟給模型去訓(xùn)練了
?
?輸入:詞嵌入向量矩陣。
?輸出:通過增加位置編碼后,得到可訓(xùn)練的帶位置信息的向量矩陣。
?
5、自注意力機(jī)制
注意:這一小節(jié)是核心,這一小節(jié)是核心,這一小節(jié)是核心
漢字的序順并不定一影閱響讀
1.自注意力層讓模型能夠在處理一個單詞時考慮到句子中的其他單詞。這使得模型能夠捕捉單詞之間的關(guān)系,比如代詞和它所指代的名詞。
例子:在處理句子"漢字的序順并不定一影閱響讀"時,自注意力層會幫助模型理解"序"和"順"的關(guān)系。
想象一下,你正在一個聚會上,周圍有很多人在聊天。你的大腦會自動地選擇性地聽某些人的話,這取決于你認(rèn)為誰的話對當(dāng)前的對話最重要或最有趣。也就是說,即便所有的聲音都進(jìn)入了你的耳朵,你的大腦還是會“關(guān)注”某些特定的聲音或信息。這個過程,就有點像自注意力機(jī)制在做的事情。
?
在自然語言處理(NLP)中,當(dāng)我們給模型輸入一個句子,比如:“我愛吃蘋果”,模型的目標(biāo)可能是理解這個句子的意思,或者翻譯成另一種語言。自注意力機(jī)制允許模型在處理每個詞(比如“蘋果”)時,不僅考慮這個詞本身,還要考慮它與句子中其他詞的關(guān)系。模型會“關(guān)注”句子中的每個詞,然后根據(jù)這些詞之間的關(guān)系來決定哪些詞是更重要的。
自注意力機(jī)制會為句子中的每個詞生成一個“權(quán)重”,這個權(quán)重反映了當(dāng)前處理的詞對句子中其他詞的關(guān)注程度。比如,在處理“蘋果”這個詞時,模型可能會給“吃”這個詞分配更高的權(quán)重,因為這兩個詞之間有直接的關(guān)系。通過這種方式,模型就可以更好地理解每個詞在句子中的作用,進(jìn)而更好地理解整個句子的意思?;氐角懊娴木渥印皾h字的序順并不定一影閱響讀”,看下圖,“順”字跟句子中其他字之間都會生成一個關(guān)系權(quán)重,經(jīng)過大量的訓(xùn)練,“順”字對“序”字的權(quán)重最大。
簡單來說,自注意力就是模型在處理信息時,能夠“自己決定”去關(guān)注哪些相關(guān)的信息,這樣做可以幫助模型更好地理解和處理數(shù)據(jù)。
?
如何實現(xiàn)的呢?自注意力機(jī)制的核心思想是讓每個輸入元素(如一個詞)能夠關(guān)注到其他輸入元素,從而捕捉到序列中的全局依賴關(guān)系。矩陣乘法在自注意力機(jī)制中起到了關(guān)鍵作用,使用矩陣相乘,找到位置相似的向量,即最終得到比較合理的權(quán)重值
矩陣相乘后,值越大說明詞與詞之間的關(guān)注度越高
大致的訓(xùn)練過程是這樣的:“順”字對“序”字的關(guān)注度,是在訓(xùn)練的過程中不斷的調(diào)整向量坐標(biāo)(權(quán)重),以達(dá)到最佳效果
自注意力層實際上做了兩件事,1是計算詞與詞之間的關(guān)注度權(quán)重,同時加權(quán)求和后輸出新的矩陣(預(yù)測出的詞的得分矩陣)
計算詞與詞之間的關(guān)注度權(quán)重(Attention Scores):自注意力機(jī)制首先會計算序列中每個詞對于其他所有詞的關(guān)注度權(quán)重。這個過程通常涉及將輸入序列的每個元素(例如,每個詞)轉(zhuǎn)換成三個向量:查詢(Query)、鍵(Key)和值(Value),通過計算查詢向量與鍵向量之間的相似度(通常是點積或某種歸一化形式的點積),來得出這些權(quán)重。這些權(quán)重表明了序列中每個元素對其他元素的重要性程度。
?
加權(quán)求和后輸出新的矩陣:一旦計算出關(guān)注度權(quán)重,自注意力機(jī)制會使用這些權(quán)重對值(Value)向量進(jìn)行加權(quán)求和,以生成每個位置新的表示。這個過程實質(zhì)上是根據(jù)每個元素對序列中其他元素的關(guān)注度,重新組合了原始信息。這樣,輸出的新矩陣中的每個元素都融合了整個序列的信息,反映了序列內(nèi)部的復(fù)雜依賴關(guān)系。
?
?輸入:一個表示序列的矩陣 ( X )。
?線性變換:生成查詢(Q)、鍵(K)、和值(V)矩陣。
?注意力計算:并計算詞之間的關(guān)注度權(quán)重。
?輸出:通過注意力權(quán)重對值矩陣 ( V ) 進(jìn)行加權(quán)求和,得到自注意力機(jī)制的輸出矩陣。
6、 歸一化注意力分?jǐn)?shù)
歸一化是一種將數(shù)據(jù)按照一定規(guī)則縮放到一個特定范圍(通常是0到1之間或者是-1到1之間)的過程。這個過程可以幫助我們在處理數(shù)據(jù)時,減少數(shù)據(jù)之間因為量綱(單位大小)不同帶來的影響,使得數(shù)據(jù)之間的比較或者計算更加公平和合理。同時提高訓(xùn)練速度和穩(wěn)定性
?
歸一化后的注意力分?jǐn)?shù)可以被解釋為概率,表示一個詞關(guān)注另一個詞的程度。
?
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程本質(zhì)上是在學(xué)習(xí)數(shù)據(jù)的分布,如果沒有進(jìn)行歸一化的處理,那么每一批次的訓(xùn)練數(shù)據(jù)的分布是不一樣的,
?從大的方向上來看,神經(jīng)網(wǎng)絡(luò)則需要在這多個分布當(dāng)中找到平衡點
?從小的方向上來看 ,由于每層的網(wǎng)絡(luò)輸入數(shù)據(jù)分布在不斷地變化 ,那么會導(dǎo)致每層網(wǎng)絡(luò)都在找平衡點,顯然網(wǎng)絡(luò)就變得難以收斂。
下圖中,我們可以看到數(shù)據(jù)歸一化后的效果。 原始值(藍(lán)色)現(xiàn)在以零(紅色)為中心。 這確保了所有特征值現(xiàn)在都處于相同的比例。
例子說明歸一化:
再舉個簡單的例子,假設(shè)一個班級里有5個學(xué)生參加了一次考試,分?jǐn)?shù)分別是
學(xué)生A=90分
學(xué)生B=80分
學(xué)生C=70分
學(xué)生D=60分
學(xué)生E=50分
這個分?jǐn)?shù)比較大,對于如果我們想將這些分?jǐn)?shù)歸一化到0到1之間,我們可以將每個學(xué)生的分?jǐn)?shù)減去最低分50分,然后再除以最高分和最低分的差值,即40分(90-50)。這樣,90分就變成了1((90-50)/40),50分就變成了0((50-50)/40),其他分?jǐn)?shù)也會相應(yīng)轉(zhuǎn)換到0到1之間的某個值。這個過程就是歸一化。通過歸一化,我們可以更直觀地看出每個學(xué)生的成績在班級中的相對位置。
7、 前饋神經(jīng)網(wǎng)絡(luò)
通過以上步驟,輸出的內(nèi)容基本都是向量矩陣,都是線性的,并且每個詞都是獨立處理的,單詞之間沒有信息的交換,然而,前饋神經(jīng)網(wǎng)絡(luò)可以訪問之前由頭注意力復(fù)制的任何信息。前饋層由神經(jīng)元組成,這些神經(jīng)元是可以計算其輸入加權(quán)和的數(shù)學(xué)函數(shù)。前饋層之所以強(qiáng)大,是因為它有大量的連接。例如,GPT-3 的前饋層要大得多:輸出層有 12288 個神經(jīng)元(對應(yīng)模型的 12288 維詞向量),隱藏層有 49152 個神經(jīng)元。
?
自注意力機(jī)制:在這一步,每個詞會觀察周圍的詞,以找出與自己相關(guān)的上下文信息。
前饋神經(jīng)網(wǎng)絡(luò):在這一步,每個詞會根據(jù)自己收集到的上下文信息,進(jìn)行信息的整合和處理。
在數(shù)學(xué)和物理學(xué)中,非線性是指任何不遵循加法原理(輸出不是輸入的直接倍數(shù))或者乘法原理(系統(tǒng)的響應(yīng)不是輸入的簡單線性組合)的現(xiàn)象。
?
8、 訓(xùn)練與推理
以上訓(xùn)練過程實際上就是我們文章開頭提到的“大模型訓(xùn)練就是對互聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行有損壓縮”的有損壓縮的過程。
?訓(xùn)練:是指使用大量的數(shù)據(jù)對模型進(jìn)行學(xué)習(xí)和優(yōu)化的過程。在這個過程中,模型學(xué)習(xí)數(shù)據(jù)中的模式、特征、規(guī)律等,調(diào)整自身的參數(shù)以盡可能準(zhǔn)確地對各種輸入做出預(yù)測或輸出。
?推理:則是在訓(xùn)練完成后,將新的數(shù)據(jù)輸入到已訓(xùn)練好的模型中,讓模型基于其學(xué)到的知識和模式進(jìn)行計算、分析并給出相應(yīng)的輸出或預(yù)測結(jié)果。可以說訓(xùn)練是讓模型具備能力,而推理是運(yùn)用這種能力來處理具體的任務(wù)和問題。
?
其實上面我們只講了大模型訓(xùn)練的過程,沒有講推理的過程,推理的過程跟訓(xùn)練的過程大致相同,相差就是訓(xùn)練的過程是沉淀結(jié)果,推理是直接計算完成之后輸出,并沉淀結(jié)果。感興趣的同學(xué)可以自己下來,我們網(wǎng)上經(jīng)常看到的Transformer架構(gòu)圖如下,左邊是輸入,右邊是輸出,可以看出輸入、輸出的中間部分基本是相同的
我們可以簡單理解左邊部分時訓(xùn)練的過程、右邊部分時推理的過程.時間關(guān)系,推理的過程咱們先不講了,感興趣的同學(xué)可以下去看看
審核編輯 黃宇
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4773瀏覽量
100880 -
大模型
+關(guān)注
關(guān)注
2文章
2478瀏覽量
2843
發(fā)布評論請先 登錄
相關(guān)推薦
評論