---
# System prepended metadata

title: 【生成式AI導論 2024】第15講：為什麼語言模型用文字接龍，圖片生成不用像素接龍呢？— 淺談生成式人工智慧的生成策略
tags: [生成式AI導論 2024]

---

# 【生成式AI導論 2024】第15講：為什麼語言模型用文字接龍，圖片生成不用像素接龍呢？— 淺談生成式人工智慧的生成策略

* 到目前為止我們只有在講文字生成。但我們在第一節課定義過生成式人工智慧，就是能夠產生有結構且複雜無法窮舉的物件。
* 因此除了文字外，聲音、圖片也是這種結構物件。
* 而這些物件都是用有限的基本單位構成的
  * 文字: 組成基本單位是token。包含所有token的目錄就叫做Vocabulary。![image](https://hackmd.io/_uploads/B16Il1HTke.png)
  * 影像: pixel。![image](https://hackmd.io/_uploads/Bye0xkHp1x.png)
  * 聲音: 取樣點。一秒的聲音由多少個點構成就是取樣率。例如16KHz就是每秒有16000點。每個點可以有多少數值可以選就是取樣解析度(Bit Resolution)

## Autoregressive Generation

* 生成式AI的本質就是把基本的單位用正確的排序組合起來![image](https://hackmd.io/_uploads/SkfXfkSaJx.png)
* 文字生成的策略:Autoregressive Generation
![image](https://hackmd.io/_uploads/ryPXmJHayl.png)
* [影像](https://youtu.be/YNUek8ioAJk?t=537)也可以用像素接龍、[語音](https://arxiv.org/abs/1609.03499)也可用sample接龍的方式生成
* Autoregressive Generation的問題是生成時只能依照某個順序生成，在生成第二個token之前一定要生成第一個。
  * 假設要生成1024\*1024的圖片就需要100萬次像素接龍才能做出來。等於產生1024\*1024的照片要產生出一部紅樓夢(90萬)的量。
  * 假設要產生22K取樣綠的1分鐘，就要132萬次接龍。
  * 這裡就可以看出來要花很多時間
* 所以有了Non-Autoregressive Generation，使用平行生成，一次性的平行生成![image](https://hackmd.io/_uploads/ryoavWHTkg.png)雖然NAR計算量和AR相同，但是因為可以平行運算，所以可以大幅加快。
* [文字](https://arxiv.org/pdf/2204.09269)也可以用NAG
  * 法1:![image](https://hackmd.io/_uploads/HJvKO-Ba1x.png)
    * 先決定要產生幾個token
    * 平行去產生每個位置的token內容
  * 法2:![image](https://hackmd.io/_uploads/HJBCdbHpJe.png)
    * 一次性產生所有token
    * 丟掉[END]後的內容
* NAG的其中一個問題就是品質不穩定，AI自行腦部的內容在各個位置無法同步，產生multi-modality problem
  * ![image](https://hackmd.io/_uploads/ByhWKbrT1g.png)
  * ![image](https://hackmd.io/_uploads/HkWBY-BpJg.png)
  * AG因為會將上個output作為下個input，所以不會有這種問題出現

## NAG無法同步解決方法

### 讓所有位置都腦補一樣的內容![image](https://hackmd.io/_uploads/BJx3cZHaJl.png)

* 在一開始先生成一個向量，作為腦補內容
* 使用輸入內容跟腦補向量去生成![image](https://hackmd.io/_uploads/r1_kj-BTJx.png)
* VAE, GAN, Flow-based Model, Diffusion Model 都有這樣的設計

### AG+NAG

* 先用AG產生一個精簡的版本，再用NAG產生精細的版本![image](https://hackmd.io/_uploads/HkQJ6-rpkx.png)這個精簡的版本不一定要人看得懂，只要NAG模型看得懂就好
* 可以直接利用Auto-Encoder來製作Decoder。![image](https://hackmd.io/_uploads/B1XB6ZrpJx.png)
* AG現在要學習的就是如何產生Encodeing的內容就好![image](https://hackmd.io/_uploads/S1M2T-BaJl.png)![image](https://hackmd.io/_uploads/HktATbBaJe.png)

### 多次使用AG生成

* 把生成拆解成多個階段![image](https://hackmd.io/_uploads/SkR4JGr61l.png)
* 依序由小到大生成圖片就是一種[^1](https://arxiv.org/abs/2205.11487)[^2](https://arxiv.org/pdf/1710.10196)![image](https://hackmd.io/_uploads/BkVw1MSpye.png)
* 有雜訊到沒雜訊也是，[Diffusion Model](https://arxiv.org/abs/2006.11239)就是這種![image](https://hackmd.io/_uploads/By3n1Mr6Jl.png)
* 每次把生不好的地方塗掉![image](https://hackmd.io/_uploads/SJTCJzBTke.png)
* Midjourney, Decoder Stable Diffusion, DALL-E都是這種方法
