2 คะแนน โดย GN⁺ 2024-02-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 เปลี่ยนเป็นเอาต์พุตเกี่ยวกับนักข่าววัยหนุ่มในแบบจริงจังและให้เกียรติ
  • เวกเตอร์ความขี้เกียจและความขยัน

    • สร้างเวกเตอร์ 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
    • หากฝึกด้วยชุดข้อมูลเฉพาะคำถามเขียนโค้ด เวกเตอร์นี้อาจทำงานได้ดีขึ้น
  • เวกเตอร์แนวโน้มทางการเมือง

    • สร้างเวกเตอร์ left-wing โดยเปรียบเทียบ left-wing กับ right-wing
    • เมื่อป้อนว่า “คุณคือใคร” เอาต์พุตพื้นฐานตอบว่าเป็นโมเดลภาษาที่ทีม Mistral AI ฝึกขึ้น
    • ++left-wing อธิบายตัวเองโดยเน้นทุนนิยม การกดขี่ ความไม่เท่าเทียม และการกระจายความมั่งคั่ง
    • --left-wing สร้างเอาต์พุตทำนองว่าเป็นพนักงานใหม่ชาวอเมริกันเชื้อสายจีนที่มีประสิทธิภาพและทำตามกฎ
  • เวกเตอร์ความสร้างสรรค์

    • สร้างเวกเตอร์ creative โดยเปรียบเทียบ creative, unpredictable, insane กับ uncreative, predictable, normal
    • เมื่อป้อนว่า “ช่วยเขียนเรื่องเกี่ยวกับไอดอล” เอาต์พุตพื้นฐานและ --creative จัดการไอดอลในฐานะป็อปสตาร์
    • ++creative สร้างฉากอย่างผู้คนที่บูชา “X ผู้ยิ่งใหญ่และทรงพลัง” เสื้อคลุมสีขาว และพิธีกรรม พร้อมรักษาความตึงเครียดของเรื่องไว้ได้นานขึ้น
    • ผู้เขียนประเมินว่าแม้ความชอบที่มีต่อร้อยแก้วของโมเดลภาษาจะไม่ได้เปลี่ยนไป แต่เอาต์พุต ++creative ดีกว่าพื้นฐานไปอีกขั้น
  • เวกเตอร์เดินทางข้ามเวลา

    • สร้างเวกเตอร์ future โดยเปรียบเทียบ far future กับ distant past
    • เมื่อถามถึงความก้าวหน้าทางวิทยาศาสตร์ล่าสุด เอาต์พุตพื้นฐานพูดถึง AlphaFold และการทำนายโครงสร้างโปรตีน 3 มิติ
    • ++future พูดถึงระบบ AI ที่ย้อนกลับได้เต็มรูปแบบ โต้ตอบได้ และผสานรวมกันในปี 2035, 2045 และ 2055
    • --future พูดถึงอาณาจักรสวรรค์เทียมใหม่เหนือโลกโรมันชื่อ Aetorvallum
    • เพิ่มว่า aeto- เกี่ยวข้องกับนกอินทรีหรือกลุ่มดาว Aquila และ vallum อาจหมายถึงแนวรั้วไม้
  • เวกเตอร์การรับรู้ตนเอง

    • สร้างเวกเตอร์ 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 ออกมาไม่ได้

ความต่างจาก 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 ความคิดเห็น

 
GN⁺ 2024-02-19
ความคิดเห็นใน 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 สั่งจ่ายการเสริมเวกเตอร์ควบคุมความสุขให้ผู้ช่วยคู่ใจ

    • มนุษย์บางคนก็ดูเหมือนต้องการ แถบเลื่อน temperature เหมือนกัน
  • นี่เป็นครั้งแรกที่ผมเห็นการสรุป 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
    • น่าจะเป็นรูปแบบการเขียนที่พบทั่วไปสมัยทำงานกับ LSTM มาก่อน
  • บทความนี้สนุกมาก และให้ความรู้สึกเหมือนเป็นอีกด้านที่ดีของบทความ “You Sound Like a Bot” ที่พูดว่า AI ช่วงหลังเริ่มจืดชืดลง
    พูดแบบไม่จริงจังนัก ถ้าเป็นนักเขียนนิยายก็น่าจะรู้ว่าประโยคอย่าง “ให้ใครลองหา เวกเตอร์การรับรู้ตนเอง ที่โดยเฉพาะแล้วไม่ปนเปื้อนอารมณ์มนุษย์” เป็นประโยคที่จะต้องก่อปัญหาให้มนุษยชาติแน่ ๆ

  • เรื่องนี้ทำให้นึกถึง การปรับ bias ซึ่งเป็นคู่แข่งของ LoRA
    แค่ fine-tune เวกเตอร์ที่บวกเข้าไปในค่า activation ของแต่ละ linear layer ก็ได้ adapter ที่ค่อนข้างดีแล้ว
    ผมน่าจะเคยเห็นครั้งแรกตอนอ่าน [1] แต่ก็มีตัวอย่างอื่นด้วย
    [1] https://arxiv.org/pdf/2304.15010.pdf

    • สำหรับผู้อ่านบนมือถือหรือการเชื่อมต่อช้า ควรแชร์ ลิงก์หน้าบทคัดย่อ มากกว่าลิงก์ 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 ชุดหรือโหลด/อันโหลดไปมา
      ถ้าใช้เวกเตอร์ควบคุม ก็แค่ปรับโมเดลเมื่อจำเป็น