ฝึกฝนโมเดล Multimodal Embedding & Reranker ด้วย Sentence Transformers
ในโลกของปัญญาประดิษฐ์ที่ก้าวหน้าอย่างรวดเร็ว โมเดลภาษาขนาดใหญ่ (Large Language Models - LLMs) ได้แสดงศักยภาพอันน่าทึ่งในการทำความเข้าใจและสร้างข้อความ แต่การทำความเข้าใจโลกจริงนั้นไม่ได้จำกัดอยู่แค่ข้อความเท่านั้น การผสมผสานข้อมูลจากหลายรูปแบบ (Multimodal) เช่น ข้อความ รูปภาพ วิดีโอ และเสียง กลายเป็นกุญแจสำคัญในการสร้างระบบ AI ที่มีความสามารถรอบด้านมากขึ้น
ในบทความนี้ เราจะเจาะลึกถึงวิธีการฝึกฝนและปรับแต่ง (Finetune) โมเดล Multimodal Embedding และ Reranker โดยใช้ไลบรารี Sentence Transformers ซึ่งเป็นเครื่องมือที่ทรงพลังและใช้งานง่ายสำหรับการสร้างโมเดลสำหรับการค้นหาข้อมูลและการเปรียบเทียบความคล้ายคลึงกันของข้อความ
ทำไมต้อง Multimodal?
โมเดลทั่วไปที่ถูกฝึกฝนบนข้อมูลที่หลากหลายมักจะทำงานได้ดีในหลายๆ ด้าน เช่น การจับคู่รูปภาพกับข้อความ การตอบคำถามเชิงภาพ หรือการทำความเข้าใจเอกสาร แต่ความเก่งกาจนี้มักแลกมาด้วยการที่โมเดลนั้นไม่ใช่ตัวเลือกที่ดีที่สุดสำหรับงานเฉพาะทางใดงานหนึ่ง
ลองนึกภาพงาน Visual Document Retrieval (VDR) ที่มีเป้าหมายคือการค้นหาหน้าเอกสารที่เกี่ยวข้อง (เช่น รูปภาพที่มีแผนภูมิ ตาราง และการจัดวางที่สมบูรณ์) จากชุดเอกสารจำนวนมาก โดยอาศัยคำค้นหาที่เป็นข้อความ งานนี้ต้องการความเข้าใจที่ลึกซึ้งเกี่ยวกับโครงสร้างเอกสาร แผนภูมิ ตาราง และข้อความ ซึ่งแตกต่างจากการจับคู่รูปภาพรองเท้ากับคำอธิบายสินค้า
การปรับแต่งโมเดลด้วยข้อมูลเฉพาะทาง (Domain-specific data) จะช่วยให้โมเดลเรียนรู้รูปแบบที่ซับซ้อนเหล่านั้นได้ ในการทดลองของเรา การปรับแต่งโมเดลทำให้ประสิทธิภาพ NDCG@10 เพิ่มขึ้นจาก 0.888 เป็น 0.947 ซึ่งสูงกว่าโมเดล Multimodal อื่นๆ ที่เราทดสอบทั้งหมด รวมถึงโมเดลที่มีขนาดใหญ่กว่าถึง 4 เท่า
องค์ประกอบสำคัญในการฝึกฝนโมเดล Multimodal
การฝึกฝนโมเดล Sentence Transformer แบบ Multimodal นั้นมีองค์ประกอบหลักเหมือนกับการฝึกฝนโมเดลแบบ Text-only ดังนี้:
- Model: โมเดล Multimodal ที่ต้องการฝึกฝนหรือปรับแต่ง
- Dataset: ข้อมูลที่ใช้สำหรับการฝึกฝนและการประเมินผล
- Loss Function: ฟังก์ชันที่ใช้วัดประสิทธิภาพของโมเดลและนำทางการปรับปรุง
- Training Arguments (Optional): พารามิเตอร์ที่ส่งผลต่อประสิทธิภาพการฝึกฝนและการติดตามผล
- Evaluator (Optional): เครื่องมือสำหรับประเมินโมเดลก่อน ระหว่าง และหลังการฝึกฝน
- Trainer: เครื่องมือที่รวบรวมโมเดล ชุดข้อมูล ฟังก์ชัน Loss และองค์ประกอบอื่นๆ เพื่อเริ่มการฝึกฝน
การเลือกและเตรียมโมเดล
โดยทั่วไปแล้ว เรามักจะเลือกปรับแต่งโมเดล Multimodal Embedding ที่มีอยู่แล้ว หรือเริ่มต้นจากโมเดล Vision-Language Model (VLM) ไลบรารี Sentence Transformers จะตรวจจับรูปแบบข้อมูลที่รองรับจาก Processor ของโมเดลโดยอัตโนมัติ
หากต้องการปรับแต่งโมเดล Multimodal Embedding ที่มีอยู่แล้ว (เช่น โมเดลที่มีไฟล์ modules.json) คุณสามารถส่งค่า processorkwargs และ modelkwargs เพื่อควบคุมการประมวลผลล่วงหน้าและการโหลดโมเดลตามลำดับ
ในกรณีที่ต้องการเริ่มต้นจาก VLM Checkpoint ที่ยังไม่เคยถูกฝึกฝนเพื่อสร้าง Embedding มาก่อน Sentence Transformers จะพยายามจดจำสถาปัตยกรรม Infer รูปแบบข้อมูลที่รองรับจาก Processor และตั้งค่า Forward Method และ Output Handling ที่เหมาะสม หากการตรวจจับอัตโนมัติไม่สมบูรณ์แบบสำหรับโมเดลใดโมเดลหนึ่ง คุณสามารถแก้ไขการตั้งค่าในไฟล์ sentencebertconfig.json เพื่อปรับแต่งการตั้งค่า Modality, Forward Methods และการจัดการ Output ได้
การสร้างชุดข้อมูล (Dataset)
สำหรับตัวอย่าง Visual Document Retrieval เราใช้ชุดข้อมูล tomaarsen/llamaindex-vdr-en-train-preprocessed ซึ่งเป็นชุดข้อมูลภาษาอังกฤษที่ผ่านการประมวลผลล่วงหน้าแล้ว โดยชุดข้อมูลต้นฉบับถูกเผยแพร่พร้อมกับบทความ Visual Document Retrieval Goes Multilingual โดย LlamaIndex ประกอบด้วยตัวอย่าง Query-Image แบบหลายภาษาประมาณ 500,000 รายการ ที่รวบรวมจาก PDF สาธารณะบนอินเทอร์เน็ต พร้อม Query ที่สร้างขึ้นสังเคราะห์โดยใช้ VLM
รูปแบบของชุดข้อมูลจะต้องสอดคล้องกับ Loss Function ที่เลือก โดยมีกฎดังนี้:
- หาก Loss Function ต้องการ
Labelชุดข้อมูลต้องมีคอลัมน์ชื่อ "label" หรือ "score" - คอลัมน์อื่นๆ นอกเหนือจาก "label" หรือ "score" จะถือเป็น Inputs และจำนวนคอลัมน์ต้องตรงกับจำนวน Inputs ที่ถูกต้องสำหรับ Loss Function ที่เลือก
สำหรับชุดข้อมูล Multimodal Inputs สามารถประกอบด้วย:
- Image: รูปภาพ PIL, พาธไฟล์, URL หรือ Array ของ NumPy/Torch
- Audio: พาธไฟล์, Array ของ NumPy/Torch หรือ Dict ที่มีคีย์ "array" และ "sampling_rate"
- Video: พาธไฟล์, Array ของ NumPy/Torch หรือ Dict ที่มีคีย์ "array" และ "video_metadata"
- **Mult
ขอบคุณ แหล่งข้อมูล
https://huggingface.co/blog/train-multimodal-sentence-transformers