解析:從上下文學(xué)習(xí)到規(guī)模定律的范式革命)
1. 從“理解”到“生成”GPT-3為何重新定義了NLP的游戲規(guī)則如果你在2020年前后關(guān)注過人工智能領(lǐng)域大概率被一個(gè)名字刷過屏GPT-3。它不像一個(gè)單純的模型更新更像是一場(chǎng)地震。一夜之間人們發(fā)現(xiàn)一個(gè)模型不需要針對(duì)特定任務(wù)進(jìn)行精調(diào)只需要在輸入里給幾個(gè)例子它就能寫詩、編程、翻譯、甚至和你進(jìn)行有邏輯的對(duì)話。這背后就是那篇名為《Language Models are Few-Shot Learners》的論文所揭示的核心思想。今天我們不打算復(fù)述論文里那些復(fù)雜的數(shù)學(xué)公式和實(shí)驗(yàn)數(shù)據(jù)而是從一個(gè)從業(yè)者和研究者的角度來深度拆解GPT-3究竟做了什么它為什么能成功以及它給我們帶來的真正啟示和那些容易被忽略的“坑”。簡單來說這篇論文的核心論點(diǎn)可以概括為當(dāng)語言模型的規(guī)模參數(shù)、數(shù)據(jù)、算力突破某個(gè)臨界點(diǎn)后它會(huì)涌現(xiàn)出一種名為“上下文學(xué)習(xí)”的能力。這意味著模型不再需要傳統(tǒng)的“訓(xùn)練-微調(diào)”范式而是通過閱讀和理解輸入文本中提供的幾個(gè)示例Few-Shot就能直接執(zhí)行新任務(wù)。這徹底改變了我們與AI模型的交互方式——從“訓(xùn)練一個(gè)專家”變成了“與一個(gè)通才對(duì)話”。對(duì)于任何從事NLP、機(jī)器學(xué)習(xí)甚至只是對(duì)AI未來感興趣的朋友來說理解GPT-3不僅僅是理解一個(gè)模型更是理解一個(gè)可能的技術(shù)范式轉(zhuǎn)折點(diǎn)。2. 范式轉(zhuǎn)移從“微調(diào)”到“上下文學(xué)習(xí)”的本質(zhì)躍遷在GPT-3之前主流的NLP范式是什么是“預(yù)訓(xùn)練 任務(wù)特定微調(diào)”。以BERT為例我們先用海量無標(biāo)簽文本預(yù)訓(xùn)練一個(gè)基礎(chǔ)模型讓它學(xué)會(huì)語言的通用表示。當(dāng)需要做情感分析時(shí)我們就在這個(gè)基礎(chǔ)模型后面接一個(gè)分類層然后用大量帶情感標(biāo)簽的影評(píng)數(shù)據(jù)對(duì)這個(gè)“基礎(chǔ)模型分類層”進(jìn)行微調(diào)。這個(gè)過程本質(zhì)上是為每一個(gè)新任務(wù)“定制”一個(gè)模型。雖然效果好但成本高每個(gè)任務(wù)都需要收集標(biāo)注數(shù)據(jù)、進(jìn)行訓(xùn)練模型也無法跨任務(wù)共享知識(shí)。GPT-3提出的“上下文學(xué)習(xí)”則是一種完全不同的思路。它試圖證明一個(gè)足夠大的、僅在無標(biāo)簽文本上訓(xùn)練過的語言模型本身就是一個(gè)“任務(wù)無關(guān)”的通用計(jì)算引擎。你不需要改變它的任何參數(shù)即不進(jìn)行微調(diào)只需要在輸入即上下文中以自然語言的形式告訴它要做什么。2.1 三種提示范式的精妙設(shè)計(jì)論文中系統(tǒng)對(duì)比了三種不同的提示方式這不僅僅是實(shí)驗(yàn)設(shè)置更是揭示了模型能力的不同層次零樣本Zero-Shot只給出任務(wù)指令不給出任何示例。例如輸入“請(qǐng)將以下英文翻譯成中文‘Hello, world!’”。這測(cè)試的是模型對(duì)指令的純語言理解能力和世界知識(shí)。單樣本One-Shot給出任務(wù)指令和一個(gè)完整的輸入-輸出示例。例如“請(qǐng)將英文翻譯成中文。示例‘Apple’ - ‘蘋果’。請(qǐng)翻譯‘Hello, world!’”。這為模型提供了任務(wù)格式和期望輸出的具體樣板。少樣本Few-Shot給出任務(wù)指令和多個(gè)通常是10-50個(gè)輸入-輸出示例。這是論文標(biāo)題的核心也是效果最好的方式。多個(gè)示例共同定義了任務(wù)空間讓模型能更好地捕捉任務(wù)規(guī)律。這里有一個(gè)關(guān)鍵洞察Few-Shot Learning中的“學(xué)習(xí)”發(fā)生在模型的前向推理過程中而不是參數(shù)更新過程中。模型在生成每一個(gè)新答案時(shí)其注意力機(jī)制會(huì)同時(shí)關(guān)注前面的所有示例動(dòng)態(tài)地從這些示例中“學(xué)習(xí)”并應(yīng)用模式。這更像是一個(gè)人在考試時(shí)參考例題解題而不是在考前重新學(xué)習(xí)整個(gè)知識(shí)體系。2.2 規(guī)模定律量變?nèi)绾我l(fā)質(zhì)變論文花了大量篇幅驗(yàn)證“規(guī)模定律”。這不是簡單的“模型越大越好”的粗暴結(jié)論而是一個(gè)嚴(yán)謹(jǐn)?shù)挠^察隨著模型參數(shù)數(shù)量、訓(xùn)練數(shù)據(jù)量和計(jì)算量的指數(shù)級(jí)增長模型在各項(xiàng)任務(wù)上的性能呈現(xiàn)平滑的、可預(yù)測(cè)的提升并且在某些任務(wù)上性能曲線會(huì)出現(xiàn)陡峭的“涌現(xiàn)”拐點(diǎn)。例如在小模型上Few-Shot可能比Zero-Shot好不了多少甚至不如精調(diào)。但當(dāng)模型規(guī)模達(dá)到1750億參數(shù)這個(gè)量級(jí)時(shí)Few-Shot的性能在許多任務(wù)上開始接近甚至超越經(jīng)過精調(diào)的SOTA模型。這種“涌現(xiàn)”的能力如復(fù)雜的算術(shù)推理、代碼生成、遵循復(fù)雜指令等在小模型上是觀測(cè)不到的。這強(qiáng)烈暗示我們可能只需要繼續(xù)沿著“擴(kuò)大規(guī)模”這條路走下去就能解鎖AI的更多潛能。這也直接催生了后續(xù)如GPT-4、Claude等更大規(guī)模模型的研究。3. 架構(gòu)與訓(xùn)練的魔鬼細(xì)節(jié)GPT-3何以成為GPT-3很多人認(rèn)為GPT-3只是GPT-2的放大版這低估了其中的工程與設(shè)計(jì)智慧。在巨量規(guī)模下每一個(gè)看似微小的選擇都會(huì)被無限放大可能決定成敗。3.1 核心架構(gòu)Transformer解碼器的極致化GPT-3采用了純Transformer解碼器架構(gòu)。與編碼器-解碼器架構(gòu)或混合架構(gòu)相比純解碼器的優(yōu)勢(shì)在于其自回歸生成的一致性。它始終以“給定上文預(yù)測(cè)下一個(gè)詞”為目標(biāo)進(jìn)行訓(xùn)練和推理這使得它的Few-Shot接口極其干凈——你只需要把任務(wù)描述和示例作為“上文”輸入模型就會(huì)自然地續(xù)寫出“答案”。然而將解碼器擴(kuò)展到千億參數(shù)面臨巨大挑戰(zhàn)注意力計(jì)算復(fù)雜度Transformer的自注意力機(jī)制計(jì)算復(fù)雜度是序列長度的平方倍。對(duì)于長文本這無法承受。GPT-3主要使用了稀疏注意力雖然論文未明確說明具體變體但后續(xù)信息表明其使用了類似GPT-2的稠密注意力并通過序列長度和批處理優(yōu)化來管理這是支撐其處理長上下文2048個(gè)token的關(guān)鍵。模型并行一個(gè)模型無法放入一張顯卡。GPT-3采用了精密的模型并行將模型層分布在不同設(shè)備上和數(shù)據(jù)并行同時(shí)處理多個(gè)數(shù)據(jù)批次策略。這不僅僅是工程問題也影響了優(yōu)化算法的穩(wěn)定性和模型最終性能。3.2 數(shù)據(jù)工程質(zhì)量、多樣性與去重的藝術(shù)GPT-3的訓(xùn)練數(shù)據(jù)混合了Common Crawl網(wǎng)頁數(shù)據(jù)、維基百科、書籍、學(xué)術(shù)論文等多種來源。其中數(shù)據(jù)清洗和去重是重中之重。Common Crawl數(shù)據(jù)噪聲極大包含大量重復(fù)、低質(zhì)、甚至有害內(nèi)容。論文中提到他們基于啟發(fā)式規(guī)則和模糊去重對(duì)數(shù)據(jù)進(jìn)行了嚴(yán)格過濾。為什么去重如此關(guān)鍵防止記憶而非泛化如果訓(xùn)練數(shù)據(jù)中存在大量重復(fù)內(nèi)容模型可能會(huì)簡單地記住這些內(nèi)容而不是學(xué)習(xí)通用的語言模式。在Few-Shot測(cè)試時(shí)如果測(cè)試樣例恰好是訓(xùn)練數(shù)據(jù)的重復(fù)就會(huì)產(chǎn)生“數(shù)據(jù)泄露”的假象高估模型能力。提升訓(xùn)練效率重復(fù)數(shù)據(jù)意味著模型在多次看到相同或相似的梯度浪費(fèi)了計(jì)算資源。去重能讓模型在有限的訓(xùn)練步數(shù)內(nèi)接觸到更多樣化的信息。此外數(shù)據(jù)配比也是一門學(xué)問。不同的數(shù)據(jù)源如代碼、網(wǎng)頁、學(xué)術(shù)文本具有不同的語言風(fēng)格和信息密度。找到最佳混合比例讓模型既能擁有常識(shí)又能進(jìn)行邏輯推理和專業(yè)寫作是模型“通才”能力的基礎(chǔ)。3.3 訓(xùn)練穩(wěn)定性在千億參數(shù)懸崖邊行走訓(xùn)練一個(gè)1750億參數(shù)的模型持續(xù)時(shí)間數(shù)月任何中間的不穩(wěn)定都可能導(dǎo)致數(shù)百萬美元的計(jì)算資源打水漂。這里有幾個(gè)關(guān)鍵技巧學(xué)習(xí)率預(yù)熱與衰減訓(xùn)練初期使用較低學(xué)習(xí)率逐步“預(yù)熱”讓模型參數(shù)平穩(wěn)地進(jìn)入優(yōu)化軌跡后期再按計(jì)劃衰減。這對(duì)于大模型避免梯度爆炸至關(guān)重要。梯度裁剪這是防止訓(xùn)練因個(gè)別“陡峭”的梯度而崩潰的標(biāo)準(zhǔn)操作但在超大模型訓(xùn)練中其閾值設(shè)置需要格外小心。損失尖刺與恢復(fù)論文中罕見地提到了訓(xùn)練過程中會(huì)出現(xiàn)意外的損失尖刺但模型有時(shí)能自行恢復(fù)。這揭示了大模型訓(xùn)練中還存在許多未被充分理解的現(xiàn)象。實(shí)踐中團(tuán)隊(duì)需要有一套完整的監(jiān)控和回滾機(jī)制。注意我們討論的“訓(xùn)練”是指OpenAI在超級(jí)計(jì)算集群上進(jìn)行的原始訓(xùn)練。對(duì)于絕大多數(shù)研究者和開發(fā)者更現(xiàn)實(shí)的路徑是使用其API或?qū)︻愃萍軜?gòu)的較小開源模型進(jìn)行微調(diào)。理解這些細(xì)節(jié)有助于我們?cè)谧约旱男∫?guī)模場(chǎng)景下做出更明智的決策例如數(shù)據(jù)清洗的重要性不因模型大小而改變。4. 能力評(píng)估與涌現(xiàn)現(xiàn)象超越基準(zhǔn)測(cè)試的觀察GPT-3的評(píng)估部分堪稱一場(chǎng)“AI全能考試”涵蓋了傳統(tǒng)NLP任務(wù)、新穎任務(wù)、甚至是對(duì)抗性測(cè)試。但比具體分?jǐn)?shù)更重要的是那些令人驚訝的“涌現(xiàn)”能力。4.1 傳統(tǒng)任務(wù)的重新審視在閱讀理解、閉卷問答、翻譯等任務(wù)上GPT-3的Few-Shot表現(xiàn)已經(jīng)可以媲美之前的精調(diào)SOTA模型。這證明了大語言模型作為通用任務(wù)求解器的潛力。但更有趣的是一些細(xì)節(jié)發(fā)現(xiàn)任務(wù)格式的敏感性模型性能對(duì)提示Prompt中示例的格式、順序甚至標(biāo)點(diǎn)符號(hào)都可能有細(xì)微的敏感。例如在算術(shù)任務(wù)中把示例寫成“Q: 22? A: 4”可能比寫成“224”效果更好。這提示我們與大模型交互本身成了一門“提示工程”學(xué)問。領(lǐng)域泛化在翻譯任務(wù)中即使訓(xùn)練數(shù)據(jù)中某些語言對(duì)的數(shù)據(jù)很少GPT-3也能憑借其強(qiáng)大的跨語言表示能力給出不錯(cuò)的翻譯結(jié)果。這體現(xiàn)了從海量數(shù)據(jù)中學(xué)習(xí)到的隱式對(duì)齊。4.2 “涌現(xiàn)”能力的典型案例這些是論文中最引人注目的部分因?yàn)樗鼈儫o法用簡單的規(guī)模擴(kuò)展曲線來預(yù)測(cè)算術(shù)運(yùn)算雖然GPT-3沒有內(nèi)置計(jì)算器但針對(duì)多位數(shù)的加減乘除在Few-Shot示例的引導(dǎo)下其準(zhǔn)確率遠(yuǎn)超隨機(jī)猜測(cè)。模型似乎學(xué)會(huì)了模擬“筆算”的推理過程。新聞文章生成給定一個(gè)標(biāo)題和副標(biāo)題GPT-3能生成非常逼真、結(jié)構(gòu)完整的新聞稿以至于人類評(píng)估者難以區(qū)分。這超越了傳統(tǒng)的語言建模涉及到了內(nèi)容規(guī)劃、風(fēng)格模仿和事實(shí)或看似事實(shí)的捏合。代碼生成根據(jù)自然語言描述生成Python代碼例如“寫一個(gè)函數(shù)計(jì)算斐波那契數(shù)列”。GPT-3生成的代碼通常語法正確且邏輯基本符合要求。這直接催生了如GitHub Copilot等革命性工具。使用新詞在上下文中定義一個(gè)新詞如“Gigamuru”指代一種特殊的椅子然后讓模型在后續(xù)對(duì)話中使用這個(gè)詞。GPT-3能夠成功地在一次上下文交互中“學(xué)會(huì)”并使用這個(gè)新定義。這些能力表明GPT-3不僅僅是在做統(tǒng)計(jì)關(guān)聯(lián)它在某種程度上進(jìn)行著上下文中的即時(shí)推理和概念操作。當(dāng)然這種推理是脆弱、不穩(wěn)定的遠(yuǎn)未達(dá)到人類水平但其出現(xiàn)本身已經(jīng)足夠震撼。5. 局限性、偏見與倫理困境光環(huán)下的陰影任何一篇嚴(yán)謹(jǐn)?shù)恼撐亩急仨氂懻撈涔ぷ鞯木窒扌訥PT-3這篇論文在這方面做得相當(dāng)坦誠。這些局限性不僅是技術(shù)的更是社會(huì)的。5.1 能力局限它真的在“理解”嗎樣本效率仍然低下雖然叫“Few-Shot”但為了達(dá)到穩(wěn)定性能往往需要10個(gè)甚至更多的示例。相比人類看一兩個(gè)例子就能舉一反三模型的樣本效率依然很低。上下文窗口限制2048個(gè)token的上下文對(duì)于長文檔處理或多輪復(fù)雜對(duì)話來說仍然捉襟見肘。模型無法引用超出窗口的早期信息。缺乏真正的推理和規(guī)劃模型生成內(nèi)容是局部連貫的但缺乏全局的、有步驟的規(guī)劃能力。在需要多步邏輯推理或長期依賴的任務(wù)上它容易產(chǎn)生“一本正經(jīng)的胡說八道”即內(nèi)容流暢但邏輯錯(cuò)誤或事實(shí)錯(cuò)誤。不可預(yù)測(cè)的失敗性能對(duì)提示的措辭、示例順序等高度敏感且可能產(chǎn)生不一致的結(jié)果。同一個(gè)問題問兩遍可能會(huì)得到兩個(gè)不同的答案。5.2 社會(huì)偏見與有害內(nèi)容放大鏡下的數(shù)據(jù)烙印這是GPT-3引發(fā)最大爭(zhēng)議的部分。由于訓(xùn)練數(shù)據(jù)來自互聯(lián)網(wǎng)而互聯(lián)網(wǎng)本身充滿了各種社會(huì)、文化、種族和性別偏見GPT-3不可避免地學(xué)習(xí)并放大了這些偏見。論文中專門用一節(jié)進(jìn)行了測(cè)試性別-職業(yè)關(guān)聯(lián)當(dāng)提示與職業(yè)相關(guān)時(shí)模型會(huì)強(qiáng)化刻板印象如“護(hù)士”更可能與“她”關(guān)聯(lián)“程序員”更可能與“他”關(guān)聯(lián)。宗教與種族偏見在完形填空測(cè)試中模型會(huì)生成帶有冒犯性的關(guān)聯(lián)。生成有害內(nèi)容在惡意提示下模型可以生成充滿仇恨、暴力或誤導(dǎo)性的文本。關(guān)鍵在于模型并不“知道”這是偏見它只是忠實(shí)地反映了訓(xùn)練數(shù)據(jù)的統(tǒng)計(jì)規(guī)律。這給開發(fā)者帶來了巨大的責(zé)任如何部署一個(gè)既強(qiáng)大又可能有害的模型這直接推動(dòng)了后續(xù)關(guān)于AI對(duì)齊、安全護(hù)欄和內(nèi)容過濾的大量研究。5.3 環(huán)境成本與可復(fù)現(xiàn)性高墻花園的建立訓(xùn)練GPT-3估計(jì)耗費(fèi)了數(shù)千萬美元的計(jì)算成本和巨大的能源消耗。這引發(fā)了關(guān)于AI研究民主化的擔(dān)憂。當(dāng)最先進(jìn)的研究被鎖在極高的算力門檻之后只有少數(shù)幾家巨頭公司能夠參與這不利于學(xué)術(shù)社區(qū)的健康發(fā)展。論文本身更像是一份“能力驗(yàn)證報(bào)告”而非一份可供社區(qū)復(fù)現(xiàn)的“配方”。這種趨勢(shì)在一定程度上改變了AI研究的生態(tài)。6. 對(duì)后續(xù)研究與工業(yè)實(shí)踐的深遠(yuǎn)影響GPT-3論文的發(fā)表像一顆投入湖面的巨石其漣漪至今仍在擴(kuò)散。它的影響遠(yuǎn)不止于產(chǎn)生了一個(gè)強(qiáng)大的模型。6.1 研究方向的重塑縮放定律成為信仰論文強(qiáng)力驗(yàn)證了“規(guī)模優(yōu)先”的路徑。后續(xù)工作無論是OpenAI自己的GPT-4還是Google的PaLM、Anthropic的Claude都沿著擴(kuò)大參數(shù)、擴(kuò)大數(shù)據(jù)、擴(kuò)大算力的方向狂奔。提示工程成為顯學(xué)如何設(shè)計(jì)最佳的提示Prompt來激發(fā)模型能力成了一門新的研究領(lǐng)域和工程師必備技能。出現(xiàn)了諸如思維鏈提示、零樣本思維鏈等高級(jí)技術(shù)。從微調(diào)到提示的范式轉(zhuǎn)移對(duì)于許多應(yīng)用業(yè)界開始優(yōu)先考慮使用大模型提示工程而非訓(xùn)練一個(gè)小模型。微調(diào)Fine-tuning并未消失但變成了在特定領(lǐng)域進(jìn)一步優(yōu)化大模型性能的手段而非起點(diǎn)。對(duì)齊與安全研究升溫如何讓大模型的行為符合人類意圖和價(jià)值觀對(duì)齊以及如何防止其被濫用安全從邊緣話題變成了AI研究的核心議題。6.2 工業(yè)應(yīng)用的新范式對(duì)于開發(fā)者而言GPT-3開啟了一個(gè)新時(shí)代API優(yōu)先的開發(fā)模式無需從頭訓(xùn)練模型直接調(diào)用大模型API通過精心設(shè)計(jì)的提示和上下文來構(gòu)建應(yīng)用。這極大地降低了AI應(yīng)用的門檻。產(chǎn)品形態(tài)的創(chuàng)新出現(xiàn)了ChatGPT這樣的對(duì)話式通用界面以及Copilot這樣的代碼助手。AI從后臺(tái)的分析工具變成了前臺(tái)的交互伙伴和生產(chǎn)力工具。評(píng)估標(biāo)準(zhǔn)的改變傳統(tǒng)的準(zhǔn)確率、F1值等指標(biāo)對(duì)于評(píng)估大模型生成內(nèi)容的質(zhì)量、有用性、無害性和一致性顯得力不從心。人類評(píng)估、基于模型的評(píng)估如用GPT-4評(píng)估GPT-3.5的輸出變得日益重要。6.3 給實(shí)踐者的啟示與避坑指南基于對(duì)這篇論文的理解和后續(xù)行業(yè)的發(fā)展如果你想利用大模型能力以下心得可能對(duì)你有幫助永遠(yuǎn)不要假設(shè)模型“知道”或“理解”模型只是在計(jì)算下一個(gè)詞的概率。它的“知識(shí)”是統(tǒng)計(jì)性的、表面的。對(duì)于關(guān)鍵事實(shí)、數(shù)據(jù)、邏輯推理必須建立核查機(jī)制或讓模型提供引用來源。提示設(shè)計(jì)是迭代實(shí)驗(yàn)過程沒有一勞永逸的完美提示。針對(duì)你的具體任務(wù)需要準(zhǔn)備一個(gè)驗(yàn)證集系統(tǒng)地測(cè)試不同指令、不同格式、不同示例數(shù)量和質(zhì)量的影響。一個(gè)小技巧是讓示例盡可能覆蓋任務(wù)的各種邊界情況。警惕偏見主動(dòng)設(shè)計(jì)在構(gòu)建產(chǎn)品時(shí)要有意識(shí)地在提示中加入公平性引導(dǎo)并對(duì)輸出建立過濾和審查流程。例如在涉及人物描述的提示中可以明確要求“避免使用帶有性別刻板印象的詞匯”。成本與延遲的權(quán)衡使用大模型API尤其是最新最強(qiáng)的模型成本不菲。在產(chǎn)品設(shè)計(jì)中要思考是否真的需要1750億參數(shù)的能力來完成一個(gè)簡單的文本分類。通常小任務(wù)用小模型復(fù)雜創(chuàng)意或推理任務(wù)再用大模型是更經(jīng)濟(jì)的策略。上下文是稀缺資源2048或更長的token窗口非常寶貴。不要把長篇文檔不加處理地塞進(jìn)去。學(xué)會(huì)總結(jié)、提取關(guān)鍵信息將最相關(guān)的部分放入上下文。對(duì)于多輪對(duì)話要設(shè)計(jì)有效的歷史信息壓縮或摘要機(jī)制?;乜础禠anguage Models are Few-Shot Learners》這篇論文它不僅僅是一項(xiàng)技術(shù)突破的匯報(bào)更是一份關(guān)于AI發(fā)展路徑的宣言。它告訴我們規(guī)模本身可能就是一種通往更通用智能的路徑同時(shí)也無情地暴露了這條路徑上的所有技術(shù)挑戰(zhàn)和倫理陷阱。理解GPT-3就是理解我們當(dāng)前所處的這個(gè)AI浪潮的核心驅(qū)動(dòng)力與內(nèi)在矛盾。作為從業(yè)者我們既需要為它的能力興奮積極尋找落地場(chǎng)景也必須為它的局限性和風(fēng)險(xiǎn)保持清醒在應(yīng)用過程中如履薄冰負(fù)責(zé)任地進(jìn)行創(chuàng)新。這篇論文是一個(gè)時(shí)代的注腳而我們正在書寫這個(gè)時(shí)代的正文。