Transformers คืออะไร

Transfomers คือแบบจำลอง Deep Learning สำหรับเรียนรู้และประมวลผลข้อมูลเพื่องานด้าน AI โดยจุดเริ่มต้นงานนี้อ่านได้ในเอกสารงานวิจัยนี้ Attention is All You Need

สำหรับตัวอย่างสามารถดูและทำตามได้ใน Colab Notebook นี้ สามารถนำไปปรับเปลี่ยนเรียนรู้ได้เต็มที่ครับ

การใช้ Transformers สำหรับงานจำแนกประเภทรูปภาพ

เริ่มแรกนั้นจะต้องติดตั้งไลบรารี่ Transformers ก่อน เพื่อไว้เรียกใช้งานโมเดลและฟังก์ชันต่าง ๆ

ในขั้นตอนนี้จะใช้โมเดล Vision Transformers โดยมีการนำเข้าดังนี้

  1. ViTFeatureExtractor สำหรับสกัดเอาคุณลักษณะสำคัญจากรูปภาพออกมา
  2. ViTForImageClassification สำหรับให้โมเดล ViT รู้จักทำงานจำแนกประเภทภาพ
  3. Torch, PIL, requests, BytesIO ในที่นี้จะใช้สำหรับเตรียมข้อมูลก่อนนำเข้าโมเดล

ส่งโมเดลไปยัง GPU โดยใช้ฟังก์ชัน .to() ของ PyTorch เพื่อให้สามารถประมวลผลข้อมูลได้เร็วขึ้น

ส่วนนี้จะเป็นการรับ Input รูปภาพเป็นลิงก์ และแปลงเป็น RGB
(อ่านเพิ่มเติมเกี่ยวกับการโหลดข้อมูลภาพจากเน็ตได้ที่นี่)

การให้โมเดลจำแนกประเภทจะมีขั้นตอนดังนี้

  1. สกัดเอาคุณลักษณะของรูปภาพด้วย Feature Extractor ที่โหลดมาโดยผ่านข้อมูลรูปภาพ พร้อมกับระบุประเภทของ tensor ที่ต้องการให้ฟังก์ชันคืนค่ามา (ในที่นี้เอาเป็น torch)
  2. ส่งข้อมูลที่สกัดออกมานี้ไปอยู่บน GPU เดียวกันกับโมเดล
  3. เรียกใช้โมเดลให้โมเดลหา outputs
  4. ค่าที่เป็นคำตอบจะอยู่ในสิ่งที่เรียกว่า logits
  5. ทำ Postprocess เพื่อถอดรหัสจาก outputs ที่เป็นชุดตัวเลขให้เป็น Labels ที่มนุษย์เข้าใจได้ โดยคำตอบที่ได้จากรูปข้างต้นก็คือ Sport Car

หากต้องการทำนายผลพร้อมกันหลาย ๆ รูปภาพสามารถทำได้โดยการเตรียมข้อมูลภาพเอาไว้ก่อน (ในที่นี้ลองให้ดู 2 รูป)

สิ่งที่แตกต่างจากเดิมคือตัวสกัดคุณลักษณะของรูปภาพเราจะรับทีละ 2 รูป และโมเดลก็ทำการประมวลผลทีละ 2 ข้อมูลภาพเช่นกัน ด้วยวิธีการนี้เราสามารถทำ Batch Processing ได้ (เช่นทำพร้อมกันทีละ 100 รูป 1000 รูป เป็นต้น) จากนั้นก็ดูผลลัพธ์ด้วยวิธีการเดิม แต่ให้ระบุ Index เพิ่มด้วย (รูป 1 logits 0, รูป 2 logits 1 ไล่ไปเรื่อย ๆ)

โดยการใช้งานโมเดลเพื่อจำแนกรูปภาพนี้ก็สามารถทำงานได้ทันที สำหรับประโยชน์ของการแยกประเภทรูปได้นั้นมีมากมาย เช่นแจ้งเตือนเมื่อเห็นภาพอันตราย สัตว์ร้าย, จัดหมวดหมู่ หรือจะนำไปปรับกับงานเฉพาะอย่างก็ได้เช่นกัน

การใช้ Transformers สำหรับงานจำแนกข้อความ ด้าน Sentiment Analysis

งาน Sentiment Analysis คือการวิเคราะห์ความรู้สึกของประโยคหรือข้อความนั้น ๆ ว่าให้ความรู้สึกอย่างไร โดยการที่เรานำโมเดลมาทำนายผลส่วนนี้ได้ย่อมช่วยให้สามารถวิเคราะห์ได้หลายอย่างเช่น จัดกลุ่มความพึงพอใจลูกค้า, ระบบช่วยเหลือเร่งด่วนสำหรับลูกค้าที่ไม่พอใจ เป็นต้น

ในขั้นตอนนี้จะใช้โมเดล BERT โดยมีการนำเข้าดังนี้

  1. DistilBertTokenizer สำหรับแปลงคำเป็นชุดตัวเลขเพื่อให้โมเดลประมวลผลได้
  2. DistilBertForSequenceClassification สำหรับให้โมเดลทำงานจำแนกประเภทประโยค
  3. Torch ในที่นี้จะใช้สำหรับเตรียมข้อมูลก่อนนำเข้าโมเดล

ในการใช้งานนั้นมีกระบวนการดังนี้

  1. Inputs ในที่นี้เรารับเป็นชุดข้อความกี่ประโยคก็ได้ ในที่นี้ลองให้ดู 3 ประโยค โดยประโยคแรกจะเห็นชัดว่าเชิงบวก, ประโยคสองจะเห็นว่าเป็นเชิงลบ, และประโยคที่สามจะตัดสินใจยากขึ้นว่าบวกหรือลบ แต่โดยรวมแล้วมนุษย์ก็น่าจะตีความว่าเป็นประโยคเชิงบวก
  2. ทำการ Tokenizer แปลงประโยคเหล่านี้เป็นตัวเลข โดยปรับให้ความยาวประโยคเท่ากัน และคืนค่าเป็น Tensor Torch
  3. ทำการทำนายผล และแปลงเป็นภาษามนุษย์เหมือนเดิม

จะเห็นได้ว่าโมเดลเข้าใจว่าประโยคแรกนั้นเป็นเชิงบวกความหมายดี, ประโยคที่สองเป็นเชิงลบ, และประโยคที่สามที่ซับซ้อนขึ้นก็ยังเข้าใจว่าเป็นเชิงบวกได้

ติดตามบทความอื่น ๆ เพิ่มเติมได้ที่ SBC Blog

LINE OA: SUBBRAIN

Facebook: SUBBRAIN

Categories: Data&IT