構建大語言模型的四個主要階段

? ? ? ? 大規模語言模型的發展歷程雖然只有短短不到五年的時間,但是發展速度相當驚人,國內外有超過百種大模型相繼發布。中國人民大學趙鑫教授團隊在文獻按照時間線給出 2019 年至 2023 年比較有影響力并且模型參數量超過 100 億的大規模語言模型。大規模語言模型的發展可以粗略的分為如下三個階段:基礎模型、能力探索、突破發展。

? ? ? ?大語言模型構建通常包含以下四個主要階段:預訓練、有監督微調、獎勵建模和強化學習,簡要介紹各階段使用的算法、數據、難點以及實踐經驗。

  • 預訓練
? ? ? ?需要利用包含數千億甚至數萬億 單詞的訓練數據,并借助由數千塊高性能 GPU 和高速網絡組成的超級計算機,花費數十天完成深 度神經網絡參數的訓練。這一階段的核心難點在于如何構建訓練數據以及如何高效地進行分布式訓練。

? ? ? ?預訓練階段是大規模語言模型訓練的關鍵步驟之一,特別是對于GPT(Generative Pre-training Transformer)系列模型而言。在預訓練階段,模型通過自我監督學習(Self-supervised Learning)的方式,利用海量無標簽的互聯網文本數據集進行訓練。具體來說,GPT模型采用了自回歸語言模型的形式,其核心任務是根據給定的文本序列預測下一個可能出現的單詞。

? ? ? ?模型通過Transformer架構的多層自注意力機制學習到文本序列中詞匯之間的深層上下文依賴關系。在訓練過程中,模型試圖最小化預測下一個單詞的交叉熵損失,從而逐步建立起對自然語言規律的深刻理解,其中包括詞匯搭配、語法結構、短語和句子的意義等。

? ? ? ?通過預訓練,模型能夠在大規模無標注數據上習得通用的語言表示,這些表示可以被進一步應用于多種不同的自然語言處理任務中,只需要在預訓練模型的基礎上進行微調,就可以在特定任務上達到相當出色的性能。這極大地降低了對大量有標注數據的依賴,并為多種下游任務提供了強有力的模型基礎。

  • 有監督微調階段
? ? ? ?利用少量高質量的數據集,其中包含用戶輸入的提示詞( Prompt )和對應的理想輸出結果。提示詞可以是問題、閑聊對話、任務指令等多種形式和任務。這個階段是從語言模型向對話模型轉變的關鍵,其核心難點在于如何構建訓練數據,包括訓練數據內部多個任務之 間的關系、訓練數據與預訓練之間的關系以及訓練數據的規模。

? ? ? ?有監督微調是預訓練模型適應特定任務的關鍵步驟。在完成了大規模無標注數據上的預訓練后,模型已經學習到了豐富的語言結構和模式。然而,為了針對性地解決特定的自然語言處理任務(如問答系統、文本分類、機器翻譯等),我們需要對預訓練模型進行微調(Fine-tuning)。

? ? ? ?微調過程中,我們會使用特定任務的有標簽數據集,重新訓練模型的部分或全部權重,使其能夠針對特定任務進行優化。這意味著模型會在原有的預訓練基礎上,針對新的任務目標調整其內部參數,以便更好地理解和處理任務特有的特征和規律。

? ? ? ?在微調階段,模型的輸入和輸出會與特定任務一致。例如,在文本分類任務中,模型將學習如何根據輸入文本預測相應的類別標簽;而在問答系統任務中,模型則將學會根據提供的背景文本生成恰當的答案。

? ? ? ?通過這種方法,預訓練模型能夠快速適應新任務,通常比從零開始訓練模型需要更少的數據和計算資源,同時也能夠取得更好的性能表現。這種預訓練-微調范式已經成為現代自然語言處理中廣泛采用的技術手段。

  • 獎勵建模階段
? ? ? ?獎勵建模階段 的目標是構建一個文本質量對比模型,用于對于同一個提示詞,對有監督微調模型給出的多個不同輸出結果進行質量排序。這一階段的核心難點在于如何限定獎勵模型的應用范圍以及如何構建訓練數據。

? ? ? ?獎勵建模(Reward Modeling)是一種強化學習中的技術,盡管像GPT這樣的大規模預訓練語言模型通常基于自監督學習或最大似然估計進行訓練,但在某些情況下,獎勵建模可以作為一種補充手段,幫助進一步優化模型的行為,特別是當涉及到道德、倫理或者更加符合人類價值判斷的輸出時。

? ? ? ?在獎勵建模框架下,首先定義一個“獎勵函數”,該函數量化了模型行為的好壞程度,即模型輸出越符合預期的目標或人類偏好,則獲得的獎勵越高。然后,通過訓練一個輔助模型(也稱為獎勵模型)來預測這些獎勵信號,輔助模型通常是基于少量人工標注數據或者其他方式表達的人類偏好。

? ? ? ?在實際應用中,獎勵建模可能被用來指導預訓練語言模型的微調過程,使模型在生成文本時不僅追求語法和語義的正確性,還能盡量遵循預設的價值觀或社會規范。這一過程可能包括讓模型根據所學到的獎勵信號調整其策略,生成更加符合期望的結果。通過這種方式,即使原始訓練并未采用強化學習,獎勵建模也可以間接引入強化學習的理念來改進模型的表現。

  • 強化學習階段
? ? ? ?根據數十萬提示詞,利用前一階段訓練的獎勵模型,對有監督微調模型對用戶提示詞補全結果
的質量進行評估,并與語言模型建模目標綜合得到更好的效果。這一階段的難點在于解決強化學
習方法穩定性不高、超參數眾多以及模型收斂困難等問題。

? ? ? ?強化學習(Reinforcement Learning,RL)確實是一個強有力的機器學習框架,尤其適用于那些智能體需要通過與環境交互來學習最優行為的場景。在自然語言處理(NLP)領域,強化學習應用于對話模型的訓練時,模型扮演的角色就是一個智能體,這個智能體會在對話交互的環境中采取行動(例如,生成回應),然后根據接收到的外部反饋(即獎勵信號)來調整它的策略。

? ? ? ?在對話系統的上下文中,強化學習允許模型通過與用戶或其他評價機制交互,根據用戶的滿意度、對話連貫性、信息準確性等因素獲取即時或延遲的獎勵。比如,如果模型生成的回答得到了用戶的積極反饋或實現了預定的目標(如解答了問題或完成了任務),那么模型會得到正向獎勵;反之,若回答不恰當或不符合預期,則可能得到負向獎勵或沒有獎勵。

? ? ? 一些高級應用場景中,強化學習與語言模型相結合的技術已經發展到了更為精細的層次,如使用人類反饋強化學習(Human Feedback Reinforcement Learning, RLHF),這種技術可以讓語言模型更有效地吸收和理解人類偏好,并據此優化其生成的文本內容和風格。例如,OpenAI的ChatGPT就是通過RLHF技術進行了后期微調,以便更好地實現與人類的友好交互和遵循社會規范。

1. 預訓練(Pre-training)

算法

  • 在預訓練階段,最常用的算法是基于Transformer架構的自注意力機制,如BERT、GPT系列、XLNet、RoBERTa等模型。這些模型通過無監督學習的方法,在大規模未標注文本數據上進行訓練,學習語言的基本結構和模式。

數據

  • 使用數十億乃至數百億字節級別的大規模語料庫,包括網頁抓取數據、書籍、百科全書、論壇討論等各類文本數據。

難點

  • 數據清洗和預處理:去除噪聲數據,確保訓練數據的質量和多樣性。
  • 計算資源需求:訓練超大規模模型需要極其龐大的計算資源,包括GPU集群或TPU陣列。
  • 學習效率和泛化能力:如何設計有效的預訓練任務(如掩碼語言模型、自回歸語言模型等)以提高模型學習質量和泛化性能。

實踐經驗

  • BERT使用雙向Transformer編碼器結構,并引入了掩碼語言模型(Masked Language Modeling, MLM)和下一句預測(Next Sentence Prediction, NSP)任務進行預訓練。
  • GPT系列模型使用自回歸Transformer解碼器,通過預測下一個詞語的方式進行預訓練。

2. 有監督微調(Supervised Fine-tuning)

算法

  • 在預訓練模型的基礎上,針對特定的下游任務(如文本分類、問答、命名實體識別等),在帶標簽的小規模任務數據集上進行有監督微調。

數據

  • 微調階段使用的數據集通常是有標注的任務特異性數據,如GLUE、SuperGLUE、SQuAD等任務數據集。

難點

  • 過擬合:由于預訓練模型參數量龐大,如何在有限的標注數據上進行有效微調而不至于過擬合是一個挑戰。
  • 微調策略:如何選擇合適的微調層、凍結部分層、調整學習率等因素以優化微調效果。

實踐經驗

  • 微調時通常會對預訓練模型的頂部層進行訓練,同時調整模型整體的學習率,以充分利用預訓練階段學到的通用知識。

3. 獎勵建模(Reinforcement Learning)

算法

  • 在某些情況下,模型的訓練可以通過強化學習方式進行,模型根據所采取的動作(生成文本等)得到環境反饋(獎勵或懲罰),進而調整策略。

數據

  • 不再依賴于明確的標簽,而是根據模型生成的文本內容與預期目標的匹配程度或其他相關指標給予獎勵信號。

難點

  • 設計合理的獎勵函數:確保獎勵信號能夠正確反映生成文本的質量和目標任務的要求。
  • 穩定性與收斂性:強化學習過程可能較不穩定,需要精細調整訓練策略以保證收斂到最優解。

實踐經驗

  • OpenAI的GPT-3在一些生成任務上采用了基于獎勵的微調(RLHF,Reinforcement Learning with Human Feedback),通過人類評估員對模型生成結果的打分來調整模型策略。

4. 強化學習(Reinforcement Learning)

算法

  • 強化學習應用于語言模型時,通常涉及到自動生成任務,模型通過不斷試錯并根據外部環境的反饋(例如人類用戶的評價或內置評估指標)調整自身行為。

數據

  • 可能是與環境交互產生的序列數據,或者是用戶對模型生成結果的反饋數據。

難點

  • 采樣效率:強化學習往往需要大量交互以學習最優策略,而在自然語言生成場景下,采樣和反饋可能十分耗時和昂貴。
  • 環境模擬:如果不能直接與真實世界交互,可能需要構建模擬環境來優化模型。

實踐經驗

  • 一些研究嘗試將強化學習用于對話系統,通過與模擬用戶交互,使模型學會更加流暢和有意義的對話策略。在實踐中,通常會結合有監督學習和強化學習,以最大化模型性能。

? ? ? ?總之,構建大語言模型是一個循序漸進的過程,從大規模預訓練開始,逐步通過有監督微調、獎勵建模和強化學習等手段,讓模型適應更具體和復雜的任務需求。在這個過程中,如何優化算法、合理利用數據、克服難點以及總結最佳實踐,都是推動模型性能持續提升的關鍵要素。

? ? ? ? 根據 OpenAI 聯合創始人 Andrej Karpathy 在微軟 Build 2023 大會上所公開的信息,OpenAI 所使用的大規模語言模型構建流程主要包含四個階段:預訓練、有監督微調、獎勵建模、強化學習。這四個階段都需要不同規模數據集合、不同類型的算法,產出不同類型的模型,所需要的資源也有非常大的差別。

以下是每個階段的詳細描述:

  1. 預訓練 (Pre-training):

    • 數據集: 預訓練階段通常使用大規模無標注文本數據集,例如Wikipedia、Common Crawl、BookCorpus等。這些數據集包含了海量未標記的自然語言文本,用于訓練模型捕捉語言的基本規律和結構。
    • 算法: 常見的預訓練算法包括自注意力機制為基礎的Transformer架構下的BERT(Bidirectional Encoder Representations from Transformers)、GPT(Generative Pre-training Transformer)系列模型等。這些模型首先通過掩碼語言模型(MLM)或自回歸語言模型(ARLM)任務進行預訓練,使模型學習通用的語言表示。
    • 模型: 輸出的是一個通用的語言模型,如BERT、GPT-3等,它們能生成或預測缺失的詞匯,形成對語言深層次理解的基礎模型。
    • 資源: 預訓練需要巨大的計算資源,包括GPU集群和大量的存儲空間,訓練時間也可能長達數周甚至數月。
  2. 有監督微調 (Supervised Fine-tuning):

    • 數據集: 微調階段使用的是帶有標簽的小規模或者特定領域的數據集,如GLUE、SuperGLUE、SQuAD等基準測試任務的數據集,涵蓋文本分類、問答、語義相似度等多種任務類型。
    • 算法: 在預訓練模型的基礎上,通過調整模型權重并對特定任務進行有監督訓練,例如添加額外的分類層,然后針對具體任務目標優化模型參數。
    • 模型: 經過微調后的模型具有針對性,能夠解決具體的下游任務,如情感分析模型、命名實體識別模型等。
    • 資源: 雖然相比預訓練所需資源較少,但仍需要一定量的GPU資源來進行快速有效的訓練,同時對于某些復雜任務可能需要較長的訓練時間。
  3. 獎勵建模 (Reward Modeling):

    • 數據集: 這個階段的數據集是由人類評估員給出的評價或獎勵信號構成,反映模型在某個任務上的表現好壞。
    • 算法: 獎勵建模常用于強化學習框架中,通過模仿學習或RLHF(Reinforcement Learning from Human Feedback)等方法,將來自人類反饋的獎勵信號轉化為模型更新的信號。
    • 模型: 通過這種方式微調的模型能夠在遵循人類價值觀的前提下提高決策質量和輸出質量,如ChatGPT中的安全性和有用性就通過獎勵建模得以增強。
    • 資源: 同樣需要GPU資源進行訓練,另外還需要人力投入收集和整理高質量的人類反饋數據。
  4. 強化學習 (Reinforcement Learning):

    • 數據集: 強化學習環境可以是模擬環境產生的數據,也可以是實際操作過程中的實時反饋數據,模型通過與環境互動獲得經驗樣本。
    • 算法: Q-learning、Policy Gradient、Actor-Critic等算法被用來訓練模型如何在給定環境中采取最優行動以最大化累積獎勵。
    • 模型: 強化學習訓練出的模型可以直接應用于游戲、機器人導航、對話系統等場景,模型具備動態適應環境變化的能力。
    • 資源: 強化學習訓練過程中往往需要大量的嘗試和探索,因此需要大量計算資源,尤其是對于復雜環境和高維動作空間的任務。此外,構建模擬環境或獲取真實世界的即時反饋也是一項重要資源投入。

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

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

相關文章

LangFlow——一款可輕松實驗和原型化 LangChain流水線的AI項目

LangFlow——一款可輕松實驗和原型化 LangChain流水線的AI項目。 前言 在人工智能興起的當下,AI正在重塑著很多行業。今天介紹的是一款近期登上github熱門的一款可輕松實驗和原型化 LangChain[1] 流水線的AI項目—LangFlow。 Flowise——通過拖放界面構建定制的LLM…

MCTP Control Protocol

MCTP control message用于在MCTP通信的協議中,來設置和初始化MCTP通信。 本文基于 SMBus/I2C 來實現 MCTP Control Protocol,SMBus/I2C 包格式如下: Management Component Transport Protocol (MCTP) SMBus/I2C Transport Binding Specific…

Flask學習筆記

不論POST請求還是GET請求都支持在 URL 中添加變量&#xff0c;可以選擇性的加上一個轉換器&#xff0c;為變量指定數據類型。 history_alarm.route(/test/<int:post_id>, methods[POST]) def test(post_id):print(f"參數類型為&#xff1a;{type(post_id)}")i…

VUE3中的組件傳值

一、父傳子(props) 在子組件中可以使用defineProps接收父組件向子組件的傳值 父組件fatherPage.vue&#xff1a; <template><div class"father"><button click"a a 1">按鈕</button><childPage :a"a" /><…

clickhouse的多路徑存儲策略

存儲策略 clickhouse從19.15開始&#xff0c;MergeTree實現了自定義存儲策略的功能&#xff1a; JBOD策略&#xff1a;這種策略適合服務器掛多磁盤但沒做raid的場景。JBOD是一種輪詢策略&#xff0c;每次執行INSERT或者MERGE&#xff0c;所以產生的新分區會輪詢寫入各個磁盤。…

C#面:Application , Cookie 和 Session 會話有什么不同

Application、Cookie 和 Session 是在Web開發中常用的三種會話管理方式 Application&#xff08;應用程序&#xff09;&#xff1a; Application 是在服務器端保存數據的一種方式&#xff0c;它可以在整個應用程序的生命周期內共享數據。Application 對象是在應用程序啟動時創…

Nginx 隱藏版本信息和logo

1.隱藏版本信息 http {### 隱藏版本號 server_tokens off; } 2.隱藏圖標 2.1 cd nginx 安裝的路徑 cd/XXXX/nginx-1.2.0 2.2 編輯文件 vim src/core/nginx.h 修改define nginx_ver 中的內容 vim src/http/ngx_http_special_response.c 修改 u_char ngx_http_error_tail[]…

java 基礎(核心知識搭配代碼)

前言 java的學習分為了上部分以及下部分進行學習&#xff0c;上部分就是對于java的基礎知識&#xff0c;面向對象上&#xff0c;面向對象下&#xff0c;異常操作&#xff0c;javaApi&#xff1b;下部主要是集合&#xff0c;泛型&#xff0c;反射&#xff0c;IO流&#xff0c;J…

Grid-Based Continuous Normal Representation for Anomaly Detection 論文閱讀

Grid-Based Continuous Normal Representation for Anomaly Detection 論文閱讀 摘要簡介方法3.1 Normal Representation3.2 Feature Refinement3.3 Training and Inference 4 實驗結果5 總結 文章信息&#xff1a; 原文鏈接&#xff1a;https://arxiv.org/abs/2402.18293 源碼…

ChatGPT4.0使用次數限制解讀

ChatGPT4.0使用次數限制解讀 ChatGPT4.0簡介 ChatGPT4.0&#xff0c;由OpenAI開發的先進通用聊天機器人模型&#xff0c;基于GPT4技術構建&#xff0c;為用戶提供了自然語言處理等多項任務的解決方案。 ChatGPT4.0使用次數限制 在日常使用過程中&#xff0c;用戶會遇到Chat…

【MIT 6.S081】2020, 實驗記錄(6),Lab: Copy-on-Write Fork

目錄 Task: Implement copy-on writestep 1&#xff1a;對內存塊進行引用計數step 2&#xff1a;uvmcopy 實現 fork 時將 parent 的物理頁映射到 child 中step 3&#xff1a;在 usertrap 中增加對 page fault 的處理執行測試 官方說明&#xff1a;Lab: Copy-on-Write Fork for …

IP地址工具,判斷IP是否在指定范圍內(支持ipv6)

常用方法&#xff0c;判斷一個ip是否在指定的ip范圍內&#xff0c;范圍可能包括起始ip范圍或者掩碼形式&#xff0c;無其它依賴&#xff0c; package com.yk.ip;import java.math.BigInteger; import java.net.InetAddress; import java.net.UnknownHostException; import jav…

操作系統-文件原理

目錄 一、磁盤 1.1 磁盤結構 1. 盤片&#xff1a; 2. 盤面&#xff1a; 3. 磁頭&#xff1a; 4. 磁道&#xff1a; 5. 扇區&#xff1a; 6. 磁道密度和扇區密度&#xff1a; 1.2 磁盤訪問 1. 尋道&#xff08;Seeking&#xff09;&#xff1a; 2. 延遲旋轉&#xff…

C++進階-- map和set

關聯式容器 在前面&#xff0c;我們所學的vector、list、deque&#xff0c;這些都是序列容器&#xff0c;也就是底層為線性序列的數據結構。 而關聯式容器是C標準庫中的一種類別&#xff0c;用于存儲鍵值對&#xff08;key-value pair&#xff09;&#xff0c;關聯式容器中的元…

vxe-table編輯單元格動態插槽slot的使用

業務場景&#xff1a;表格中只有特定某一行的的單元格可以編輯&#xff0c;列很多&#xff0c;為每個列寫個插槽要寫很多重復代碼&#xff0c;所以這里使用動態插槽&#xff0c;簡化代碼量。顯示編輯圖標&#xff0c;點擊編輯圖標隱藏。失去焦點保存調后臺接口。 解決辦法&…

Linux多線程服務端編程:使用muduo C++網絡庫 學習筆記 附錄C 關于Boost的看法

這是作者為電子工業出版社出版的《Boost程序庫完全開發指南》寫的推薦序&#xff0c;此處節選了作者對在C工程項目中使用Boost的看法。 最近一年&#xff08;這篇文章寫于2010年8月&#xff09;作者電話面試了數十位C應聘者。慣用的暖場問題是“工作中使用過STL的哪些組件&…

十行代碼開發一個AI應用

Semantic Kernal 簡介 Semantic Kernel (SK) is a lightweight SDK that lets you easily mix conventional programming languages with the latest in Large Language Model (LLM) AI "prompts" with templating, chaining, and planning capabilities out-of-the-…

關于vue中關于eslint報錯的問題

1 代碼保存的時候會自動將單引號報錯為雙引號 導致eslint報錯的問題&#xff0c; 解決思路&#xff1a; 在項目根目錄下新建一個.prettierrc.json文件 { “tabWidth”: 2,“useTabs”: false,“singleQuote”: true,“semi”: false} 2 關于報錯代碼的時候 出現尾隨逗號報錯…

Zabbix 系統告警“More than 75% used in the configuration cache”處理辦法

Zabbix系統報錯提示 Zabbix 系統告警“More than 75% used in the configuration cache”&#xff0c;看了一下意思是可用的配置緩存超過75%。 修改緩存大小 vim /etc/zabbix/zabbix_server.confesc : /CacheSize 找到配置 將64M改大一點&#xff0c;保存退出。 重啟zabbix…

WPF常用mvvm開源框架介紹 vue的mvvm設計模式鼻祖

WPF&#xff08;Windows Presentation Foundation&#xff09;是一個用于構建桌面應用程序的.NET框架&#xff0c;它支持MVVM&#xff08;Model-View-ViewModel&#xff09;架構模式來分離UI邏輯和業務邏輯。以下是一些常用的WPF MVVM開源框架&#xff1a; Prism Prism是由微軟…