從簡單的RNN到復雜的LSTM/GRU,再到引入注意力機制,研究者們一直在努力解決序列建模的核心問題。每一步的進展都為下一步的突破奠定了基礎,最終孕育出了革命性的Transformer架構和GPT大模型。
1. 從n-gram到循環神經網絡(RNN)的誕生
1.1 N-gram 模型
在深度學習興起之前,處理序列數據主要依靠統計方法,如n-gram模型。
N-gram 是一種基于統計的語言模型,它的核心思想是:一個詞出現的概率只與它前面的 n-1 個詞有關。
舉個例子,假設我們有一個句子:“我喜歡吃蘋果”
- 1-gram (unigram): 只考慮單個詞的概率,如 P(蘋果)
- 2-gram (bigram): 考慮相鄰兩個詞,如 P(蘋果|吃)
- 3-gram (trigram): 考慮相鄰三個詞,如 P(蘋果|喜歡吃)
n-gram 模型的工作原理:
- 統計訓練語料中各種 n-gram 組合出現的次數
- 根據統計結果計算條件概率
- 預測時,使用這些概率來估計下一個詞或整個句子的可能性
優點:
- 簡單直觀,計算效率高
- 在一些簡單任務中效果不錯
缺點:
- 無法捕捉長距離依賴
- 數據稀疏問題:n 越大,出現未見過的組合的概率就越高
- 沒有語義理解,純粹基于統計
1.2 循環神經網絡 (RNN)
RNN 是一種能夠處理序列數據的神經網絡,它的核心思想是在處理序列的每一步都保持一個"內部狀態"。
想象 RNN 是一個處理信息的工人:
- 他有一個記事本(隱藏狀態),記錄了之前看到的重要信息
- 每次他接收新信息時,都會結合記事本上的內容來理解
- 然后他會更新記事本,并給出一個響應
- 這個過程不斷重復,直到處理完整個序列
優點:
- 能夠處理變長序列
- 理論上可以捕捉長距離依賴
- 參數共享,模型更緊湊
缺點:
- 實際中難以學習很長的依賴關系(梯度消失/爆炸問題)
- 計算是順序的,難以并行化
1.3 n-gram到RNN的進化
- n-gram 是一種"死記硬背"的方法,它只能記住固定長度的詞組
- RNN 更像是"理解"了語言,它可以靈活地處理不同長度的輸入,并嘗試捕捉更長距離的關系
n-gram 模型簡單高效,但缺乏靈活性和對長距離依賴的理解。RNN 引入了"記憶"的概念,使模型能夠更好地處理序列數據,但也帶來了新的挑戰。
這兩種方法代表了自然語言處理從純統計方法到神經網絡方法的演進,為后續的深度學習模型(如 LSTM、Transformer 等)鋪平了道路。
2. 從RNN到LSTM/GRU
2.1 RNN的問題
簡單的RNN存在嚴重的問題:
a) 梯度消失/爆炸
想象一下,你在玩傳話游戲。如果鏈條很長:
- 梯度消失就像每個人都小聲說話,到最后幾乎聽不見了
- 梯度爆炸就像每個人都大聲喊叫,到最后變成了刺耳的噪音
在RNN中,這個問題體現為:
- 長序列中,早期信息對后期的影響會變得極小(消失)或極大(爆炸)
- 這使得網絡難以學習長期依賴關系
b) 長期依賴難以捕捉
RNN理論上可以記住長序列的信息,但實際上:
- 新信息不斷覆蓋舊信息
- 久遠的信息很容易被"遺忘"
這就像你試圖記住一本長篇小說的所有細節,但到最后可能只記得最近看的幾章。
2.2 LSTM (長短期記憶網絡)
LSTM通過引入"門"機制來解決上述問題。想象LSTM是一個更智能的記事本系統:
a) 結構
LSTM有三個門:
- 遺忘門: 決定丟棄哪些信息
- 輸入門: 決定存儲哪些新信息
- 輸出門: 決定輸出哪些信息
還有一個單元狀態(cell state),作為長期記憶。
b) 工作原理
- 遺忘門決定從單元狀態中刪除什么信息
- 輸入門決定向單元狀態添加什么新信息
- 更新單元狀態
- 輸出門決定基于單元狀態輸出什么
c) 如何解決RNN的問題
- 長期記憶: 單元狀態可以長期保存重要信息,不易被新信息覆蓋
- 梯度流動: 門機制允許梯度更容易地流過網絡,緩解梯度消失/爆炸問題
2.3 GRU (門控循環單元)
GRU是LSTM的簡化版本,性能相當但計算更高效。
a) 結構
GRU只有兩個門:
- 更新門: 決定保留多少舊信息和添加多少新信息
- 重置門: 決定忽略多少過去的信息
b) 工作原理
- 更新門決定保留多少過去的信息和加入多少新信息
- 重置門幫助決定如何將新輸入與先前的記憶組合
- 計算候選隱藏狀態
- 最終更新隱藏狀態
c) 與LSTM的比較
- 簡化結構: 沒有單獨的單元狀態,直接更新隱藏狀態
- fewer參數: 計算更高效
- 性能: 在許多任務上與LSTM相當
比喻理解:
- 如果說簡單RNN是一個只會機械記錄的秘書
- 那么LSTM就像一個有條理的管理者,懂得取舍、分類和整理信息
- 而GRU則像一個精簡版的管理者,用更少的步驟完成類似的工作
3. 從注意力機制到Transformer的演變
3.1 注意力機制的引入
在注意力機制被引入之前,序列到序列(Seq2Seq)模型通常采用編碼器-解碼器結構:
- 編碼器讀取整個輸入序列,將其壓縮成一個固定長度的向量
- 解碼器基于這個向量生成輸出序列
這種方法的問題是:
- 信息瓶頸: 所有信息都被壓縮到一個固定長度的向量中
- 長序列困難: 對于很長的序列,難以保留所有重要信息
**注意力機制的核心思想: **
注意力機制的本質是"從關注全部到關注重點"。就像人類在閱讀長文本時會自然地聚焦于關鍵信息一樣,注意力機制使得機器學習模型能夠在處理大量輸入數據時,將計算資源更多地分配給重要的部分。
- 人類認知過程的啟發
想象你正在翻譯一本書:
- 你不會先讀完整本書,把所有內容記在腦子里,然后開始翻譯
- 相反,你會一邊讀一邊譯,每翻譯一個詞或一個句子時,你都會回看原文的相關部分
這就是注意力機制的靈感來源。它模仿了人類處理復雜信息的方式:有選擇性地關注最相關的部分。
- 權重分配
注意力機制通過分配"權重"來決定關注度:
- 相關性高的部分獲得更高的權重
- 相關性低的部分獲得更低的權重
這就像你在閱讀時,重要的內容你會多看幾眼,不重要的則可能略過。
- 突破長度限制
注意力機制有效地解決了處理長序列的問題:
- 不再受固定長度向量的限制
- 理論上可以處理任意長度的輸入
- 長距離依賴可以直接建立,而不需要通過多個時間步傳遞
3.2 查詢-鍵-值(Query-Key-Value)機制
QKV機制是實現注意力的一種具體方法。這里的Q代表Query(查詢),K代表Key(鍵),V代表Value(值)。
在這個機制中,模型會計算Query和每個Key之間的相似度,然后用這些相似度作為權重來對Value進行加權求和。這樣,與Query更相關的內容就會得到更多的"注意力"。
想象你在一個大型圖書館里:
-
查詢(Query)就像你腦海中的問題或需求。比如,“我想了解人工智能”。
-
鍵(Key)就像每本書的標題或目錄。它們是書籍內容的簡要概括。
-
值(Value)就是書籍的實際內容。
現在,注意力機制的工作方式是:
-
你帶著你的問題(Query)在圖書館里走動。
-
你快速瀏覽每本書的標題和目錄(Key),看看哪些可能與你的問題相關。
-
對于看起來相關的書,你會多花些時間翻閱其內容(Value)。
-
最后,你綜合了所有相關書籍的信息,形成了對你問題的答案。
在這個過程中:
-
"注意力"體現在你對不同書籍投入的時間和精力不同。與你問題相關度高的書,你會更加關注。
-
Query和Key的匹配度決定了你對某本書的關注程度。
-
Value是你最終獲取的信息。
在機器學習中:
-
系統計算Query和每個Key的相似度。
-
用這些相似度作為權重,對所有Value進行加權求和。
-
得到的結果就是系統"關注"后的輸出。
這種機制允許模型動態地決定要關注輸入的哪些部分,從而更好地處理序列數據(如文本或時間序列)。
總的來說,Query-Key-Value機制是實現注意力的一種聰明方法,它模仿了人類有選擇性地關注信息的過程。
3.3 自注意力(Self-Attention)的提出
自注意力(Self-Attention)是注意力機制的一種特殊形式,它允許輸入序列中的每個元素都能和序列中的其他元素進行交互。
想象一群人在開會討論問題。每個人發言時,都會根據之前其他人說的內容來調整自己的發言。這就像自注意力的工作方式。
簡單來說:
- 注意力機制主要用于處理輸入和輸出序列之間的依賴關系。
- 自注意力機制則專注于處理序列內部的依賴關系。
讓我們深入了解它們的區別:
-
應用場景:
- 注意力機制通常在編碼器-解碼器結構中使用,作為連接兩者的橋梁。例如,在機器翻譯任務中,它幫助模型在生成目標語言時關注源語言的相關部分。
- 自注意力機制可以在同一個模型中多次使用,是網絡結構的一個組成部分。它在處理長序列時特別有效,如長文本理解或圖像處理。
-
工作原理:
- 注意力機制計算輸入序列和輸出序列之間的相關性,為輸入的不同部分分配不同的權重。
- 自注意力機制計算序列內部各元素之間的相關性,允許每個元素與序列中的所有其他元素進行交互。
-
信息處理方式:
- 注意力機制像人類大腦一樣,在面對大量信息時,能夠篩選出最重要的部分進行處理。
- 自注意力機制更像是序列中的每個元素都在相互"交談",互相理解彼此的重要性。
-
計算復雜度:
- 注意力機制的計算復雜度通常較低,因為它只在編碼器和解碼器之間進行一次計算。
- 自注意力機制的計算復雜度較高,因為它需要計算序列中每個元素與其他所有元素的關系。
-
靈活性:
- 自注意力機制比傳統的注意力機制更加靈活,能夠捕捉到更復雜的序列內部依賴關系。
自注意力的一個典型應用是Transformer模型,它完全基于自注意力機制,在多個NLP任務上都取得了優秀的效果。
3.4 多頭自注意力
多頭自注意力機制是自注意力的一個擴展,它允許模型同時從不同的角度來關注信息。
想象你在看一部復雜的電影。你可能會同時關注多個方面:人物的表情、對話的內容、場景的布置等。多頭自注意力就是讓模型也能夠同時從多個角度來"看"輸入數據。
可以把自注意力機制比作一個高效的會議:
- 每個與會者(輸入元素)都有機會發言(Query)。
- 其他人根據自己的專業(Key)來決定是否應該仔細聽(給予高的注意力分數)。
- 最后,每個人根據聽到的內容(加權的Value)來更新自己的觀點。
多頭自注意力則像是同時進行多場平行的小組討論
- 每個小組關注不同的主題
- 最后匯總所有小組的成果
3.5 Transformer在自注意力基礎上的創新
- 整體架構
Transformer由編碼器(Encoder)和解碼器(Decoder)兩部分組成,類似于傳統的序列到序列(Seq2Seq)模型。但不同的是,Transformer不使用循環神經網絡(RNN),而是完全基于注意力機制。
可以將Transformer比作一個高效的翻譯團隊:
- 編碼器團隊先仔細閱讀并理解源文本,每個成員(層)都會反復審視文本,相互交流(自注意力),形成深入理解。
- 解碼器團隊負責翻譯,他們一邊參考編碼器團隊的理解(編碼器-解碼器注意力),一邊討論已翻譯的部分(掩碼自注意力),逐步產出翻譯。
Transformer在自注意力的基礎上引入了幾個重要創新:
a) 多頭注意力(Multi-Head Attention)
- 原理:同時從多個角度理解信息
- 比喻:像是多個專家同時分析同一問題,每個專家關注不同的方面
b) 位置編碼(Positional Encoding)
- 原理:由于沒有使用RNN,Transformer需要額外的位置信息。位置編碼會被加到詞嵌入上,以表示詞在序列中的位置。
- 比喻:給圓桌會議的每個參與者一個編號,讓大家知道誰在哪個位置說話
c) 前饋神經網絡(Feed-Forward Neural Network)
- 原理:在注意力層后增加非線性變換
- 比喻:像是在每輪討論后,給每個參與者一些時間來獨立思考和總結
5. 從Transformer到GPT
5.1 Transformer作為基礎
Transformer就像是一個革命性的語言處理引擎,它有幾個關鍵特點:
a) 強大的特征提取能力
Transformer能夠捕捉語言中的復雜模式和長距離關系。
比喻:想象Transformer是一個超級閱讀專家,它不僅能理解每個句子,還能輕松地連接文章開頭和結尾的信息。
b) 并行處理能力
Transformer可以同時處理輸入的多個部分。
比喻:這就像是有多個人同時閱讀一本書的不同章節,然后快速交換信息,大大提高了閱讀效率。
c) 靈活的架構設計
Transformer可以根據需要調整和擴展。
比喻:它就像一套高級樂高積木,可以根據不同任務搭建成各種形狀。
d) 自監督學習的"游樂場"
Transformer特別適合進行自監督學習。
比喻:想象Transformer是一個智能游樂場,語言就是游戲。模型在這個游樂場中玩各種語言游戲(如猜詞、續寫故事),通過玩耍自然而然地學會了語言規律。
5.2 預訓練的興起
預訓練的核心思想是讓模型在大量數據上學習通用知識,然后再針對特定任務進行調整。這個過程有幾個關鍵點:
a) 通用知識學習
模型在大規模、多樣化的數據上學習。
比喻:這就像讓一個學生在進入大學之前,先在一個巨大的圖書館中自由閱讀各種書籍,建立廣泛的知識基礎。
b) 無監督學習
預訓練通常不需要人工標注的數據。
比喻:這就像學生自主閱讀,不需要老師時刻在旁指導。
c) 遷移學習
預訓練獲得的知識可以應用到多個具體任務中。
比喻:就像一個精通多國語言的人,可以很快適應不同國家的生活。
d) 微調過程
預訓練后,模型可以針對特定任務進行小規模調整。
比喻:這就像一個全能運動員,在掌握了基本體能后,可以快速適應不同的運動項目。
5.3 Transformer和預訓練的結合
Transformer和預訓練的結合,創造了一個強大的AI語言處理系統:
- Transformer提供了高效學習和處理語言的"大腦"
- 預訓練提供了獲取廣泛知識的方法
比喻:這就像給了AI一個超級大腦(Transformer)和一個無限的圖書館(大規模數據),讓它能夠自主學習,快速成長,并適應各種語言任務。
這種結合極大地推動了NLP的發展:
- 模型可以理解更復雜的語言現象
- 可以更好地處理新的、未見過的任務
- 大大減少了對標注數據的需求
比喻:這就像培養出了一個博學多才的語言天才,它不僅知識淵博,而且學習能力超強,可以快速適應各種新的語言挑戰。
Transformer和預訓練的結合,就像是給了AI一個強大的學習系統和豐富的學習資源。這使得AI在語言處理方面有了質的飛躍,能夠更好地理解和生成人類語言,為各種NLP應用打開了新的可能性。
- 隨著預訓練模型參數的增加,性能呈現出驚人的提升。
- 這些大模型展現出了驚人的多任務處理能力。
- 當模型達到一定規模時,會出現一些意想不到的能力。
5.4 從Transformer到GPT
GPT 是 Transformer 架構的一個特定實現和應用,核心思想是利用大規模無標注文本數據進行預訓練,然后在特定任務上進行微調。
- GPT專注于生成任務,是一個自回歸語言模型: 預測序列中的下一個詞
- GPT 只使用了 Transformer 的解碼器部分。
- GPT 采用了 Transformer 的核心機制,如自注意力、多頭注意力等,并使用因果掩碼(causal mask),確保只看到過去的信息
- GPT 開啟了大規模預訓練 + 微調的范式,通過大規模預訓練和任務特定微調,擴展了 Transformer 的應用范圍。
GPT工作流程:
-
預訓練階段:
- 在大規模文本語料上訓練,學習預測下一個詞
- 模型學到語言的一般知識和模式
-
微調階段:
- 在特定任務的數據上進行微調
- 調整模型以適應特定任務(如問答、摘要等)
-
推理階段:
- 給定提示(prompt),模型逐詞生成后續內容
- 每次生成一個詞,將其加入序列,繼續預測下一個詞
GPT 已經經歷了多個版本的演進:
- GPT-1:首次引入 GPT 架構。
- GPT-2:增加了模型規模,展示了強大的零樣本學習能力。
- GPT-3:進一步擴大規模,展示了驚人的少樣本學習能力。
- GPT-4:最新版本,具有更強的理解和生成能力。
參考
從感知機到Transformer,一文概述深度學習簡史:https://www.jiqizhixin.com/articles/2022-05-24-6
圖解NLP模型發展:從RNN到Transformer: https://developer.aliyun.com/article/1229038