從GPT-1到GPT-3 預訓練語言模型的演進與突破

本文由 ChatMoney團隊出品

前言

Generative Pre-trained Transformer(GPT)系列是由OpenAI開發的預訓練語言模型,它們在多種NLP任務中取得了令人矚目的成績,包括文章生成、代碼生成、機器翻譯和問答等。GPT系列模型的核心思想是通過無監督學習在大規模語料庫上進行預訓練,再通過少量數據進行微調以適應特定任務。隨著模型容量的增加和訓練數據的擴大,GPT系列模型的能力也在不斷提升。

模型

發布時間

參數量

預訓練數據量

GPT

2018 年 6 月

1.17 億

約 5GB

GPT

2019 年 2 月

15 億

40GB

GPT

2020 年 5 月

1,750 億

45TB

GPT-1:無監督學習與通用預訓練

在GPT-1問世之前,傳統的自然語言處理(NLP)模型主要依賴于有監督學習,這種方法要求大量帶有明確標簽的數據進行任務特定的模型訓練。然而,有監督學習存在兩大局限性:

  1. 數據標注的挑戰:高質量的標注數據往往難以獲取,特別是在一些復雜場景中,如圖像標注或情感分析,數據的標簽可能模糊或不清晰。

  2. 模型泛化能力的局限:通過某一特定任務訓練的模型往往難以直接應用于其他任務,這使得模型更像是“領域專家”而非真正理解NLP的“通才”。

GPT-1打破了這一局限,它采用了一種全新的思路:先通過無標簽數據學習一個通用的語言模型,再根據具體任務進行微調。GPT-1能夠處理的有監督任務包括:

  • 自然語言推理判斷兩個句子之間是否存在蘊含、矛盾或中立關系。

  • 問答與常識推理:類似于多選題,給定文章、問題和多個候選答案,模型需要預測每個答案的概率。

  • 語義相似度判斷:確定兩個句子在語義上是否相關。

  • 文本分類:識別輸入文本的類別歸屬。

這種將無監督學習作為有監督模型預訓練目標的方法,被稱為通用預訓練(Generative Pre-training,GPT)。

GPT-1的訓練過程

GPT-1的訓練分為兩個階段:無監督的預訓練和有監督的微調。

1.1.1 無監督預訓練

GPT-1的無監督預訓練基于語言模型進行。給定一個無標簽的文本序列,模型的優化目標是最大化序列中每個詞的條件概率乘積,即最大化似然值。這一過程中,GPT-1使用了滑動窗口機制,并在每個窗口內計算條件概率。這些參數通過隨機梯度下降(SGD)等優化算法進行更新。

GPT-1的模型結構基于Transformer架構,特別是其中的解碼器部分。它采用了12個Transformer塊堆疊而成,每個塊都包含多頭自注意力機制和全連接層,用于生成輸出概率分布。

通過這種方式,GPT-1能夠在無標簽數據上學習語言的通用表示,為后續的有監督任務微調提供強有力的基礎

1.2 GPT-1的數據集

GPT-1的訓練主要基于BooksCorpus數據集,這是一個包含大量未發布書籍的集合。選擇這個數據集的原因主要有兩點:首先,書籍中的文本通常具有較長的上下文依賴關系,這有助于模型學習長期的依賴模式;其次,由于這些書籍未公開發布,因此在其他NLP數據集中出現的可能性較低,這進一步驗證了GPT-1模型的泛化能力。

1.3 網絡結構的細節

GPT-1采用了基于Transformer的架構,具體包含12層的Transformer解碼器。以下是一些關鍵的網絡結構細節:

  • 掩碼自注意力機制:GPT-1使用了掩碼自注意力頭,確保模型在預測某個詞時不會看到該詞之后的任何信息,這有助于模型學習語言的自然順序。

  • 字節對編碼(BPE):GPT-1使用BPE進行文本編碼,共有固定的字節對數量,這種編碼方式能有效處理罕見的和未見過的詞匯。

  • 詞編碼長度:詞編碼的長度設定為固定的長度,以適應不同長度的詞匯。

  • 位置編碼:GPT-1也學習位置編碼,以捕捉序列中詞的位置信息。

  • Transformer層數與頭數:GPT-1包含12層的Transformer,每個Transformer塊有多個自注意力頭,頭數設定為固定值。

  • 正則化機制:GPT-1使用了包括Attention、殘差連接、Dropout等多種機制進行正則化,以防止過擬合。

  • 激活函數:GPT-1的激活函數為GELU(Gaussian Error Linear Unit),這是一種平滑的ReLU變種,有助于模型更好地學習非線性關系。

  • 訓練參數:GPT-1的訓練參數包括batch size、學習率、序列長度、訓練輪數(epoch)等,這些參數的選擇對模型的性能有重要影響。GPT-1的模型參數數量達到了數十億級別。

1.3.1 無監督訓練

在無監督訓練階段,GPT-1主要關注于最大化給定文本序列的似然值。這通過調整模型的參數,使模型能夠預測序列中每個詞的出現概率來實現。

1.3.2 有監督微調

在有監督微調階段,GPT-1使用無監督訓練得到的模型作為起點,針對特定NLP任務進行微調。這通常涉及調整模型的頂層結構,以適應不同任務的輸出要求。通過微調,GPT-1能夠在保持模型泛化能力的同時,提高在特定任務上的性能。

1.4 GPT-1的性能

GPT-1在多個NLP任務上展示了強大的性能。在有監督學習的12個基準任務中,GPT-1在9個任務上的表現超過了當時的最佳模型。在零次學習(zero-shot)任務中,GPT-1也顯示出較好的穩定性,并且隨著訓練次數的增加,性能逐漸提升。這表明GPT-1具有較強的泛化能力,可以應用于與訓練任務不直接相關的其他NLP任務中。

然而,值得注意的是,GPT-1在未經微調的任務上雖然也有一定的效果,但其性能通常低于經過微調的有監督任務。這說明GPT-1雖然在語言建模方面取得了顯著進展,但仍需要在特定任務上進行微調才能充分發揮其潛力。因此,GPT-1可以被視為一個強大的“領域專家”,但還不是一個通用的語言學家。

GPT-2:多任務學習與更大的模型

GPT-2旨在通過擴展模型容量和采用更大的數據集來訓練一個泛化能力更強的詞向量模型。與GPT-1相比,GPT-2在模型結構上并未進行大的創新,但它在網絡參數和數據集規模上有了顯著的增加。下面我們將對GPT-2進行詳細的介紹。

2.1 GPT-2的核心思想

GPT-2的核心思想是使用無監督的預訓練模型來執行有監督的任務。基于文本數據的時序性,GPT-2將語言建模任務轉化為根據已知上文預測未知下文的條件概率問題。具體來說,一個輸出序列可以表示為一系列條件概率的乘積,這實際上是一個序列生成任務。

GPT-2進一步擴展了這一思想,認為當模型的容量足夠大且數據量足夠豐富時,僅通過訓練語言模型就可以覆蓋大部分有監督學習任務。這是因為有監督學習任務可以看作是無監督語言模型的一個子集。例如,在訓練了包含“Micheal Jordan is the best basketball player in the history”的語料后,模型不僅學會了語言模型,還隱含地學會了回答類似“who is the best basketball player in the history?”的問題。

2.2 GPT-2的數據集

GPT-2采用了名為WebText的數據集,該數據集來源于Reddit上的高贊文章。WebText共包含約800萬篇文章,總數據量約為40GB。為了避免與測試集沖突,WebText移除了與Wikipedia相關的文章。

2.3 模型參數

GPT-2在多個方面對模型參數進行了調整和優化:

  • 字典大小:使用字節對編碼(BPE)構建字典,字典的大小設定為特定值,以適應不同長度的詞匯。

  • 滑動窗口大小:根據模型需要設定滑動窗口的大小,用于捕獲文本中的上下文信息。

  • Batch Size:為了加速訓練和提高模型性能,GPT-2增大了batch size的大小。

  • Layer Normalization:在Transformer塊的輸入部分添加了Layer Normalization,并在每個self-attention之后也添加了一個Layer Normalization,以增強模型的穩定性。

  • 殘差層縮放:GPT-2對殘差層的初始化值進行了縮放,縮放因子與殘差層的個數相關,以改善深層模型的訓練效果。

GPT-2訓練了四組不同層數和詞向量長度的模型,這些模型在多個NLP任務上均取得了顯著的性能提升。實驗結果表明,隨著模型規模的增大,GPT-2的泛化能力和性能也在不斷提升。

參數量

層數

詞向量長度

117M(GPT-1)

12

768

345M

24

1024

762M

36

1280

1542M

48

1600

GPT-3:海量參數與In-context Learning

GPT-3是目前最強大的語言模型之一,它憑借其巨大的參數量、龐大的訓練數據集以及創新的訓練方式,在各種NLP任務上均展現出了出色的性能。無需大量有標簽的訓練數據,GPT-3僅需零次或少數幾次學習即可在下游任務中取得優異的表現。

3.1 In-context Learning

GPT-3的出色性能在很大程度上歸功于其采用的In-context Learning方法。為了理解In-context Learning,我們先來探討一下元學習(Meta-learning)的概念。元學習的核心思想是通過學習如何學習,來找到一種有效的學習策略或初始化參數,使得模型能夠在新的、未見過的任務上快速適應并取得良好的性能。

In-context Learning是元學習思想的一種具體實現,它允許模型在給定一些示例的情況下,直接通過這些示例來學習并完成任務,而無需顯式地更新模型參數。在GPT-3中,這種學習方式被應用于各種NLP任務中。具體來說,當給定一個新的任務時,我們可以向GPT-3提供少量的示例輸入和對應的輸出(即“上下文”),然后讓GPT-3根據這些示例來推斷并生成針對新輸入的輸出。通過這種方式,GPT-3能夠在不依賴大量有標簽訓練數據的情況下,快速適應并完成各種NLP任務。

GPT-3的In-context Learning能力得益于其巨大的參數量和訓練數據集。通過在大規模無監督文本數據上進行預訓練,GPT-3已經學習到了豐富的語言知識和模式。這使得它能夠在給定少量示例的情況下,快速理解并應用這些知識來完成新任務。同時,GPT-3的巨大參數量也使其具備了強大的表征能力,能夠捕捉并表達復雜的語言現象和語義關系。

除了In-context Learning外,GPT-3還采用了多種先進的技術和策略來提高其性能和泛化能力。例如,GPT-3采用了Transformer架構的變體,并引入了稀疏自注意力機制來降低計算復雜度。此外,GPT-3還使用了混合精度訓練、數據并行等技術來加速訓練過程并減少資源消耗。這些技術和策略共同使得GPT-3成為了一個強大而高效的語言模型。

總結

GPT系列模型的發展歷程展示了預訓練語言模型的強大潛力和廣闊前景。隨著模型容量的不斷增加和訓練數據的不斷擴大,我們可以期待未來會有更加強大和智能的NLP模型出現。

關于我們

本文由ChatMoney團隊出品,ChatMoney專注于AI應用落地與變現,我們提供全套、持續更新的AI源碼系統與可執行的變現方案,致力于幫助更多人利用AI來變現,歡迎進入ChatMoney獲取更多AI變現方案!

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

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

相關文章

數據庫開發:mysql基礎一

文章目錄 數據庫開發Day15:MySQL基礎(一)一、MySQL介紹與安裝【1】MySQL介紹(5)啟動MySQL服務(6)修改root登陸密碼 二、SQL簡介三、數據庫操作四、數據表操作4.1、數據庫數據類型4.2、創建數據表…

對標 GPT-4o 的開源實時語音多模態模型:Moshi

是由法國的 AI 實驗室 Kyutai 推出的實時語音多模態模型,支持聽、說、看,最關鍵的是你現在就可以在瀏覽器中使用,如果這個鏈接延遲高,可以試試這個, 無需輸入郵箱,點擊 Join queue 即可。 簡單體驗了下,比…

#### golang中【堆】的使用及底層 ####

聲明,本文部分內容摘自: Go: 深入理解堆實現及應用-騰訊云開發者社區-騰訊云 數組實現堆 | WXue 堆(Heap)是實現優先隊列的數據結構,Go提供了接口和方法來操作堆。 應用 package mainimport ("container/heap&q…

結構方程模型-驗證性因子分析模型

初級 第7講 驗證性因子分析模_嗶哩嗶哩_bilibili

使用 ESP32 接收來自 MAX4466 模擬麥克風模塊的數據,并通過 DAC 輸出模擬音頻信號,可以通過以下步驟實現:

硬件準備 ESP32 開發板MAX4466 模擬麥克風模塊揚聲器或耳機接線 MAX4466 模塊輸出(AO) -> ESP32 ADC 引腳(如 GPIO 34)ESP32 DAC 引腳(如 GPIO 25 或 GPIO 26) -> 揚聲器或耳機軟件準備 音頻采集DAC 轉碼并播放代碼實現 以下代碼展示了如何從 MAX4466 讀取模擬音頻…

【Go語言入門學習筆記】Part7.閉包和defer關鍵字

一、前言 閉包有點像對象,而defer適合于類似功能中利用資源時,提前寫幾句defer 釋放資源,防止后面釋放資源忘記寫釋放資源。 二、學習代碼 package mainimport ("fmt" )// getC的返回值是一個函數,需要的參數為空&…

GitHub Pull Request流程詳解

GitHub Pull Request流程詳解 在協作開發中,GitHub的Pull Request(PR)功能至關重要,它允許開發者在代碼庫中進行修改、審查和合并代碼。本文將詳細介紹GitHub Pull Request的完整流程,幫助你更好地理解和使用這一強大…

網絡安全的十字路口:向“架構化”轉移

市場條件正在快速變化 針對上述這些問題,在這段時間里,安全技術供應商推出了許多技術解決方案,比如SIEM、SOAR、XDR、UEBA等,但新產品的推出并未使得安全態勢有所好轉,許多問題依然存在,這導致了市場動態的…

【DevOps】Java內存分配與JVM參數詳解

目錄 引言 JVM內存結構 JVM參數概述 堆內存分配 年輕代與老年代 調整堆內存大小 調整年輕代與老年代比例 元空間分配 調整元空間大小 垃圾回收 調整GC參數 調整GC日志 線程棧分配 調整線程棧大小 性能調優 結論 在Java開發中,理解Java虛擬機&#x…

claude3.5寫作——《基于灰色預測的中國人口數量預測》

文章目錄 站點和提問引言一、灰色預測模型介紹二、中國歷年人口數據三、灰色預測模型的建立1.建立原始序列2.生成1-AGO序列3.計算背景值4.構造數據矩陣并計算參數5.模型檢驗6.模型預測 四、預測結果分析五、政策建議結語參考文獻 站點和提問 站點:中國官方克勞德3.…

如何更改 Python pip 源為國內源

在使用 Python 安裝包工具 pip 時,經常會遇到下載速度慢的問題。這通常是因為默認使用的官方源 https://pypi.org/simple 在國內訪問速度較慢。為了提高下載速度,我們可以將 pip 源更改為國內的鏡像源。本文將介紹如何臨時和永久地更改 pip 源為國內源。…

光伏電站數據采集方案(基于工業路由器部署)

? 一、方案概述 本方案采用星創易聯SR500工業路由器作為核心網關設備,實現對光伏電站現場數據的實時采集、安全傳輸和遠程監控。SR500具備多接口、多功能、高可靠性等特點,能夠滿足光伏電站數據采集的各種需求。(key-iot.com/iotlist/sr500…

RK3568平臺(opencv篇)ubuntu18.04上安裝opencv環境

一.什么是 OpenCV-Python OpenCV-Python 是一個 Python 綁定庫,旨在解決計算機視覺問題。 ? Python 是一種由 Guido van Rossum 開發的通用編程語言,它很快就變得非常流行,主要是 因為它的簡單性和代碼可讀性。它使程序員能夠用更少的代碼行…

C++ 運算符的優先級和關聯性表

C 運算符的優先級和關聯性表 1. Precedence and associativity (優先級和結合性)2. Alternative spellings (替代拼寫)3. C operator precedence and associativity table (C 運算符的優先級和關聯性表)References C documentation (C 文檔) https://learn.microsoft.com/en-us…

網絡IO模型之多路復用器.md

多路復用是什么?怎么理解? 本文主要涉及為 程序中處理網絡IO時的模型,對于系統內核而言網絡IO模型。這里只做普及使用 前置知識,什么是IO?怎么理解IO IO其實就是In和Out。中文翻譯是輸入和輸出,只要涉及到輸…

clone()方法

在Java中,clone() 方法是一個非常有趣且強大的工具,用于創建對象的一個副本。這個方法位于 Object 類中,因此可以被所有類使用。讓我們討論一下它的幾個要點: 什么是克隆? 克隆就是創建一個對象的新副本,這…

2005-2022全國及各省家庭承包耕地流轉總面積及經營耕地面積數據(無缺失)

2005-2022全國及各省家庭承包耕地流轉總面積及經營耕地面積數據(無缺失) 1、時間:2005-2022年 2、范圍:全國及30省 3、指標:家庭承包耕地流轉總面積、家庭承包經營耕地面積、土地流轉率、 4、來源:農村…

《web應用技術》第十一次課后作業

驗證過濾器進行權限驗證的原理。 創建Filter: package com.example.filter;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException;WebFilter(urlPatterns "/*") public class DemoFilter implements Filter …

【3維BFS】個人練習-Leetcode-LCP 79. 提取咒文

題目鏈接:https://leetcode.cn/problems/kjpLFZ/ 題目大意:給一個矩陣matrix[][],元素為小寫英文字母。給一個字符串mantra,求從矩陣的(0,0)位置開始,可以移動(上下左右)或者提取字母&#xff…

怎么搭建個人博客教程,附云主機選購指南

一、搭建個人博客教程 1. 規劃博客內容與技術棧 確定博客主題:首先明確博客的定位和主題,這將影響后續的技術選擇和內容規劃。選擇技術棧:根據個人偏好和技術背景,選擇合適的建站技術。例如,可以使用WordPress&#…