Classification Transformer Model?

สำหรับ Transformer Model มันคือรากฐานของ Large Language Model (LLM) ในปัจจุบัน โดยตัวโมเดลนี้หลัก ๆ แล้วถูกสร้างขึ้นมาเพื่อให้สามารถทำความเข้าใจบริบทและความหมายของภาษาได้ มากกว่าการดูเพียงแค่ความน่าจะเป็นหรือรูปแบบโครงสร้างทางภาษาแบบเดิม ๆ เพียงอย่างเดียว ซึ่งในปัญหาแรก ๆ ที่โมเดล Transformers ถูกหยิบมาใช้มักจะเป็นโจทย์ Classification ที่เกี่ยวข้องกับงานด้านภาษา (NLP) เช่น ต้องการจำแนกว่าข้อความนี้เป็น Spam หรือไม่, คอมเม้นท์นี้มีความหมายเชิง Toxic หรือไม่, รีวิวนี้ดีหรือไม่ดี และอื่น ๆ อีกมากมาย เป็นต้น โดยในบทความนี้จะขอพูดถึงในเชิงเทคนิคว่าถ้าเรามี Transformers Model อยู่ 2 ตัวเราจะเพิ่มประสิทธิภาพการทำ Classification ได้อย่างไร ด้วยวิธีการที่ง่ายและไม่ซับซ้อน

เกริ่นเล็กน้อยเกี่ยวกับโมเดลและข้อมูลที่ทดสอบ

ข้อมูลสำหรับ Train และ Validation

ในการทดสอบนี้จะใช้ข้อมูลใน Kaggle (Getting Started Competition) ซึ่งเกี่ยวกับข้อความในทวิตเตอร์ที่ทวีตถึงเรื่องภัยพิบัติ (ข้อมูลตั้งแต่สมัยยังเป็น Twitter อยู่) โดยเราจะต้องทำการจำแนกว่าข้อความใหม่ ๆ ที่ถูกทวีตเข้ามาในระบบนั้นเป็นเรื่องเกี่ยวกับภัยพิบัติจริงหรือไม่ และโมเดลที่นำมาทดสอบนี้ได้แก่

  1. FacebookAI/roberta-large โดยจะใช้วิธี Fine-Tuning แบบ rsLoRA (อ่านเพิ่มเติมได้ที่นี่)
  2. google-bert/bert-base-uncased จะใช้การ Fine-Tuning แบบปกติ

คะแนนที่ได้ของแต่ละโมเดล

หากทำ Classification โดยใช้เฉพาะโมเดลที่หนึ่ง (rsLoRA Roberta Large) จะได้คะแนนบนชุดทดสอบที่ 83.941%

และถ้าใช้เฉพาะโมเดลที่สองเพียงอย่างเดียวจะได้คะแนนบนชุดทดสอบที่ 83.481%

จะเห็นว่าทั้งสองโมเดลมีคะแนนที่ไม่ได้แตกต่างกันมากนัก แต่ถ้าใช้วิธีการ Weighted Average ระหว่างคำตอบของทั้งสองโมเดลนี้จะช่วยให้คะแนนเพิ่มขึ้นได้เป็น 84.216%

การทำ Weighted Average?

สำหรับงาน Classification นั้นสุดท้ายแล้วคำตอบที่ได้จากโมเดลไม่ว่าจะ Machine Learning หรือ Deep Learning ก็ตามในขั้นตอนสุดท้ายมันจะดูจากความน่าจะเป็นว่าสิ่งที่โมเดลได้คิดมาทั้งหมดนั้นควรจะเป็นคลาสใด (ในที่นี้ก็คือโอกาสที่จะเป็นทวีตภัยพิบัติ หรือ ทวีตที่ไม่เกี่ยวกับภัยพิบัติ) ฉะนั้นแล้วเราสามารถนำคะแนนของแต่ละคลาสตรงนี้มาถ่วงน้ำหนักกันได้ระหว่างโมเดลหลาย ๆ ตัว กล่าวแบบสั้น ๆ คือแทนที่จะเชื่อโมเดลตัวเดียว เราเชื่อในการให้โมเดลหลาย ๆ ตัวช่วยกันเลือกมากกว่าโดยที่กำหนดว่าให้น้ำหนักกับโมเดลไหนมากน้อยได้ ด้วยวิธีนี้จะช่วยให้โมเดลลดปัญหา Overfitting บนคลาสใดคลาสหนึ่งได้เพราะนำโมเดลตัวอื่นมาร่วมคิดด้วย และรองรับกับการเจอข้อมูลใหม่ ๆ มากขึ้น (แต่ข้อเสียคือเราต้องรันทั้ง 2 โมเดล ซึ่งหากเป็นงานประเภท Application หรือ Platform ที่คนใช้เยอะ ๆ อาจไม่คุ้มค่าเปลืองเวลาและทรัพยากรอาจจะต้องหาวิธีในการรันส่วนนี้เพิ่มเติม) โดยวิธีการทำง่าย ๆ ดังนี้

1. โหลดโมเดลตัวที่หนึ่งที่เราได้ทำการ Fine-Tuning เรียบร้อยแล้ว

2. โหลดโมเดลตัวที่สองที่ Fine-Tuning แล้วเช่นกัน

3. นำโมเดลแต่ละตัวมาทำ Classification บนชุดข้อมูลทดสอบ (ที่ต้องแยกข้อมูลทดสอบเป็น 2 ชุดเพราะ โมเดลสองตัวนี้ใช้ Tokenizer แตกต่างกัน) โดยขั้นตอนนี้เราจะเอา Logits ที่ได้จากการคิดคำตอบของโมเดลมาเข้าฟังก์ชัน Softmax เพื่อแปลงค่าให้อยู่ในช่วง 0-1 หรือก็คือการแปลงค่าให้อยู่ในรูปแบบ Probability Distribution จากนั้นเก็บค่าความน่าจะเป็นของคำตอบของแต่ละโมเดลไว้

4. ความน่าจะเป็นของคำตอบที่เราเก็บไว้นั้นจะอยู่ใน List และแต่ละตัวจะเป็น Array อยู่ เพื่อความสะดวกในการคิดทีเดียวทั้งก้อน เราจึงนำมา Concatenate กันก่อนเพื่อให้ทั้งหมดรวมอยู่ในก้อนเดียวกัน จากนั้นทำ Weighted Average โดยการรวมความน่าจะเป็นของคำตอบระหว่างโมเดลที่หนึ่งและสองเข้าด้วยกัน (ก็คือจับมาบวกกันตรง ๆ) โดยที่บอกว่านำคะแนนจากโมเดลที่หนึ่งมาใช้ที่ 55% (0.55) และจากโมเดลที่สอง 45% (0.45) รวมเป็น 100% พอดี และทำการเลือกคำตอบจากคลาสที่มีคะแนนเยอะที่สุดเหมือนเดิม

Conclusion

การทำ Weighted Average สั้น ๆ คือการนำความน่าจะเป็นของคำตอบในแต่ละคลาสของโมเดลตั้งแต่ 2 ตัวขึ้นไปมาบวกรวมกัน โดยกำหนดว่าจะเอาจากโมเดลตัวไหนมาคิดมากน้อยอย่างไร ข้อดีคือส่วนใหญ่ช่วยให้โมเดลได้คำตอบที่ถูกต้องมากขึ้น ลด Overfitting ได้จากการที่ไม่ได้เชื่อแค่โมเดลตัวเดียว ข้อเสียคือจะต้องมีโมเดลหลายตัวและถ้าโมเดลแต่ละตัวไม่ได้มีข้อดีอะไรที่จะช่วยกันได้ก็อาจไม่ได้ทำให้ประสิทธิภาพดีขึ้นขนาดนั้น และข้อควรระวังที่ไม่ควรทำคือการพยายามหา Weighted ที่ดีที่สุดระหว่างโมเดลที่นำมารวมกัน เพราะเราไม่รู้ว่าสุดท้ายแล้วชุด Test หรือ Unseen Data เป็นอย่างไรการที่พยายามหา Weighted ที่ดีสุดบนชุดทดสอบเล็ก ๆ ของเราเพียงอย่างเดียวอาจทำให้ทำงานได้ไม่ดีเวลาเจอกับข้อมูลใหม่ ๆ ได้

Logo FB-1.1

Deep Learning & Neural Networks

วิธีการเรียนรู้ขั้นสูงของคอมพิวเตอร์ Deep Learning สิ่งนี้มีการคิดที่ซับซ้อนกว่า ML ทั่วไปหรือเรียกได้ว่าเป็นวิธีการที่ใช้สร้าง ML อีกทีก็ว่าได้
googlelogo

Work Profile – Google

ชีวิตการทำงาน และชีวิตส่วนตัวบน Smartphone เครื่องเดียวนั้นจะไม่เป็นปัญหาอีกต่อไปด้วย Android Work Profile สิ่งนี้จะช่วยให้ชีวิตคุณง่ายขึ้น
sn1

Lucid EV Challenging Tesla

Lucid Motors โชว์รถหรูซีดาน EV รุ่น Lucid Air ทำความเร็วในสนามแข่ง WeatherTech Raceway Laguna Seca เทียบเท่า Tesla

ติดตาม SUBBRAIN ได้ที่นี่

Categories: Data&IT