Generative Modeling คืออะไร?
เรียนรู้ p(x) จากข้อมูล แล้วสร้างข้อมูลใหม่ที่ไม่เคยมีมาก่อน
Discriminative model ตอบคำถาม "ภาพนี้เป็นแมวไหม?" ส่วน generative model เรียนว่าข้อมูลทั้งหมดมีลักษณะอย่างไร (การแจกแจง p(x)) แล้วสุ่มสร้างตัวอย่างใหม่จากมัน
โค้ดตัวอย่างที่เล็กที่สุด: เรียนความสูงของคน 1,000 คนเป็นการแจกแจงปกติ แล้ว "สร้างคนใหม่" 5 คน และวัดว่าความสูงแบบไหนน่าเชื่อแค่ไหน
Discriminativeเรียน p(y | x): จากข้อมูล → คำตอบ
Generativeเรียน p(x): แล้วสุ่ม x ใหม่ที่คล้ายข้อมูลจริง
6 ตระกูลของ generative model
| วิธี | ตระกูล | บท |
|---|---|---|
| ประมาณ p(x) | VAE · Energy-based · Diffusion | 3 · 7 · 8 |
| จำลอง p(x) ตรงๆ แต่จำกัดรูปแบบ | Autoregressive · Normalizing flow | 5 · 6 |
| ไม่จำลอง p(x) เลย แต่สุ่มได้ | GAN | 4 |
สิ่งที่ควรจำ
- เป้าหมาย: เรียน p(x) ของข้อมูล แล้วสุ่มข้อมูลใหม่ที่น่าเชื่อ
- Likelihood บอกว่าข้อมูลไหน "มีความเป็นไปได้" ภายใต้ model
import numpy as np
# A generative model learns p(x) from data, then samples new x from it.
rng = np.random.default_rng(0)
heights = rng.normal(170, 7, size=1000) # "real" data we observe
mu, sigma = heights.mean(), heights.std() # learn p(x) = N(mu, sigma^2)
new_people = rng.normal(mu, sigma, size=5) # generate new samples
print(f"learned mu={mu:.1f} sigma={sigma:.1f}")
print("generated:", np.round(new_people, 1))
# Likelihood tells how plausible a value is under the model
for x in (170, 200):
p = np.exp(-(x - mu) ** 2 / (2 * sigma ** 2)) / (sigma * np.sqrt(2 * np.pi))
print(f"p({x}) = {p:.5f}")
ผลลัพธ์
learned mu=169.7 sigma=6.8 generated: [177.8 171.7 171. 171.5 160.3] p(170) = 0.05828 p(200) = 0.00000
- #GenerativeAI
- #DeepLearning
- #PythonສຳລັບຄົນLaos
- #AI
- #ບອກຕໍ່ຄວາມຮູ້