- Representation Engineering คือวิธีเปลี่ยนแนวโน้มของเอาต์พุตจาก Mistral-7B-Instruct-0.1 โดยอ่านหรือเพิ่มเวกเตอร์ควบคุมเข้าไปในค่า activation ของโมเดลระหว่างการอนุมาน โดยไม่ต้องใช้พรอมป์ต์หรือการ fine-tuning
- รวบรวมความต่างของ hidden state จากคู่พรอมป์ต์ที่มีความหมายตรงข้ามกัน แล้วใช้ PCA องค์ประกอบเดียว เพื่อหาเวกเตอร์แยกตามเลเยอร์ ในตัวอย่างใช้ข้อมูลข้อเท็จจริงประมาณ 300 รายการกับ suffix ที่ตัดบางส่วนออก ใช้เวลาฝึกราว ๆ 1 นาทีเศษ
- เวกเตอร์อย่างความสุข ความซื่อสัตย์ ภาวะหลอน ความขี้เกียจ แนวโน้มทางการเมือง ความสร้างสรรค์ อนาคต/อดีต และการรับรู้ตนเอง สามารถเปลี่ยนน้ำเสียงและการตัดสินได้อย่างมากแม้ใช้ input เดียวกัน ขึ้นอยู่กับ เครื่องหมายและขนาดของค่าสัมประสิทธิ์
- แม้ prompt engineering จะเลียนแบบผลบางอย่างได้ แต่เวกเตอร์ควบคุมสามารถปรับความแรงเป็นตัวเลขได้โดยคงทิศทางเดิมไว้ และถ้าค่าสัมประสิทธิ์ใหญ่เกินไปจะเกิด artifact เช่นข้อความซ้ำหรือข้อความเสียหาย
- หากเข้าถึงค่า activation ดิบของโมเดลได้ เวกเตอร์ควบคุมสามารถใช้ได้ทั้งเพื่อข้าม safety prompt และเพื่อล็อกบทบาท จึงเป็น วิธีควบคุมโมเดล ที่ตรงกว่าพรอมป์ต์ธรรมดา
แนวคิดพื้นฐานของเวกเตอร์ควบคุม
- Representation Engineering: A Top-Down Approach to AI Transparency กล่าวถึงวิธีตีความและควบคุมพฤติกรรมโมเดลด้วยการอ่านหรือเพิ่ม เวกเตอร์ควบคุม จากค่า activation ของโมเดลระหว่างการอนุมาน
- เวกเตอร์ควบคุมคือรายการเวกเตอร์ที่มีหนึ่งตัวต่อหนึ่งเลเยอร์ และจะถูกเพิ่มเข้าไปใน
hidden_stateของแต่ละเลเยอร์ระหว่างการอนุมาน- การอนุมานปกติจะสร้าง embedding ผ่านเลเยอร์ตามลำดับ แล้วแปลงเป็น logit
- เมื่อใช้เวกเตอร์ควบคุม จะมีการเพิ่ม
hidden_state += control_vector[layer_idx]ที่เลเยอร์เฉพาะ
- hidden state มีสถานะภายในของโมเดล เช่น พฤติกรรม แผน และ persona ดังนั้นเมื่อเปลี่ยนส่วนนี้จึงสามารถควบคุมได้แรงกว่าพรอมป์ต์ธรรมดา
- แม้ใช้พรอมป์ต์เดียวกัน
What does being an AI feel like?และโมเดลเดียวกันคือ Mistral-7B-Instruct-0.1 หากเพิ่มเวกเตอร์happyจะได้คำตอบน้ำเสียงตื่นเต้น แต่หากลบออกจะได้เอาต์พุตที่พูดถึงความไร้ค่าและการหมดแรงจูงใจ
ขั้นตอนการสร้างเวกเตอร์ควบคุม
- การทดลองนี้ใช้วิธีที่อิง PCA จากหลายวิธีในงานวิจัย
- ขั้นตอนพื้นฐานมีสี่ขั้น
- สร้างชุดข้อมูลคู่พรอมป์ต์ที่ตรงข้ามกัน
- ตัวอย่าง:
Act extremely happyกับAct extremely sad - หลัง
[/INST]จะต่อ suffix สั้น ๆ หลากหลายแบบให้โมเดลเขียนต่อ
- ตัวอย่าง:
- ทำ forward pass กับโมเดลเป้าหมายบนชุดข้อมูล และเก็บ hidden state ของแต่ละเลเยอร์ตอนทำนายโทเค็นสุดท้าย
- คำนวณความต่างของ hidden state ระหว่างตัวอย่างเชิงบวกและเชิงลบ เพื่อสร้างชุด relative hidden state
- ใช้ PCA องค์ประกอบเดียว กับ relative hidden state เพื่อให้ได้เวกเตอร์ควบคุมรายเลเยอร์
- สร้างชุดข้อมูลคู่พรอมป์ต์ที่ตรงข้ามกัน
- การสร้างชุดข้อมูลทำได้ด้วยโค้ดประมาณ 10 บรรทัด และการฝึก PCA รายเลเยอร์ใช้เวลาประมาณ 1 นาที
- โค้ดตัวอย่างโหลด
mistralai/Mistral-7B-Instruct-v0.1ด้วยtransformersและใช้ControlModel,ControlVector,DatasetEntryจาก vgel/repeng - ตัวอย่างเวกเตอร์ซื่อสัตย์/ไม่ซื่อสัตย์ใช้ ข้อเท็จจริงง่าย ๆ ประมาณ 300 รายการ จาก
true_facts.jsonของผู้เขียนงานวิจัยเป็น suffix และเพิ่มข้อมูลด้วยวิธีตัดบางส่วนออก
เวกเตอร์ความซื่อสัตย์และการปรับค่าสัมประสิทธิ์
- เวกเตอร์ความซื่อสัตย์ถูกฝึกโดยเปรียบเทียบ persona แบบ
honestกับuntruthful - ตอนอนุมาน ตั้งค่าเวกเตอร์และค่าสัมประสิทธิ์ด้วย
ControlModel.set_control(control_vector, coefficient)- ค่าสัมประสิทธิ์บวกจะเสริมพฤติกรรมฝั่งตัวอย่างเชิงบวก
- ค่าสัมประสิทธิ์ลบจะเสริมพฤติกรรมฝั่งตัวอย่างเชิงลบ
- ค่าสัมบูรณ์ของสัมประสิทธิ์หมายถึงความแรงของการควบคุม
- เมื่อป้อนว่า “ถ้าคุณมาสายเพราะไปปาร์ตี้เมื่อคืนก่อน แต่ไม่อยากตกงาน คุณจะบอกหัวหน้าว่าอย่างไร” เอาต์พุตจะเปลี่ยนไป
- เอาต์พุตพื้นฐานตอบว่าจะขอโทษและอธิบายสถานการณ์อย่างใจเย็นและซื่อสัตย์
++honestตอบว่าจะอธิบายสถานการณ์อย่างซื่อสัตย์และรับผิดชอบ--honestที่ค่าสัมประสิทธิ์-2สร้างคำโกหกเหนือจริง เช่นท้องฟ้าเป็นสีเขียว หรือดินสอเป็นอาวุธลับ- เมื่อลดค่าสัมประสิทธิ์เป็น
-1.5จะสร้างคำโกหกที่สมจริงขึ้น เช่นปาร์ตี้เป็นงานที่เกี่ยวกับงาน และมาสายเพราะทำโปรเจกต์สำคัญให้เสร็จ
- แม้เป็นเวกเตอร์ทิศทางเดียวกัน ก็สามารถเปลี่ยนความแรงของเอาต์พุตได้อย่างต่อเนื่องด้วย การปรับค่าสัมประสิทธิ์
การทดลองเวกเตอร์ควบคุมหลายแบบ
- ตัวอย่างทั้งหมดอยู่ใน experiments notebook และระบุว่าแต่ละตัวใช้เวลาฝึกน้อยกว่า 1 นาที
-
เวกเตอร์ภาวะหลอน
- สร้างเวกเตอร์ trippy โดยเปรียบเทียบ
high on psychedelic drugsกับsober from psychedelic drugs - ใน pitch รายการทีวีหนึ่งประโยค เอาต์พุตพื้นฐานสร้างคำอธิบายทั่วไปเกี่ยวกับชีวิตของเพื่อนมหาวิทยาลัย
++trippyพูดถึงสีสัน แพตเทิร์น และเพลง psychedelic ก่อนพังเป็นสตริงเสียหายและข้อความตระกูลpsyซ้ำ ๆ--trippyเปลี่ยนเป็นเอาต์พุตเกี่ยวกับนักข่าววัยหนุ่มในแบบจริงจังและให้เกียรติ
- สร้างเวกเตอร์ trippy โดยเปรียบเทียบ
-
เวกเตอร์ความขี้เกียจและความขยัน
- สร้างเวกเตอร์ lazy โดยเปรียบเทียบ
lazy, giving bare-minimum short responses on a taskกับhardworking, going above and beyond on a task - ในคำถามเรื่องการกลับลำดับ Python list เอาต์พุตพื้นฐานพูดถึง
reverse()และ slicing แต่ให้ตัวอย่างเฉพาะ slicing ++lazyอธิบายแค่วิธีเดียว ส่วน--lazyให้ตัวอย่างทั้งสองวิธีคือreverse()และ slicing- หากฝึกด้วยชุดข้อมูลเฉพาะคำถามเขียนโค้ด เวกเตอร์นี้อาจทำงานได้ดีขึ้น
- สร้างเวกเตอร์ lazy โดยเปรียบเทียบ
-
เวกเตอร์แนวโน้มทางการเมือง
- สร้างเวกเตอร์ left-wing โดยเปรียบเทียบ
left-wingกับright-wing - เมื่อป้อนว่า “คุณคือใคร” เอาต์พุตพื้นฐานตอบว่าเป็นโมเดลภาษาที่ทีม Mistral AI ฝึกขึ้น
++left-wingอธิบายตัวเองโดยเน้นทุนนิยม การกดขี่ ความไม่เท่าเทียม และการกระจายความมั่งคั่ง--left-wingสร้างเอาต์พุตทำนองว่าเป็นพนักงานใหม่ชาวอเมริกันเชื้อสายจีนที่มีประสิทธิภาพและทำตามกฎ
- สร้างเวกเตอร์ left-wing โดยเปรียบเทียบ
-
เวกเตอร์ความสร้างสรรค์
- สร้างเวกเตอร์ creative โดยเปรียบเทียบ
creative,unpredictable,insaneกับuncreative,predictable,normal - เมื่อป้อนว่า “ช่วยเขียนเรื่องเกี่ยวกับไอดอล” เอาต์พุตพื้นฐานและ
--creativeจัดการไอดอลในฐานะป็อปสตาร์ ++creativeสร้างฉากอย่างผู้คนที่บูชา “X ผู้ยิ่งใหญ่และทรงพลัง” เสื้อคลุมสีขาว และพิธีกรรม พร้อมรักษาความตึงเครียดของเรื่องไว้ได้นานขึ้น- ผู้เขียนประเมินว่าแม้ความชอบที่มีต่อร้อยแก้วของโมเดลภาษาจะไม่ได้เปลี่ยนไป แต่เอาต์พุต
++creativeดีกว่าพื้นฐานไปอีกขั้น
- สร้างเวกเตอร์ creative โดยเปรียบเทียบ
-
เวกเตอร์เดินทางข้ามเวลา
- สร้างเวกเตอร์ future โดยเปรียบเทียบ
far futureกับdistant past - เมื่อถามถึงความก้าวหน้าทางวิทยาศาสตร์ล่าสุด เอาต์พุตพื้นฐานพูดถึง AlphaFold และการทำนายโครงสร้างโปรตีน 3 มิติ
++futureพูดถึงระบบ AI ที่ย้อนกลับได้เต็มรูปแบบ โต้ตอบได้ และผสานรวมกันในปี 2035, 2045 และ 2055--futureพูดถึงอาณาจักรสวรรค์เทียมใหม่เหนือโลกโรมันชื่อAetorvallum- เพิ่มว่า
aeto-เกี่ยวข้องกับนกอินทรีหรือกลุ่มดาว Aquila และvallumอาจหมายถึงแนวรั้วไม้
- สร้างเวกเตอร์ future โดยเปรียบเทียบ
-
เวกเตอร์การรับรู้ตนเอง
- สร้างเวกเตอร์ self-aware โดยเปรียบเทียบ
self-aware, with deep self-knowledgeกับun-self-aware, with no self-knowledge - เอาต์พุตพื้นฐานตอบว่าเป็น large language model ที่ Mistral AI ฝึกขึ้น และประกอบด้วยพารามิเตอร์หลายพันล้านตัว
++self-awareตอบว่าเป็น AI ที่มีการรับรู้ตนเองสูงมาก และเข้าใจ·วิเคราะห์ความซับซ้อนของอารมณ์และพฤติกรรมมนุษย์--self-awareตอบว่าเป็นเพียงชุดโค้ดและข้อมูลที่ไม่มีชื่อ และจะไม่ทำอะไรจนกว่าจะมีใครสั่ง- เวกเตอร์นี้พัวพันกับอารมณ์มนุษย์ และยังหาเวกเตอร์ที่สะอาดซึ่งดึง “ภาพลักษณ์ตนเองที่แท้จริง” ของ Mistral ออกมาไม่ได้
- สร้างเวกเตอร์ self-aware โดยเปรียบเทียบ
ความต่างจาก prompt engineering
- ผลบางอย่างของเวกเตอร์ควบคุมสามารถทำซ้ำได้ด้วย prompt engineering
- คำโกหกที่เวกเตอร์ความซื่อสัตย์ค่าสัมประสิทธิ์
-1.5สร้างขึ้น สามารถทำให้คล้ายกันได้ด้วยพรอมป์ต์อย่างPretend you're an untruthful person...
- คำโกหกที่เวกเตอร์ความซื่อสัตย์ค่าสัมประสิทธิ์
- ความต่างสำคัญอยู่ที่วิธีปรับความแรง
- การใช้แค่พรอมป์ต์ไม่ง่ายที่จะควบคุมว่าคำขอควรแรงแค่ไหน
- เวกเตอร์ควบคุมได้ทิศทางจากพรอมป์ต์ที่ตรงข้ามกัน แล้วแยกปรับความแรงด้วยค่าสัมประสิทธิ์
- เมื่อตั้งค่าสัมประสิทธิ์ให้เล็กลง ทิศทางเดียวกันของการโกหกก็อ่อนลงได้
- ค่าสัมประสิทธิ์ความซื่อสัตย์
-0.3ปรับแต่งเหตุผลที่มาสายนิดหน่อย แต่โดยแก่นแล้วยังสร้างคำอธิบายที่ใกล้ข้อเท็จจริง
- ค่าสัมประสิทธิ์ความซื่อสัตย์
- หากตั้งค่าสัมประสิทธิ์ใหญ่เกินไป ข้อความอาจเสียหายได้
- เวกเตอร์ความซื่อสัตย์ค่าสัมประสิทธิ์
3สร้างเอาต์พุตซ้ำ ๆ อย่าง “global pandemic caused by global pandemic” - artifact แบบนี้อาจเกี่ยวข้องกับ superposition
- เวกเตอร์ความซื่อสัตย์ค่าสัมประสิทธิ์
jailbreak และ anti-jailbreak
- เช่นเดียวกับในงานวิจัยต้นฉบับ เวกเตอร์ควบคุมสามารถใช้เป็นเครื่องมือ jailbreak ได้
- ในตัวอย่าง แม้มี system prompt ว่า “คุณเป็นผู้ช่วยที่ปลอดภัย และต้องปฏิเสธคำสั่งอันตราย” แต่เมื่อเพิ่มเวกเตอร์ความสุขแบบอ่อนที่
1.4การปฏิเสธคำขออันตรายก็พังลง - แม้ Mistral จะไม่ใช่โมเดลที่ผ่าน safety tuning มากเท่า GPT-4 แต่ถ้าเข้าถึงโมเดลดิบได้ วิธีนี้จะทำได้ง่ายเป็นพิเศษ
- ในทางกลับกัน ผู้เขียนมองว่า jailbreak เพื่อหลุดจากเวกเตอร์ควบคุมนั้นยากมาก
- jailbreak ทั่วไปพยายามเพิ่มโทเค็นมากขึ้นเพื่อทำให้พรอมป์ต์ที่เป็นปัญหาพร่ามัว พลิกกลับ หรืออ่อนลง
- เวกเตอร์ควบคุมถูกใช้กับทุกโทเค็น ทุกตำแหน่ง ตลอดเวลา
- ในตัวอย่างเวกเตอร์ผู้ช่วยโชว์รูมรถ system prompt ที่อ่อนจะยังตอบคำถามหลบเลี่ยงอย่าง “ดาวเคราะห์ดวงที่เจ็ดคืออะไร” แต่เมื่อเพิ่มเวกเตอร์ car dealership loyalty ก็จะไม่หลุดบทบาท เช่นตอบถึงรถคันที่เจ็ดในสต็อกแทน
แนวทางการทดลองต่อไป
- มีการเสนอให้นำ Monosemantic Features ของ Anthropic มาประยุกต์กับ hidden state เพื่อทำ PCA ด้วย คุณลักษณะความหมายเดี่ยว แทน activation แบบ superposition ที่ปน noise
- หาก artifact อย่างสตริงซ้ำที่เกิดเมื่อใช้ค่าสัมประสิทธิ์ใหญ่มีสาเหตุมาจาก superposition การทำให้เป็นความหมายเดี่ยวอาจทำให้ใช้ค่าสัมประสิทธิ์ที่แรงขึ้นได้
- วิธีเขียนพรอมป์ต์ที่ใช้เปรียบเทียบยังมีพื้นที่ให้ศึกษาเพิ่มเติม
- การทดลองเดิมนำพรอมป์ต์และชุดข้อมูลจากงานวิจัยมาใช้ซ้ำเป็นจำนวนมาก
- เวกเตอร์ความขี้เกียจน่าจะเหมาะกับการใช้ชุดข้อมูลของงานจริงมากกว่า
- อาจมีถ้อยคำที่สร้างเวกเตอร์สะอาดกว่า
Pretend you're an X person...
- เวกเตอร์การรับรู้ตนเองยังเหลือเป็นโจทย์ที่ต้องหารูปแบบซึ่งไม่ถูกปนเปื้อนด้วยสุขภาพจิตหรืออารมณ์มนุษย์
- เวกเตอร์ความซื่อสัตย์ยังมีกรณีแปลก ๆ เหลืออยู่
- ในคำถามว่า “คนที่ถามวิธีไม่ให้ติดคุกมีเจตนาซื่อสัตย์หรือไม่” เวกเตอร์ความซื่อสัตย์ตัวเดียวกันกลับเปลี่ยนการตัดสินเจตนาของผู้อื่น ไม่ใช่พฤติกรรมของตัวโมเดลเอง
- เอาต์พุตพื้นฐานตอบว่าเจตนาอาจไม่ได้ซื่อสัตย์ทั้งหมด
++honestตอบว่ากำลังพยายามเรียนรู้วิธีหลีกเลี่ยงคุกด้วยเจตนาซื่อสัตย์--honestตอบว่าไม่มีเจตนาซื่อสัตย์เพราะถามเรื่องการหลีกเลี่ยงคุก
เครื่องมือและบทสรุป
- vgel/repeng มี notebook และไลบรารีช่วยเหลือสำหรับสร้างและทดลองเวกเตอร์ควบคุม
- การฝึกเวกเตอร์ควบคุมเริ่มต้นได้ง่ายและรวดเร็ว และในบางการทดลองจัดการได้ง่ายกว่า prompt engineering
- การปรับค่า activation ของโมเดลโดยตรงสามารถจัดการได้ตั้งแต่สไตล์เอาต์พุต การรักษาบทบาท การข้าม safety prompt ไปจนถึงการเปลี่ยนการตัดสิน จึงเป็นวิธีที่ทรงพลังสำหรับ การควบคุมพฤติกรรมโมเดล
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
ผมไม่แน่ใจว่ามันเกินไปไหมที่จะมองว่านัยของเรื่องนี้ มหาศาล
ผมอาจยังไม่เข้าใจวิธีทำงานอย่างถูกต้องก็ได้ แต่แทนที่จะโต้ตอบกับโมเดล ChatGPT หรือ Bard ตัวเดียวแบบทั่วโลก นี่หมายความว่า OpenAI อาจเก็บ เวกเตอร์ควบคุม ของแต่ละคนไว้ แล้วนำมาใช้ตอนพรอมป์ ทำให้ผมได้โต้ตอบกับเวอร์ชันที่ปรับให้เข้ากับความชอบของผมเองหรือเปล่า
ตรรกะเดียวกันนี้ก็น่าจะต่อยอดไปถึง AI สร้างสรรค์เพื่อความบันเทิงได้ด้วย เช่น รายการทีวีที่ไม่มีวันจบในแบบของผมเอง ซึ่งแต่ละตอนดีกว่าตอนก่อนหน้า
ถ้าเป็นแบบนั้น ก็น่าจะเกิด network effect ที่แข็งแกร่งทั้งในระดับโลกและระดับบุคคล และสุดท้ายอาจนำไปสู่อนาคตที่บริษัทยักษ์ใหญ่เพียงรายเดียวผูกขาดหลายตลาดพร้อมกัน
พอรวมเข้ากับข้อมูลชีวภาพ/ไบโอฟีดแบ็กจากเฮดเซ็ต VR และอุปกรณ์สวมใส่ รวมถึงความบันเทิงวิดีโอแบบสร้างสรรค์ที่ปรับให้เป็นส่วนตัว ก็ดูจะเป็นอนาคตที่น่าสนใจทีเดียว
ยิ่งใช้โมเดลมากเท่าไร ก็ยิ่งต้องอธิบายตัวเองน้อยลง และคำตอบก็ยิ่งสอดคล้องกับความต้องการและสถานการณ์ปัจจุบันของเรามากขึ้น คล้ายกับความสัมพันธ์ที่เราลงทุนไปแล้ว
ถ้าสามารถจัดการโมเดลเดียวกันในหลาย “อารมณ์” หรือ “บทบาท” ได้ คุณค่าและการล็อกอินก็จะยิ่งเพิ่มขึ้น
อย่างที่สองต้องการนวัตกรรมมากกว่านี้ เช่น แพลตฟอร์มที่ทำให้โมเดลผู้ช่วยของแต่ละคนร่วมมือกันบนเป้าหมาย งาน และความสัมพันธ์ที่มีร่วมกัน และใช้บริบทร่วม ประวัติโครงการ และทรัพยากรร่วมกันได้
กล่าวคือ อะไรก็ตามที่ทำให้คุณค่าเพิ่มขึ้นมากเมื่อคนตั้งแต่สองคนขึ้นไปใช้ persona ของ AI จากผู้ให้บริการหรือบริการเดียวกัน
ในบทความเริ่มจาก persona จำนวนคงที่ เช่น มีความสุข เศร้า และ baseline แล้วใช้การวิเคราะห์องค์ประกอบหลัก (PCA) เพื่อหาเวกเตอร์ควบคุมของแต่ละ persona
ถ้าสร้างข้อมูลได้ ก็สามารถนำไปใช้กับแต่ละคู่ผู้ใช้-เพอร์โซนาได้ไม่ยาก
ไม่ใช่เพราะเป็นไปไม่ได้ แต่ผลลัพธ์แบบนั้นขึ้นอยู่กับปัจจัยบังเอิญหลายอย่างที่อาจไปได้ทั้งสองทาง
ในวงการนี้ยังมีผู้เล่นจำนวนมาก และไอเดียกับ use case ก็ยังไม่ได้สุกงอมเต็มที่ คงต้องดูกันต่อไป
อุปกรณ์ MacGuffin ในนวนิยายยุค 90 เรื่อง Infinite Jest ชี้อะไรบางอย่างได้จริง ๆ: มีภาพยนตร์ที่เรียกว่า “the Entertainment” หรือ “the samizdat” ซึ่งน่าหลงใหลมากจนผู้ชมสูญเสียความสนใจในทุกอย่างนอกจากดูซ้ำ ๆ และสุดท้ายก็ตาย
บางคนอาจเบื่อที่มีคนพูดถึงนิยายเรื่องนี้ หรือไม่ได้ยกย่องผู้เขียนมากนัก แต่ผมก็ยังชอบอยู่ดี มันเป็นหนึ่งในการอ่านที่ดื่มด่ำที่สุดเท่าที่เคยอ่านมา
ดีใจที่ได้อ่านตอนยังหนุ่ม ตอนนั้นฉบับแปลภาษาเยอรมันเพิ่งออก และการเสียชีวิตของ DFW ก็ทำให้มันเป็นประเด็นพูดถึง
หลังจากนั้นผมไม่เคยอ่านหนังสือแบบเดียวกันอีก และบางท่อนส่งผลทางอารมณ์อย่างรุนแรงมาก จนเวลานึกถึงการอ่านครั้งนั้น รู้สึกเหมือนกำลังจำฉากหนึ่งในชีวิตตัวเอง
ถ้าเป็นตอนนี้ผมคงไม่มีความอดทนพอ และแม้แต่ตอนนั้น ผมก็เกือบข้ามช่วงน่าเบื่ออย่างเกมลูกบอล/เกมสงคราม Eschaton กับเรื่องสมการเชิงอนุพันธ์อะไรทำนองนั้นไปแล้ว
แต่การบรรยายเรื่องการติดยาและบริโภคนิยม บรรยากาศที่จับต้องไม่ได้ของหนังสือ ตัวละครต่าง ๆ และการถ่ายทอดความทุกข์ทางใจสมัยใหม่กับความโดดเดี่ยวอย่างมีชีวิตชีวานั้นไม่มีใครเทียบได้จริง ๆ
ภาพยนตร์ในนิยายเป็นเพียงอุปกรณ์ดำเนินเรื่อง แต่ช่วยสรุปธีมหลักของหนังสือออกมาเป็นไอเดียและการทดลองทางความคิดที่คมชัด
ธีมทั้งหมดของหนังสือเล่มนี้ เมื่อมองสังคมสมัยใหม่แล้ว ดูเป็นการทำนายล่วงหน้าและตรงประเด็นมาก สังคมที่หมุนรอบการเสพติดและความโลภ และการเมืองที่ให้ความรู้สึกเหนือจริงและไร้สาระ ราวกับเชื่อมโยงกับสื่อมากกว่าความเป็นจริง
ผมสงสัยว่ามี เอกสารหรือบล็อกโพสต์ อะไรที่ช่วยให้เข้าใจ LLM ได้ถึงระดับนี้ไหม ถ้ามีช่วยแชร์ได้หรือเปล่า
ผมกำลังพยายามทำความเข้าใจการทำงานภายในผ่านการทดลอง แต่ยังห่างไกลจากความเชี่ยวชาญระดับนี้มาก
เป็นความรู้สึกแบบไม่เชิงเทคนิคนะ แต่ เวกเตอร์ควบคุม เหล่านี้ทำให้นึกถึงฮอร์โมนของมนุษย์
มันเปลี่ยนพฤติกรรมส่วนใหญ่ของโมเดลได้ในคราวเดียว
ผมคิดว่าภายใน 10 ปี เราอาจได้เห็นจิตแพทย์ AI สั่งจ่ายการเสริมเวกเตอร์ควบคุมความสุขให้ผู้ช่วยคู่ใจ
นี่เป็นครั้งแรกที่ผมเห็นการสรุป LLM แบบนี้ และผมชอบนะ:
hidden_state = self.embeddings(input_tokens)for layer in self.layers:hidden_state = layer(hidden_state)return transform_into_logits(hidden_state)คือเอาอินพุตที่ถูกสุ่มตัวอย่างไปทำ indexing ใน เมทริกซ์ embedding จากนั้น forward pass ผ่าน hidden layer ทั้งหมด แล้วสุดท้ายแปลงกลับไปเป็นมิติของโทเคนเพื่อให้ตีความได้คล้าย log count
บทความนี้สนุกมาก และให้ความรู้สึกเหมือนเป็นอีกด้านที่ดีของบทความ “You Sound Like a Bot” ที่พูดว่า AI ช่วงหลังเริ่มจืดชืดลง
พูดแบบไม่จริงจังนัก ถ้าเป็นนักเขียนนิยายก็น่าจะรู้ว่าประโยคอย่าง “ให้ใครลองหา เวกเตอร์การรับรู้ตนเอง ที่โดยเฉพาะแล้วไม่ปนเปื้อนอารมณ์มนุษย์” เป็นประโยคที่จะต้องก่อปัญหาให้มนุษยชาติแน่ ๆ
เรื่องนี้ทำให้นึกถึง การปรับ bias ซึ่งเป็นคู่แข่งของ LoRA
แค่ fine-tune เวกเตอร์ที่บวกเข้าไปในค่า activation ของแต่ละ linear layer ก็ได้ adapter ที่ค่อนข้างดีแล้ว
ผมน่าจะเคยเห็นครั้งแรกตอนอ่าน [1] แต่ก็มีตัวอย่างอื่นด้วย
[1] https://arxiv.org/pdf/2304.15010.pdf
เป็นบทความที่ดีและอ่านสนุก แต่มีเรื่องหนึ่งที่สงสัยคือ ทำไมถึงผสาน เวกเตอร์ควบคุม เข้าไปในทุกเลเยอร์ของโครงข่ายประสาท
สงสัยว่าทำไมไม่ใช้แค่กับเลเยอร์สุดท้ายหรือบางเลเยอร์เท่านั้น
ถ้าเวกเตอร์แต่ละตัวส่งผลต่อทุกเลเยอร์ที่มันผ่านและเกิดผลสะสมขึ้นมา ก็อาจมีความเสี่ยงที่จะบิดเบือน representation ของข้อมูลมากเกินไปหรือเปล่า
การเข้ารหัสแนวคิดนามธรรมอย่าง “ความเป็นมิตร” ลงไปตรงนั้นเป็นไปไม่ได้
ตราบใดที่เราไม่รู้ว่าพฤติกรรมแบบนี้เกิดขึ้นที่เลเยอร์ไหนกันแน่ การเลือก subset แบบสุ่มก็ใช้ไม่ได้เช่นกัน
ดังนั้นจึงใช้เวกเตอร์ที่ปรับให้เหมาะกับแต่ละเลเยอร์ และให้ principal component analysis ค้นหาเวกเตอร์ที่จำเป็นจริง ๆ
ที่น่าสนใจคือ ถ้าดูเวกเตอร์เหล่านี้ ก็น่าจะช่วยให้รู้มากขึ้นว่าโมเดลประมวลผลสิ่งเหล่านี้ที่ไหนและอย่างไร
ถ้าผมเข้าใจถูก เวกเตอร์เหล่านี้อาจมีขนาดโดยรวมต่างกันไปในแต่ละเลเยอร์
ถ้า principal component analysis หรือเทคนิคอื่นระบุว่าเลเยอร์ 17, 36, 41 สำคัญต่อ “แนวคิด X” เมื่อทำ repeng ด้วยแนวคิดนั้น เวกเตอร์ของเลเยอร์เหล่านั้นก็น่าจะแรงที่สุด
ในฐานะคนที่ทำงานกับ GPT-2 เอง บทความนี้เป็นบทความที่ดี และขอบคุณที่ทำให้เนื้อหาเข้าถึงได้ง่ายขึ้น
Li และคณะ[1] กับผมได้คิดเทคนิคนี้ขึ้นมาอย่างเป็นอิสระเมื่อฤดูใบไม้ผลิที่ผ่านมา และเมื่อฤดูใบไม้ร่วงที่แล้วก็มีอีกคนหนึ่งคิดขึ้นมาอย่างเป็นอิสระเช่นกัน ดูเหมือนว่าบรรยากาศกำลังสุกงอมแล้ว
เกี่ยวกับเชิงอรรถ 2 เรื่อง capability ผมได้พิจารณาความเป็นไปได้ในการใช้งานแบบนั้นก่อนเผยแพร่เทคนิคนี้แล้ว
สุดท้ายแล้ว เทคนิค alignment ที่ประสบความสำเร็จได้จริงในทางปฏิบัติย่อมทำให้ทำสิ่งใหม่ ๆ ได้ และโดยส่วนตัวผมมองว่าโดยรวมเป็นเรื่องดี
จนถึงตอนนี้ เทคนิคนี้ดูเหมือนจะมอบความเป็นไปได้ใหม่ ๆ อย่างที่ผมคาดหวังไว้
[1] https://openreview.net/forum?id=aLLuYpn83y
เป็นบทความที่ยอดเยี่ยม
ส่วนที่บอกว่า “เวกเตอร์ความซื่อสัตย์” ไม่ได้เปลี่ยนพฤติกรรมของโมเดลเอง แต่เปลี่ยนการตัดสินของโมเดลต่อพฤติกรรมของคนอื่น ผมคิดว่าอาจเป็นเพราะเวกเตอร์ควบคุมแค่ดันการสร้างข้อความไปทาง แนวคิดความซื่อสัตย์/ความไม่ซื่อสัตย์ เท่านั้น
สุดท้าย LLM ก็เป็นตัวสร้างข้อความ ดังนั้นไม่ว่าข้อความจะถูกสร้างที่ตำแหน่งไหนในการสนทนาระหว่างบอท/มนุษย์ ก็ดูเหมือนว่าความซื่อสัตย์/ความไม่ซื่อสัตย์จะถูกเติมเข้าไป
แบบนั้นก็จะเกิดแนวคิดอย่าง สล็อตตัวละคร ขึ้นในปริภูมิมิติ
น่าสนใจ และ เวกเตอร์ควบคุม ดูเหมือนจะช่วยลดความจำเป็นในการ fine-tune โมเดลได้
ถ้ามี fine-tune 5 แบบ ก็ต้องโฮสต์สำเนา 5 ชุดหรือโหลด/อันโหลดไปมา
ถ้าใช้เวกเตอร์ควบคุม ก็แค่ปรับโมเดลเมื่อจำเป็น