2024-08-14|閱讀時間 ‧ 約 26 分鐘

AI說書 - 從0開始 - 131 | Next Sentence Prediction 訓練

我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。


回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BERT) 的訓練分為兩種,分別為:

  • Masked Language Modeling (MLM)
  • Next Sentence Prediction (NSP)


而我們在 AI說書 - 從0開始 - 130 已經介紹了 Masked Language Modeling (MLM),今天來介紹 Next Sentence Prediction (NSP):


在許多下游的 NLP 任務中,它們都是基於兩個句子的關係進行語意理解,這樣的資訊,語言模型其實並沒有辦法有效擷取,因此作者提出了 NSP 這樣的模型訓練,兩個句子 A、B 作為一筆訓練資料,其中 50% 的訓練資料從語料中連貫的兩句子而得,標籤為 IsNext,另外 50% 則隨機給與兩個不連續的句子,標籤為 NotNext。


並且引入兩個額外的 Token,其目的為:

  • [CLS]:Binary Classification Token 新增到第一個句子 A 的開頭,以預測第二個句子 B 是否位於第一個句子 A 之後,正樣本通常是從資料集中取出的一對連續句子,使用來自不同文件的序列建立負樣本
  • [SEP]:表示句子 A 結束的分隔標記


舉一個 A 和 B 句子的串接為例,假設原始句子為:「The cat slept on the rug. It likes sleeping all day」,那麼引入 [CLS] 和 [SEP] 的標記後,變成:「[CLS] the cat slept on the rug [SEP] it likes sleep ##ing all day [SEP] 」,這裡 ##ing 的符號和 sleep 分離了,主要是因為採用了 WordPiece Tokenization,這樣可以讓 Tokenizer 運作在比較比較小的 Subword 上。


了解 [CLS][SEP] 的用途後,把它和 IsNext 以及 NotNext 合併,例子為:

  • Input = [CLS] the man went to [MASK] store [SEP] he bought a gallon [MASK] milk [SEP] → Label = IsNext
  • Input = [CLS] the man [MASK] to the store [SEP] penguin [MASK] are flight ##less birds [SEP] → Label = NotNext


至於 Input Embedding 的獲得手法為以下三者相加:Token Embedding、Sentence Embedding、Positional Encoding,示意圖如下:

圖片出自書籍:Transformers for Natural Language Processing and Computer Vision, 2024


綜合目前有的素材,整體流程為:

  • 句子被切成 WordPiece Tokens
  • 在 Masked Language Modeling (MLM) 訓練中,[MASK] Token 被隨機置入取代原始文字
  • 在 Next Sentence Prediction (NSP) 訓練中,[CLS] Token 被放置於第一個句子的開頭,以作為 Classification Token
  • 在 Next Sentence Prediction (NSP) 訓練中,[SEP] Token 被放置於第一個句子和第二個句子中間
  • 實現為,將整個輸入序列經過模型,使用模型最後產生的 [CLS] Token,將它傳入一層 Classification Layer 進行矩陣轉換產出維度為 2 × 1 的向量,並且再透過 Softmax 得到 IsNextSequence 的機率




分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.