---
# System prepended metadata

title: 【生成式AI導論 2024】第10講：今日的語言模型是如何做文字接龍的 — 淺談Transformer
tags: [生成式AI導論 2024]

---

# 【生成式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)
