# 【生成式AI導論 2024】第10講:今日的語言模型是如何做文字接龍的 — 淺談Transformer ## Transformer做了什麼把輸入轉為輸出 ![image](https://hackmd.io/_uploads/rk0y6Ur31x.png) 1. Tokenization: 文字轉為Token 2. Input Layer: 理解每個Token 3. Attention: 考慮Token跟Token間的關係 4. Feed Forward Network: 把Attention的輸出整合併進一步思考 5. Output Layer: 把輸出轉為機率的分佈 ## Tokenization * 語言模型是以Token為單位對文字處理 * 在一開始就會有個Token list,告訴程式要怎麼切割token,這個token list通常來自於人類對語研的理解,例如中文就是方塊字。 * Byte Pair Encodeing(BPE)是一個找Token的方法,主要是找語言中哪些東西很常一起出現。 * 到目前為止沒有需要訓練的參數,都是人類的定義。 ## Input Layer ![image](https://hackmd.io/_uploads/BJk1CLSnke.png) * 稱作Embedding * 把Token轉為向量 * 相近的token就會有相近的Embedding![image](https://hackmd.io/_uploads/ByrZ0US2yl.png) * Token Embedding的參數是訓練得來的參數,這個訓練過程還沒有考慮上下文 * 接下來加入位置資訊(positional encoding)![image](https://hackmd.io/_uploads/HyUoR8rnke.png) * 近年來positional embedding也可以使用訓練取得較好的算法 ## Attention & FFN * 在Attention前,Embedding的結果相同,因為Embedding沒有參考前後文資訊,所以無法分辨在句子中不同位置的詞意差別 * Attention後因為參考位置,所以可以給出相同token在句子不同位置中的不同意思![image](https://hackmd.io/_uploads/Hk9bJDB3kg.png) * 相關Attention的說明參考之前的筆記,我覺得老師在這邊為了簡化反而講的不好。簡單來說就是介紹了Attention跟Masked(Causal) Attention、Multi-head Attention。 * 相關內容: * 如何快速進行 Attention * [Overview](https://youtu.be/yHoAq1IT_og?si=2ZqqelyCYrt8l7DT) * 達成無限長度的 Attention? * https://arxiv.org/abs/2309.17453 * https://arxiv.org/abs/2404.07143 * Train short, Test Long * [ALiBi](https://arxiv.org/abs/2108.12409) * [Position Interpolation](https://arxiv.org/abs/2306.15595) ([RoPE](https://arxiv.org/abs/2104.09864)) * 其他類神經網路架構的可能性 * [Mamba](https://arxiv.org/abs/2312.00752) * [Jamba](https://arxiv.org/abs/2403.19887) ## Output Layer * Linear Transform,輸出一個機率分佈,將下一個產生的token機率輸出來![image](https://hackmd.io/_uploads/rkTrWDr2kg.png)