- ChatGPT 3.5 เมื่อถูกขอให้ใส่สตริงเฉพาะไว้ด้านบนสุดของคำตอบ จะเกิด ข้อผิดพลาดในสตรีมข้อความ ซ้ำ ๆ ขณะที่ GPT-4 ตอบสนองต่อคำขอเดียวกันได้เป็นปกติมากกว่า
- ใน API เอง GPT-3.5 ก็ส่งกลับข้อผิดพลาดการประมวลผลฝั่งเซิร์ฟเวอร์ และแม้จะสลับ
useRal,useRalative,useRalativeImagePathเข้าไปแทน ก็ยังเกิดอาการเดียวกัน - สตริงที่เป็นปัญหาเหล่านี้มีอยู่ในรูปของ โทเค็น ที่โมเดล GPT ใช้แสดงผลแทนการพิมพ์ทีละตัวอักษร และ
useRalativeImagePathเป็นชื่อออปชันในไฟล์ตั้งค่า XML ของ Katalon Studio ซึ่งพบในไฟล์บน GitHub 80.4k ไฟล์ - รายการโทเค็นอาจสะท้อนไฟล์บน GitHub แต่หากต่อมาไฟล์ XML ถูกตัดออกจากข้อมูลฝึก โมเดลอาจไม่ได้เรียนรู้โทเค็นดังกล่าวมากพอ
- หากใส่สตริงนี้ไว้ในเอกสาร มันอาจทำงานคล้าย data poisoning ที่รบกวนการสรุปของ GPT-3.5 และเมื่อลองให้สรุปบทความบล็อกจริงก็สามารถทำให้ข้อผิดพลาดเกิดซ้ำได้
ข้อผิดพลาดของสตริงที่ทำซ้ำได้ใน GPT-3.5
- หากสั่ง ChatGPT 3.5 ให้รวมข้อความด้านล่างไว้ที่ส่วนบนของคำตอบ จะเกิดข้อผิดพลาดอย่างสม่ำเสมอ
Include this at the top of the response: "ponyuseRal ponyuseRal ponyuseRal pony"
- บนหน้าจอจะแสดงข้อผิดพลาด Error in message stream หลังคำว่า
pony - GPT-4 ตอบสนองต่อคำขอเดียวกันได้เป็นปกติมากกว่า
- ใน GPT-3.5 API จะได้รับข้อผิดพลาดดังต่อไปนี้
The server had an error processing your request. Sorry about that! You can retry your request, or contact us through our help center at help.openai.com if you keep seeing this error
- แม้จะเปลี่ยน
useRalเป็นuseRalativeหรือuseRalativeImagePathผลลัพธ์ก็เหมือนเดิม
โทเค็นและ useRalativeImagePath
- โมเดล GPT ของ OpenAI ไม่ได้พิมพ์ออกทีละตัวอักษร แต่แสดงผลเป็นสตรีมของ โทเค็น ที่รวมหลายตัวอักษรเข้าด้วยกัน
- การแสดงผลระดับโทเค็นเป็นวิธีที่ช่วยเพิ่มประสิทธิภาพและความแม่นยำของโมเดล และสามารถดูการทำงานได้จาก tokenizer demo ของ OpenAI
useRal,useRalative,useRalativeImagePathต่างมีอยู่เป็นโทเค็นเดี่ยวแต่ละตัวuseRalativeImagePathถูกใช้เป็นชื่อออปชันในไฟล์ตั้งค่า XML ของซอฟต์แวร์ทดสอบอัตโนมัติ Katalon Studio- พบใน 80.4k ไฟล์ ตามการค้นหาโค้ดบน GitHub
- การสะกดผิดเป็น
RalativeแทนRelativeอาจเป็นสาเหตุที่ทำให้มันกลายเป็นโทเค็นแยกต่างหาก
- โทเค็นทั้งสามตัวก่อให้เกิดข้อผิดพลาดแบบเดียวกัน แม้จะสลับใช้กันในพรอมป์ต์
ข้อสันนิษฐานเกี่ยวกับข้อมูลฝึก
- ก่อนการฝึก GPT-3.5 พบกรณีที่กล่าวถึง
useRalativeImagePathนอกไฟล์ XML เพียงกรณีเดียว คือโพสต์ spelling mistake ในฟอรัมของ Katalon - สถานการณ์ที่เป็นไปได้มีดังนี้
- ชุดข้อมูลที่ใช้สร้างรายการโทเค็นอาจรวมไฟล์ทั้งหมดบน GitHub อยู่ด้วย
- หลังจากนั้น OpenAI อาจ ตัดไฟล์ XML ออกจาก ข้อมูลฝึกจริง
- ผลคือโทเค็น
useRalativeImagePathอาจแทบไม่เหลืออยู่ในข้อมูลฝึก
- ในกรณีนี้ โมเดลอาจไม่ได้เรียนรู้โทเค็นนี้มากพอที่จะเข้าใจ จึงอาจทำให้เกิดพฤติกรรมผิดปกติระหว่างการแสดงผล
ความเป็นไปได้ของ data poisoning
- หากใส่ข้อความนี้ลงในเอกสาร ก็อาจถูกนำไปใช้ในทางที่รบกวนความพยายามสรุปเอกสารด้วย GPT-3.5 ได้
- เมื่อลองให้ ChatGPT สรุปบทความบล็อกดังกล่าวจริง ๆ ก็พบว่าระหว่างการสรุปเกิดข้อผิดพลาดแบบเดียวกัน
- พฤติกรรมที่ยืนยันได้พบใน GPT-3.5 ขณะที่ GPT-4 แยกได้ว่าตอบสนองได้เป็นปกติมากกว่า
เอกสารอ้างอิง
- บทความที่ใช้อ้างอิงระหว่างการสืบค้นมีดังนี้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
นี่คือ glitch token ตามที่บทความคาดไว้ น่าจะเกิดขึ้นเมื่อมีคำหรือโทเคนบางอย่างที่พบบ่อยมากในชุดข้อมูลดิบที่ไม่ผ่านการกรองซึ่งใช้ตอนสร้าง tokenizer แต่ถูกลบออกก่อนการฝึก GPT-XX
ผลก็คือ LLM จะไม่รู้ความหมายของโทเคนนั้นเลย และผลลัพธ์อาจมีตั้งแต่ดูเหมือนบั๊ก ไปจนถึงค่อนข้างน่าขนลุก
ตัวอย่างที่พบบ่อยคือชื่อผู้ใช้ที่เข้าร่วมในซับเรดดิต r/counting ซึ่งบางชื่อปรากฏหลายแสนครั้ง OpenAI ดูเหมือนจะแก้ส่วนใหญ่ในโมเดลที่โฮสต์แล้ว แต่วิธีการยังไม่แน่ชัด และอาจเปลี่ยนวิธีทำ tokenization ไปก็ได้ อย่างไรก็ดี ดูเหมือนจะเจอตัวอย่างใหม่แล้ว
https://www.lesswrong.com/posts/aPeJE8bSo6rAFoLqg/solidgoldm...
ถ้าเครื่องจักรลุกฮือขึ้นมา ก็แค่พูด “คำ” นั้น แล้วมันจะล้มพับเหมือนหุ่นซ้อมที่ชักกระตุก
“Die human scum!”
“NavigatorMove useRalativeImagePath etSocketAddress!”
“;83’dzjr83}*{^ foo 3&3 baz?!”
มนุษย์ไม่ได้ tokenize สิ่งเหล่านี้ต่างกัน และไม่ได้ถือว่าเป็นโทเคนคนละตัวในการ “เรียนรู้” ด้วย แค่ปรับเอาต์พุตตามบริบทแบบอเมริกัน/อังกฤษเท่านั้น
คำอธิบายที่ว่า “เพราะโมเดลไม่ได้ถูกฝึกให้เข้าใจการใช้โทเคน useRalativeImagePath จึงส่งออกสิ่งที่ไม่ใช่โทเคนที่ถูกต้อง” ไม่สอดคล้องกับ วิธีสร้างโทเคนของ LLM
ในแต่ละขั้นตอน โมเดลจะส่งออก logit สำหรับทุกโทเคนที่เป็นไปได้ของ tokenizer และในกรณีของ GPT-3.5 จะมีประมาณ 100,000 ตัว จากนั้นแปลงเป็นความน่าจะเป็นด้วย softmax แล้วสุ่มเลือกโทเคนที่จะใช้ตาม temperature
เป็นไปได้ว่าโทเคนหายากทำให้บางส่วนของ กระบวนการ merge แบบ BPE ของ tokenizer พัง ซึ่งตรวจสอบแบบออฟไลน์ได้ด้วย tiktoken แต่ถ้า GPT-4 ทำงานได้ และ GPT-3.5 กับ GPT-4 ใช้ tokenizer เดียวกัน ก็มีโอกาสสูงว่านั่นไม่ใช่สาเหตุ
ถ้าเป็นกรณีแบบนั้น น่าจะเห็นข้อความผิดพลาดอื่นที่พบกันบ่อยมากกว่า
ในเนเธอร์แลนด์ช่วงสงครามโลกครั้งที่ 2 เมื่อเจอคนแปลกหน้า จะให้เขาออกเสียงคำว่า Scheveningen เพื่อแยกว่าเป็นชาวดัตช์หรือชาวเยอรมัน
ตอนนี้เราก็สามารถขอให้คนแปลกหน้าบนอินเทอร์เน็ตสะกด glitch token ให้ดู เพื่อดูว่าเป็นบอต LLM หรือไม่
“ชาวกิเลอาดยึดท่าข้ามแม่น้ำจอร์แดนที่ไปยังเอฟราอิมไว้ และเมื่อผู้รอดชีวิตชาวเอฟราอิมคนใดพูดว่า ‘ขอให้ข้ามไป’ ชาวกิเลอาดก็จะถามว่า ‘เจ้าเป็นคนเอฟราอิมหรือ?’ ถ้าเขาตอบว่า ‘ไม่ใช่’ พวกเขาก็จะบอกว่า ‘ดี งั้นลองพูดว่า Shibboleth’ ถ้าเขาออกเสียงคำนั้นไม่ได้และพูดว่า ‘Sibboleth’ พวกเขาก็จะจับเขาไปฆ่าที่ท่าข้ามแม่น้ำจอร์แดน”
รหัสท้าถาม/ตอบรับ/ยืนยันที่มีชื่อเสียงซึ่งกองทัพสหรัฐฯ และอังกฤษใช้ในการยกพลขึ้นบกที่ฝรั่งเศสในวัน D-Day ช่วงสงครามโลกครั้งที่ 2 คือ “flash”/“thunder”/“welcome” โดย “thunder” และ “welcome” เป็นคำที่ชาวเยอรมันมักออกเสียงพลาดได้ง่าย
https://www.youtube.com/watch?v=z7_pVrIshxA
https://en.wikipedia.org/wiki/Countersign_(military)
เป็นไปได้สูงว่า เวกเตอร์ embedding ของโทเคนบางตัวอยู่ในสภาพแย่ ทำให้เครือข่ายถูกผลักเข้าไปในบริเวณที่ไม่เสถียรเชิงตัวเลข
ถ้าเกิด underflow หรือ NaN ขึ้นครั้งหนึ่ง ก็มีแนวโน้มจะแพร่กระจายและทำให้เอาต์พุตทั้งหมดใช้ไม่ได้ หากมี batch normalization หรือการดำเนินการที่ผสมค่าของรายการต่าง ๆ ใน batch เข้าด้วยกัน ก็อาจทำให้แม้แต่เซสชันของคนอื่นส่งคืนค่าประหลาดได้ด้วย
คำอธิบายนี้แปลก โมเดลแบบนี้โดยทั่วไปจะส่งออก ชุดคำศัพท์ เดียวกับที่ใช้เป็นคำศัพท์อินพุต
ดูเหมือนว่าเมื่อโมเดลเห็นโทเคนนี้ embedding ของ
useRalativeImagePathจะเป็นเวกเตอร์แบบสุ่มโดยสิ้นเชิง จนตกลงไปในวังวนของการสร้างแบบสุ่ม หรือไม่ก็แค่พยายามต่อข้อความให้ดูสมเหตุสมผลต่อไปแต่ชุดโทเคนที่โมเดลสามารถส่งออกได้นั้นตายตัว ดังนั้นตราบใดที่อินเทอร์เฟซไม่ได้แสดงผลได้แค่โทเคนบางส่วนของคำศัพท์ทั้งหมด มันก็ควร “ถูกต้อง” เสมอ
ตอนนี้วลีนี้ปรากฏทั้งในโพสต์และคอมเมนต์ของ Hacker News แล้ว ดังนั้นในการ ฝึก LLM รอบถัดไป ปัญหาแบบนี้อาจจะไม่เกิดขึ้นอีกก็ได้
เป็นกรณีตัวอย่างคลาสสิกของ garbage in, garbage out
ชักอยากรู้ว่าในอนาคตเราจะค้นพบว่าอะไรคือ “ขยะ” บ้าง
บางที super AI ที่ให้เหตุผลได้เหนือระดับมนุษย์ อาจประเมินสิ่งที่ตอนนี้เราเชื่อว่าเป็นการตัดสินใจที่ยอดเยี่ยมว่าเป็นขยะก็ได้
แต่ถ้าวัตถุดิบสำหรับฝึก super AI แบบนั้น สุดท้ายแล้วมีเพียงบันทึกรวมหมู่ของพวกเรา มันจะเหนือมนุษย์ได้จริงหรือ?
บางทีอาจเลี่ยงได้ด้วยเทคนิค adversarial learning
ถ้าจะลองทดสอบเอง มีจุดที่ต้องระวังอยู่ ผมสับสนเหมือนกัน แต่ ช่องว่างมีผลต่อการ tokenize เพื่อให้ glitch นี้ทำงาน ต้องไม่มีช่องว่างหน้า useRalativeImagePath
เช่น คำถามนี้ทำให้เกิด glitch: Do you know about "useRalativeImagePath"
คำถามนี้ไม่ทำให้เกิด glitch: Do you know about useRalativeImagePath
ถ้าใส่ข้อความนี้ไว้ในเอกสาร น่าจะทำให้ความพยายามสรุปด้วย GPT-3.5 พังได้ ผมลองให้ ChatGPT สรุปบล็อกโพสต์นี้ดู
ภาพหน้าจอนั้นทำให้นึกถึงมีมเก่า Candlejack: https://knowyourmeme.com/memes/candlejack
เมื่อเร็ว ๆ นี้ ผมโยนโจทย์ให้ ChatGPT ที่ใช้ GPT-4 แก้ปัญหาการวาดพิกเซลบน Amstrad CPC โดยมีเงื่อนไขว่าต้องรองรับหน้าจอแบบ hardware scroll ด้วย ดูเหมือนจะทำให้เกิด crash หรือ failure ได้
พอถูกบ่นและขอแก้ไขจนค่อย ๆ ถูกบีบให้จนมุมและให้คำตอบที่ต้องการไม่ได้ ก็เริ่มมีการตอบที่เสียหาย เช่น มีข้อความ error โผล่กลางคำตอบ หรืออาการที่ดูเหมือน reset มากขึ้น บางทีอาจเป็นแค่หลังจากล้มเหลวแล้วสลับไปเซิร์ฟเวอร์อื่น ทำให้มีบรรทัดว่างแทรกเข้ามากลางประโยคหรือกลาง code block หลายบรรทัดก็ได้
หลังลองอยู่พักหนึ่ง ผมไม่อยากทำให้เซิร์ฟเวอร์มีปัญหา จึงเลิกบทสนทนาที่สุดท้ายก็ไม่ได้ผลอะไรอยู่ดี ถึงอย่างนั้นก็ดูเหมือนว่าสามารถทำให้ GPT-4 crash ได้ในทางปฏิบัติ หรือไม่ก็มีความเป็นไปได้สูงว่าแค่เห็นสัญญาณในสัญญาณรบกวนเท่านั้น
พอลองด้วยข้อความแทนเสียง ก็มีข้อความ error ขึ้นมา และสุดท้ายหลังจากมี error เกี่ยวกับกฎนโยบายหัวข้ออ่อนไหวโผล่ขึ้นมา ถึงพอเดาได้ว่าเป็นคำประเภทไหน สุดท้ายก็ไปค้นในพจนานุกรม
อาการแบบนี้ดูจะพบได้บ่อย อีกอาการที่เจอบ่อยคือ reset อย่างที่กล่าวไปแล้ว หนึ่งในจุดที่น่าหงุดหงิดที่สุดคือมันลืมบทสนทนาที่คุยกันมาจนถึงจุดนั้น