LLMs 系列科普文(11)

目前我們已經介紹了大語言模型訓練的兩個主要階段。第一階段被稱為預訓練階段,主要是基于互聯網文檔進行訓練。當你用互聯網文檔訓練一個語言模型時,得到的就是所謂的 base 模型,它本質上就是一個互聯網文檔模擬器,我們發現這是個有趣的產物,需要數千臺計算機耗費數月時間訓練。它有點像互聯網的有損壓縮版本。雖然極其有趣,但它并不直接實用,因為我們并不需要生成互聯網文檔樣本。

我們想要向 AI 提問并讓它回答我們的問題。為此,我們需要一個助手。我們發現,實際上可以在后訓練的過程中,特別是在我們稱之為監督微調的過程中構建這樣一個助手。因此在這個階段,我們發現它在算法上與預訓練完全相同,不會有任何改變。唯一變化的是數據集。因此,我們不再局限于互聯網文檔,而是希望構建并精心打造一個優質的對話數據集。我們的目標是收集數百萬條涵蓋各類話題的人機對話記錄。從根本上說,這些對話內容都將由人類創造生成。

人類負責編寫提示詞,人類也負責撰寫理想回復。他們依據標注文檔來完成這些工作。在現代技術棧中,這些工作實際上并非完全由人工手動完成,如今他們其實得到了這些工具的大量協助。因此,我們可以利用語言模型來協助創建這些數據集。并且我們會對其進行全面測試。但歸根結底,這一切最終仍源自人類的精心篩選。所以我們創建了這些對話,這現在成為了我們的數據集。我們對其進行微調或繼續訓練,最終得到一個助手。

然后我們轉變了話題,開始討論這個助手可能帶來的一些認知影響。我們發現,如果不采取一些緩解措施,助手會出現幻覺現象。因此,我們認識到幻覺可能會很常見。然后我們研究了一些緩解這些幻覺的方法。接著我們發現這些模型相當出色,能在腦海中處理大量信息。但我們也發現它們可以借助工具來提升表現。我們可以借助網絡搜索來減少幻覺的產生,或許還能獲取一些更新的信息或類似的內容。或者我們可以利用代碼解釋器等工具,這樣大語言模型就能編寫代碼并實際運行它、查看結果。這些就是我們目前探討過的部分主題。

現在我想做的是介紹這個流程的最后也是最重要的階段,那就是強化學習。目前強化學習仍被認為屬于后訓練微調的范疇。但這是最后一個主要階段。這是一種不同的語言模型訓練方式,通常作為第三步進行。

十一、強化學習階段

上面提到的這些階段基本都是由獨立的團隊負責,有的團隊專門負責預訓練的數據工作,另一個團隊負責預訓練的訓練工作。此外,還有一個團隊專門負責對話生成,而另一個不同的團隊則負責監督微調。還會有一個團隊負責強化學習部分。這有點像這些模型的生產流水線過程:你先獲得基礎模型,然后微調成助手,接著進入強化學習階段。這就是大致的主要流程。

現在讓我們專注于強化學習,這是訓練的最后主要階段。首先,讓我解釋一下為什么要進行強化學習,以及從高層次來看它是什么樣的。那么現在我想試著解釋一下強化學習階段及其對應的含義,基本上,這就相當于上學的過程。

就像你上學是為了精通某項技能一樣,我們也要讓大語言模型接受學校教育。實際上,我們正在通過幾種范式來賦予它們知識或傳授技能。具體來說,當我們使用學校教材時,你會發現這些教材包含三大類信息——三類主要的知識模塊。

(藍色箭頭)首先你會注意到的是書本中存在大量解釋性內容,就像是背景知識之類的,當你閱讀這些說明性文字時,可以大致將其視為對這些數據的訓練,這就是為什么當你閱讀這些背景知識和上下文信息時,它有點像預訓練的過程,我們在這里構建了一個關于這些數據的知識庫,并對主題有了初步了解。

(紅色箭頭)接下來你會看到的主要信息是這些練習題的問題及其解決方案。簡單來說,這本書的作者作為人類專家,不僅給我們提出了問題,還提供了解決方案。這個解決方案基本上等同于一個理想助手的完美回答。也就是說,專家實際上是在向我們示范如何解決這個問題。當我們閱讀解決方案時,實際上是在用專家數據進行訓練。之后,我們就可以嘗試模仿專家的做法。這大致相當于擁有了 SFT 模型。所以基本上,我們已經完成了預訓練,并且已經涵蓋了專家模仿以及他們如何解決這些問題。

(綠色箭頭)學習的第三階段基本上是練習題。有時你會看到這里只有一個練習題,任何教科書的每章末尾通常都會有許多練習題。當然,我們知道練習題對學習至關重要,因為它們能讓你做什么呢?它們能讓你自己動手實踐,并探索解決問題的方法。在練習題中,你會看到一個問題的描述,但不會直接給出解法,不過通常會提供最終答案(一般在教科書的最后答案部分)。所以你知道自己要達到的目標答案,也有問題的陳述,但沒有具體的解題步驟。你正在嘗試實踐解決方案。你嘗試了很多不同的方法,看看哪種方法能最好地幫你找到最終解決方案。因此,你正在自己探索如何解決這些問題

在這個過程中,你首先依賴于來自預訓練的背景信息,其次可能還會稍微模仿人類專家的做法。你或許可以嘗試類似的解決方案等等。我們已經完成了這些步驟,現在在這一部分,我們將嘗試進行實踐。因此,我們將獲得提示內容以及最終的答案,但我們不會得到專家級的解決方案。我們必須不斷自己實踐和嘗試。這正是強化學習的核心 所在。

強化學習

在前文中,我們曾演示過,小明買蘋果和橙子的計算題示例,我們把這個問題扔給 chatgpt,它可以每次都輸出一些不同的中間過程,并且最終計算的結果也是正確的,例如我們重復了 4 次,這里有四個可能的候選解決方案作為例子,它們都得出答案 3。現在,我想讓你意識到的是,如果你是負責創建對話的人類數據標注員,要將對話輸入訓練集,你應該做什么樣的選擇呢?實際上你可能并不確定該將其中哪個對話添加到數據集中。

其中一些對話會建立方程組,有些則只是用文字的形式討論問題,還有些則直接跳到解決方案。但我們必須明白并區分的是,解決方案的首要目的當然是得出正確答案。我們想要得到最終答案 3,這是這里的重要目的。但還有一個次要目的,就是我們也在努力讓它對人類友好,因為我們假設這個人想看到解決方案,他們想看到中間步驟,我們想很好地呈現它,等等。

所以這里有兩件不同的事情。第一件是向人類展示,第二件,我們實際上是在試圖得到正確的答案。所以讓我們暫時專注于得出最終答案。如果我們只關心最終答案,那么在這些選項中,哪個是最優的或者說最佳解決方案,能讓大語言模型得出正確答案?我們并不知道。

也許讓 token 更分散地展開會更有效,也許把它列成方程式會更好,也許通過討論來解決會更合適。從根本上說,我們并不清楚。我們不清楚的原因是,對你我或人類標注員而言容易或困難的任務,與對大語言模型來說的難易程度并不相同,它的認知方式與我們不同,對我來說輕而易舉的 token 序列,對 LLMs 來說可能是個巨大的跨越。

而且,由于一些書寫格式的問題,我們創建的許多 token 對 LLMs 來說可能毫無意義。我們只是在浪費 token,既然這些都無關緊要,為何要浪費這些 token 呢,如果我們唯一關心的是得到最終答案,而將呈現給人的問題分開考慮,那么我們實際上并不知道該如何標注這個例子。

我們不知道應該給大語言模型提供什么解決方案,因為我們不是大語言模型。這在數學案例中表現得非常明顯,但實際上這是一個普遍存在的問題。我們的知識并不等同于大語言模型的知識。這個大型語言模型實際上掌握了大量數學、物理、化學等領域的博士級知識。在很多方面,它確實比我們知道得更多。而我可能在解決問題時并沒有充分利用這些知識。

但反過來,我可能在解決方案中注入了一堆大語言模型參數中并不掌握的知識。這些突如其來的知識躍遷會讓模型感到非常困惑。因此,我們的認知方式存在差異。如果我們只關心最終解決方案并以經濟高效的方式實現目標,那我真的不知道該在這里寫些什么。簡而言之,我們目前并不擅長為 LLM 創建這些 token 序列。但我們真正希望的是讓大語言模型自己去發現適合它的 token 序列。它需要自行找出在給定提示下能可靠得出答案的 token 序列,它需要通過強化學習和試錯的過程來發現這一點。


強化學習的基本運作方式其實相當簡單。我們需要嘗試多種不同的解決方案,然后觀察哪些方案效果好,哪些效果不佳。所以我們要做的就是輸出提示,運行模型。模型會生成解決方案。然后我們會檢查這個解決方案。我們知道這道題的正確答案是 3 元。然后我們多重復運行幾次,每次模型都會給出不一樣的內容,每次得到的答案也可能正確,也可能不正確。

因此在實際操作中,你可能會針對同一個提示采樣數千個獨立解,甚至可能達到百萬量級。其中一些會是正確的,另一些則不太正確。基本上,我們希望做的是鼓勵那些能得出正確答案的解決方案。

這個示意圖,展示了大致的樣貌。我們有一個提示,然后我們并行嘗試了許多不同的解決方案。其中一些方案可能表現良好,因此它們得到了正確的答案,用綠色表示。有些解決方案可能效果不佳,甚至無法得出正確答案——也就是紅色。不過,眼前這個問題其實算不上最佳范例,因為它實在過于簡單。

但讓我們發揮一下想象力。假設綠色的代表好的,紅色的代表壞的。好的,我們生成了 15 個解決方案,其中只有 4(3 綠 1 黃)個得到了正確答案。那么現在我們要做的就是,基本上,我們希望鼓勵那些能得出正確答案的解決方案類型。所以,在這些紅色解決方案中出現的任何 token 序列,顯然在某個環節出了問題,它們并不是解決這個問題的好方法。那些綠色解決方案中的任何 token 序列,在這種情況下都表現得相當不錯。因此,我們希望在這類提示中更多地采用類似的做法。

而我們鼓勵未來這種行為的方式,本質上就是對這些序列進行訓練。但現在這些訓練序列并非來自專家的人工標注,也沒有人判定這就是正確的解決方案,這個解決方案源自模型本身。因此,模型在這里進行實踐,它嘗試了幾種解決方案,其中 4 種似乎奏效了,現在模型將對這些方案進行某種訓練。而這相當于一種認可,就像在說:“好吧,這個確實效果很好。所以我應該用這種方式來解決這類問題。”

為了傳達核心概念,或許可以簡單地理解為從這 4 個方案中選出最優的一個,比如標為黃色的這個。這個方案不僅得出了正確答案,可能還具有其他優點。也許它是最簡潔的,或者在某種程度上看起來最漂亮,或者你還能想到其他評判標準作為例子。但我們會認定這是最佳解決方案,并據此進行訓練。經過參數更新后,模型在未來遇到類似情境時,就會更傾向于選擇這條路徑。但必須記住,我們會在大量數學、物理等各種問題上運行多種多樣的提示。

因此,成千上萬的提示詞背后,可能對應著每個提示詞都有數千種解決方案。這一切幾乎是在同時發生的。隨著我們不斷迭代這一過程,模型會自行發現哪些 token 序列能引導它得出正確答案。這不是來自人類標注者的數據。模型就像在這個游樂場里玩耍。它知道自己想要達到什么目標,并且正在發現對它有效的序列。這些序列不需要任何思維跳躍。它們看起來可靠且符合統計規律,并充分利用了模型已有的知識。這就是強化學習的過程。這基本上就是一個不斷試錯的過程。我們會嘗試各種不同的解決方案,驗證它們的效果,并在未來更多地采用那些行之有效的方法。這就是強化學習的核心思想

因此,結合之前的討論,我們現在可以看到,監督微調模型仍然是有幫助的,因為它有點像將模型初步引導到正確解決方案的附近。可以說,它是對模型的一種初始化,讓模型能夠生成解決方案,比如寫出解題步驟,或許還能理解如何建立方程組,或者以某種方式與解決方案進行"對話"。這樣,它就能讓你接近正確的解決方案。

但強化學習才是真正讓一切趨于完美的關鍵。我們會不斷探索適合模型的解決方案,找到正確答案并加以鼓勵,這樣模型就會隨著時間的推移逐漸變得更好。

以上就是我們訓練大語言模型的高層次流程。簡而言之,我們訓練 AI 的方式與教育兒童非常相似。唯一的區別在于,兒童是通過書籍的章節學習,在每本書的不同章節中完成各類訓練練習。而我們訓練 AI 時,更像是根據每個階段的特點分步驟進行。

首先,我們進行預訓練,這相當于閱讀所有的說明性材料。我們會同時瀏覽所有教材,閱讀所有解釋內容,并嘗試構建一個知識庫。接下來,我們進入監督微調階段,這一階段主要是研究人類專家提供的各種固定解法,涵蓋所有教材中的各類習題解答。而我們得到的只是一個 SFT 模型,它能夠模仿專家的行為,但某種程度上是盲目模仿。它更像是盡最大努力去猜測,試圖從統計角度模仿專家的行為。因此,當你查看所有解決方案時,這就是你所得到的結果。

最后,在最后一個階段,我們會在強化學習階段完成所有的練習題。我們只做所有教材中的練習題。這就是我們得到強化學習模型的方法。

事實上前兩個階段——預訓練和監督微調——已經存在多年,它們非常標準化,所有不同的大語言模型提供商都在采用。而最后一個階段,即強化學習訓練,目前仍處于發展初期,在該領域尚未形成統一標準。原因在于,我實際上跳過了這個過程中的大量細節,但此處我們暫不展開更多內容。

但高層次的理念的確非常簡單,就是一種不斷試錯學習的過程,但其中涉及大量細節和微妙的數學技巧——比如如何挑選最優解、訓練量如何把控、提示詞分布如何設計,以及如何設置訓練流程才能使其真正奏效。核心思想雖然極其簡單,卻需要調節無數細枝末節的參數。因此,要把這些細節做到位絕非易事。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83183.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83183.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83183.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度學習環境配置指南:基于Anaconda與PyCharm的全流程操作

一、環境搭建前的準備 1. 查看基礎環境位置 conda env list 操作說明:通過該命令確認Anaconda默認環境(base)所在磁盤路徑(如D盤),后續操作需跳轉至該磁盤根目錄。 二、創建與激活獨立虛擬環境 1. 創…

【2D與3D SLAM中的掃描匹配算法全面解析】

引言 掃描匹配(Scan Matching)是同步定位與地圖構建(SLAM)系統中的核心組件,它通過對齊連續的傳感器觀測數據來估計機器人的運動。本文將深入探討2D和3D SLAM中的各種掃描匹配算法,包括數學原理、實現細節以及實際應用中的性能對比,特別關注…

力扣160.相交鏈表

題目描述 難度:簡單 示例 思路 使用雙指針 使用指針分別指向兩個不同的鏈表進行比較 解題方法 1.首先進行非空判斷 2.初始化指針分別指向兩個鏈表 3.遍歷鏈表 while (pA ! pB): 當pA和pB不相等時,繼續循環。如果pA和pB相等,說明找…

本地項目push到git

cd /home/user/project git init 添加遠程倉庫地址 git remote add origin https://github.com/user/repo.git 創建并切換到新分支 git checkout -b swift 添加文件到暫存區 git add . git commit -m “swift訓練評測” git push -u origin swift —force #首次 git push …

uni-app學習筆記二十九--數據緩存

uni.setStorageSync(KEY,DATA) 將 data 存儲在本地緩存中指定的 key 中&#xff0c;如果有多個key相同&#xff0c;下面的會覆蓋掉原上面的該 key 對應的內容&#xff0c;這是一個同步接口。數據可以是字符串&#xff0c;可以是數組。 <script setup>uni.setStorageSyn…

GitHub 趨勢日報 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系統生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日報中的項目描述已自動翻譯為中文 &#x1f4c8; 今日獲星趨勢圖 今日獲星趨勢圖 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…

NFC碰碰卡發視頻源碼搭建與寫卡功能開發實踐

在信息快速傳播的時代&#xff0c;便捷的數據交互方式成為用戶的迫切需求。“碰一碰發視頻” 結合寫卡功能&#xff0c;為視頻分享提供了新穎高效的解決方案&#xff0c;在社交娛樂、商業推廣等場景中展現出巨大潛力。本文將詳細介紹碰一碰發視頻源碼搭建以及寫卡功能開發的全過…

詳解K8s 1.33原地擴縮容功能:原理、實踐、局限與發展

你是否有過這樣的經歷&#xff1f; 精心配置了 Kubernetes 的 Pod&#xff0c;設置了“剛剛好”的 CPU 和內存&#xff08;至少你當時是這么想的&#xff09;&#xff0c;結果應用不是資源緊張喘不過氣&#xff0c;就是像“雙十一”搶購一樣瘋狂搶占資源。 過去&#xff0c;唯…

IOS 打包賬號發布上傳和IOS Xcode證書配置

xcode下載 https://developer.apple.com/download/all/ App發布 https://appstoreconnect.apple.com/ https://appstoreconnect.apple.com/teams/83ba877c-af24-4fa5-aaf2-e9b9b6066e82/apps/6473148620/testflight/groups/eb983352-b2e2-4c29-bbb7-071bf7287795 https://devel…

【從零學習JVM|第三篇】類的生命周期(高頻面試題)

前言&#xff1a; 在Java編程中&#xff0c;類的生命周期是指類從被加載到內存中開始&#xff0c;到被卸載出內存為止的整個過程。了解類的生命周期對于理解Java程序的運行機制以及性能優化非常重要。本文會深入探尋類的生命周期&#xff0c;讓讀者對此有深刻印象。 目錄 ?…

Significant Location Change

一、Significant Location Change是什么 “Significant Location Change&#xff08;重大位置變化&#xff09;” 是蘋果 iOS 系統中一項用于在應用未主動運行時&#xff0c;監測設備位置顯著變化的功能。它主要通過基站、Wi-Fi 網絡等信號來判斷設備是否發生了有意義的位置移…

ubuntu22.04有線網絡無法連接,圖標也沒了

今天突然無法有線網絡無法連接任何設備&#xff0c;并且圖標都沒了 錯誤案例 往上一頓搜索&#xff0c;試了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角網絡圖標消失 最后解決的辦法 下載網卡驅動&#xff0c;重新安裝 操作步驟 查看自己網卡的型號 lspci | gre…

基于cnn的通用圖像分類項目

背景 項目上需要做一個圖像分類的工程。本人希望這么一個工程可以幫助學習ai的新同學快速把代碼跑起來&#xff0c;快速將自己的數據集投入到實戰中&#xff01; 代碼倉庫地址&#xff1a;imageClassifier: 圖片分類器 代碼切到master分支&#xff0c;master分支是本地訓練圖…

【HarmonyOS 5 開發速記】如何獲取用戶信息(頭像/昵稱/手機號)

1.獲取 authorizationCode&#xff1a; 2.利用 authorizationCode 獲取 accessToken&#xff1a;文檔中心 3.獲取手機&#xff1a;文檔中心 4.獲取昵稱頭像&#xff1a;文檔中心 首先創建 request 若要獲取手機號&#xff0c;scope必填 phone&#xff0c;permissions 必填 …

從OCR到Document Parsing,AI時代的非結構化數據處理發生了什么改變?

智能文檔處理&#xff1a;非結構化數據提出的挑戰 在這個時代的每一天&#xff0c;無論是個人處理賬單&#xff0c;還是企業處理合同、保險單、發票、報告或成堆的簡歷&#xff0c;我們都深陷在海量的非結構化數據之中。這類數據不像整齊排列的數據庫表格那樣規整&#xff0c;…

Python Ovito統計金剛石結構數量

大家好,我是小馬老師。 本文介紹python ovito方法統計金剛石結構的方法。 Ovito Identify diamond structure命令可以識別和統計金剛石結構,但是無法直接輸出結構的變化情況。 本文使用python調用ovito包的方法,可以持續統計各步的金剛石結構,具體代碼如下: from ovito…

相關類相關的可視化圖像總結

目錄 一、散點圖 二、氣泡圖 三、相關圖 四、熱力圖 五、二維密度圖 六、多模態二維密度圖 七、雷達圖 八、桑基圖 九、總結 一、散點圖 特點 通過點的位置展示兩個連續變量之間的關系&#xff0c;可直觀判斷線性相關、非線性相關或無相關關系&#xff0c;點的分布密…

Git常用命令完全指南:從入門到精通

Git常用命令完全指南&#xff1a;從入門到精通 一、基礎配置命令 1. 用戶信息配置 # 設置全局用戶名 git config --global user.name "你的名字"# 設置全局郵箱 git config --global user.email "你的郵箱example.com"# 查看所有配置 git config --list…

為什么要創建 Vue 實例

核心原因:Vue 需要一個「控制中心」來驅動整個應用 你可以把 Vue 實例想象成你應用的**「大腦」或「引擎」。它負責協調模板、數據、邏輯和行為,將它們變成一個活的、可交互的應用**。沒有這個實例,你的代碼只是一堆靜態的 HTML、JavaScript 變量和函數,無法「活」起來。 …

正則持續學習呀

源匹配為 (.*): (.*)$ 替換匹配為 "$1": "$2", 可將headers改為字典 參考 【爬蟲軍火庫】如何優雅地復制請求頭 - 知乎