Ainsteinx Logo
Ainsteinx
👤
ยินดีต้อนรับสู่ Ainsteinx
เข้าสู่ระบบ

เปลี่ยนภาษา

สกุลเงิน

หน้าแรก
บล็อก
บริการ
บทที่ 01 · บทนำ

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 · Diffusion3 · 7 · 8
จำลอง p(x) ตรงๆ แต่จำกัดรูปแบบAutoregressive · Normalizing flow5 · 6
ไม่จำลอง p(x) เลย แต่สุ่มได้GAN4

สิ่งที่ควรจำ

  • เป้าหมาย: เรียน p(x) ของข้อมูล แล้วสุ่มข้อมูลใหม่ที่น่าเชื่อ
  • Likelihood บอกว่าข้อมูลไหน "มีความเป็นไปได้" ภายใต้ model
generative-ai-ep01-generative-modeling.py
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
  • #ບອກຕໍ່ຄວາມຮູ້