Latent Space กับ Generative AI สำหรับข้อมูลรูปภาพ
ถ้าใครได้ลองมาทำความเข้าใจกับกลไกของ Generative AI จริงๆ โดยเฉพาะในสาย Computer Vision จะต้องเคยเห็น Latent Space อยู่บ่อยๆแน่ๆ และในบทความนี้ก็จะพูดถึงเจ้า Latent Space นี้ ว่ามันคืออะไร และมีบทบาทอะไร
ก่อนอื่นจะต้องเข้าใจก่อนว่า Neural Network ทั้งก้อน ทำหน้าที่เป็นฟังก์ชั่นในการแปลง input X ให้กลายเป็น output Y ที่ต้องการ ไม่ว่าจะเป็น label ว่าเป็นภาพอะไร หรือต้องการ predict ค่าใดๆ โดยที่ฟังก์ชั่นนั้นจะเป็นฟังก์ชั่นอะไรก็ได้ตามที่เราปรารถนา เพราะ Neural Network มีคุณสมบัติ Universal Approximation หรือสามารถประมาณฟังก์ชั่นอะไรก็ได้ในจักวาลนี้!
สำหรับโมเดลที่เป็น Generative นั้นฟังก์ชั่นที่เราพยายามจะเทรนออกมาคือ ฟังก์ชั่น distribution ของข้อมูล X เนื่องจากเราต้องการสร้างข้อมูลขึ้นมาใหม่ โดยให้ใกล้เคียงกับข้อมูลที่ใช้เทรน ดังนั้นเราจึงต้องการ distribution ของข้อมูล X เพื่อที่จะได้ sample ข้อมูล X ขึ้นมาใหม่จากฟังก์ชั่นความน่าจะเป็นที่ค่าในข้อมูล X ควรจะเป็น แต่ควรจะต้องไม่ใช่ค่าเดียวกับข้อมูลเทรน
ซึ่งข้อมูล X จะเป็นข้อมูลอะไรก็ได้ และในกรณีที่เราใช้ Model Generative กับข้อมูลภาพ เพื่อสร้างภาพใหม่ๆ นั้น ภาพของเราแต่ละรูปคือ 1 ข้อมูล ที่มีจำนวนมิติเท่ากับจำนวนพิกเซล!
หากภาพของเรามีขนาดไม่ใหญ่ ก็คงจะไม่ได้เป็นปัญหามากนัก แต่ถ้าเราต้องการภาพที่มีความละเอียดสูง การที่จะโมเดล distribution ของข้อมูล จะทำให้มีการคำนวนที่ซับซ้อนมาก ฉะนั้นจึงต้องมองหาสิ่งที่จะมาช่วยเราลดขนาดของข้อมูล
PCA หรือ Principle Component Analysis เป็นหนึ่งในวิธีที่จะสามารถใช้ลดขนาดของข้อมูลได้ เพราะเชื่อว่า ข้อมูลที่มีจำนวนหลายๆมิตินั้น แท้จริงแล้วอาจจะซ้ำซ้อนกัน จริงๆแล้วเราสามารถสกัดเอาเฉพาะข้อมูลที่สำคัญและมีความเป็นเอกลักษณ์ออกมา เพื่อให้ข้อมูลมีขนาดเล็กลงได้
แต่ปัญหาของ PCA คือ วิธีการคำนวณเพื่อสกัดเอาเฉพาะแก่นสำคัญ เป็นฟังก์ชั่นเชิงเส้น (linear function) ทำให้ใช้ได้กับบางข้อมูลเท่านั้น หากข้อมูลมีความหลากหลายมาก (คำว่าหลากหลาย แค่วัตถุในภาพมีการหมุน, เคลื่อนที่ไป หรือถูกถ่ายด้วยมุมอื่น ก็ถือว่าเป็นข้อมูลที่มีความแตกต่างและหลากหลายแล้ว) ก็จะไม่สามารถใช้งานได้ดี ฉะนั้น จึงแก้ปัญหาด้วยการแทนฟังก์ชั่นการแปลงข้อมูลให้มีขนาดเล็กลงด้วยฟังก์ชั่นไม่เชิงเส้น (non-linear function) ซึ่งแน่นอนว่า Neural Network เป็นตัวเลือกที่ดีที่สุด และก่อกำเนิดเป็นโมเดลที่เรียกว่า Autoencoder
รายละเอียดสามารถอ่านต่อได้ที่ รู้จักกับไอเดียของ Autoencoder อย่างละเอียด
และเจ้าข้อมูลที่สกัดออกมาและมีขนาดลดลงนั้น เราเรียกว่า Latent code และคำว่า Latent Space ก็คือ set ของค่าทั้งหมดของ Latent code ที่เป็นไปได้นั่นเอง!
คำว่า Latent ตามความหมายภาษาอังกฤษแล้ว หมายถึงสิ่งที่ซ่อนไว้อยู่ และที่ได้ชื่อว่า Latent นั่นก็เพราะว่า หากเรา Decode เจ้า Latent code ออกมานั้น ค่าใน Latent code นี้จะเป็นตัวควบคุมว่า ภาพผลลัพธ์ที่ได้ จะหน้าตาเป็นอย่างไร ซึ่งก็สามารถตีความได้ว่า จริงๆแล้วภาพทุกภาพจะถูก Latent code ตัวนี้คอยบงการว่าจะออกมาเป็นอย่างไร แต่เราไม่สามารถวัดค่า Latent code ได้ตรงๆ และมันถูกหลบซ่อนอยู่ภายในข้อมูลภาพที่เก็บมา และเราก็เชื่อกันว่า มันมี Latent code อยู่ แต่วัดค่าออกมาไม่ได้
และสิ่งที่จะมาคอนเฟิมความเชื่อได้ว่า สิ่งที่เราคิดมันถูกต้อง ก็คือผลลัพธ์ที่ได้จากโมเดลนั่นเอง และมันก็เป็นไปตามนั้นจริงๆ ค่า Latent code จะควบคุมภาพที่จะถูก Decode ออกมา เราสามารถปรับค่าใดๆก็ได้ใน Latent Space เพื่อให้ได้ผลลัพธ์ที่สัมพันธ์กัน
และตรงนี้แหละ หาก Latent code เป็นตัวแทนของภาพได้จริง ฉะนั้นเราก็ให้ Neural Network โมเดล distribution ของ Latent Space แทนที่จะโมเดล distribution ของข้อมูลภาพ X โดยตรง แบบนี้ก็จะประหยัดการคำนวณลงไปได้มากค่ะ
นี่แหละค่ะ ก็เป็นไอเดียและบทบาทของ Latent Space และประโยชน์ของการเข้าใจไอเดียเบื้องหลังคือ จะสามารถเล่นสนุกๆได้ โดยการออกแบบ Latent Space หลายๆรูปแบบได้อีกเยอะเลยตามแต่จินตนาการจะพาไปค่ะ
สำหรับตอนนี้ก็จบลงเพียงเท่านี้
ถ้ายังไม่เคลียร์ก็คอมเม้นถามกันเข้ามาได้ค่ะ
สามารถติดตามกันได้ที่
Facebook: AI แบบเคลียร์ ตีแผ่ทุกไอเดียเบื้องหลังสมการ
Tiktok: ai.beeying
Youtube: AI แบบเคลียร์ๆ