# 李宏毅_生成式導論 2024_第10講:今日的語言模型是如何做文字接龍的 — 淺談Transformer (已經熟悉 Transformer 的同學可略過本講) ###### tags: `Hung-yi Lee` `NTU` `生成式導論 2024` [課程撥放清單](https://www.youtube.com/watch?v=AVIKFXLCPY8&list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI) ## 第10講:今日的語言模型是如何做文字接龍的 — 淺談Transformer (已經熟悉 Transformer 的同學可略過本講 [課程連結](https://www.youtube.com/watch?v=uhNsUCb2fJI&list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI&index=11) ### 前言  課程中已經提過,目前的大型語言模型就是在做文字接龍,所以楊立崑氣噗噗(這我加的)。簡單的概念就是從大量語言資料中學習參數。背後的學習方式就是利用類神經網路中的Tasnformer。 ### 模型演進  這是語言模型的演進史,並且今天講的Transformer是簡化版的,詳細的部份可以參考上面的課程連結。 ### Transformer概述  上圖簡要的說明整個input到output的過程。總之重點在於3、4加起來就是一個Transformer Block。 ### 1. 把文字變成Token  [參考連結_Byte-Pair Encoding tokenization](https://huggingface.co/learn/nlp-course/chapter6/5) 基本上語言的處理第一步就是將之轉為token,這是最基本的單位,這個處理的根據我們對模型的需求所設置的token list來轉換。 以上圖為例,introduction of generative ai經過處理之後變成int, roduction, of, gener, ative, ai。 以中文來說通常是以一個『方塊字』來做為一個token。 token也可以利用演算法來取得,課程給出BPE演算法參考連結,簡單說就是參考大量資料,然後從中看那些英文或是符號是常常一起出現的,如果有,那它就是一個token。 以generative為例,就是因為generative不常一起出現,而gener、ative很常一起出現,所以就被拆成兩個token。 ### 1. 把文字變成Token  [參考連結_Learn about language model tokenization](https://platform.openai.com/tokenizer) 參考連結是openai的網站,可以在上面看你的input會被轉成幾個token,從中你也可以理解它是怎麼分割的。 ### 2. 理解每個Token - 語意  文字轉為token之後會再經過Embedding轉成向量,類似語意的token在空間中的距離會是相近的。以上面簡報為例,動物、值物跟動詞各自形成一個集群。 ### 2. 理解每個Token - 語意  這些token對應的向量就是經過訓練得到,也就是課程中提到的參數,不需要人去處理,有個重點,這種embedding是沒有考慮上下文的。 ### 2. 理解每個Token - 位置  token所代表的語意部份由embedding中取得,但我們還需要考慮其位置,不同的位置可能代表著不同的意函。所以我們把位置的資訊帶入跟語意的資訊做相加。 這個位置資訊又稱為Positional Embedding,可以是人為設置的,也可以是學習得到的,不過至少在Tranformer中是人為設置的。 ### 3. Attention: 考慮上下文  以上圖為例,在word embedding的情況下,果就是果,它是一樣的,但是在考慮上下文之後,這兩個果就會因為attention而有不一樣的意思,這樣的作法又稱為Contextualized。 ### 3. Attention: 考慮上下文  [參考論文_Attention Is All You Need](https://arxiv.org/abs/1706.03762) [Attention Is All You Need(繁中翻譯)](https://hackmd.io/@shaoeChen/BkxGXkS96) ### 3. Attention: 考慮上下文  這邊說明attention做的事情: 1. 首先是先計算token之間的相關性 ### 3. Attention: 考慮上下文  2. 接著是集成相關資訊 這邊是一個非常簡化的說明,更清楚的部份可參考過去的課程。 ### 3. Attention: 考慮上下文  這些token的相關性整合起來就是一個attention matrix。 ### 3. Attention: 考慮上下文  實作上我們只會考慮token位置之前的資訊,上圖為例,第3個token就只會考慮第1、2個token。這又稱為Causal Attention,後續還會再做說明。 ### 3. Attention: Multi-head Attention  一般來說我們會有多個注意力模組來做關聯性的計算,這又稱為Multi-head Attention。 ### 3. Attention: Multi-head Attention  一樣的會對多組注意力機制來做加權。 ### 3. Attention: Multi-head Attention  在經過多組注意力機制的計算之後,最終經過Feed Forward得到一組向量。整個這樣的結構就稱為Transformer Block。 ### 3. Attention: Transformer Block  受惠於框架,雖然一個block裡面有很多東西,不過對我們寫程式來說就是加入一個網路層的概念。 ### 3. Attention: Transformer Block  最後就從最後一層的Block裡面的最後一個output去得到一個機率分佈。 ### 想想語言模型怎麼產生答案  這邊說明剛剛提到的Causal Attention。 基本上語言模型的答案是根據問題產生一個回應,然後把這個回應加到問題中再產生一次回應。 以上圖為例,模型根據你的輸入產生w1,然後把你的輸入+w1再產生w2,然後再把你的輸入+w1+w2再產生w3。 ### 想想語言模型怎麼產生答案   總的來看,模型根據輸入先計算相關性得到第一個回應,也就是w1,然後w1再加進去輸入裡面,也因為輸入的相關性已經計算過了,所以不需要再計算,需要計算的也許是新加入的部份。 ### 想想語言模型怎麼產生答案  不過根據文獻記錄來看,似乎是不需要再做任何的計算,也就是不用再管AI的輸出跟原始輸入的關聯性,從研究記錄來看,就算考慮進去了,所得到的結果也不會比較好就是了。 PS:基本上Chat-GPT是沒在管的。 ### 為什麼處理超長文本會是挑戰  知道基本原理之後就不難明白為什麼處理超長文本會是一種挑戰了。 可以接受100k的tokens就代表光計算注意力權重的次數就是100k的平方。算力的部份不是跟文本的長度成正比,而是跟文本的長度的平方成正比。 ### 研究方向  ### Transformer概述 
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.