? ? ? ? 大規模語言模型的發展歷程雖然只有短短不到五年的時間,但是發展速度相當驚人,國內外有超過百種大模型相繼發布。中國人民大學趙鑫教授團隊在文獻按照時間線給出 2019 年至 2023 年比較有影響力并且模型參數量超過 100 億的大規模語言模型。大規模語言模型的發展可以粗略的分為如下三個階段:基礎模型、能力探索、突破發展。
? ? ? ?大語言模型構建通常包含以下四個主要階段:預訓練、有監督微調、獎勵建模和強化學習,簡要介紹各階段使用的算法、數據、難點以及實踐經驗。
- 預訓練
? ? ? ?預訓練階段是大規模語言模型訓練的關鍵步驟之一,特別是對于GPT(Generative Pre-training Transformer)系列模型而言。在預訓練階段,模型通過自我監督學習(Self-supervised Learning)的方式,利用海量無標簽的互聯網文本數據集進行訓練。具體來說,GPT模型采用了自回歸語言模型的形式,其核心任務是根據給定的文本序列預測下一個可能出現的單詞。
? ? ? ?模型通過Transformer架構的多層自注意力機制學習到文本序列中詞匯之間的深層上下文依賴關系。在訓練過程中,模型試圖最小化預測下一個單詞的交叉熵損失,從而逐步建立起對自然語言規律的深刻理解,其中包括詞匯搭配、語法結構、短語和句子的意義等。
? ? ? ?通過預訓練,模型能夠在大規模無標注數據上習得通用的語言表示,這些表示可以被進一步應用于多種不同的自然語言處理任務中,只需要在預訓練模型的基礎上進行微調,就可以在特定任務上達到相當出色的性能。這極大地降低了對大量有標注數據的依賴,并為多種下游任務提供了強有力的模型基礎。
- 有監督微調階段
? ? ? ?有監督微調是預訓練模型適應特定任務的關鍵步驟。在完成了大規模無標注數據上的預訓練后,模型已經學習到了豐富的語言結構和模式。然而,為了針對性地解決特定的自然語言處理任務(如問答系統、文本分類、機器翻譯等),我們需要對預訓練模型進行微調(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 所使用的大規模語言模型構建流程主要包含四個階段:預訓練、有監督微調、獎勵建模、強化學習。這四個階段都需要不同規模數據集合、不同類型的算法,產出不同類型的模型,所需要的資源也有非常大的差別。
以下是每個階段的詳細描述:
-
預訓練 (Pre-training):
- 數據集: 預訓練階段通常使用大規模無標注文本數據集,例如Wikipedia、Common Crawl、BookCorpus等。這些數據集包含了海量未標記的自然語言文本,用于訓練模型捕捉語言的基本規律和結構。
- 算法: 常見的預訓練算法包括自注意力機制為基礎的Transformer架構下的BERT(Bidirectional Encoder Representations from Transformers)、GPT(Generative Pre-training Transformer)系列模型等。這些模型首先通過掩碼語言模型(MLM)或自回歸語言模型(ARLM)任務進行預訓練,使模型學習通用的語言表示。
- 模型: 輸出的是一個通用的語言模型,如BERT、GPT-3等,它們能生成或預測缺失的詞匯,形成對語言深層次理解的基礎模型。
- 資源: 預訓練需要巨大的計算資源,包括GPU集群和大量的存儲空間,訓練時間也可能長達數周甚至數月。
-
有監督微調 (Supervised Fine-tuning):
- 數據集: 微調階段使用的是帶有標簽的小規模或者特定領域的數據集,如GLUE、SuperGLUE、SQuAD等基準測試任務的數據集,涵蓋文本分類、問答、語義相似度等多種任務類型。
- 算法: 在預訓練模型的基礎上,通過調整模型權重并對特定任務進行有監督訓練,例如添加額外的分類層,然后針對具體任務目標優化模型參數。
- 模型: 經過微調后的模型具有針對性,能夠解決具體的下游任務,如情感分析模型、命名實體識別模型等。
- 資源: 雖然相比預訓練所需資源較少,但仍需要一定量的GPU資源來進行快速有效的訓練,同時對于某些復雜任務可能需要較長的訓練時間。
-
獎勵建模 (Reward Modeling):
- 數據集: 這個階段的數據集是由人類評估員給出的評價或獎勵信號構成,反映模型在某個任務上的表現好壞。
- 算法: 獎勵建模常用于強化學習框架中,通過模仿學習或RLHF(Reinforcement Learning from Human Feedback)等方法,將來自人類反饋的獎勵信號轉化為模型更新的信號。
- 模型: 通過這種方式微調的模型能夠在遵循人類價值觀的前提下提高決策質量和輸出質量,如ChatGPT中的安全性和有用性就通過獎勵建模得以增強。
- 資源: 同樣需要GPU資源進行訓練,另外還需要人力投入收集和整理高質量的人類反饋數據。
-
強化學習 (Reinforcement Learning):
- 數據集: 強化學習環境可以是模擬環境產生的數據,也可以是實際操作過程中的實時反饋數據,模型通過與環境互動獲得經驗樣本。
- 算法: Q-learning、Policy Gradient、Actor-Critic等算法被用來訓練模型如何在給定環境中采取最優行動以最大化累積獎勵。
- 模型: 強化學習訓練出的模型可以直接應用于游戲、機器人導航、對話系統等場景,模型具備動態適應環境變化的能力。
- 資源: 強化學習訓練過程中往往需要大量的嘗試和探索,因此需要大量計算資源,尤其是對于復雜環境和高維動作空間的任務。此外,構建模擬環境或獲取真實世界的即時反饋也是一項重要資源投入。