พาทัวร์ Open AI API และ GPT-3!!
ThaiKeras & Kaggle (updated April 2021 / July 2021)
เลื่อนลงไปดูโพสต์ข้างล่างได้เลยครับ
บทความแรกๆ จะเป็นบทความเกี่ยวกับ GPT-2 ครับ
-------------------------
ThaiKeras Workshop : ปลดปล่อยจินตนาการไร้ขีดจำกัดด้วย HuggingFace GPT-2!!
ThaiKeras & Kaggle (22 April 2020)
เลื่อนลงไปดูโพสต์ข้างล่างได้เลยครับ
-------------------------
ข้อความดั้งเดิมครับ
ช่วงสัปดาห์นี้เมื่อไม่กี่วันก่อน (14 ก.พ. 2019) ก็มีข่าวใหญ่ในวงการ NLP อีกครั้ง เมื่อ OpenAI ได้เปิดเผยโมเดลที่ชื่อว่า GPT-2 [link] พร้อมสาธิตตัวอย่างการใช้งานว่าถ้าเราป้อนข้อความใดๆ เข้าไปให้ แล้ว GPT-2 ก็จะสามารถแต่งเรื่องราวที่เกี่ยวกับข้อความนั้นต่อจนเป็นบทความที่สมบูรณ์ได้ ดังตัวอย่างบทความเรื่องการค้นพบยูนิคอร์นต่อไปนี้ [link] ซึ่งนับว่าเป็นบทความที่อ่านรู้เรื่อง มีความต่อเนื่อง และมีการใช้ภาษาในระดับที่เหมือนกับมนุษย์เป็นคนเขียน ซึ่งไม่เคยปรากฏว่ามี AI ที่ทำได้ขนาดนี้มาก่อน
สำหรับ GPT-2 นี้ เป็นโมเดลที่ต่อยอดมาจาก GPT [link] ของปีที่แล้ว โดยทำการเรียน language model จากชุดข้อมูล WebText ซึ่งเป็นชุดข้อมูลที่ได้มาจากการเก็บหน้าเว็บต่างๆ ที่มีข้อมูลรวมทั้งสิ้นจำนวน 8 ล้านเว็บเพจ ในขนาด 40 GB ตัวโมเดลนั้นเป็น Transformer ขนาดใหญ่ ที่มีพารามิเตอร์ถึง 1.5 พันล้านตัว ซึ่งทั้งขนาดของข้อมูลและพารามิเตอร์นี้มีจำนวนมากเป็น 10 เท่า ของ GPT เดิม
นอกจากนี้ โมเดล GPT-2 ก็สามารถนำไปใช้ในงานอื่น เป็น zero-shot learning [link] ได้เลย โดยไม่ต้องเทรนเพิ่มแต่อย่างใด เช่นนำไปใช้สำหรับงาน reading comprehension, common sense reasoning, question answering, summarization และ machine translation เพียงเราป้อน input ซึ่งอาจจะเป็น query เข้าไป ก็สามารถนำสิ่งที่ language model สร้างออกมาใช้เป็นคำตอบได้ และให้ความถูกต้องที่ไม่เลว ส่วน benchmark สำหรับงาน language modeling โดยตรงนั้น ก็พบว่า GPT-2 เป็น state of the art อยู่ในขณะนี้
นักวิจัยในวงการ NLP หลายคน เช่น Nando de Freitas, Stephen Merity และ Sebastian Ruder ได้กล่าวชื่นชมในความสำเร็จครั้งนี้ อย่างไรก็ดี มีข้อวิพากษ์วิจารณ์ถึงการที่ OpenAI ไม่ได้ปล่อยโมเดลตัวใหญ่ โค้ดตอนเทรน และชุดข้อมูลออกมา โดยอ้างว่าอาจมีผู้ไม่หวังดีนำไปใช้ในทางที่ผิดได้ เช่น มีการตั้งกระทู้ใน reddit ล้อเลียนว่า แล้วแบบนี้ฉันควรจะเปิดเผยโมเดล MNIST ดีหรือป่าว [link] หรือเสนอแนะว่า OpenAI ควรจะเปลี่ยนชื่อเป็น ClosedAI ซะมากกว่า [link] นอกจากนี้ สำนักข่าวต่างๆ เช่น The Guardian และ Daily Mail ได้นำเรื่องนี้ไปพาดหัวโดยเน้นประเด็นด้านความอันตรายของ AI ด้วย
ตัวอย่างบทความเรื่องการค้นพบยูนิคอร์นบนเทือกเขาแอนดีส ที่อ่านแล้วเหมือนกับว่าเป็นข่าวจริงเลยครับ (เป็นบทความที่เลือกมาจาก 10 ตัวอย่างที่โมเดลสร้างออกมาได้)
ตอนนี้นักวิจัยด้าน NLP ละสายตาจาก BERT มาที่ยูนิคอร์นบนเทือกขาแอนดีสแทน (ภาพจาก [link])
ตัวอย่าง unicorn ข้างบน ในทุกประโยคมี Dr.Perez อยู่เกือบทั้งหมดเลยนะครับ แล้วก็ดูเชื่อมกันเป็นเนื้อเรื่องด้วย
พออ่านแล้ว ดูคล้ายๆ เหมือนทั้งหมดจะถูก generated ต่อกันมา ไม่เหมือน 10ประโยคที่แยกกันสร้างจากประโยคต้นฉบับแบบสุ่ม (เช่น ประโยค 3 พูดถึง valley และประโยค 4 ก็พูดต่อว่าสำรวจลึกเข้าไปใน valley ต่อ)
OpenAI ให้เหตุผลว่างานชิ้นนี้อาจเป็นดาบสองคม ทำให้ยังไม่เผยแพร่โมเดลเวอร์ชั่นเต็มรูปแบบ โดย OpenAI ได้เขียนอีกเปเปอร์หนึ่งคู่กันเกี่ยวกับ คมที่สองของ AI ที่อาจถูกนำไปใช้ในทางที่ผิดครับ
https://blog.openai.com/preparing-for-malicious-uses-of-ai/
ตอนนี้เพื่อนๆ สามารถลองเล่น GPT-2 online ได้ที่นี่แล้วครับ สุดยอดมากๆ
ThaiKeras Workshop : ปลดปล่อยจินตนาการไร้ขีดจำกัดด้วย HuggingFace GPT-2!! ThaiKeras (22 April 2020)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > นักวิทยาศาสตร์ได้ค้นพบแบคทีเรียชนิดใหม่ที่สามารถอยู่ได้โดยปราศจากออกซิเจน แบคทีเรียเหล่านี้มีชื่อว่า Bacteroides lactis พบได้ในทะเลสาบแม่น้ำและหนองน้ำทั่วโลก นักวิจัยเชื่อว่า B. lactis อาจมีอยู่ในโลกเป็นเวลา 2 ล้านปี พวกเขาเชื่อว่านี่เป็นรูปแบบสิ่งมีชีวิตที่เก่าแก่ที่สุดที่รู้จักบนโลก แม้ว่าสิ่งมีชีวิตใหม่ไม่ได้ผลิตซ้ำหรือวิวัฒนาการในมหาสมุทรเหมือนกับจุลินทรีย์อื่น ๆ แต่มันก็เป็นบรรพบุรุษโดยตรงของจุลินทรีย์อื่น ๆ ทั้งหมดที่อาศัยอยู่ในโลก
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > สวัสดีชื่อของฉันคือเจมส์และฉันจะทำหน้าที่เป็นหมอดูแลคุณ เพื่อสุขภาพและความปลอดภัยคุณต้องถอดแจ็คเก็ตและหมวกออก มีปืนอยู่ข้างแขนซ้ายของคุณ ดูอย่างใกล้ชิดและคุณจะเห็นว่ามันถูกโหลด มันเป็นเรมิงตัน 641 นั่นคือทั้งหมดที่ ไม่มีใครได้รับอนุญาตให้มีปืนหรือพกอาวุธเลย ถ้าคุณทำคุณจะถูกยิงทันที อย่าแตะต้องปืน > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
สวัสดีครับ วันนี้เราเปิดบทความกันด้วยนิยายซึ่งอาจจะดูแปลกประหลาดไปสักหน่อย แต่นิยายเหล่านี้ถูกแต่งแบบสุ่มๆ โดยโมเดล Deep Learning ที่ชื่อว่า GPT-2 !!
วันนี้ ขอต้อนรับเข้าสู่ ThaiKeras Workshop — GPT-2 Playground ที่ที่เราจะปลดปล่อยจินตนาการ และแต่งเนื้อเรื่องนิยายหรือข่าวต่างๆ ในภาษาไทยด้วยพลังของ GPT-2 และ Google Translate ครับ 😀 😀
Workshop สามารถทดลองได้ทันทีบน Kaggle โดยไม่มีค่าใช้จ่าย https://bit.ly/thaikeras-kaggle-gpt2thai ถ้าใครยังไม่คุ้นเคยกับ Kaggel ทำความรู้จักได้ที่นี่ครับ http://bit.ly/thaikeras-kaggle-setup
อย่างไรก็ดีก่อนจะเริ่มเรามาทำความรู้จักกับ GPT-2 และ HuggingFace กันก่อนดีกว่า
ว่าด้วย GPT2
ในช่วงปีที่ผ่านมา 1 ในข่าวบันลือโลกของวงการ AI และ DeepLearning ก็คือ โมเดลที่ชื่อ GPT-2 ของทีม OpenAI ที่สามารถแต่งประโยคได้ราวกับมนุษย์ (ในแง่ของไวยากรณ์) บนเรื่อง "อะไรก็ได้" ไม่ว่าจะเป็นแนวนิยายวิทยาศาสตร์ นิยายโรแมนติก นิยายสยองขวัญ สารานุกรมแบบ Wikipedia ข่าวบนสื่อต่างๆ ฯลฯ เนื่องจาก GPT-2 นั้นถูกฝึกสอนบน texts ระดับมหาศาลบน internet ชนิดที่มนุษย์ใช้เวลาอ่านทั้งชีวิตก็ไม่จบไม่สิ้น แฟนพันธุ์แท้ของวงการ AI นี้ไม่มีใครไม่รู้จัก GPT-2 แน่นอน
อัน GPT-2 นั้นเป็นหนึ่งในโมเดลของตระกูล Transformers ที่เก่งเรื่อง "สร้างเนื้อเรื่อง" ส่วนโมเดลในตระกูล Transformer อื่นๆ ที่ดังระดับโลก อาทิเช่น BERT, ROBERTA, BART, T5 นั้นต่างก็เก่งกาจด้านภาษาอื่นๆ แตกต่างกันออกไป เช่น งานตีความหมายของประโยค งานย่อความ งานแปลภาษา เป็นต้น อย่างไรก็ดีใน Workshop นี้เราจะมาเล่น GPT-2 กันครับ
การทำงานของ GPT-2 ในหลักการนั้นง่ายมากครับ เราเพียงใส่ประโยคเริ่มต้นอะไรไปก็ได้ แล้วเจ้า GPT-2 มันก็จะไปแต่งประโยคต่อขึ้นมาเองอย่างน่ามหัศจรรย์!!! ตัวอย่างเช่น ในตัวอย่างแบคทีเรียข้างต้น เราเพียงใส่ประโยคเริ่มต้นว่า "นักวิทยาศาสตร์ได้ค้นพบแบคทีเรียชนิดใหม่ที่สามารถอยู่ได้โดยปราศจากออกซิเจน" ส่วนที่เหลือเจ้า GPT-2 ก็จะเป็นผู้จัดการจินตนการต่อเองครับ และที่เจ๋งสุดๆ ก็คือเราสามารถให้มันแต่งเนื้อเรื่องเป็นร้อยแบบที่แตกต่างกันจากประโยคเริ่มต้นประโยคเดียวของเราก็ยังได้ แบบง่ายๆ !! เช่น เรื่องข้างล่างนี้เป็นอีกเวอร์ชั่น จากเรื่องข้างบน
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > นักวิทยาศาสตร์ได้ค้นพบแบคทีเรียชนิดใหม่ที่สามารถอยู่ได้โดยปราศจากออกซิเจน จุลินทรีย์ที่ไม่ได้อยู่ในมหาสมุทรเหล่านี้มีชื่อเสียงในด้านความสามารถในการอยู่รอดในสภาวะที่รุนแรงเช่นช่องระบายอากาศใต้ทะเลลึกและอุณหภูมิสูง > ทีมนักวิจัยนำโดยดร. Danyel Wiercinski แห่งมหาวิทยาลัยฮาร์วาร์ดได้ค้นพบแบคทีเรียเหล่านี้ในตัวอย่างจากพื้นมหาสมุทรนอกชายฝั่งของออสเตรเลีย ในการวิจัยที่ตีพิมพ์ใน PNAS เมื่อสัปดาห์ที่แล้วทีมได้ค้นพบสายพันธุ์ชื่อ Oligophaga melan > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
สังเกตความเจ๋งที่ว่ามันสามารถตั้งชื่อสายพันธุ์แบคทีเรีย ชื่อนักวิทยาศาสตร์ รวมทั้งชื่อวารสารวิชาการได้อย่างแนบเนียนสุดๆ อีกด้วย GPT-2 ยังสามารถแต่งเนื้อเรื่องอื่นๆ อีกมากมายที่เราสามารถอ่านกันได้เพลิดเพลินใจไปเลย!!
HugggingFace ฮีโร่ผู้ทลายกำแพงด้านภาษาของ Deep NLP
ถึงแม้ตอนแรกจะมีข้อถกเถียงกันมากมายว่าการปลดปล่อย GPT-2 นั้นจะเป็นอันตรายหรือไม่เพราะคนสามารถนำไปช่วยสร้าง Fake News ต่างๆ ได้ อย่างไรก็ดีหลังจากทีม OpenAI ได้ศึกษาเรื่องข้อดีข้อเสียร่วมกับทีม AI อื่นๆ อีกหลายทีม ว่าข้อดีนั้นมีมากกว่าข้อเสีย ทีม OpenAI ก็เลยตัดสินใจเผยแพร่โมเดล GPT-2 ให้คนทั่วไปใช้ในที่สุด
โดย GPT-2 นั้นได้ถูกเผยแพร่มาสักพักแล้ว โดยมีหลายขนาดตั้งแต่ GPT-2 จิ๋ว กลาง ใหญ่ จนถึง GPT-2 "ยักษ์" ที่เก่งกาจขึ้นเรื่อยๆ แต่ก็ทำงานช้าลงเรื่อยๆ เช่นกัน
อย่างไรก็ดี โค้ดของทีม OpenAI นั้นค่อนข้างใช้งานยาก และทีมงาน ThaiKeras เราเองก็หาโค้ด version Keras ไม่ได้สักที เราเลยไม่ได้มีโอกาสลองเล่นอะไรมากนัก จนกระทั่งมีทีม AI ฮีโร่ของโลกที่ชื่อว่า HuggingFace ออกมาทำ API Opensource สำหรับ transformer ทั้งหมด (ไม่ใช่แค่ GPT-2) ทั้งในเวอร์ชั่น Tensorflow+Keras และ Pytorch ซึ่งใช้งานได้สะดวกและสุดยอดมากๆๆๆๆ
ด้วยพลังของ HuggingFace นั้น เราสามารถเรียกใช้ Transformer ต่างๆ กันแบบง่ายเหลือเชื่อ เขียนโปรแกรมสิบกว่าบรรทัดเท่านั้น 😀 และยังสามารถเซพโหลดข้อมูลจาก Pytorch สลับไปมากับ Keras ได้อีกด้วยทำให้ทำลายกำแพงความแตกต่างทางภาษาของวงการ DeepNLP ไปโดยสิ้นเชิง
นอกจากนี้การ Generate texts ให้เป็นธรรมชาตินั้นยังยากเทคนิกมาตรฐานเช่น Greedy หรือ Beam Search นั้นพบว่าไม่เป็นธรรมชาติและมักให้ประโยคซ้ำๆ มีงานวิจัยใหม่ๆ ออกมามากมายในช่วงปี 2019 และ Team HuggingFace นี้ยัง implement 2 วิธีสร้าง texts ที่ได้รับการยอมรับที่สุดในปัจจุบัน (Top-K & Top-P sampling) ให้เราใช้เพียงกระดิกนิ้ว ซึ่งเพื่อนๆ จะได้เรียนรู้วิธีใน Workshop นี้ด้วยครับ
จึงต้องขอกราบขอบพระคุณทีม HuggingFace https://huggingface.co/ งามๆ มา ณ ที่นี้ด้วยครับ
Google Translation Python Library ท้ายที่สุดขอพูดถึง library จิ๋วแต่แจ๋ว https://github.com/ssut/py-googletrans ซึ่งสามารถทำให้เราใช้ google translate ได้ง่ายๆ เพียงหนึ่งบรรทัดเท่านั้น
ใน Workshop นี้เราจะไม่ได้ใช้ GPT-2 ที่ถูกสอนบน "ภาษาไทย" โดยตรง (เพราะต้องใช้ทรัพยากรสอนที่มหาศาลมาก) แต่เราจะ "ลักไก่" ด้วยการ "แปลไป แปลกลับ" แทน นั้นคือ เราจะแปล "ประโยคเริ่มต้นภาษาไทย" เป็นภาษาอังกฤษแล้วให้ GPT-2 ไปสร้างเนื้อเรื่องต่อ เมื่อแต่งเรื่องเสร็จแล้ว เราก็จะ "แปลกลับ" เป็นภาษาไทยอีกรอบกัน 😀
ถ้าพร้อมแล้วก็เริ่มกันเลยที่ลิงก์นี้ครับ https://bit.ly/thaikeras-kaggle-gpt2thai
ตัวอย่างใช้ GPT2 แต่งเพลง และทำนอง สไตล์ folk music