Generative AI หรือปัญญาประดิษฐ์เป็นหนึ่งในกลุ่มของอัลกอริทึมและโมเดลปัญญาประดิษฐ์ที่ถูกออกแบบมาเพื่อสร้างเนื้อหาใหม่ๆ เช่น ภาพถ่าย เนื้อหาข้อความ เสียง หรือวิดีโอที่มีลักษณะคล้ายกับเนื้อหาที่สร้างขึ้นโดยมนุษย์ โมเดลเหล่านี้เรียนรู้รูปแบบและโครงสร้างจากชุดข้อมูลขนาดใหญ่แล้วสามารถสร้างเนื้อหาใหม่ๆ ขึ้นมาตามสิ่งที่เคยเรียนรู้ได้
หนึ่งในชนิดยอดนิยมของ Generative AI คือ Generative Adversarial Networks (GANs) ซึ่งประกอบด้วยเครือข่ายประสาทเทียมสองตัว — โดยมี Generator และ Discriminator ที่ทำงานร่วมกันเพื่อสร้างผลลัพธ์ที่เชื่อถือได้ เครื่องมือชนิดอื่น ๆ รวมถึงโมเดลที่สร้างเนื้อหาโดยอัตโนมัติตามลำดับเช่นโมเดลภาษา เช่นที่คุณกำลังสนทนากับฉันอยู่ตอนนี้ ที่สร้างเนื้อหาโดยพิจารณาความน่าจะเป็นจากชุดข้อมูลการฝึก
Generative AI มีการใช้งานที่หลากหลาย เช่น การสร้างภาพที่สมจริง การสร้างศิลปะ การสร้างข้อมูลสังเคราะห์เพื่อฝึกโมเดล AI อื่น ๆ การสร้างเนื้อหาข้อความ และอื่น ๆ มีความเป็นที่น่าตื่นเต้นและเป็นสาขาที่ก้าวไปข้างหน้าอย่างรวดเร็ว ซึ่งมีศักยภาพที่มากมายสำหรับการใช้งานที่เป็นสร้างสรรค์และประยุกต์ใช้ได้ในทางต่าง ๆ
ปัญญาประดิษฐ์ เช่น ระบบสร้างเนื้อหาอย่างประสงค์ (Generative Adversarial Networks — GANs) และโมเดลตามลำดับ (autoregressive models) อยู่ที่ด้านหน้าของการวิจัยด้านปัญญาประดิษฐ์ โมเดลเหล่านี้สามารถสร้างตัวอย่างข้อมูลใหม่ที่มีความคล้ายคลึงกับข้อมูลที่ใช้ฝึกได้อย่างมหาศาล ขอให้เราลงลึกศึกษาเข้าไปในวิธีการสองวิธีที่ได้รับความนิยม:
- ระบบสร้างเนื้อหาอย่างประสงค์ (Generative Adversarial Networks — GANs): GANs ประกอบด้วยเครือข่ายประสาทสองชั้น: ตัวสร้างข้อมูล (generator) และตัวแยกแยะ (discriminator) ตัวสร้างข้อมูลจะสร้างตัวอย่างข้อมูลสังเคราะห์ ในขณะที่ตัวแยกแยะพยายามที่จะแยกแยะระหว่างข้อมูลจริงและข้อมูลปลอม ผ่านการฝึกต่อสู้ระหว่างสองอัน ตัวสร้างข้อมูลจะเรียนรู้ที่จะสร้างตัวอย่างที่มีความเป็นจริงมากขึ้น ในขณะที่ตัวแยกแยะมีประสิทธิภาพที่ดีขึ้นในการแยกแยะระหว่างข้อมูลจริงและข้อมูลปลอม กระบวนการต่อสู้นี้จะทำให้เกิดตัวอย่างข้อมูลที่มีคุณภาพสูงขึ้น นี่คือตัวอย่างโค้ดที่แบบเรียบง่ายในการฝึก GAN โดยใช้ TensorFlow:
import tensorflow as tf
from tensorflow.keras import layers, models
# สร้างโมเดล Generator
def build_generator():
model = models.Sequential([
layers.Dense(128, activation='relu', input_shape=(latent_dim,)),
layers.Dense(784, activation='sigmoid'),
layers.Reshape((28, 28))
])
return model
# สร้างโมเดล Discriminator
def build_discriminator():
model = models.Sequential([
layers.Flatten(input_shape=(28, 28)),
layers.Dense(128, activation='relu'),
layers.Dense(1, activation='sigmoid')
])
return model
# สร้างโมเดล GAN
def build_gan(generator, discriminator):
discriminator.trainable = False
gan = models.Sequential([
generator,
discriminator
])
return gan
# ฟังก์ชันการฝึก GAN
def train_gan(gan, generator, discriminator, data, epochs, batch_size):
for epoch in range(epochs):
for _ in range(batch_size):
# สร้างข้อมูลปลอม
fake_data = generator.predict(tf.random.normal(shape=(batch_size, latent_dim)))
# รวมข้อมูลจริงและข้อมูลปลอม
x_combined = tf.concat([data, fake_data], axis=0)
y_combined = tf.concat([tf.ones((batch_size, 1)), tf.zeros((batch_size, 1))], axis=0)
# ฝึก Discriminator
discriminator.trainable = True
discriminator.train_on_batch(x_combined, y_combined)
# ฝึก Generator
noise = tf.random.normal(shape=(batch_size, latent_dim))
y_generated = tf.ones((batch_size, 1))
discriminator.trainable = False
gan.train_on_batch(noise, y_generated)
# การใช้งานตัวอย่าง
latent_dim = 100
generator = build_generator()
discriminator = build_discriminator()
gan = build_gan(generator, discriminator)
train_gan(gan, generator, discriminator, training_data, epochs=100, batch_size=32)
2. โมเดลตามลำดับ (Autoregressive Models): โมเดลตามลำดับ เช่น โมเดลประสาทเทียมที่ทำงานแบบเชิงวน (Recurrent Neural Networks — RNNs) หรือ Transformers สร้างโทเค็นผลลัพธ์ทีละตัว โดยมีการทำให้แต่ละโทเค็นขึ้นอยู่กับโทเค็นที่ถูกสร้างไว้ก่อนหน้านี้ โมเดลเหล่านี้มักถูกใช้สำหรับการสร้างลำดับของข้อมูล เช่น ข้อความหรือเพลง นี่คือตัวอย่างโค้ดที่แบบเรียบง่ายในการฝึกโมเดลสร้างข้อความโดยใช้ TensorFlow และโครงสร้าง GPT (Generative Pre-trained Transformer):
import tensorflow as tf
from transformers import GPT2Tokenizer, TFGPT2LMHeadModel
# โหลดโมเดล GPT-2 และโทเค็นไนเซอร์
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = TFGPT2LMHeadModel.from_pretrained("gpt2")
# ทำการโทเค็นไนส์ข้อความนำเข้า
input_text = "ในวันหนึ่ง"
input_ids = tokenizer.encode(input_text, return_tensors="tf")
# สร้างข้อความ
output = model.generate(input_ids, max_length=100, num_return_sequences=1)
# ถอดรหัสและพิมพ์ข้อความที่สร้างขึ้น
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print("ข้อความที่สร้างขึ้น:", generated_text)