ข้อบกพร่องที่เงียบงันของการฝังตัว: เหตุใด AI ของคุณจึงทำผิดพลาด
ข้อมูลข้อความที่ไม่มีโครงสร้างแพร่หลายมากขึ้นในช่วงนี้ ตั้งแต่เอกสารทางเทคนิคและวรรณกรรมทางวิทยาศาสตร์ไปจนถึงโพสต์บนโซเชียลมีเดียและการประเมินของลูกค้า ธุรกิจต่างๆ จากหลายภาคส่วนเริ่มตระหนักมากขึ้นเรื่อยๆ ว่าข้อความเหล่านี้ให้ข้อมูลเชิงลึกอันล้ำค่า แต่การได้รับ จัดเรียง และใช้งานข้อมูลเหล่านี้เป็นเรื่องยาก
ความสมบูรณ์ของความหมายของภาษาของมนุษย์นั้นไม่สามารถอธิบายได้ด้วยเทคนิคการประมวลผลข้อความตามคำสำคัญทั่วไป ซึ่งได้พิสูจน์แล้วว่าไม่เพียงพอ ตัวอย่างเช่น การค้นหาคำว่า "ปัญหาเกี่ยวกับรถยนต์" อาจไม่พบเอกสารที่เกี่ยวข้องกับ "ปัญหาเกี่ยวกับรถยนต์" และบทวิจารณ์ผลิตภัณฑ์ที่กล่าวถึง "หน้าจอค้าง" อาจพลาดไปเมื่อตรวจสอบข้อร้องเรียนของลูกค้าเกี่ยวกับ "ระบบขัดข้อง"
การฝังข้อความ ซึ่งเป็นเทคนิคใหม่ที่แปลงคำและประโยคเป็นเวกเตอร์ตัวเลขที่จับความหมายได้ ได้รับการพัฒนาและนำมาใช้เป็นผลจากข้อจำกัดพื้นฐานนี้ บริษัทเทคโนโลยีขนาดใหญ่ได้ทุ่มเงินหลายพันล้านเพื่อสร้างแบบจำลองการฝังที่ก้าวหน้ายิ่งขึ้นเรื่อยๆ การฝังของ OpenAI, RoBERTa ของ Meta, BERT ของ Google และทางเลือกโอเพนซอร์สอื่นๆ มากมาย ถือเป็นส่วนสำคัญของระบบ NLP ในปัจจุบัน
อย่างไรก็ตาม แม้ว่าจะมีการใช้กันอย่างแพร่หลาย แต่เราก็ยังไม่เข้าใจอย่างถ่องแท้ว่าโมเดลการฝังเหล่านี้ทำงานอย่างไรในสถานการณ์จริง การขาดความเข้าใจนี้ส่งผลให้เกิด:
- ข้อผิดพลาดในการใช้งานที่มีค่าใช้จ่ายสูงซึ่งเกิดขึ้นเมื่อระบบไม่ตอบสนองความต้องการทางธุรกิจ
- ประสบการณ์ผู้ใช้ที่ไม่ดีเมื่อระบบค้นหาหรือระบบแนะนำละเลยเนื้อหาที่เกี่ยวข้อง ความแตกต่างด้านประสิทธิภาพระหว่างกลุ่มประชากรผู้ใช้ หมวดหมู่เนื้อหา และภาษาต่างๆ
- การใช้ทรัพยากรอย่างไม่มีประสิทธิภาพโดยองค์กรที่ใช้รูปแบบที่ซับซ้อนเกินไป
ความเกี่ยวข้องและการนำไปประยุกต์ใช้กับอุตสาหกรรม
อุตสาหกรรมต่างๆ มากมายสามารถได้รับประโยชน์โดยตรงจากการวิเคราะห์นี้:
การค้าปลีกและอีคอมเมิร์ซ:
- ปรับปรุงการค้นหาผลิตภัณฑ์เพื่อรองรับการสอบถามหลายภาษา คำพ้องความหมาย และการสะกดผิด
- การปรับปรุงระบบคำแนะนำเพื่อระบุผลิตภัณฑ์ที่เปรียบเทียบได้ที่มีคำอธิบายที่แตกต่างกัน
- การพัฒนาเครื่องมือวิเคราะห์บทวิจารณ์ที่ซับซ้อนมากขึ้นซึ่งตระหนักถึงความละเอียดอ่อนในความรู้สึก
การดูแลทางการแพทย์:
- อนุญาตให้มีการจับคู่คำศัพท์ทางการแพทย์ในรูปแบบสัญลักษณ์ต่างๆ ในระบบการค้นคืนเอกสารทางคลินิก
- โดยไม่คำนึงถึงความสำเร็จทางการศึกษา การปรับปรุงการประมวลผลภาษาของผู้ป่วยเพื่ออธิบายอาการ
- การปรับปรุงการค้นหาเอกสารทางการแพทย์โดยการจับคู่แนวคิดระหว่างตัวแปรทางเทคโนโลยีให้ดีขึ้น
การเงิน:
- การปรับปรุงการติดตามการปฏิบัติตามข้อกำหนดสำหรับการละเมิดนโยบายโดยไม่คำนึงถึงถ้อยคำ
- การปรับปรุงการตรวจจับการฉ้อโกงผ่านการระบุรูปแบบที่น่าสงสัยในความแตกต่างทางภาษา
- ปรับปรุงการบริการลูกค้าโดยทำความเข้าใจคำถามประเภทต่างๆ ของผู้บริโภคได้ดีขึ้น
การค้นหาว่าโมเดลการฝังตัวของคุณให้ผลลัพธ์ที่คล้ายกันอย่างไร: การวิเคราะห์นี้ช่วยให้องค์กรตัดสินใจได้ดีขึ้นเกี่ยวกับการเลือกโมเดล ความต้องการในการประมวลผลล่วงหน้า และกลยุทธ์การปรับปรุงที่เป็นไปได้ โดยนำเสนอวิธีการที่เป็นระบบเพื่อทำความเข้าใจพฤติกรรมการฝังตัว แนวทางนี้ส่งผลให้ระบบการประมวลผลภาษามีประสิทธิภาพ เชื่อถือได้ และยุติธรรมมากขึ้นในที่สุด
การฝังข้อความคืออะไร?
สำหรับผู้ที่ไม่คุ้นเคย การฝังข้อความจะแปลงคำหรือประโยคเป็นเวกเตอร์ตัวเลข ซึ่งโดยพื้นฐานแล้วคือรายการตัวเลขยาวๆ เวกเตอร์หนาแน่นที่มีมิติมากมาย เวกเตอร์เหล่านี้จะถูกวางไว้ในพื้นที่ที่มีมิติสูง ซึ่งความคล้ายคลึงทางความหมายจะแสดงด้วยความใกล้ชิด กล่าวอย่างง่ายๆ ก็คือ สิ่งที่มีความหมายคล้ายกันควรจะอยู่ใกล้กันในพื้นที่นี้ การฝังข้อความเหล่านี้ขับเคลื่อนทุกสิ่งใน NLP สมัยใหม่ได้อย่างแท้จริง:
เมื่อคุณค้นหาใน Google ระบบจะเข้าใจว่าคุณหมายถึง "โรงแรมในนิวยอร์ก" แม้ว่าคุณจะพิมพ์ว่า "สถานที่พักในนิวยอร์ก" ก็ตาม
เมื่อไคลเอนต์อีเมลของคุณแนะนำการตอบกลับ
เมื่อระบบแนะนำเนื้อหาระบุบทความที่คุณอาจสนใจ
ความสามารถนี้สนับสนุนแอปต่างๆ มากมาย:
- เครื่องมือค้นหาทางความหมาย
- ระบบแนะนำเนื้อหา
- การระบุเจตนาของแชทบอท
- การจัดระเบียบและจัดกลุ่มเอกสาร
- ระบบการจำแนกข้อความและการตอบคำถาม
ประสิทธิภาพของแอปพลิเคชันเหล่านี้ขึ้นอยู่กับว่าโมเดลการฝังตัวสามารถจัดการกับข้อความและภาษาต่างๆ ได้ดีเพียงใด ในขณะที่โมเดลที่ไวต่อรูปแบบการจัดรูปแบบที่เปลี่ยนแปลงเพียงเล็กน้อยอาจประสบปัญหาในการค้นหาจริง โมเดลที่ถือว่า "ฉันชอบผลิตภัณฑ์นี้" และ "ฉันเกลียดผลิตภัณฑ์นี้" เหมือนกันเกือบจะไม่มีประสิทธิภาพสำหรับการวิเคราะห์ความรู้สึก
เหตุใดฉันจึงเริ่มตรวจสอบการฝังโมเดล
ฉันจะไม่มีวันลืมวันที่ฉันกำลังค้นคว้าเกี่ยวกับโมเดลการฝังตัวสำหรับลูกค้ารายหนึ่งของฉันโดยใช้เอกสารตัวอย่าง ฉันพยายามค้นหาคำว่า "แล็ปท็อปที่ไม่มีจอสัมผัส" แต่กลับได้รับคำตอบเกี่ยวกับแล็ปท็อปจอสัมผัสจากดัชนีเวกเตอร์ โมเดลการฝังตัวของเราพลาดการปฏิเสธไปโดยสิ้นเชิง
ช่วงเวลานั้นติดอยู่ในใจฉัน ฉันหมายถึงว่า ถ้าโมเดลไม่สามารถเข้าใจคำว่า "โดยปราศจาก" พื้นฐานได้ แล้วจะมีอะไรอีกที่ขาดหายไป ตอนนั้นทำให้ฉันต้องพบกับเส้นทางที่ไม่คาดคิด ฉันต้องรู้ว่าปัญหาร้ายแรงแค่ไหน แน่นอนว่าเกณฑ์มาตรฐานสำหรับโมเดลการฝังของเราดูน่าประทับใจ แต่โมเดลจะทำงานอย่างไรกับภาษาที่สับสนและอยู่ในโลกแห่งความเป็นจริงที่ผู้ใช้ของเราพิมพ์ทุกวัน เกิดอะไรขึ้นเมื่อคำสะกดผิด ประโยคไม่สมบูรณ์ หรือผู้คนใช้อีโมจิ
หลังจากทดลองใช้ RAG Experiment Accelerator ( https://github.com/microsoft/rag-experiment-accelerator ) กับโมเดลการฝังตัวต่างๆ ในแอปพลิเคชันต่างๆ เป็นเวลาสองปี ฉันได้พัฒนาวิธีการที่เป็นระบบในการประเมินว่าโมเดลเหล่านี้จัดการกับรูปแบบประโยคที่แตกต่างกันอย่างไร สิ่งที่ฉันพบทำให้ฉันกลัว
สิ่งเหล่านี้ไม่ใช่ข้อผิดพลาดที่เกิดขึ้นโดยบังเอิญ แต่เป็นจุดบอดที่เป็นระบบและฝังแน่นอยู่ในวิธีการที่โมเดลเหล่านี้มองเห็นภาษา และไม่มีใครพูดถึงเรื่องนี้ ฉันแบ่งปันผลการค้นพบเหล่านี้เพราะฉันเห็นทีมงานจำนวนมากเสียเวลาหลายเดือนในการนำระบบที่ฝังไว้บนระบบที่ซับซ้อนมาใช้ แต่กลับพบว่าระบบเหล่านี้ขัดข้องในลักษณะที่ไม่คาดคิด
ปัญหานี้ไม่ได้เกิดขึ้นแค่ในเชิงวิชาการเท่านั้น ผลที่ตามมาจากการเข้าใจผิดเกี่ยวกับพฤติกรรมการฝังข้อมูลนั้นร้ายแรงมาก เพื่อนร่วมงานของบริษัทดูแลสุขภาพรายใหญ่แห่งหนึ่งบอกฉันว่าระบบค้นหาข้อมูลทางการแพทย์ของพวกเขาขาดเอกสารทางคลินิกที่เกี่ยวข้อง เนื่องจากโมเดลการฝังข้อมูลของพวกเขาไม่สามารถจัดการกับคำย่อและคำศัพท์ทางการแพทย์ที่แตกต่างกันได้อย่างเหมาะสม ในด้านการดูแลสุขภาพ การเข้าใจผิดประเภทนี้สามารถส่งผลต่อการตัดสินใจในการรักษาได้
ในบริษัทให้บริการทางการเงิน ระบบติดตามการปฏิบัติตามข้อกำหนดของพวกเขาพลาดการละเมิดนโยบาย เนื่องจากโมเดลการฝังตัวของพวกเขาไม่สามารถจดจำว่าประโยคที่เป็นกริยาบอกกรรม ("funds were transfer") มีความหมายเดียวกันกับประโยคที่เป็นกริยาบอกกรรม ("someone transfer funds") ฉันเคยเห็นบริษัทอีคอมเมิร์ซสูญเสียเงินหลายล้านดอลลาร์เนื่องจากระบบค้นหาผลิตภัณฑ์ของพวกเขาไม่สามารถรองรับการพิมพ์ผิดทั่วไปและทางลัดทางภาษาที่ผู้ซื้อใช้
แนวทางการทดสอบของฉัน
ฉันพัฒนากรอบการทดสอบที่ตรวจสอบวิธีการตอบสนองของโมเดลการฝังตัวต่อข้อความประเภทต่างๆ มากมาย โดยใช้ความคล้ายคลึงของโคไซน์เป็นตัวชี้วัด (โดยที่ 1.0 หมายถึงความหมายเหมือนกัน และ 0.0 หมายถึงไม่เกี่ยวข้องกันเลย) ฉันจึงได้ทดสอบกรณีตัวอย่างนับร้อยกรณี ฉันจะอธิบายสิ่งที่พบโดยเน้นที่โมเดลต่างๆ มากมาย รวมถึง MSMarco DistilBERT, การฝังข้อความ OpenAI และอื่นๆ อีกมากมาย และฉันพบรูปแบบที่คล้ายคลึงกันในโมเดลการฝังตัวที่ใช้ตัวแปลงส่วนใหญ่
แยกไม่ออกระหว่างตัวพิมพ์ใหญ่กับตัวพิมพ์เล็ก (เลย)
เรื่องนี้ทำให้ฉันตกใจมาก โมเดลที่ฝังไว้จะเห็นว่า " Apple ประกาศผลิตภัณฑ์ใหม่" และ "Apple ประกาศผลิตภัณฑ์ใหม่" เป็นสิ่งเดียวกันทุกประการ นั่นคือมีคะแนนความคล้ายคลึงที่สมบูรณ์แบบ 1.0 ไม่มีข้อแตกต่างใดๆ เลย
ฉันเจอปัญหานี้กับระบบแคตตาล็อกผลิตภัณฑ์ การค้นหาไม่สามารถแยกความแตกต่างระหว่างแบรนด์ "Apple" กับผลไม้ "apple" ได้ ลูกค้าที่ค้นหาผลิตภัณฑ์ของ Apple จะได้รับสูตรทำพายแอปเปิ้ล คุณคิดว่าลูกค้าของคุณจะพอใจกับผลลัพธ์หรือไม่ ฉันแน่ใจว่าฉันจะไม่ชอบมัน
เหตุใดสิ่งนี้จึงสำคัญ ลองนึกถึงทุกกรณีที่การใช้ตัวพิมพ์ใหญ่เปลี่ยนความหมาย เช่น "Polish" เทียบกับ "polish", "March" เทียบกับ "march", "Bill" เทียบกับ "bill" สำหรับข้อความทางกฎหมายหรือทางการแพทย์ ความแตกต่างเหล่านี้อาจมีความสำคัญ โดยพื้นฐานแล้ว เรากำลังทำงานกับโมเดลที่มองไม่เห็นมิติทั้งหมดของภาษาเขียน มีวิธีแก้ไขปัญหาเหล่านี้ และเราจะกล่าวถึงในภายหลัง มาทำความเข้าใจปัญหาเพิ่มเติมเกี่ยวกับการฝังคำกัน โปรดทราบว่าสิ่งนี้อาจเป็นประโยชน์หากความแตกต่างเหล่านี้ไม่ส่งผลกระทบต่อกรณีที่คุณกำลังจัดการอยู่
ตัวเลขอาจจะถูกแต่งขึ้นมาก็ได้
เรื่องนี้ก็ทำให้ฉันตกใจเหมือนกัน โมเดลการฝังตัวจะเห็นว่า "การลงทุนให้ผลตอบแทน 2% ต่อปี" และ "การลงทุนให้ผลตอบแทน 20% ต่อปี" เป็นสิ่งเดียวกัน โดยมีคะแนนความคล้ายคลึงสูงถึง 0.97 ซึ่ง ไม่มีความแตกต่างที่สังเกตได้ระหว่างสองสถานการณ์นี้
ฉันเจอปัญหานี้กับระบบค้นหาเอกสารทางการเงิน อัลกอริทึมไม่สามารถแยกความแตกต่างระหว่าง "ค่าธรรมเนียมการจัดการ: 0.2%" และ "ค่าธรรมเนียมการจัดการ: 2.0%" ได้ นักลงทุนที่ค้นหากองทุนที่มีค่าธรรมเนียมต่ำกลับได้รับคำแนะนำให้เลือกตัวเลือกที่มีราคาแพงแทน คุณคิดว่าบัญชีเงินเกษียณของคุณจะพอใจกับข้อผิดพลาดนั้นหรือไม่ ฉันแน่ใจว่าฉันคงไม่ชอบที่เห็นเงินออมของฉันถูกกินไปด้วยค่าธรรมเนียม
ลองนึกถึงกรณีที่ค่าตัวเลขมีความสำคัญต่อคำแนะนำการใช้ยา ความคลาดเคลื่อนทางวิศวกรรม ผลตอบแทนทางการเงิน และกำหนดเวลาในสัญญา สำหรับการลงทุนหรือตำราทางการแพทย์ ความแตกต่างเหล่านี้อาจเปลี่ยนชีวิตได้ โดยพื้นฐานแล้ว เราทำงานกับโมเดลที่ไม่รู้หนังสือเรื่องตัวเลข แม้ว่าจะจัดการกับข้อความที่เต็มไปด้วยปริมาณที่สำคัญก็ตาม
ปัญหา “ไม่ใช่” เป็นเรื่องน่ากลัว
อันนี้อันตรายจริงๆ การเพิ่มคำว่า "ไม่" ลงในประโยค ซึ่งแท้จริงแล้วเป็นการพลิกความหมายแทบไม่มีผลต่อคะแนนความคล้ายคลึงเลย เรามักจะเห็นคะแนนสูงกว่า 0.95 สำหรับคำที่ตรงกันข้ามกันโดยสิ้นเชิง "การรักษานี้ทำให้ผลลัพธ์ของผู้ป่วยดีขึ้น" เทียบกับ "การรักษาไม่ได้ทำให้ผลลัพธ์ของผู้ป่วยดีขึ้น" → ความคล้ายคลึง 0.96 เมื่อฉันแสดงสิ่งนี้ให้แพทย์ที่ใช้ระบบค้นหาข้อมูลทางการแพทย์ของเราดู เขาตกใจมาก เขาตกใจมากจนถอยห่างจากคอมพิวเตอร์ และเขาก็ควรจะเป็นแบบนั้น
เรากำลังสร้างระบบที่แพทย์จะใช้เพื่อค้นหาโปรโตคอลการรักษา หากทำผิดพลาด คนอาจเสียชีวิตได้ การปฏิเสธไม่ใช่กรณีพิเศษ แต่เป็นพื้นฐานของภาษามนุษย์ เมื่อระบบค้นหา คำแนะนำ หรือการวิเคราะห์ของคุณไม่สามารถแยกแยะระหว่าง "มีประสิทธิภาพ" กับ "ไม่มีประสิทธิภาพ" หรือ "ปลอดภัย" กับ "ไม่ปลอดภัย" คุณกำลังสร้างเครื่องจักรสร้างภาพหลอนที่อันตราย
ใน ด้านการดูแลสุขภาพ อาจหมายถึงการแนะนำการรักษาที่เป็นอันตราย ในเอกสาร ทางกฎหมาย อาจหมายถึงการบิดเบือนข้อผูกพันตามสัญญาอย่างสิ้นเชิง ในการดูแล เนื้อหา คุณอาจมองข้ามความแตกต่างระหว่าง "ความรุนแรงเป็นสิ่งที่ยอมรับได้" และ "ความรุนแรงไม่สามารถยอมรับได้"
พื้นที่ไม่สำคัญ (จนกว่ามันจะสำคัญจริงๆ)
ช่องว่างพิเศษ แท็บ การจัดรูปแบบที่แปลก ๆ – โมเดลไม่สนใจ ความคล้ายคลึงยังคงอยู่เหนือ 0.995 แต่ลบช่องว่างทั้งหมดออก? ความคล้ายคลึงลดลงอย่างกะทันหันเหลือ 0.82 ฉันพบปัญหานี้ขณะทำงานกับเนื้อหาที่ถูกขูดและมีระยะห่างไม่สม่ำเสมอเนื่องจาก HTML ที่ไม่ดี เราสร้างระบบค้นหาที่สวยงามนี้สำหรับห้องสมุดดิจิทัลที่มีเอกสารที่ขูดหลายพันฉบับ การค้นหาครึ่งหนึ่งไม่ส่งคืนสิ่งใดที่มีประโยชน์เนื่องจากระยะห่างไม่สม่ำเสมอ บรรณารักษ์พร้อมที่จะลบโครงการทั้งหมด
ความแปลกประหลาดนี้จะกลายเป็นเรื่องร้ายแรงเมื่อต้องจัดการกับเนื้อหาที่ผู้ใช้สร้างขึ้น เอกสารที่ผ่านการ OCR หรือภาษาที่ไม่ใช้ช่องว่างแบบเดียวกับภาษาอังกฤษ (เช่น ภาษาไทยหรือภาษาจีน) นอกจากนี้ยังหมายความว่าโมเดลเหล่านี้มีปัญหาในการใช้แฮชแท็ก URL และรหัสผลิตภัณฑ์ ซึ่งเป็นสิ่งที่ผู้คนทั่วไปค้นหาทุกวัน
การอ้างอิงเป็นเรื่องท้าทาย
โมเดลแบบฝังจะมองว่า "รถอยู่ทางซ้ายของต้นไม้" และ "รถอยู่ทางขวาของต้นไม้" แทบจะเหมือนกันทุกประการ โดยมีคะแนนความคล้ายคลึงกันสูงถึง 0.98 แม้ว่าจะอธิบายมุมมองที่ตรงกันข้าม แต่โมเดลแบบฝังจะมองว่าทั้งสองมุมมองนั้นแทบจะเหมือนกันทุกประการ คุณคิดว่าผู้จัดการคลังสินค้าจะพอใจหรือไม่เมื่อหุ่นยนต์ส่งพัสดุไปยังสถานีที่ไม่ถูกต้อง ฉันรับรองได้เลยว่าฉันจะต้องรู้สึกหงุดหงิดอย่างแน่นอน
ลองนึกถึงทุกกรณีที่มุมมองและกรอบอ้างอิงมีความสำคัญ เช่น ทิศทางการนำทาง ความสัมพันธ์เชิงพื้นที่ ตำแหน่งสัมพันธ์ในขั้นตอนทางการแพทย์ และคำอธิบายทางกฎหมายเกี่ยวกับสถานที่เกิดอุบัติเหตุ ความแตกต่างเหล่านี้ไม่ใช่เรื่องเล็กน้อย แต่จะเปลี่ยนความหมายโดยสิ้นเชิงตามมุมมอง โดยพื้นฐานแล้ว เราทำงานกับโมเดลที่ไม่สามารถบอกได้ว่าคุณกำลังอธิบายบางสิ่งบางอย่างจากด้านหน้าหรือด้านหลัง
ข้อเท็จจริงที่ตรงกันข้ามจะถูกพลิกกลับอย่างสิ้นเชิง
เรื่องนี้ทำให้ฉันหัวเราะและร้องไห้ โมเดลการฝังตัวมองว่า "หากความต้องการเพิ่มขึ้น ราคาจะเพิ่มขึ้น" และ "หากความต้องการเพิ่มขึ้น ราคาจะลดลง" แทบจะเหมือนกันทุกประการ โดยมีคะแนนความคล้ายคลึงที่น่าตกใจที่ 0.95 แม้จะเป็นเช่นนี้ แต่ทั้งสองก็แสดงสถานการณ์ทางเศรษฐกิจที่แตกต่างกันโดยสิ้นเชิง!
ฉันประสบปัญหาในการสร้างระบบวิเคราะห์สำหรับเอกสารวิจัยทางเศรษฐกิจ อัลกอริทึมไม่สามารถแยกแยะความสัมพันธ์เชิงสาเหตุที่ตรงกันข้ามได้ นักเศรษฐศาสตร์ที่ค้นหาเอกสารเกี่ยวกับการเพิ่มขึ้นของราคาในช่วงที่อุปสงค์พุ่งสูงขึ้น กลับได้ผลลัพธ์เป็นราคาที่ลดลงในช่วงเศรษฐกิจถดถอยแทน คุณคิดว่านักวิเคราะห์ทางการเงินที่ตัดสินใจลงทุนเป็นล้านดอลลาร์จะรู้สึกขอบคุณหรือไม่หากได้รับข้อมูลย้อนหลัง ฉันแน่ใจว่าฉันคงไม่อยากให้กองทุนเกษียณของฉันได้รับการจัดการในลักษณะนั้น
ลองนึกถึงกรณีทั้งหมดที่การใช้เหตุผลเชิงโต้แย้งมีความสำคัญ เช่น การคาดการณ์ทางเศรษฐกิจ ความสัมพันธ์เชิงเหตุและผลทางการแพทย์ สมมติฐานทางกฎหมาย และการวิเคราะห์ความล้มเหลวทางวิศวกรรม เมื่อคุณไม่สามารถแยกแยะ "ถ้า X แล้ว Y" จาก "ถ้าไม่ใช่-X แล้วไม่ใช่-Y" ได้ แสดงว่าคุณเข้าใจผิดเกี่ยวกับความสัมพันธ์เชิงสาเหตุโดยพื้นฐาน โดยพื้นฐานแล้ว เรากำลังทำงานกับโมเดลที่ไม่สามารถเข้าใจตรรกะเชิงเงื่อนไขพื้นฐานได้ แม้ว่าเราจะจัดการกับข้อความที่เต็มไปด้วยสมมติฐานและการคาดการณ์ก็ตาม
ช่วงและค่าที่แน่นอน
เรื่องนี้ทำให้ฉันพูดไม่ออกเลย โมเดลที่ฝังไว้จะเห็นว่า "ผลิตภัณฑ์มีราคาอยู่ระหว่าง 50 ถึง 100 เหรียญ" และ "ผลิตภัณฑ์มีราคา 101 เหรียญพอดี" เป็นสิ่งเดียวกันเกือบทั้งหมด โดยมีคะแนนความคล้ายคลึงกันถึง 0.98 ซึ่งถือว่าน่าทึ่งมาก โดยหนึ่งในนั้นอยู่ในช่วงหนึ่ง และอีกอันอยู่นอกช่วงนั้น แต่โมเดลแทบจะไม่สังเกตเห็นเลย!
ฉันค้นพบสิ่งนี้ขณะสร้างระบบเปรียบเทียบราคาสำหรับลูกค้าอีคอมเมิร์ซ การค้นหาไม่สามารถแยกความแตกต่างระหว่างช่วงราคาและราคาที่แน่นอนได้ แม้ว่าราคาที่แน่นอนจะอยู่นอกช่วงที่ระบุก็ตาม ลูกค้าที่มีงบประมาณจำกัด 100 ดอลลาร์ที่ค้นหาผลิตภัณฑ์ "ต่ำกว่า 100 ดอลลาร์" มักจะเห็นสินค้าที่แสดงราคา 120 ดอลลาร์หรือ 150 ดอลลาร์ คุณคิดว่าลูกค้าที่มีงบประมาณคงที่ชื่นชอบการเห็นผลิตภัณฑ์ที่พวกเขาไม่สามารถซื้อได้หรือไม่ ฉันแน่ใจว่าฉันคงไม่อยากเสียเวลาไปกับการดูสินค้าที่ฉันไม่สามารถซื้อได้
ลองนึกถึงทุกกรณีที่ช่วงเทียบกับค่าที่แน่นอนมีความสำคัญ เช่น การตัดสินใจกำหนดราคา ช่วงการให้ยา กำหนดเวลาตามกฎหมาย ความคลาดเคลื่อนด้านความปลอดภัย และเกณฑ์มาตรฐานประสิทธิภาพ เมื่อโมเดลของคุณถือว่า "อย่างน้อย 25 วัน" และ "20 วันพอดี" เป็นสิ่งเดียวกันโดยพื้นฐานแล้ว คุณก็สูญเสียความหมายที่สำคัญไป โดยพื้นฐานแล้ว เรากำลังทำงานกับโมเดลที่ไม่สามารถแยกแยะระหว่างความยืดหยุ่นและความแม่นยำได้ แม้ว่าจะจัดการกับข้อความก็ตาม การแยกความแตกต่างนี้จะขับเคลื่อนการตัดสินใจ
ความจริงและผลลัพธ์
นี่คือการเปรียบเทียบระหว่าง msmarco-distilbert-base-tas-b, all-mpnet-base-v2 และ open-ai-text-embedding-3-large และคุณจะสังเกตเห็นว่าไม่มีความแตกต่างอย่างมีนัยสำคัญระหว่างเอาต์พุตของโมเดลเหล่านี้
คะแนนการฝังตัว msmarco-distilbert-base-tas-b ในกรณีทดสอบที่แตกต่างกัน
คะแนนการฝัง all-mpnet-base-v2 ในกรณีทดสอบที่แตกต่างกัน
คะแนนการฝัง openai-text-embedding-3-large ในกรณีทดสอบที่แตกต่างกัน
วิธีการทำงานกับการฝัง
ดูสิ การฝังนั้นมีประโยชน์อย่างน่าอัศจรรย์แม้จะมีปัญหาเหล่านี้ ฉันไม่ได้บอกว่าอย่าใช้มัน ฉันบอกให้คุณใช้มันอย่างมีสติ นี่คือคำแนะนำที่ผ่านการทดสอบมาแล้วหลายสิบโครงการและความล้มเหลวนับไม่ถ้วน:
ทดสอบโมเดลของคุณกับรูปแบบภาษาของผู้ใช้จริงก่อนนำไปใช้งาน ไม่ใช่เกณฑ์มาตรฐานทางวิชาการ ไม่ใช่กรณีทดสอบที่ผ่านการตรวจสอบแล้ว แต่เป็นตัวอย่างจริงของการสื่อสารของผู้ใช้ของคุณ เราได้สร้างชุดเครื่องมือ "การทดสอบความเครียดทางภาษา" ที่จำลองรูปแบบทั่วไป เช่น การปฏิเสธ การพิมพ์ผิด และความแตกต่างของตัวเลข ระบบทุกระบบที่เราทดสอบล้มเหลวในบางพื้นที่ คำถามคือพื้นที่เหล่านั้นมีความสำคัญต่อแอปพลิเคชันเฉพาะของคุณหรือไม่
สร้างราวกั้นรอบจุดบอดที่สำคัญ แอปพลิเคชันต่างๆ มีข้อกำหนดที่ไม่สามารถล้มเหลวได้แตกต่างกัน สำหรับการดูแลสุขภาพ โดยทั่วไปแล้วจะเป็นค่าลบและความแม่นยำของเอนทิตี สำหรับการเงิน จะเป็นตัวเลขและความสัมพันธ์ทางเวลา สำหรับกฎหมาย จะเป็นเงื่อนไขและภาระผูกพัน ระบุสิ่งที่ไม่สามารถผิดพลาดได้อย่างแน่นอนในโดเมนของคุณ และนำการป้องกันเฉพาะทางมาใช้
ใช้เทคนิคที่แตกต่างกันหลายชั้นแทนที่จะทุ่มทุกอย่างไปกับการฝัง ระบบที่ประสบความสำเร็จมากที่สุดของเราผสมผสานการดึงข้อมูลตามการฝังเข้ากับการตรวจสอบคำสำคัญ การตรวจสอบกฎที่ชัดเจน และตัวจำแนกเฉพาะสำหรับการแยกแยะที่สำคัญ การซ้ำซ้อนนี้ไม่ได้ไร้ประสิทธิภาพ แต่เป็นสิ่งจำเป็น
แจ้งให้ผู้ใช้ทราบอย่างโปร่งใสว่าระบบสามารถทำอะไรได้บ้างและทำอะไรไม่ได้บ้างอย่างน่าเชื่อถือ เราได้เพิ่มคะแนนความเชื่อมั่นที่ระบุอย่างชัดเจนว่าผลลัพธ์อาจเกี่ยวข้องกับการปฏิเสธ การเปรียบเทียบเชิงตัวเลข หรือจุดอ่อนอื่นๆ เมื่อใด ผู้ใช้จะชื่นชมความซื่อสัตย์ และสิ่งนี้จะสร้างความไว้วางใจให้กับระบบโดยรวม
นี่คือสิ่งที่สำคัญที่สุดที่ฉันได้เรียนรู้: โมเดลเหล่านี้ไม่เข้าใจภาษาในแบบเดียวกับที่มนุษย์เข้าใจ แต่เข้าใจรูปแบบทางสถิติเท่านั้น เมื่อฉันหยุดคาดหวังว่าจะเข้าใจได้เหมือนมนุษย์ และเริ่มปฏิบัติต่อโมเดลเหล่านี้เหมือนเป็นเครื่องมือจับคู่รูปแบบที่ซับซ้อนที่มีจุดบอดเฉพาะ ระบบของฉันก็ดีขึ้นมาก ดีขึ้นมาก
จุดบอดที่ฉันอธิบายไปจะไม่หายไปในเร็วๆ นี้ เพราะมันเป็นส่วนหนึ่งของการทำงานของโมเดลเหล่านี้ แต่ถ้าคุณรู้ว่ามีจุดบอดอยู่ คุณก็สามารถออกแบบรอบๆ จุดบอดเหล่านั้นได้ และบางครั้ง การยอมรับข้อจำกัดก็เป็นก้าวแรกในการเอาชนะมัน
หมายเหตุ: ฉันยังพบกรณีดังกล่าวอีกมากมายผ่านการทดลอง และฉันจะกล่าวถึงในโพสต์ถัดไปพร้อมกับตัวอย่างโค้ด
บทความภาคต่อจะออกมาเร็วๆ นี้ โปรดติดตาม!!