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
- #ບອກຕໍ່ຄວາມຮູ້