ฝึกฝน AI ให้วาดภาพสีน้ำ ด้วย TRL และ OpenEnv
เคยเห็นภาพวาดสีน้ำสวยๆ ที่สร้างสรรค์โดย AI ไหมครับ? เมื่อไม่นานมานี้ ได้มีวิดีโอที่แสดงผลงานสีน้ำที่สร้างโดยโมเดลภาษา ซึ่งเขียนโค้ด JavaScript ผ่านไลบรารี p5.brush ที่ช่วยเพิ่มเครื่องมือวาดภาพธรรมชาติให้กับ p5.js วิดีโอนี้ได้รับความสนใจอย่างรวดเร็ว มียอดวิวสูงถึง 1.5 ล้านวิว!
เบื้องหลังความน่าทึ่งนี้ คือการฝึกฝนโมเดลให้สร้างสรรค์ผลงานศิลปะ โดยมีเป้าหมายที่จะทำให้การพัฒนา AI เป็นไปอย่างเปิดกว้างและเข้าถึงได้ ผ่านการใช้ Open Source และ Open Science บทความนี้จะพาไปทำความเข้าใจเบื้องหลังการสร้างสรรค์ผลงานดังกล่าว โดยใช้เครื่องมืออย่าง TRL (Transformer Reinforcement Learning) และ OpenEnv
แรงบันดาลใจจากศิลปะสู่โค้ด
ไอเดียตั้งต้นมาจากฝั่งศิลปะและการออกแบบ ที่ต้องการสร้างสรรค์ผลงานที่ดูเป็นธรรมชาติ ไม่สมบูรณ์แบบเหมือนภาพที่ AI สร้างขึ้นทั่วไป แต่ให้ความรู้สึกเหมือนภาพวาดด้วยมือ ซึ่งความไม่สมบูรณ์แบบนี้เองที่เป็นเสน่ห์ดึงดูดใจ ทำให้ผู้คนสนใจในผลงานที่แตกต่างนี้
โมเดล AI ไม่ได้เพียงแค่สร้างภาพ แต่เป็นการเขียนโปรแกรม JavaScript ประมาณ 150 บรรทัด เพื่อสั่งให้เกิดการวาดภาพนั้นๆ ผลลัพธ์ที่ได้คือ "โค้ด" ที่เราสามารถอ่าน ทำความเข้าใจ แก้ไข และรันใหม่ได้ การตัดสินใจในแต่ละฝีแปรงจะปรากฏให้เห็นอย่างชัดเจน และสไตล์ของภาพสีน้ำก็มาจากข้อจำกัดในการใช้เมธอดเพียง 10 อย่าง จากไลบรารี p5.brush เท่านั้น
TRL และ OpenEnv: เครื่องมือสู่การสร้างสรรค์
บทความนี้จะพาไปเจาะลึกถึงการนำ TRL และ OpenEnv มาใช้เพื่อจำลองแนวคิดนี้ให้เป็นจริง โดยทุกชิ้นส่วน ตั้งแต่ชุดข้อมูลอ้างอิง (reference pool dataset), สภาพแวดล้อม RL (RL environment), สคริปต์การฝึกฝน (training scripts) ไปจนถึงโมเดลที่ฝึกฝนแล้ว (trained models) ล้วนถูกเปิดเผยเป็น Open Source
กระบวนการทั้งหมดสามารถทำงานได้บน Hugging Face ตั้งแต่ต้นจนจบ:
- สภาพแวดล้อม RL และโมเดลประเมินผล (scorer model): จัดการผ่าน Hugging Face Spaces
- การเปรียบเทียบแบบคู่ (pairwise judge): ผ่าน Inference Providers
- สิ่งประดิษฐ์ทั้งหมด (artifacts): รวบรวมไว้บน Hugging Face Hub ในคอลเลกชันเดียว
เมื่อ Spaces ทั้งสองพร้อมใช้งาน การสร้างสรรค์ก็ง่ายเพียงแค่รันคำสั่งเดียว โดยการจำลองสภาพแวดล้อมและโมเดลประเมินผล ตั้งค่าตัวแปรสภาพแวดล้อมสำหรับการผสมผสานรางวัล (reward mix) แล้วเริ่มการทำงาน
การสร้างสภาพแวดล้อม RL ที่จำเป็น 🛠️
สภาพแวดล้อมนี้จะทำหน้าที่ห่อหุ้มทุกอย่างที่อยู่ระหว่างโมเดลและฟังก์ชันรางวัล (reward function) ซึ่งรวมถึง:
- ไลบรารี JavaScript สำหรับการวาดภาพ: p5.brush ซึ่งจำลองคุณสมบัติของสีน้ำ เช่น การไหลของเม็ดสี, พื้นผิวของกระดาษ, น้ำหนักของฝีแปรง
- System Prompt: กำหนดข้อจำกัดให้กับโมเดล
- Headless Chromium: ใช้สำหรับเรนเดอร์ภาพร่างแต่ละภาพ
- Gate: ตรวจสอบความถูกต้องและป้องกันการโกง
ไลบรารี p5.brush มีเมธอดถึง 47 อย่าง แต่ Prompt ที่ใช้จะจำกัดให้โมเดลใช้เพียง 10 อย่าง เช่น scaleBrushes, noStroke, fill, fillBleed, circle เป็นต้น การจำกัดนี้ช่วยให้โมเดลสร้างภาพที่ดูเหมือนสีน้ำมากขึ้น โดยเฉพาะเมื่อใช้เมธอด fillBleed ที่ควบคุมการไหลของหมึก
Pool: ฟังก์ชันรางวัลเพื่อรสชาติศิลปะ 🎨
Pool นี้ประกอบด้วยภาพวาดที่สร้างโดยโมเดล AI จำนวน 178 ภาพ ซึ่งแบ่งออกเป็น 2 ระดับตามความชอบส่วนตัวของผู้สร้างสรรค์ ได้แก่ "love" และ "okay" ภาพเหล่านี้สร้างขึ้นจากโมเดล Open Weight 4 ตัว โดยใช้ p5.brush sketch และอ้างอิงจากภาพถ่ายดอกชบาที่ได้รับอนุญาตให้ใช้งานได้อย่างเปิดเผย
โมเดล Vision จะให้ข้อเสนอแนะที่เป็นลายลักษณ์อักษรสำหรับแต่ละ sketch และผ่านการปรับปรุง 3 รอบ สุดท้าย ภาพที่เสร็จสมบูรณ์จะถูกให้คะแนนทีละภาพ และ 178 ภาพนี้คือภาพที่ผ่านเกณฑ์
สิ่งที่น่าสนใจคือ โมเดลจะเรียนรู้ที่จะเลียนแบบสิ่งที่อยู่ใน Pool หากเราเปลี่ยนชุดข้อมูล ฟังก์ชันรางวัลก็จะเปลี่ยนไปโดยอัตโนมัติโดยไม่ต้องแก้ไขโค้ดแม้แต่บรรทัดเดียว
การเปรียบเทียบโมเดลประเมินผล 📊
มีโมเดลประเมินผล 2 ตัวที่ทำงานแตกต่างกัน:
- HPSv3: เป็น Preference Model ขนาด 7B ที่ให้คะแนนว่าคนทั่วไปจะชอบภาพนั้นมากน้อยเพียงใด โดยฝึกฝนจากชุดข้อมูลการเลือกภาพจำนวนมาก
- Pairwise Judge (Qwen3-VL-30B-A3B-Instruct): เป็นโมเดล Vision ทั่วไปที่เปรียบเทียบภาพที่สร้างขึ้นกับภาพอ้างอิง 4 ภาพจาก Pool และให้คะแนนตามสัดส่วนการชนะการเปรียบเทียบ
ผู้สร้างสรรค์ได้ทดลองฝึกฝน 3 รัน โดยแตกต่างกันที่น้ำหนัก (weight) ที่แบ่งให้กับโมเดลประเมินผลทั้งสองตัว:
- hps-only: ใช้ HPSv3 เพียงอย่างเดียว เพื่อทดสอบว่าไปป์ไลน์สามารถเรียนรู้ได้หรือไม่
- hps + judge (w=0.5): ผสมผสาน HPSv3 และ Pairwise Judge ด้วยน้ำหนักเท่ากัน
- hps + judge (w=0.2): ผสมผสาน HPSv3 และ Pairwise Judge โดย Pairwise Judge มีน้ำหนักน้อยกว่า
ผลการทดลองแสดงให้เห็นว่า Pool ที่สร้างขึ้นด้วยมือสามารถชี้นำนโยบาย (policy) ของโมเดลได้
ข้อควรระวังในการฝึกฝน ⚠️
- การขาดภาพวาดที่มนุษย์สร้างสรรค์: Pool ที่ใช้ส่วนใหญ่เป็นภาพที่สร้างโดย AI ซึ่งเป็นข้อจำกัด เนื่องจากภาพวาดสีน้ำที่ใช้ p5.brush และมีโค้ดให้ศึกษาได้นั้นมีจำนวนจำกัด
- การปรับพารามิเตอร์ LoRA: การตั้งค่า
target_modulesสำหรับโมเดลประเภท Mixture of Experts (MoE) เช่น Qwen/Qwen3.5-35B-A3B ต้องได้รับการปรับอย่างระมัดระวัง เพื่อให้ Adapter สามารถฝึกฝนกับทุก Layer ที่เกี่ยวข้องได้
สรุป
การฝึกฝนโมเดล AI ให้วาดภาพสีน้ำด้วย TRL และ OpenEnv เป็นตัวอย่างที่น่าสนใจของการนำเทคนิค Reinforcement Learning มาใช้กับความชอบทางศิลปะ แสดงให้เห็นว่า AI สามารถเรียนรู้และสร้างสรรค์ผลงานที่มีสไตล์เฉพาะตัวได้ โดยอาศัยการออกแบบฟังก์ชันรางวัลที่เหมาะสม และการใช้เครื่องมือ Open Source ที่มีประสิทธิภาพ
#AIArt #Watercolour #TRL #OpenAI
ขอบคุณ แหล่งข้อมูล
https://huggingface.co/blog/train-to-paint-with-code