ทำความรู้จัก LLM หรือที่เราชอบเรียกกันแบบงงๆ ว่า ChatGPT
Disclaimer: Opinions are my very own and never the views of my employer (they usually don’t comprehend it but.)
ก่อนจะเริ่มพูดถึง ChatGPT ขอแนะนำให้รู้จักคำว่า LLM (อ่านทีละตัวอักษรว่า แอล แอล เอ็ม ไม่ต้องพยามออกเสียงเป็นพยางค์เดียว) มาจากคำว่า Massive Language Mannequin แปลเป็นไทยว่า “โมเดลภาษาขนาดใหญ่” — ซึ่ง Mannequin นี้หมายถึง Machine Studying Mannequin ถ้าไม่เข้าใจว่า “โมเดล” คืออะไร ให้นึกภาพเป็นเหมือนโปรแกรมคอมพิวเตอร์ประเภทหนึ่ง ซึ่งสร้างด้วยการใช้ข้อมูลจำนวนมาก เพื่อให้โปรแกรมเรียนรู้ (Studying) ว่าถ้าเจอข้อมูลแบบนี้ (Enter) ควรจะให้คำตอบหรือผลลัพท์ (Output) ว่าอะไร
เขียนโปรแกรมแต่ใช้ข้อมูลคืออะไร? — ปกติแล้วเวลาเรานึกถึงการเขียนโปรแกรม เราก็จะนึกถึงเขียนโค้ดเพื่อสร้าง Web site หรือสร้าง App สมมุติว่าเราสร้างแอปเครื่องคิดเลข เราก็จะเขียนโค้ดเพื่อ “กำหนดคำสั่งหรือวิธีการไว้แล้ว” (outlined directions) ว่าถ้า 1+1 จะได้ 2 ถ้ากดปุ่มคูณให้เอาเลขมาคูณกัน ฯลฯ แต่การสร้าง Machine Studying Mannequin เราไม่ได้กำหนดคำสั่งไว้ตายตัว เราให้มันเดาคำตอบจากข้อมูลที่เราให้
พออ่านถึงตรงนี้อาจมีคำว่า AI (Synthetic Intelligence) เข้ามาในหัว ขอไม่อธิบายยาวๆ แต่ขอพูดง่ายๆ ว่า Machine Studying เป็นส่วนหนึ่งของ AI แล้ว Generative AI หละ? Generative AI ก็คือประเภทหนึ่งของ AI ที่เน้นการสร้าง (generate) content material (เช่น ข้อความ รูป เสียง วิดิโอ)
โมเดลมันเดาข้อคำตอบได้ยังไง? — Machine Studying Mannequin เดาคำตอบจากความน่าจะเป็น (Propability)โดยเรียนรู้จาก Sample ของข้อมูลที่เราบอกมันไว้ก่อนหน้า (Coaching information) สมมุติว่าเรามีรูปภาพส้ม 100 รูป กับรูปภาพแตงโม 100 รูป แล้วให้โมเดลเรียนรู้ว่าแบบนี้คือส้มนะ แบบนี้คือแตงโมนะ ทีนี้เราให้รูปส้มไป โมเดลก็จะ ‘เดา’ ได้ว่ารูปนี้มีโอกาสเป็นส้มมากกว่าเป็นแตงโม (สำคัญว่ามัน ‘เดา’ เพราะฉะนั้นมันมีโอกาสผิด) แต่ถ้าเราให้รูปหมาไป มันก็จะงง เพราะข้อมูลที่เราใช้สอน (Practice) นั้นไม่มีรูปหมา
ทำไมไม่กำหนดคำสั่งหรือวิธีการไปเลยเหมือนโปรแกรมเครื่องคิดเลข ทำไมต้องทำอะไรยากๆ? — เพราะว่าเราไม่สามารถกำหนดคำสั่งหรือวิธีการของทุกอย่างได้ (หรือเรากำหนดไว้ได้ แต่มันไม่แม่น) ลองนึกในหัวว่า ถ้าเราจะแยกดอกดอกกุหลาบ 20 สายพันธุ์ให้แตกต่างกัน เราจะเขียนลงกระดาษว่าอย่างไรได้บ้าง เป็นข้อๆ นึกไปนึกมาจะพบว่าให้เขียนเป็นหน้าเราก็ยังเขียนไม่หมด เพราะรายละเอียดมันเยอะมาก สรุปได้ว่าวิธีแก้ปัญหาด้วย Machine Studying Mannequin (ML Mannequin) จำเป็นมาก เมื่อโจทย์หรือคำตอบที่ต้องการเริ่มซับซ้อนจนเรากำหนดไว้ทั้งหมดไม่ได้
ความท้าทายของ ML Mannequin อยู่ที่ความแม่น แม่นไม่แม่นขึ้นกับข้อมูลที่เราให้ว่าข้อมูลเยอะแค่ไหน เพราะยิ่งเห็นรูปส้มที่แตกต่างกันเยอะๆ ก็ยิ่งแยกได้ง่ายว่านี่คือส้ม เยอะอย่างเดียวไม่พอ ข้อมูลต้องมีคุณภาพด้วย เช่น สมมุติเราให้รูปแตงโมแล้วบอกไปผิดๆ ว่านี่คือส้ม มันก็จะสับสน
ถ้าจะพูดแบบเข้าใจง่ายที่สุดคือ LLM ใช้วิธีการ “เดาคำถัดไป” จากคำตอบในปัจจุบัน นึกภาพง่ายๆ เหมือน Auto Completion ที่คีย์บอร์ดของโทรศัพท์ ที่มันเดาคำต่อไปเรื่อยๆ แต่ LLM มันเดาได้ดูฉลาดมากๆ (ย้ำว่าดูฉลาด) เพราะว่ามันเรียนรู้จากข้อมูลขาดใหญ่มากๆ จนมันจับ sample ได้ว่าคำต่อไปคือคำว่าอะไร จนทำให้ประโยคดูสวยงามเป็นธรรมชาติเหมือนเป็นประโยคที่มาจากคนเขียน ซึ่งก็แน่ เพราะมันเรียนรู้จากประโยคหรือข้อความที่คนเขียนจริงๆ
How one can เดา? — เฉลย: LLM ค่อยๆ เดาทีละ Token (อธิบายอย่างง่ายว่า token หมายถึง ‘คำ’ ที่รวมไปถึงเครื่องหมายต่างๆ บางทีคำยาวๆ มันก็ตัดเป็นหลายๆ token) โดยส่วนใหญ่แล้ว LLM Mannequin จะเอาข้อความ enter ของเราเข้าไปคำนวณหาว่า token ต่อไปที่ดู make sense มากที่สุดคือ token ไหน โดยคำนวณความน่าจะเป็นจาก Token ทั้งหมดที่มี แล้วจะเรียงและเลือกเอา token ที่ค่าความน่าจะเป็นมากที่สุดมาต่อท้าย แล้ววนต่อ mannequin ไปเรื่อยๆ จนว่าจะเจอ token ที่สั่งให้หยุด หรือโดน Restrict ไว้ตอนเราใช้งานว่าให้ตอบมาแค่ 100 tokens (ถ้าเราไม่กำหนดความยาวและมันยังไม่เจอ token ที่สั่งให้หยุด มันก็จะไม่หยุดเลย)
(Observe: บางที่ บางโมเดล ไม่ใช้ว่า Token และใช้ Token ในความหมายอื่น)
ย่อหน้าก่อนใช้คำว่าส่วนใหญ่ เพราะจริงๆ แล้วมีหลายเทคนิคในการเลือก token ถัดไป มี 2–3 คำที่สำคัญคือคำว่า Temperature, Top_p, Top_k และคำอธิบายข้างบนนี้ลดทอนส่วน Technical ไปเยอะมาก แต่ขอละไว้เพื่อไม่ให้งงไปมากกว่านี้
ถ้าได้ลองใช้มาบ้างแล้วจะเห็นว่า LLM มันดูฉลาด สาเหตุที่ดูฉลาดเพราะมันเห็นข้อมูลมามาก สำคัญว่า LLM เห็น แต่ไม่เข้าใจความหมายทั้งหมด LLM รู้ว่าแต่ละคำมีความสัมพันธ์กันอย่างไรเพราะรู้ patterns ของข้อความที่เห็น รู้ว่าควรเอาคำว่าอะไรมาต่อ แต่มันไม่เข้าใจว่าทั้งหมดแล้วหมายถึงอะไร เหมือนที่เราท่องบดสวดมนต์ได้แต่ไม่รู้ว่าแปลว่าอะไร (เช่น ยะมัง แล้วต้อง พันเต)
ส่วนนี้ยังเป็นที่ถกเถียงกันในเชิงปรัญชาว่า คำว่า understanding และ data ที่จริงแล้วหมายถึงอะไร การรู้ patterns ของข้อความนั้นถือว่ามี understanding แล้วหรือไม่ ส่วนในทาง Pc Science ก็กำลังหาวิธี combine ข้อมูลอื่นๆ เข้าไปในโมเดลเช่นกันเพื่อให้มันฉลาดขึ้น (เหมือนที่ ChatGPT บอกข้างล่างนี้)
ที่บอกว่าโมเดลขนาดใหญ่ ใหญ่แค่ไหน? — คนชอบพูดถึงขนาดของโมเดล LLM ด้วยเลข Parameters GPT-4 ลือว่ามี 1.7 trillion (ล้านล้าน) parameters แต่เลขนี้คืออะไรกันนะ
เลข Parameters คือเลขภายในโมเดล เลขนี้อธิบายแบบง่ายคือเป็นเลขที่ใช้อธิบายความสามารถในการประมวลผล (ไม่ใช่เลขของจำนวนข้อมูลที่ใช้เทรน) นึกภาพง่ายๆ ว่าโมเดลนี้เหมือนบ้านหลังหนึ่ง ถ้ามี parameters เยอะ บ้านหลังนี้ก็จะมีฟังก์ชันในการใช้งานเยอะขึ้น เช่น มีสวน เลี้ยงหมาได้ สร้างสระว่ายน้ำได้ ฯลฯ ข้อดีคือยิ่งโมเดลที่มี Parameters เยอะ ก็จะสามารถทำอะไรได้มากขึ้น (ความสามารถมากขึ้น) ข้อเสียคือมันใช้ทรัพยากรในการสร้างเยอะ บ้านหลังใหญ่มีหลายห้อง หลายชั้น ก็ใช้เวลาสร้างนาน ใช้วัสดุเยอะ ใช้เงินเยอะ เหมือนกันกับโมเดล ก็ต้องใช้ส่วนประมวลผลที่จะมาสร้างเยอะขึ้น ใช้ไฟเยอะขึ้น ฯลฯ เรื่องที่น่าสนใจคือบ้านหลังใหญ่ไม่ได้ดีเสมอไป เพราะบางทีเราแค่อยากได้บ้านตากอากาศริมทะเล ที่ใช้แค่พักผ่อน เพราะฉะนั้นโมเดลที่ parameters น้อยกว่าอาจจะดีกว่าใน usecase ที่เราต้องการ
แล้วเลขจำนวนข้อมูลที่ใช้เทรนหละ — ส่วนใหญ่แล้วตอนนี้ใช้ข้อมูลระดับ TB (1 TB = 1,000 GB) เข้าใจว่าข้อมูลนี้ไม่เปิดเผยกัน เพราะเป็นความลับกันว่าข้อมูลมาจากไหนและเยอะแค่ไหน ถ้าเสิชหาจะมีคนลือว่า GPT-3 ใช้ข้อมูล 45TB ในการเทรน โดยส่วนมากแล้วโมเดลพวกนี้จะใช้ข้อมูลจาก Open Net (Common Crawl) Wikipedia และหนังสือต่างๆ
เฉลย มันไม่รู้ (หรือมันอาจแค่เดาถูก) เพราะในทางทฤษฏี LLM มันเดา token ต่อไป มันต้องไม่รู้ว่าวันนี้วันอะไร ซึ่งรวมไปถึงความสามารถในการคิดเลข มันต้องคิดเลขไม่ได้
ส่วนนี้เป็นหนึ่งในปัญหาของการอธิบายให้คนเข้าใจว่าเทคโนโลยีนี้คืออะไร สิ่งที่ควรรู้คือ ChatGPT ที่ใช้ผ่าน https://chatgpt.com หรือ Gemini ที่ใช้ผ่าน https://gemini.google.com นั้นไม่ใช่การใช้งานผ่าน LLM แบบเพียวๆ แต่มันถูกห่อไว้อีกชั้นหนึ่งด้วยอะไรสักอย่าง เพื่อให้ผลลัพท์ดีขึ้น
ลองดูตัวอย่างเทียบข้างล่างนี้ เป็นการทดลองระหว่างใช้ LLM Mannequin แบบเพียวๆ กับใช้ผ่าน utility จะเห็นว่า Utility ดูจะตอบได้ดีกว่าเพราะมีอะไรสักอย่างมาช่วย (ไม่ใช่เพราะโมเดลมี parameters เยอะกว่า)
สิ่งที่ห่อไว้หรือครอบไว้ให้คิดง่ายๆ เหมือนสกิน อันนี้เป็นความท้าทายของแต่ละเจ้าว่าจะทำอะไรมาห่อหรือครอบไว้บ้าง ถ้าดูที่ชั้น “some applications” จากรูปข้างล่างจะเห็นว่าชั้นนี้ทำอะไรหลายอย่างมากกับคำถามของเรา (enter) และคำตอบจากโมเดล (output) สังเกตที่สีแดง จากที่คิดว่าเราถามโมเดลว่า “วันนี้วันอะไร” กลายเป็นว่ามีชั้นก่อนหน้ามาแอบเติมคำถามของเรา ทำให้โมเดลเห็นข้อความยาวๆ “วันนี้วันที่ 2 มิถุนายน 2567 ตอบสั้นๆ อย่าเวิ่นเว้อ วันนี้วันอะไร” เทคนิคนี้ใช้กันทั่วไปและเรียกว่า preambles (เวลาที่เราคุยกับ ChatGPT แล้วมันรู้ว่าคำถามก่อนหน้าคืออะไร ก็ใช้วิธีนี้แหละ)
ลองพิสูจน์ดู
อย่าลืมว่า LLM เกิดมาเพื่อเดาคำต่อไป เพราะฉะนั้นมันมีโอกาสสูงมากๆๆๆๆ ที่จะให้คำตอบเนียนๆ ที่เหมือนจะดูจริงแต่ไม่เป็นความจริง มีตัวอย่างให้เห็นมากจากสื่อในช่วงเวลาที่ผ่านมา ถ้ามันเจออะไรที่มันเริ่มงง เริ่มสับสน จะเกิดอาการหลอน (Hallucination) (notice: เขาใช้คำนี้จริงๆ)
อีกเรื่องที่ต้องระมัดระวังคือเรื่อง Security กับ Equity & Bias เพราะมันอ่านอะไรมา มันก็มีโอกาสสูงที่จะออกมาในแนวนั้น เช่น ถ้าโมเดลนี้ถูกเทรนด้วยข้อมูลเกี่ยวกับคนตะวันตก แต่ไม่มีข้อมูลของคนเอเชียเลย โมเดลนี้ก็จะไม่มีทางให้คำตอบที่เกียวกับคนเอเชีย เพราะมันไม่เคยเห็นมาก่อน (มันอาจจะ Hallucinate เป็นเอเชียได้)
LLM มีตัวอย่างการใช้งานที่ดีในด้านการเขียน การสรุป หรืองานเชิงสร้างสรรค์ที่ไม่เน้นความถูกต้อง อันนี้ใช้ได้เลย มีประโยช์มาก
การแข่งขันของบริษัทต่างๆ ยังคงดุเดือด ในฐานะคนใช้งานก็ลุ้นให้มี usecase ที่เหมาะๆ กับ LLM มุมมองส่วนตัวคิดว่า LLM as a chatbot อย่างเช่น ChatGPT หรือ gemini.google.com นี้ยังไม่ใช่คำตอบของการใช้ LLM แต่คงต้องดูกันไปยาวๆ ในมุมบริษัท แน่นอนว่าต้องรีบพัฒนาโมเดล และพัฒนาตัวครอบไปพร้อมๆ กัน เพราะคนใช้งานคาดหวังให้ LLM ฉลาดและถูกต้อง
ตอนหน้าจะมาเล่าถึงวิธีใช้งานในเคสต่างๆ และเล่าถึงการทำงานของ LLM นอกเหนือจากข้อความ ก็คือพวกรูป คลิป เสียง มาดูกันว่า LLM พูดได้จริงหรือเปล่า หรือเราโดนเขาหลอก