我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
回顧我們在AI說書 - 從0開始 - 41中,提及 Transformer 的 Encoder 架構如下圖所示:
此外我已經在AI說書 - 從0開始 - 42中,闡述 Input Embedding 的作用為:
- 其將 Input Tokens 轉換為維度為 512 的向量
- 而將 Input Sequence 轉換為 Input Tokens 的是 Tokenizer,它有很多種方法,如:Byte Pair Encoding 、 Word Piece 、 Sentence Piece 等等,原始 Transformer 使用的是 Byte Pair Encoding
- 舉一個例子來說明 Tokenizer 做的事情,假如我有一個句子為:「the Transformer is an innovative NLP model !」,那麼經過 Tokenizer 後將得到:'the' 、 'transform' 、 'er'、'is'、'an'、'innovative'、'n'、'l'、'p'、'model'、'!'
再回顧我們在AI說書 - 從0開始 - 45中,闡述 Positional Encoding (PE) 的作用位置圖與公式如下兩圖各別所示,大家看到這個數學一定很害怕,我舉個例子說明:
- 假設我的句子是:「The black cat sat on the couch and the brown dog slept on the rug」,那我要如何產生「black」這個字的 PE 呢,這個字位於第二個字,因此 pos = 2,我現在要產生「black」這個字獨有的 512 元素向量,其為:
元素 0 : sin(2 / 10000^(2 * 0 / 512))
元素 1:cos(2 / 10000^(2 * 0 / 512))
元素 2:sin(2 / 10000^(2 * 1 / 512))
元素 3:cos(2 / 10000^(2 * 1 / 512))
以此類推湊滿 512 個元素