我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BERT) 的訓練分為兩種,分別為:
而我們在 AI說書 - 從0開始 - 130 已經介紹了 Masked Language Modeling (MLM),今天來介紹 Next Sentence Prediction (NSP):
在許多下游的 NLP 任務中,它們都是基於兩個句子的關係進行語意理解,這樣的資訊,語言模型其實並沒有辦法有效擷取,因此作者提出了 NSP 這樣的模型訓練,兩個句子 A、B 作為一筆訓練資料,其中 50% 的訓練資料從語料中連貫的兩句子而得,標籤為 IsNext,另外 50% 則隨機給與兩個不連續的句子,標籤為 NotNext。
並且引入兩個額外的 Token,其目的為:
舉一個 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 Embedding 的獲得手法為以下三者相加:Token Embedding、Sentence Embedding、Positional Encoding,示意圖如下:
綜合目前有的素材,整體流程為: