網(wǎng)站在阿里云備案免費(fèi)數(shù)據(jù)統(tǒng)計(jì)網(wǎng)站
2025.2.17晚上21:57看完了整個(gè)視頻,作為一個(gè)ai專業(yè)的學(xué)生雖然每天都在用ai,但是對(duì)于其背后的原理卻不是那么清楚,而卡帕西的這支視頻卻讓我醍醐灌頂,而且全程聽(tīng)起來(lái)很舒服,沒(méi)有知識(shí)強(qiáng)行進(jìn)入腦子的痛感,在他的講解下一切都是那么的自然,所有內(nèi)容娓娓道來(lái),感謝karpathy的講解,記住他的提醒,ai只是你的工具,他并不神秘。
AI 大神Karpathy再發(fā)LLM介紹視頻,入門(mén)必看!_嗶哩嗶哩_bilibili
那么好,接下來(lái)就是我對(duì)這個(gè)視頻的學(xué)習(xí)筆記部分了,我將根據(jù)視頻內(nèi)容分為四個(gè)部分,按順序來(lái)分別是pre training,post training,rl,other
一、預(yù)訓(xùn)練(0:00:00-1:00:00)
視頻主旨是介紹到底什么是llm,我們?cè)谑褂玫臅r(shí)候需要注意什么缺陷,你在和他對(duì)話的時(shí)候究竟是在和一個(gè)什么樣的東西說(shuō)話。
如何構(gòu)建一個(gè)chatgpt?
-
下載和處理互聯(lián)網(wǎng)數(shù)據(jù),網(wǎng)站:huggingface/fineweb,講解如何構(gòu)建一份互聯(lián)網(wǎng)數(shù)據(jù)。本質(zhì)上是爬蟲(chóng),爬取互聯(lián)網(wǎng)上的高質(zhì)量文檔。common crawl是一個(gè)互聯(lián)網(wǎng)組織,做的事情就是掃描索引互聯(lián)網(wǎng)上的各種網(wǎng)頁(yè),跟蹤鏈接,最終就拿到了很多互聯(lián)網(wǎng)數(shù)據(jù)。
- 然后開(kāi)始過(guò)濾。首先是URL過(guò)濾,過(guò)濾到你不想要的網(wǎng)站。然后是文本提取,從html中提取出文本,也就是說(shuō)去掉各種各樣的修飾。那么在這一步其實(shí)公司就可以控制自己模型對(duì)于語(yǔ)言的側(cè)重,比如我排除掉中文網(wǎng)頁(yè),那么模型在最后的中文表現(xiàn)一定很垃圾,還有很多步驟,但是總體來(lái)說(shuō)是這樣的流程。
- 最后講這些文本連接在一起,就形成了一個(gè)純文字的txt文本,相當(dāng)震撼。我們開(kāi)始用它訓(xùn)練神經(jīng)網(wǎng)絡(luò),這樣神經(jīng)網(wǎng)絡(luò)就可以內(nèi)化并建模這些文本的流動(dòng)方式。
-
決定如何表示這些文本,以及如何輸入它
- 因?yàn)檫@些神經(jīng)網(wǎng)絡(luò)接受一維的符號(hào)序列,雖然這些文本已經(jīng)是連續(xù)的一維序列了,但是計(jì)算機(jī)本質(zhì)上只能接受0和1,所以我們需要用數(shù)字來(lái)表示。并且這個(gè)序列我們不想讓他僅有0和1兩個(gè)字符,這樣序列也會(huì)太長(zhǎng),那會(huì)占用大量的資源,我們需要去權(quán)衡這個(gè)詞匯表的數(shù)量。
- 當(dāng)我們將每8個(gè)bit看做一個(gè)處理單元(現(xiàn)在還沒(méi)有引入token的概念)的時(shí)候,就把序列長(zhǎng)度縮短了8倍,數(shù)字大小在0~255之間。這里我們嚴(yán)重可以講這些數(shù)字看作為一個(gè)獨(dú)特的emoji
- 在制作現(xiàn)代的大模型的時(shí)候,我們?yōu)榱死^續(xù)縮短序列長(zhǎng)度,可以表達(dá)出更多的emoji,我們會(huì)尋找非常常見(jiàn)的連續(xù)字符,舉個(gè)例子,“你”和“好”就經(jīng)常一起出現(xiàn),那么我們就可以把他倆組合成一個(gè)新的emoji,編號(hào)為256.以此類推,現(xiàn)在的大模型詞匯表大小量級(jí)在10萬(wàn)左右(gpt4:100277)
- 文本轉(zhuǎn)化成這些emoji的過(guò)程,我們就稱之為tokenization(標(biāo)記化)
- 形象的觀察gpt是如何進(jìn)行標(biāo)記化的,登錄:https://tiktokenizer.vercel.app
我們?cè)谶@里就可以看到之前很火的一個(gè)問(wèn)題strawberry有幾個(gè)r,在這里就被分成了三個(gè)token,這個(gè)問(wèn)題后面我們會(huì)再次談到。還可以試試hello world等等詞語(yǔ),很有意思的一個(gè)觀察,獲得對(duì)“token”的一個(gè)直觀感受。連不同數(shù)量的空格對(duì)應(yīng)的都有獨(dú)特的token.在gpt中就一共有10萬(wàn)個(gè)這樣的token
-
nerural network training
- 在這一步我們是要建模這些token在序列中如何相互跟隨的統(tǒng)計(jì)關(guān)系。我們?cè)跀?shù)據(jù)海洋中隨機(jī)選擇一段文本,同時(shí)長(zhǎng)度大小(也叫窗口長(zhǎng)度)不易過(guò)大,窗口的長(zhǎng)度可以在0-max之間隨便變化,一般max就是取4千8千這種,處理太多的token在計(jì)算上是expensive。
- 比如說(shuō)我現(xiàn)在去了4個(gè)token作為模型輸入了,剩下的就是和學(xué)過(guò)的深度學(xué)習(xí)一樣,降低loss,讓預(yù)測(cè)和實(shí)際的下一個(gè)token一樣。注意,這里的4個(gè)token就稱為context(上下文)。模型的輸出是這100277個(gè)token分別對(duì)應(yīng)的概率。整個(gè)網(wǎng)絡(luò)在訓(xùn)練過(guò)程中正在并行的重演無(wú)數(shù)次這樣的預(yù)測(cè)和改進(jìn)。
- 神經(jīng)網(wǎng)絡(luò)內(nèi)部的樣子:
這個(gè)網(wǎng)絡(luò)中的參數(shù)在一開(kāi)始是隨機(jī)的,但是在訓(xùn)練過(guò)后就會(huì)逐漸形成訓(xùn)練文本中的統(tǒng)計(jì)關(guān)系。你可以想象這個(gè)網(wǎng)絡(luò)就像DJ的調(diào)音臺(tái),你不斷微調(diào)這個(gè)調(diào)音臺(tái)上的各種參數(shù)旋鈕,最終能夠演奏出曲風(fēng)相似的音樂(lè)來(lái)
想要觀看一個(gè)實(shí)際的生產(chǎn)級(jí)示例,這個(gè)網(wǎng)站:https://bbycroft.net/llm,展示了具體的模型,但是內(nèi)部的模型結(jié)構(gòu)并不是我們關(guān)注的焦點(diǎn),因?yàn)檫@個(gè)教程是面向非技術(shù)人員的,具體的技術(shù)分析會(huì)放在另外的筆記中
4. 推理部分:算法和訓(xùn)練是一模一樣的,只是參數(shù)不用再變化。karpathy在講的時(shí)候也始終保持著通俗易懂的講法,比如在推理時(shí)我們輸入一些token,然后模型開(kāi)始根據(jù)這些token擲硬幣,將可能性最大的硬幣選出來(lái),必須強(qiáng)調(diào),這是個(gè)隨機(jī)系統(tǒng)!所以我們并不太可能完全重現(xiàn)我們訓(xùn)練文本中的內(nèi)容,模型學(xué)到的其實(shí)是一種有損壓縮ok吧。
5. 在實(shí)際過(guò)程中我們?cè)谟?xùn)練時(shí)會(huì)嘗試不同種類設(shè)置,不同種類排列,和不同尺寸的網(wǎng)絡(luò)。當(dāng)有一個(gè)好的參數(shù)的時(shí)候,你就ship他,嘻嘻。
6. GPT-2 從現(xiàn)在的視角來(lái)看gpt-2和現(xiàn)在的模型并沒(méi)有什么區(qū)別,只是所有東西都變得更大。token的最大上下文才是1024個(gè),意味著無(wú)論是訓(xùn)練還是推的時(shí)候他的窗口大小都不會(huì)差過(guò)1024.上下文和窗口的含義略有區(qū)別,在這里做一些嚴(yán)謹(jǐn)?shù)亩x總結(jié)來(lái)說(shuō):
?上下文是模型理解和生成的內(nèi)容,它是動(dòng)態(tài)的,取決于模型正在處理的文本。
?窗口是一個(gè)固定大小的滑動(dòng)范圍,它限定了模型能看到的上下文的長(zhǎng)度。
- 記住,重要指標(biāo)就是loss,越低越好,就能更好的預(yù)測(cè)下一個(gè)標(biāo)記。這樣訓(xùn)練出來(lái)的模型叫做基礎(chǔ)模型 base model ,他只是一種互聯(lián)網(wǎng)文本的模擬器,并不是我們現(xiàn)在常用的assitant,可以在大模型實(shí)驗(yàn)場(chǎng)試一下這兩類模型的回答,相當(dāng)明顯的區(qū)別
- base model vs instruct model 他倆的區(qū)別可能用具體的回答來(lái)展示更為直觀。雖然base model并不能像chatgpt一樣正常回答問(wèn)題,但是還是可以通過(guò)設(shè)計(jì)完成一些任務(wù)(雖然我覺(jué)得沒(méi)什么必要)
二、后訓(xùn)練:監(jiān)督微調(diào)(1:00:00-2:07:00)
post training在計(jì)算上比預(yù)訓(xùn)練要便宜的多,在這里我們講一個(gè)模型變成一個(gè)助手。
具體做法就是給他一些人類對(duì)話的數(shù)據(jù)集,讓模型學(xué)習(xí),完全相同的算法,只是換了一下數(shù)據(jù)集。在這個(gè)過(guò)程中有一些和前面相關(guān)聯(lián)的知識(shí)點(diǎn)
-
對(duì)話的分詞處理,我們制定一個(gè)規(guī)則或者數(shù)據(jù)結(jié)構(gòu),將對(duì)話編碼為token
如圖所示的
<|im_start>
就是一種顯著的token,也是我們?cè)诤笥?xùn)練期間新增加的一個(gè)token,在那十萬(wàn)個(gè)token之中(所有句子只是那十萬(wàn)個(gè)token的排列組合而已,莫忘莫忘),以<|im_end>
結(jié)束對(duì)話。這個(gè)方法的發(fā)明也是openai的杰作,發(fā)的有論文。kapathy在這里也非常哲學(xué)式地思考我們?cè)诤蚦hatgpt對(duì)話的時(shí)候到底是在和什么對(duì)話?式給他標(biāo)注對(duì)話數(shù)據(jù)集的人類么?只是人類標(biāo)注者的模擬
-
幻覺(jué)
-
幻覺(jué)從何而來(lái)?因?yàn)樵趯?duì)話數(shù)據(jù)集中都是自信滿滿的回答,早期模型并沒(méi)有學(xué)會(huì)說(shuō)不哈哈,所以他必須繼續(xù)依靠概率輸出自己的回答,這就是所謂幻覺(jué)。但是如果在數(shù)據(jù)集中加入了對(duì)于不知道問(wèn)題的回答示例,那么模型就能學(xué)會(huì):在知道自己不知道的時(shí)候敢于說(shuō)不知道。
-
首先要明確自己的模型不知道什么,搞清楚模型的知識(shí)邊界(其實(shí)就是問(wèn)很多問(wèn)題,然后把所有他確實(shí)不知道的問(wèn)題單獨(dú)列成數(shù)據(jù)集進(jìn)行訓(xùn)練);然后針對(duì)這些數(shù)據(jù)集進(jìn)行“不知道”的回答。這樣的做法聽(tīng)起來(lái)似乎非常簡(jiǎn)單,但是卻很有用,因?yàn)樵赽ase模型中模型可能已經(jīng)有了自我認(rèn)知,你知道自己不知道某些事情,某些時(shí)候特定的幾個(gè)神經(jīng)元將會(huì)亮起,那個(gè)時(shí)候就應(yīng)該是說(shuō)不知道的時(shí)候了!只需要稍加演示他們就能學(xué)會(huì)。
-
緩解幻覺(jué)的第二個(gè)方法:加入網(wǎng)絡(luò)搜索,也是加入一組新的token表示搜索,比如看到說(shuō)<search_satrt> and <search_end>這種,就去執(zhí)行搜索,講搜索結(jié)果放進(jìn)上下文。同樣的,構(gòu)造數(shù)據(jù)集讓模型訓(xùn)練和學(xué)習(xí)。同時(shí)強(qiáng)化一個(gè)認(rèn)知,就是大模型的記憶是對(duì)話聯(lián)網(wǎng)知識(shí)的有損壓縮,上下文是直接記憶,可以直接用的,無(wú)損的。因?yàn)楫?dāng)你需要更精確的內(nèi)容的時(shí)候最好可以在上下文中直接給出參考資料而不是僅僅依靠他的記憶力。
-
還有一點(diǎn)就是模型的自我認(rèn)知,比如我們問(wèn)deepseek他可能會(huì)回答自己是openai訓(xùn)練的,但實(shí)際上如果不預(yù)先訓(xùn)練的話,ai只是從訓(xùn)練資料中選擇最佳回答,無(wú)疑openai和chatgpt是被提到最多的,他不知道自己是誰(shuí),只有給他看一些對(duì)話數(shù)據(jù)集才行哦。
-
關(guān)于如何讓模型的數(shù)學(xué)計(jì)算能力變強(qiáng)?本質(zhì)上這還是涉及到神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),及其計(jì)算方式。比如下面這道數(shù)學(xué)題,我們應(yīng)該選擇哪種解法放進(jìn)訓(xùn)練集呢?肯定是第二種!第一種直接給出答案本質(zhì)上就是在心算,因?yàn)槎际歉鶕?jù)前文的概率吐出下一個(gè)字,也就是說(shuō)這個(gè)答案只是經(jīng)驗(yàn)的結(jié)果;第二個(gè)解答過(guò)程就是一步一步的推導(dǎo),得出最終答案之后模型已經(jīng)經(jīng)過(guò)了充分的思考,答案就更有可信度。更理論一點(diǎn)的來(lái)講,每個(gè)token經(jīng)過(guò)整個(gè)網(wǎng)絡(luò)的計(jì)算量是有限的,在得到答案前盡可能多的思考肯定是有利的。其實(shí)我們多實(shí)驗(yàn)幾個(gè)例子之后不難發(fā)現(xiàn),讓模型直接說(shuō)出答案往往是錯(cuò)誤答案。
包括模型的計(jì)數(shù)能力,查草莓的r,查。。。。的點(diǎn)數(shù),都不會(huì)太好,一個(gè)是上面說(shuō)的,模型的心算能力并不是很強(qiáng),第二個(gè)原因就是模型都是token化的,查數(shù)也不友好,他們看不見(jiàn)字符,他的世界里只有token,或許我們將來(lái)會(huì)有一個(gè)字符級(jí)或字節(jié)級(jí)的模型,但是那樣序列會(huì)很長(zhǎng),目前還不知道要如何處理。
包括9.11和9.9比大小,這個(gè)有可能是圣經(jīng)讀太多了(bushi
-
三、強(qiáng)化學(xué)習(xí)(2:10:00)
大神在這解題節(jié)的開(kāi)始用學(xué)生學(xué)習(xí)一本書(shū)承上啟下:課本知識(shí)就像是預(yù)訓(xùn)練,例題就像是SFT,那么RL就是課后習(xí)題,給你答案,模型要自己找出最好的解題路徑。
為什么這很重要?因?yàn)閘lm的語(yǔ)言與我們?nèi)祟惖恼Z(yǔ)言并不相通,我們并不知道對(duì)于llm而言什么樣的token排列方式能夠更好的求解出答案,因此我們最好是讓模型自己來(lái)摸索,根據(jù)最終答案來(lái)進(jìn)行反饋,找到自己寫(xiě)題的最佳思考方式。
總結(jié)就是:認(rèn)知不同,不要瞎摻合
RL的過(guò)程:比如讓模型寫(xiě)一道題,嘗試多次,每一次嘗試都會(huì)生成不同的結(jié)果。假設(shè)結(jié)果如下圖所示,有正確的有錯(cuò)誤的,我們的目的是鼓勵(lì)那些能得出正確答案的解決方案,所以就用這些正確的解題過(guò)程拿去訓(xùn)練模型(肯定要訓(xùn)練啊,不然模型現(xiàn)在不還是不會(huì)寫(xiě)這道題,方法論略有不同但思想一樣)
所以在前面進(jìn)行的SFT等一系列操作都是有必要的,相當(dāng)于講模型帶到了正確解的附近,模型只需要開(kāi)始嘗試即可,有很大概率能寫(xiě)出正確答案,而強(qiáng)化學(xué)習(xí)就是那臨門(mén)一腳!
deepseek是第一家公開(kāi)贊揚(yáng)強(qiáng)化學(xué)習(xí)對(duì)大模型作用的公司,引起了大家對(duì)于強(qiáng)化學(xué)習(xí)的信心,圖為強(qiáng)化學(xué)習(xí)后的ds模型在AIME數(shù)學(xué)題上提升
而且模型在學(xué)習(xí)過(guò)程中用到的token也越來(lái)越多,這是自然而然的表現(xiàn),模型在rl過(guò)程中學(xué)會(huì)了多角度思考和驗(yàn)證自己的思路,稱為涌現(xiàn)。這都是模型自己學(xué)出來(lái)的,因?yàn)闆](méi)有人類標(biāo)注員在回答里面嵌入這些思考過(guò)程,amazing啊llm,aha moment
談到強(qiáng)化學(xué)習(xí),就繞不過(guò)去一個(gè)東西,alphago。當(dāng)我們將目光投向AlphaGo的論文,發(fā)現(xiàn)了一個(gè)似曾相識(shí)的圖表。。。
從圖中可以看出,單純的模仿并不能超越人類玩家,但是探索可以。
第37步:指神之一手,阿爾法狗打出來(lái)的。
四、雜談(RLHF、Karpathy對(duì)未來(lái)的一些思考)(2:47:00-3:09:00是未來(lái)展望)
在不可驗(yàn)證領(lǐng)域,比如寫(xiě)作,講笑話這種,不好直接打分,所以我們的解決方法是:
RLHF:(注意:他的本質(zhì)當(dāng)然是RL,但他更像是是一種微調(diào),因?yàn)檫@個(gè)強(qiáng)化學(xué)習(xí)并不能無(wú)限運(yùn)行下去)人類先訓(xùn)練一個(gè)模型,充當(dāng)評(píng)分器(這個(gè)訓(xùn)練好的模型要與人類的偏好保持一致),比如判斷小說(shuō)的好笑程度,對(duì)回答排個(gè)序,然后模型就可以基于此進(jìn)行訓(xùn)練。這個(gè)方法來(lái)源于openai的一篇論文:在無(wú)人驗(yàn)證的領(lǐng)域進(jìn)行強(qiáng)化學(xué)習(xí)
這個(gè)方法的好處:讓我們能再人愿意領(lǐng)域進(jìn)行實(shí)驗(yàn),包括那些無(wú)法驗(yàn)證的領(lǐng)域;而且允許人們?cè)诓槐赝瓿蓸O其困難的人物的情況下提供他們的監(jiān)督,比如寫(xiě)詩(shī)。
顯著缺點(diǎn):一開(kāi)始模型的表現(xiàn)會(huì)逐漸變好,但是到最后他的表現(xiàn)可能會(huì)一落千丈,因?yàn)楸荒P蛢?nèi)部發(fā)現(xiàn)了這種訓(xùn)練方式在這個(gè)問(wèn)題下的不足(強(qiáng)化學(xué)習(xí)很擅長(zhǎng)找到欺騙他的方式),也就是說(shuō),總會(huì)有很荒謬的結(jié)果來(lái)干預(yù)這個(gè)過(guò)程,畢竟這個(gè)模擬器他并不完美。因此我們?cè)谀P透纳撇畈欢嘀髴?yīng)該立刻進(jìn)行裁剪,不然就會(huì)變差。
ok,差不多到這里就結(jié)束了!3小時(shí)之后的內(nèi)容就沒(méi)有再做記錄了,因?yàn)閭€(gè)人感覺(jué)重復(fù)有點(diǎn)多,,很多信息現(xiàn)在也都知道了。學(xué)的很爽。RL正在覺(jué)醒….