Gzip และ KNN เหนือกว่า Transformers ในงานจำแนกข้อความ
(twitter.com/LukeGessler)- เสนอวิธีจำแนกข้อความแบบไม่อิงพารามิเตอร์ (non-parametric) ที่ผสานตัวบีบอัดแบบง่ายอย่าง gzip เข้ากับ ตัวจำแนก k-nearest neighbors (kNN)
- แม้ไม่มีพารามิเตอร์สำหรับการเรียนรู้เลย แต่ก็ เบาและใช้งานได้ทั่วไป พร้อมภาระต้นทุนการคำนวณต่ำกว่า DNN
- เมื่อเทียบกับวิธี deep learning ที่ไม่ได้ผ่านการ pretrain ให้ผลลัพธ์ที่แข่งขันได้บน ชุดข้อมูล in-distribution 6 ชุด
- เหนือกว่า BERT ใน ชุดข้อมูล OOD (out-of-distribution) ทั้งหมด 5 ชุด ซึ่งรวมถึง ภาษาทรัพยากรต่ำ 4 ภาษา
- ทำงานได้ดีแม้ใน สภาพแวดล้อมแบบ few-shot ที่มีข้อมูลมีป้ายกำกับไม่เพียงพอจนทำให้การฝึก DNN ทำได้ยาก
ภูมิหลังและประเด็นปัญหา
- DNN ถูกใช้อย่างแพร่หลายในการจำแนกข้อความด้วยความแม่นยำสูง
- อย่างไรก็ตาม ต้องใช้ พารามิเตอร์หลายล้านตัว และข้อมูลมีป้ายกำกับจำนวนมาก ทำให้มีต้นทุนการคำนวณสูง
- ส่งผลให้การใช้งาน การปรับให้เหมาะสม และ การถ่ายโอนไปยังสถานการณ์ OOD (out-of-distribution) กลายเป็นงานที่มีต้นทุนสูงในทางปฏิบัติ
วิธีที่เสนอ
- นำเสนอวิธีแบบไม่อิงพารามิเตอร์ที่ ง่าย เบา และใช้งานได้ทั่วไป เพื่อเป็นทางเลือกแทน DNN
- โครงสร้างที่ผสานตัวบีบอัดแบบง่ายอย่าง gzip เข้ากับ ตัวจำแนก k-nearest neighbors
- จุดเด่นสำคัญคือ ไม่มีพารามิเตอร์สำหรับการเรียนรู้เลย
ผลการทดลอง
- มีประสิทธิภาพในระดับที่แข่งขันได้กับวิธี deep learning ที่ไม่ได้ผ่านการ pretrain บน ชุดข้อมูล in-distribution 6 ชุด
- เหนือกว่า BERT ใน ชุดข้อมูล OOD ทั้งหมด 5 ชุด ซึ่งรวมถึงภาษาทรัพยากรต่ำ 4 ภาษา
- มีจุดแข็งแม้ใน สภาพแวดล้อมแบบ few-shot ที่ข้อมูลมีป้ายกำกับมีน้อยเกินไปจนยากต่อการฝึก DNN อย่างมีประสิทธิภาพ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ลิงก์ไปยังงานวิจัยโดยตรง: https://aclanthology.org/2023.findings-acl.426.pdf
โดยสัญชาตญาณแล้ว แก่นสำคัญคือเมื่อมีเอกสาร x1, x2 และเอกสารใหม่ x ถ้าความเป็นแบบแผนทางสถิติของ x ใกล้กับ x1 มากกว่า x2 ก็จะได้ว่า
len(compress(cat(x1,x))) - len(compress(x)) < len(compress(cat(x2,x))) - len(compress(x))โดยที่catคือการนำมาต่อกัน และcompressคือเครื่องมือบีบอัดอย่าง gzipพูดตรงตัวก็คือ
len(compress(cat(x1,x))) - len(compress(x))คือจำนวนไบต์เพิ่มเติมที่ต้องใช้ในการบีบอัดความเป็นแบบแผนทางสถิติของ x1 เมื่อกำหนดความเป็นแบบแผนทางสถิติของ x ไว้แล้ว ยิ่ง x1 กับ x คล้ายกันมากเท่าไร จำนวนไบต์เพิ่มที่ต้องใช้ในการบีบอัดcat(x1,x)เทียบกับการบีบอัด x อย่างเดียวก็จะยิ่งน้อยลงผู้เขียนใช้ฟังก์ชันระยะทางชื่อ Normalized Compression Distance (NCD) ที่อิงกับแนวคิดนี้ แล้วนำ k-nearest neighbors (kNN) ไปใช้กับเอกสารที่ถูกบีบอัด นอกจากนี้ยังกล่าวถึงความสัมพันธ์ระหว่าง NCD กับข้อมูล, Shannon entropy และ Kolmogorov complexity
น่าประหลาดที่วิธีซึ่งเรียบง่ายและเข้าใจได้ตามสัญชาตญาณนี้เอาชนะ BERT ได้ในงาน zero-shot classification หลายงาน อย่างไรก็ตาม ไม่ได้หมายความว่าจะชนะ Transformer ที่ใหญ่กว่าและใหม่กว่าทุกตัวเสมอไป
แนวคิดคือเปรียบเทียบขนาดหลังบีบอัดเมื่อใช้เอกสารเป็น compression dictionary กับเมื่อไม่ใช้ อย่างน้อยในระดับ 20+ นั้น zstd ให้สัดส่วนการบีบอัดดีกว่า gzip มาก ดังนั้นถ้าเหตุผลที่มันได้ผลกับ gzip มาจากการเป็นค่าประมาณของ Kolmogorov complexity ก็อาจจะทำงานได้ดีกว่าเดิม
ถ้า x1 เป็นภาษาอังกฤษ และ x เป็นคำแปลภาษาฮีบรูของเอกสารเดียวกัน ก็น่าจะเป็น LLM ที่ทำได้ดีกว่าไม่ใช่หรือ
ไม่นานมานี้ลองทำกับภาพและให้มันสร้าง JPEG ออกมา พบว่าแม้ใช้พิกเซลพื้นฐานชุดเดียวกันก็ยังได้ภาพที่หลากหลายมาก ยิ่งภาพมี noise มากและดูสุ่มมากขึ้น ขนาดไฟล์ JPG ก็ยิ่งใหญ่ขึ้น ในทางกลับกัน ยิ่งดูเหมือนภาพถ่าย ขนาดไฟล์ JPG ก็ยิ่งเล็กลง ซึ่งน่าสนใจดี
ถ้าสนใจความเท่าเทียมกันระหว่าง AI กับการบีบอัด ลองดู Hutter Prize ได้ :) http://prize.hutter1.net/
Large Text Compression Benchmark ก็น่าดูเช่นกัน http://mattmahoney.net/dc/text.html - ตอนนี้เครื่องมือบีบอัดที่ดีที่สุดในโลกคือโครงข่ายประสาทของ Fabrice Bellard ผู้มีชื่อเสียงจากการสร้าง ffmpeg และ QEMU
ชอบมากกับ สไตล์สำหรับข้อความล้วน ที่เหมาะเจาะของหน้าเหล่านี้
มันปรับ arithmetic coding (https://en.wikipedia.org/wiki/Arithmetic_coding) ตามบริบทของไบต์/บิตที่จะทำนาย ดังนั้นยิ่งทำนายสิ่งที่จะตามมาได้แม่นยำ การเข้ารหัสก็ยิ่งมีประสิทธิภาพ งานนี้เองก็คล้ายกับ Transformer อย่าง GPT มาก
การทำนายที่สมบูรณ์แบบทำให้ช่วงเชิงคณิตศาสตร์ไม่เล็กลง จึงแทบไม่มีต้นทุนการเก็บข้อมูลเพิ่ม และจึงไม่ต้องเก็บบิตเพิ่มด้วย อย่างไรก็ตาม ถ้าจะ benchmark อย่างยุติธรรม ก็ต้องนับขนาดของตัวถอดบีบอัดด้วย
นี่เป็นแนวคิดที่ค่อนข้างเก่าแล้ว ดูได้จาก [1,2] แม้จะเก่าแต่ก็ยังมีประโยชน์มากเหมือน perceptron
[1] Li and Vitanyi. An Introduction to Kolmogorov Complexity and Its Applications
[2] Clustering by compression. https://arxiv.org/pdf/cs/0312044
ทฤษฎีก็คล้ายเรื่องเล่าที่ใช้อธิบายหลายสิ่งได้ด้วย “ตัวละคร” ชุดเดิม โดยที่ตัวละครในที่นี้ใกล้เคียงกับแนวคิดมากกว่า เช่น อะตอมก็เข้ากับคำอธิบายนี้
อยากชี้ว่าที่วิธีนี้แข็งแกร่งกว่านั้นจำกัดอยู่กับ ข่าว เท่านั้น
บน Yahoo Questions มันไม่ได้ให้ประสิทธิภาพดีที่สุด ข่าวมักเขียนในรูปแบบคล้ายกันและบางครั้งก็มีการคัดลอกบางส่วน จึงไม่เกินเลยที่จะมองว่ามีคำร่วมกันจำนวนมาก
Yahoo Questions เป็นฟอรัม จึงน่าจะมีความแปรผันของคำสูงกว่า แต่ระหว่างคำเหล่านั้นก็ยังมีความคล้ายคลึงกันทางความหมาย
กล่าวคือ gzip แข็งแกร่งเมื่อมีคำซ้ำกันมาก (ขนาดที่เพิ่มขึ้นระหว่างบีบอัดด้วย gzip มีน้อย) แต่ถ้าความคล้ายคลึงกันทางความหมายสำคัญ DNN ก็ชนะเสมอ
ผลลัพธ์น่าสนใจ แต่ผมคิดว่ามันไม่ได้น่าสนใจเท่าที่ฟังดู
ต้องให้ความสำคัญมากว่าผลลัพธ์นี้มาจาก ข้อมูลนอกการกระจาย ตัวอย่างเช่นเป็นข่าวในภาษาอย่าง ‘Kinyarwanda, Kirundi, Pinyin’
ในการตั้งค่าที่ทั่วไปกว่านี้ BERT ยังชนะขาดอยู่ดี
มันน่าทึ่งที่วิธีง่าย ๆ แบบนี้มีประสิทธิภาพได้มาก แต่ก็ไม่ควรโหมขายเกินจริง
แต่พอดูเงื่อนไขที่ยกมา มันกลับค่อนข้างตรงไปตรงมามากกว่า การจัดหมวดหมู่ข้อความในภาษาที่ไม่รู้จักเลยหมายความว่าอย่างไร? ถ้าให้จัดหมวดหมู่ข้อความ Kirundi โดยที่เราไม่เข้าใจความหมายเลย สิ่งที่ดีที่สุดที่ทำได้ก็คือหาความถี่ของลำดับคำหรืออักขระ แล้วจัดกลุ่มข้อความที่มีลายนิ้วมือความถี่คล้ายกันเข้าด้วยกัน
เรายังไม่รู้ความหมายจริงอยู่ดี แต่ก็ดีกว่าสุ่ม และในทางปฏิบัติมันก็เป็นแบบนั้น ข่าวดีก็คือนี่คือสิ่งที่ gzip+kNN ทำอยู่พอดี และเป็นงานหลักรวมถึงเหตุผลที่มันมีอยู่
ต่อให้อ่านข้อความนี้แล้วพยายามทำความเข้าใจหรือทำนายอักขระถัดไป ก็แทบไม่ได้อะไรเพิ่ม คนปกติถ้าไม่รู้ภาษา ก็คงไม่คิดจะลองทำตั้งแต่แรก น่าเสียดายที่ BERT ทำสิ่งนั้นพอดี เพราะนั่นคือสิ่งเดียวที่ BERT ทำเป็น ถึงอย่างนั้นก็น่ายกย่องที่มันยังดึงประโยชน์ได้มากกว่ามนุษย์ทั่วไป หรืออาจมากกว่ามนุษย์ที่ไม่ทั่วไปเสียอีก
อันที่จริงมันฉลาดมากและเข้าใจได้อย่างเป็นธรรมชาติ
ถ้าเอาข้อความสองชิ้นที่คล้ายกันมาต่อกัน มันก็น่าจะบีบอัดได้ดีกว่าเอาข้อความสองชิ้นที่ต่างกันมาต่อกัน
ดูเหมือนนี่จะไม่ใช่ชัยชนะของวิธีนี้เท่าไร แต่เป็นสัญญาณเชิงลบต่อ ความคล้ายคลึงแบบดีปเลิร์นนิง มากกว่า
ท่ามกลางกระแส LLM แม้ LLM จะยอดเยี่ยมจริง แต่ดูเหมือนหลายคนจะสมมติว่าความก้าวหน้าแบบเดียวกันเกิดขึ้นกับชั้น embedding สำหรับความคล้ายคลึงของข้อความล้วน ๆ ด้วย
เลยเกิดกระแสฐานข้อมูล embedding เต็มไปหมด แต่เท่าที่ฉันเห็น แทบไม่มีหลักฐานมารองรับเลย
ลิงก์ควรชี้ไปที่ PDF ของงานวิจัย https://aclanthology.org/2023.findings-acl.426.pdf
อัลกอริทึมการบีบอัดคือการ ประหยัด/บีบอัด พื้นที่ นั่นคือบิตและไบต์ ส่วนโมเดลแมชชีนเลิร์นนิง โดยเฉพาะโมเดลเชิงกำเนิด คือการประหยัด/บีบอัดการแสดงออกและความคิดของมนุษย์
การจัดหมวดหมู่ข้อความคือการบีบอัดชนิดหนึ่งบนชั้นของการแสดงออกของมนุษย์ มีคุณสมบัติพื้นฐานบางอย่างของภาษามนุษย์และข้อมูลหรือไม่ ที่อาจอธิบายได้ว่าอะไรจะทำงานได้ดีกว่าในงานแมชชีนเลิร์นนิง?
ถ้าวันหนึ่งทฤษฎีแบบนั้นเริ่มเป็นรูปเป็นร่าง ก็อาจไม่ใช่เรื่องน่าแปลกใจที่การเข้ารหัสของบิต/ไบต์ที่ถูกบีบอัด กับการแสดงออกของมนุษย์ที่ถูกบีบอัด จะมีความเกี่ยวข้องกันอย่างใกล้ชิดในปริภูมิบางแบบ จนทั้งสองอย่างเชื่อมโยงกันได้ไม่ทางใดก็ทางหนึ่ง ที่จริงแล้ว ทฤษฎีลักษณะนี้ เช่น ทฤษฎีบนฐานเอนโทรปีหรือฐานฟิสิกส์ อาจช่วยเลือกได้ว่าในการบีบอัดการแสดงออกของมนุษย์บางประเภท ควรใช้อัลกอริทึมบีบอัดหรือใช้โมเดลแมชชีนเลิร์นนิง
ถ้ามองจากฝั่งข้อมูล ตัวอย่างเชิงลบที่ยากซึ่งทำให้อัลกอริทึมแบบนี้ทำงานได้ไม่ดีคืออะไร? ตอนนี้เราอาจทำได้เพียงประมาณทฤษฎีนั้นผ่านมุมมองของชนิดข้อมูลข้อความมนุษย์ที่หลากหลาย เช่น การทำนายส่วนผสมด้วย statistical topic model ทำได้ดีในข้อความวิชาการ แต่กลับมีปัญหากับข้อความบนอินเทอร์เน็ต
มีใครศึกษาเรื่องทฤษฎีแบบนี้บ้างไหม นอกจาก Wolfram Physics?
https://www.newyorker.com/tech/annals-of-technology/chatgpt-...
ฟังดูสมเหตุสมผลทั้งหมด การบีบอัดเกี่ยวข้องกับ “ความเข้าใจ” นั่นคือการแทนอินพุตในรูปแบบที่สามารถจดจำและติดป้ายกำกับได้
ถ้าบิตที่จดจำได้มีขนาดใหญ่กว่าป้ายกำกับ ก็ปิ๊งเลย นั่นคือการบีบอัด จึงไม่น่าแปลกที่ gzip อาจทำงานนี้ได้ดีกว่า DNN
ที่เรียกว่าสับเซตเพราะความเข้าใจเป็นสิ่งที่กว้างกว่า อัลกอริทึมบีบอัดบางชนิดอาจทำงานได้ดีกับจำนวนทศนิยมลอยตัว ในทางกลับกัน สมองและโครงข่ายประสาทเทียมอาจบีบอัดรูปแบบอินพุตแบบใดก็ได้ แม้ประสิทธิภาพอาจแย่กว่าก็ตาม
ฉันไม่เข้าใจว่า gzip จะจัดการกับคำอย่าง “not” ที่กลับความหมายของทั้งประโยคได้อย่างไร
มีใครเข้าใจไหม?