1 คะแนน โดย GN⁺ 2025-09-16 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ใน พื้นที่ฝังตัวมิติสูง สามารถแทนแนวคิดจำนวนมหาศาลได้โดยอาศัย กึ่งตั้งฉาก (quasi-orthogonality) แทนความตั้งฉากสมบูรณ์
  • บทตั้งเสริม Johnson-Lindenstrauss รับประกันว่าสามารถฉายข้อมูลมิติสูงตามอำเภอใจลงสู่มิติที่ต่ำกว่าได้โดยแทบไม่สูญเสียข้อมูล
  • ในกระบวนการหาค่าเหมาะที่สุด การออกแบบ ฟังก์ชันความสูญเสีย มีความสำคัญมาก เพราะฟังก์ชันความสูญเสียพื้นฐานอาจทำให้เกิดการจัดวางเวกเตอร์ที่ไม่มีประสิทธิภาพหรือมีอคติ
  • ผลการทดลอง แสดงให้เห็นว่าความจุจริงของพื้นที่ฝังตัวนั้นใหญ่กว่าที่คาดกันในทางทฤษฎีมาก และสามารถรองรับแนวคิดตั้งแต่หลายล้านไปจนถึงหลายพันล้านรายการให้อยู่ร่วมกันได้อย่างเป็นธรรมชาติ
  • การค้นพบนี้มีนัยเชิงปฏิบัติอย่างมากต่อ งานแมชชีนเลิร์นนิง เช่น การแทนข้อมูลและการลดมิติในการประมวลผลภาษาธรรมชาติและการออกแบบ embedding

บทนำ: คำถามเรื่องความจุของพื้นที่ embedding ในโมเดลภาษา

ในซีรีส์วิดีโอเกี่ยวกับโมเดลทรานส์ฟอร์เมอร์ของ 3Blue1Brown เมื่อไม่นานมานี้ Grant Sanderson ได้ตั้งคำถามที่น่าสนใจว่า พื้นที่ embedding 12,288 มิติของ GPT-3 จะบรรจุแนวคิดจากโลกจริงได้หลายล้านแนวคิดอย่างไร
ข้อสงสัยนี้เชื่อมโยงกับผลลัพธ์ทางคณิตศาสตร์อย่าง เรขาคณิตมิติสูง และ บทตั้งเสริม Johnson-Lindenstrauss (JL)
ระหว่างการสำรวจประเด็นนี้ ได้เกิดความเข้าใจใหม่เกี่ยวกับคุณสมบัติพื้นฐานของปริภูมิเวกเตอร์และการหาค่าเหมาะที่สุด และยังนำไปสู่การร่วมงานกับ Grant อีกด้วย

ความเป็นกึ่งตั้งฉากของเวกเตอร์และความจุของพื้นที่ embedding

  • ในปริภูมิ N มิติ จะมีเวกเตอร์ที่ตั้งฉากกันอย่างสมบูรณ์ได้เพียง N ตัว
  • แต่ในทางปฏิบัติ หากยอมให้มีความสัมพันธ์แบบ กึ่งตั้งฉาก (quasi-orthogonal) ที่เบี่ยงจาก 90 องศาเล็กน้อย (เช่น มุม 85~95 องศา) จำนวนเวกเตอร์ที่แทนได้ในปริภูมิเดียวกันจะเพิ่มขึ้นแบบทวีคูณ
  • ในวิดีโอของ Grant มีการแสดงภาพว่าเวกเตอร์หน่วย 10,000 ตัวสามารถจัดวางในปริภูมิ 100 มิติให้เกือบตั้งฉากกันได้
  • อย่างไรก็ตาม ระหว่างการทำซ้ำการทดลองเดียวกัน กลับพบกับกับดักเล็ก ๆ ในการออกแบบ ฟังก์ชันความสูญเสียสำหรับการหาค่าเหมาะที่สุด

ปัญหาและรูปแบบของฟังก์ชันความสูญเสีย

  • ฟังก์ชันความสูญเสียพื้นฐาน:
    loss = (dot_products.abs()).relu().sum()
  • บนยูนิตสเฟียร์จริง ๆ ฟังก์ชันความสูญเสียนี้ก่อให้เกิดปัญหาสองประการ
    1. Gradient Trap: เมื่อมุมของเวกเตอร์เข้าใกล้ 90 องศา กราดิเอนต์จะทำงานแรง แต่เมื่อเข้าใกล้ 0 องศาหรือ 180 องศา กราดิเอนต์จะเกือบเป็นศูนย์ ทำให้การปรับปรุงหยุดชะงัก
    2. ทางออกแบบ 99%: วิธีหาค่าเหมาะที่สุดจะลดความสูญเสียรวมด้วยการจัดวางที่เวกเตอร์แต่ละตัวตั้งฉากได้ดีต่อ 9,900 ตัวจาก 10,000 ตัว แต่เกือบขนานกับอีก 99 ตัว (กล่าวคือเป็นสำเนาของเวกเตอร์อ้างอิง)
  • เมื่อมองภาพรวม วิธีแก้นี้ต่างจากสิ่งที่คาดหวังโดยพื้นฐาน จึงจำเป็นต้องใช้ฟังก์ชันความสูญเสียที่ประณีตกว่า
  • จึงเปลี่ยนไปใช้ฟังก์ชันความสูญเสียที่มีการลงโทษแบบเอ็กซ์โปเนนเชียล: loss = exp(20*dot_products.abs()**2).sum()
  • วิธีนี้ให้ผลที่ใกล้กับการกระจายตัวที่ต้องการมากกว่า (มุมคู่สูงสุดประมาณ 76.5 องศา)

บทตั้งเสริม Johnson-Lindenstrauss (JL): หลักประกันเชิงเรขาคณิต

  • บทตั้งเสริม JL รับประกันว่าแม้จะฉายชุดจุดข้อมูลมิติสูงตามอำเภอใจลงสู่มิติที่ต่ำกว่าแบบสุ่ม ระยะทางแบบยูคลิดก็ยังคงถูกเก็บรักษาไว้เกือบเดิม
  • สำหรับจุดจำนวน 1~N จุด ค่าคลาดเคลื่อน ε และมิติฉาย k
    (1-ε)||u-v||² ≤ ||f(u)-f(v)||² ≤ (1+ε)||u-v||²
  • มิติต่ำสุดที่ต้องการคือ: k ≥ (C/ε²) * log(N)
    โดย C เป็นค่าคงที่ที่ใช้ปรับความน่าจะเป็นของความสำเร็จ
  • โดยทั่วไปมักตั้งค่า C แบบอนุรักษนิยมไว้ที่ 4~8 แต่ในวิธีฉายแบบพิเศษบางแบบ (เช่น Hadamard matrix หรือวิธีหาค่าเหมาะที่สุด) อาจทำให้ได้ C ที่เล็กกว่านี้

ด้านการประยุกต์ใช้งานจริง

  1. การลดมิติ:
    • ตัวอย่าง) แปลงความชอบของลูกค้าอีคอมเมิร์ซจากมิติระดับจำนวนสินค้าหลายหมื่นรายการให้เหลือเพียงหลักพันได้อย่างมีประสิทธิภาพ
    • นำไปใช้กับการวิเคราะห์ข้อมูลมิติสูงแบบเรียลไทม์และระบบแนะนำได้
  2. การวิเคราะห์ขีดจำกัดความจุของพื้นที่ embedding:
    • แทนที่จะยึดกับความตั้งฉากสมบูรณ์ ก็สามารถแสดง สเปกตรัมของความเหมือน/ความต่างระหว่างแนวคิด ได้อย่างเป็นธรรมชาติภายในปริภูมิ
    • ตัวอย่างคำจริง เช่น "archery", "fire", "gelatinous", "green" ซึ่งมีทั้งความหมายเชิงกายภาพและเชิงนามธรรมซ้อนทับกันในปริภูมิมิติสูง

การวิเคราะห์เชิงทดลองของความจุ embedding

  • จากการหาค่าเหมาะที่สุดด้วยการแปลง Hadamard matrix เป็นต้น พบว่าค่า C อยู่ที่ 2.5~4 และในการหาค่าเหมาะที่สุดบน GPU อาจลดลงได้มากกว่านั้นอีก
  • วิธีทดลอง: ฉาย standard basis vector จำนวน N ตัวเข้าสู่ปริภูมิ k มิติทีละลำดับ แล้วทำการหาค่าเหมาะที่สุดซ้ำ 50,000 ครั้ง
  • ผลการสังเกต:
    1. ค่า C จะเพิ่มขึ้นจนถึงค่าสูงสุด (~0.9) เมื่อ N เพิ่มขึ้น แล้วจึงค่อย ๆ ลดลง
    2. เมื่ออัตราส่วน N/k สูงขึ้น C จะลดลงต่ำกว่า 0.2
  • สิ่งนี้เกิดจากประสิทธิภาพของ sphere packing ในปริภูมิมิติสูง
  • นั่นชี้ว่าความสามารถในการแทนแนวคิดจริง ๆ อาจมากกว่าขอบบนทางทฤษฎีเสียอีก

ความหมายเชิงปฏิบัติของ embedding ในโมเดลภาษา

  • จำนวนแนวคิดที่บรรจุได้ขึ้นอยู่กับมิติ embedding k มุมตั้งฉากโดยประมาณ F (90°-มุมจริง) และค่า C โดยคำนวณได้เป็น Vectors ≈ 10^(k * F² / 1500)
    • k=12,288, F=1(89°) → 10^8
    • F=2(88°) → 10^32
    • F=3(87°) → 10^73
    • F=5(85°) → เก็บเวกเตอร์ได้มากกว่า 10^200
  • เพียง 86° ก็มีจำนวนมากกว่าจำนวนอะตอมในเอกภพที่สังเกตได้ (10^80)
  • กล่าวคือ โมเดลภาษาจริงสามารถคงความหมายจำนวนหลายล้านรายการไว้ได้อย่างอุดมสมบูรณ์แม้มีจำนวนมิติไม่มากนักเมื่อเทียบกัน

การประยุกต์ใช้ในงานจริงและทิศทางในอนาคต

  1. การลดมิติอย่างมีประสิทธิภาพ:
    • ผ่านวิธีการฉายแบบสุ่มที่ผสาน Hadamard transform, BCH coding เป็นต้น จึงสามารถลดมิติของข้อมูลขนาดใหญ่และคำนวณได้รวดเร็วโดยไม่ต้องทำ optimization ที่ซับซ้อน
  2. การออกแบบพื้นที่ embedding:
    • ความเข้าใจเรื่องความจุของปริภูมิช่วยอธิบายได้ว่าโมเดลภาษาขนาดใหญ่อย่างทรานส์ฟอร์เมอร์สามารถเก็บรักษาความสัมพันธ์เชิงความหมายของแนวคิดละเอียดอ่อนอย่าง "Canadian" หรือ "Muppet-like" ไปพร้อมกันได้
  • โดยสรุป มาตรฐาน embedding ปัจจุบัน (1,000~20,000 มิติ) เพียงพอสำหรับการแทนองค์ความรู้ของมนุษย์ และหัวใจสำคัญคือการ เรียนรู้การจัดวางที่เหมาะสมที่สุด ภายในปริภูมินั้น

บทสรุป

  • จุดเริ่มต้นจากการสำรวจปัญหาการหาค่าเหมาะที่สุดเล็ก ๆ ในฟังก์ชันความสูญเสีย ได้นำไปสู่ความเข้าใจเชิงลึกต่อเรขาคณิตมิติสูงและโครงสร้างพื้นฐานของแมชชีนเลิร์นนิง
  • บทตั้งเสริม JL ที่ตีพิมพ์ในปี 1984 กำลังทำหน้าที่เป็นแกนหลักของหลักการ embedding ในแมชชีนเลิร์นนิง การแทนข้อมูล และการลดมิติในปัจจุบัน
  • พร้อมทั้งขอบคุณ Grant Sanderson, ช่อง 3Blue1Brown และ Suman Dev สำหรับความร่วมมือ และแบ่งปันความยินดีจากประสบการณ์วิจัยและการเขียนครั้งนี้

อ่านเพิ่มเติม

  1. Sphere Packings, Lattices and Groups – Conway & Sloane
  2. Database-friendly random projections: Johnson-Lindenstrauss with binary coins – Achlioptas
  3. Hadamard Matrices, Sequences, and Block Designs – Seberry & Yamada

1 ความคิดเห็น

 
GN⁺ 2025-09-16
ความคิดเห็นจาก Hacker News
  • นัยของคุณสมบัติทางเรขาคณิตนี้น่าตกใจจริง ๆ ลองคิดวิธีประเมินแบบง่าย ๆ ได้ว่าในปริภูมิ k มิติ เราจะใส่เวกเตอร์ที่เกือบตั้งฉากกันได้มากแค่ไหน ถ้าสนใจแค่มุมต่ำสุดระหว่างเวกเตอร์ สุดท้ายก็คือการวิเคราะห์เรื่อง spherical codes แต่บทความนี้กลับไม่อ้างอิงงานวิจัยเดิมเกี่ยวกับ spherical codes เลย และหลายส่วนก็ดูเหมือนเขียนโดย language model อีกทั้งยังมีความไม่สอดคล้องพื้นฐานจำนวนมากที่ทำให้ความน่าเชื่อถือของข้อสรุปลดลง ตัวอย่างเช่น ในกราฟที่แสดงค่า C ตาม K และ N แกน x คือ K หรือ N กันแน่? คำบรรยายบอกว่าแกน x คือ N (จำนวนเวกเตอร์) แต่ต่อมากลับอธิบายว่าได้ C=0.2 ใน “ปริภูมิที่ใหญ่มาก” ขณะที่ในกราฟ C=0.2 เกิดขึ้นเฉพาะตอน N=30,000 และ K=2 เท่านั้น — เท่ากับมีเวกเตอร์ 30,000 ตัวในปริภูมิ 2 มิติ! กลับกัน ถ้าแกน x คือ K บทความนี้ก็กำลังเอาผลที่วัดจากเวกเตอร์ 2 ตัวใน 30,000 มิติ ไป extrapolate เป็นกรณีเวกเตอร์ 10^200 ตัวใน 12,888 มิติ ซึ่งไม่มีเหตุผลเลย ผมอยากเข้าหางานของคนอื่นแบบเป็นบวกและเป็นมิตรนะ แต่ช่วงนี้กระแสบทความที่เขียนด้วย LLM บน Hacker News มันถาโถมหนักจริง ๆ

    • การบอกว่าอะไรบางอย่างถูกสร้างด้วย LLM นั้นทั้งพิสูจน์ไม่ได้ และสู้ชี้ตรง ๆ ว่า “มีข้อผิดพลาด” จะตรงประเด็นและมีความหมายกว่าเสียอีก ที่จริงการชี้ข้อผิดพลาดแบบนี้มีประโยชน์มากกว่า สำหรับรูปนั้น ผมก็คิดว่าแกน x น่าจะเป็น N

    • จากที่ผมไม่รู้จัก spherical codes มาก่อน ก็ทำให้รู้สึกว่าศัพท์ในสาขานี้ค่อนข้างเฉพาะทางมาก แม้แต่ Wikipedia ก็ดูเหมือนแทบไม่รู้อะไร และผลค้นหา Google ส่วนใหญ่ก็ลงเอยที่การจัดวางแบบ optimal packing คล้ายลูกกอล์ฟบนทรงกลมในมิติต่ำกว่า 32 อยู่ดี บ่อยครั้งคณิตศาสตร์ที่มีอยู่แล้วก็มักถูกค้นพบใหม่อีกครั้งเพราะซ่อนอยู่ใต้คำศัพท์เฉพาะที่ไม่ชวนให้เข้าใจ

    • เห็นด้วย อยากรู้ว่ามีบทความไหนที่อธิบายคุณสมบัติทางเรขาคณิตและข้อมูลของปริภูมิเวกเตอร์มิติสูง รวมถึง spherical codes ได้ดีกว่านี้บ้าง

    • จากกราฟที่คุณอ้างถึง ผมมองไม่เห็นว่า K=2 จะไปถึง C=0.2 เลย K=3 ก็หยุดแค่ C=0.3 ด้วยซ้ำ แต่ผมก็ยังไม่ค่อยเข้าใจว่าทำไมเรื่องนี้ถึงเป็นปัญหา ผู้เขียนน่าจะฉาย projected basis vectors จำนวน N ลงใน K มิติ และ C ก็ดูคล้ายค่าความผิดพลาดของการแมปจากปริภูมิ N ไปยังปริภูมิ K ถ้ามีเหตุผลว่าทำไมแนวคิดนี้ถึงไม่สอดคล้องกับกราฟ ผมอยากฟังเพิ่ม เพราะจากข้อโต้แย้งของคุณดูเหมือนยังไม่ได้แตะตัวแนวคิดนี้โดยตรง

  • ผมคิดว่าผู้เขียนโฟกัสกับกรณีที่เวกเตอร์ทุกตัวตั้งฉากสมบูรณ์มากเกินไป เลยประเมินระดับความผิดพลาดที่ยอมรับได้สูงเกินจริง สิ่งที่สำคัญจริง ๆ ไม่ใช่แค่ทำให้เวกเตอร์ที่ตั้งฉากกันยังคงเกือบตั้งฉาก แต่ต้องรักษาลำดับระยะห่างระหว่างเวกเตอร์ที่อยู่ไกลจากความตั้งฉากด้วย แม้ epsilon จะเล็กกว่านี้มาก ก็ยังอาจเกิดปัญหาได้จริง ดังนั้นคำกล่าวที่ว่า “อย่างที่งานนี้เสนอ แค่ราว 1,000~20,000 มิติก็เพียงพอจะบรรจุทั้งความรู้และการให้เหตุผลของมนุษย์” จึงมองโลกในแง่ดีเกินไป

    • ปกติเวกเตอร์จะถูก normalize ให้อยู่บนผิวของ n-sphere และระยะที่มีความหมายจริงในการใช้งานก็คือ cosine similarity เพราะฉะนั้นในทางปฏิบัติ “เกือบตั้งฉาก” จึงสำคัญ ระหว่างการฝึก เป้าหมายคือทำให้ตัวแทนที่ไม่มีความหมายแยกจากกันบนทรงกลมให้ “ตั้งฉาก” มากขึ้น และเมื่อต้องนำไปใช้บนฮาร์ดแวร์จริง ก็ยังมีข้อจำกัดด้านความละเอียดของ floating point ซึ่งยิ่งทำให้วิธีนี้ใช้ได้ดี โดยส่วนตัวแล้ว แนวคิดนี้ไม่ได้ถูกเสนอครั้งแรกโดยบล็อกหรือวิดีโอ YouTube นั้น ใน AI หรืออย่างน้อยในการฝึก neural network ความสำคัญของบทตั้งนี้ถูก C. Eliasmith พูดถึงตั้งแต่ราว 10 ปีก่อน และถูกศึกษามาตั้งแต่ก่อนที่เครือข่ายความรู้มิติสูงมากอย่าง GPT จะถูกฝึกได้จริงด้วยซ้ำ

    • ตรรกะของข้ออ้างต้นฉบับไม่ค่อยดี แต่ถึงอย่างนั้น ความสามารถในการแทนข้อมูลระดับราว 20,000 มิติก็ยังชวนให้มองในแง่ดีอยู่

    • ผมเองก็ไม่ได้คิดว่าเวกเตอร์ทั้งหมดจะตั้งฉากสมบูรณ์หรือเป็นอิสระจากกัน เรื่องการวัดระยะ ปริภูมิเส้นโค้ง (curvilinear space) และพิกัดเอียง (skew coordinate) ก็มีบทความน่าอ่านเหมือนกัน: https://news.ycombinator.com/item?id=41873650. มีคำถามพื้นฐานอย่าง “การวัดระยะเปลี่ยนไปแค่ไหนตามลำดับของคุณลักษณะ?”, “ถ้าสลับลำดับของแกนตั้งฉากทั้งหมด ผลลัพธ์ของอัลกอริทึมจะเปลี่ยนไหม?”, “คุณลักษณะในปริภูมิมิติสูงนั้นตั้งฉากกัน 90 องศาจริงทุกตัวหรือเปล่า?” ถ้าคุณลักษณะไม่ได้เป็นอิสระทางสถิติ ก็แทบเป็นไปไม่ได้เลยที่จะตั้งฉากสมบูรณ์จริง และประโยชน์ของการวัดระยะที่ตั้งอยู่บนสมมติฐานเรื่องความเป็นอิสระก็อาจมีข้อจำกัด โมเดลเชิงเส้นอย่าง naive Bayes, linear regression, logistic regression, LDA, PCA จะเชื่อถือได้น้อยลงเมื่อคุณลักษณะไม่เป็นอิสระ เทคนิคอย่าง L1 lasso หรือ L2 ridge regularization ก็มีความเสี่ยงเมื่อเจอข้อมูลที่มี outlier หรือไม่เป็นอิสระและไม่ตั้งฉาก [ความตั้งฉากสมบูรณ์] บีบอัดให้เกิดขึ้นแบบฝืน ๆ ได้ยาก จึงยากจะบอกว่าโมเดลเพียงพอแล้ว และในระดับพื้นฐานก็ยังมีคำถามว่า gbit สามารถเข้ารหัสพร้อมกันได้จริงหรือไม่

  • กลิ่นอาย ChatGPT ที่โชยมาจากบทความส่วนใหญ่ค่อนข้างรบกวนใจและทำให้โฟกัสยาก ผมเองก็ใช้ AI ช่วยเกลาภาษาอังกฤษ แต่จะสั่งไว้ไม่ให้เปลี่ยนโทนหรือรูปแบบมากเกินไป เพื่อพยายามเลี่ยงไม่ให้เป็นแบบนั้น ถึงอย่างนั้น ผมก็คิดว่าข้อสังเกตทางคณิตศาสตร์นี้น่าสนใจมาก มันชี้ไปถึงนัยพื้นฐานที่ช่วยให้มองเข้าไปในวิธีทำงานจริงของ large language model และระบบ AI อื่น ๆ ได้ ถ้าดูว่าข้อมูลมิติสูงถูกฉายลงสู่มิติต่ำโดยยังรักษาโครงสร้างไว้ได้อย่างไร ก็จะเห็นว่ากลไกแบบนี้คือหัวใจของประสิทธิภาพและการขยายสเกล

    • น่าแปลกดีที่ย่อหน้าที่สองของคุณกลับให้ความรู้สึกเหมือนผ่าน ChatGPT มาเหมือนกันทันที จากคำอย่าง “fascinating”, “crucial”, “delving” และโครงสร้างของย่อหน้า

    • อยากรู้ว่าตรงไหนที่ทำให้รู้สึกถึงกลิ่น GPT ชัด ๆ เพราะเป็นสไตล์ที่ชอบไล่เรียงหลายอย่างหรือเปล่า?

  • ทฤษฎีเชิงสัญชาตญาณแบบนี้ รวมถึงบทตั้ง Johnson-Lindenstrauss (JL) คือแกนหลักที่ทำให้งานวิจัยด้าน mechanistic interpretability เช่น SAEs (sparse autoencoders) ในสาย AI safety เป็นไปได้ หลายไอเดียในนี้ถูกรวบรวมไว้อย่างดีในงานของ Anthropic ปี 2022: https://transformer-circuits.pub/2022/toy_model/index.html

    • อยากรู้ว่าตัว paper จริงดูได้ที่ไหน และตีพิมพ์ที่ใด
  • language model ไม่ได้ยัด “แนวคิด” ลงไปแบบตรึงตายในมิติ C ของเลเยอร์หนึ่งเลเยอร์เดียว (ดูเหมือนตัวเลข 12k จะถูกใช้ในความหมายทำนองนั้น) และก็ไม่จำเป็นต้องมีความตั้งฉากสมบูรณ์ระหว่างเวกเตอร์เพื่อแยกแยะและปฏิบัติต่อแนวคิดต่าง ๆ LLM ไม่ได้แค่ทำให้ระยะระหว่างแนวคิดในปริภูมิเวกเตอร์ห่างกัน แต่ความหมายยังซ้อนทับกันอยู่ทั่ว ๆ ด้วย นี่แหละคือหัวใจของ dense representation ถ้าฝึก sparse autoencoder คุณจะเห็นได้ว่านิวรอนใดเปิดใช้งานตามหัวข้ออะไร Neuronpedia แสดงภาพจริงแบบนี้ได้ดีมาก: https://www.neuronpedia.org/

    • งาน sparse autoencoder นั่นเองที่ตั้งอยู่บนแนวคิด “เกือบตั้งฉาก” แบบที่บทความนี้พูดถึง เดิมทีเรียกว่า ‘superposition hypothesis’: https://transformer-circuits.pub/2022/toy_model/index.html SAEs ทำหน้าที่แยก dense vector ออกเป็น “แนวคิด” แบบ sparse ที่เกือบตั้งฉากกันในปริภูมิ overcomplete วิธีนี้ใช้ได้ผลจริง และยังอาจนำไปใช้จับคู่ embedding space ระหว่าง LLM ต่างตัวได้อย่างมีประสิทธิภาพด้วย

    • ถ้าผ่อนเงื่อนไขของความตั้งฉากสมบูรณ์ลง เราจะยัดข้อมูลได้มากขึ้นมาก โดยพื้นฐานแล้วคือการจับกลุ่มข้อมูลเพิ่มเติมแบบ (เศษส่วนของมิติ) เข้ากับมิติเดิม พูดอีกอย่างคือ แนวคิดจำนวนมากไม่ได้ตั้งฉากสมบูรณ์ต่อกัน แต่มีการซ้อนทับหรือสหสัมพันธ์กันในระดับหนึ่ง เพราะอย่างนั้น เนื้อหาในบทความจึงไม่ได้พลิกโลกมากนัก และการใช้คำอย่าง “remarkable”, “fascinating”, “profound” อย่างพร่ำเพรื่อก็ให้อารมณ์แบบ LLM ที่พยายามดึงผู้อ่านอยู่หน่อย ๆ

  • เรื่องเล็กน้อยแต่สนุกดี: คุณเองก็สามารถเก็บแนวคิดนับพันล้านไว้ในปริมาณพื้นที่ประมาณนี้ได้เหมือนกัน ต่อให้สนใจแค่ 4 บิตต่อคอมโพเนนต์ของเวกเตอร์ เวกเตอร์ 12000 มิติแบบ fp4 ก็มีขนาดราว 6KB ซึ่งพอ ๆ กับข้อความ UTF-8 หลายหน้า หรือประมาณ embedding 64K ของข้อความ 3K โทเคน จำนวนความเป็นไปได้ของ “ความคิด” ที่แทนได้แบบนี้มีมหาศาล เวลาประมวลผลหนึ่งโทเคน แต่ละเลเยอร์ก็ผสม “ความคิด” ก่อนหน้าเข้ากับ attention และข้อมูลที่เรียนรู้ผ่าน FFN ราว 60 ครั้ง ด้วยเหตุนี้ระบบทั้งชุดจึงทำงานซับซ้อนได้ เช่น แปลง Bash เป็น Python หรือแก้โจทย์คำ แน่นอน ผมไม่ได้คาดหวังว่ามันจะมีประสิทธิภาพด้านพื้นที่ 100% มันต้องทำงานได้ดีเมื่อผสมเวกเตอร์ด้วย “ความแรง” ที่ต่างกัน และการฝึกก็ไม่ได้ลู่เข้าหาการบีบอัดที่มีประสิทธิภาพสูงสุดเสมอไป แต่ถึงมองขีดจำกัดเชิงทฤษฎีเป็นแค่เพดานบน มันก็ยังทำให้เกิดความรู้สึกใหม่ว่าในเวกเตอร์มิติสูงมาก เราอาจอัดอะไรที่ใช้เรียกว่า “ความคิด” ได้แน่นขนาดไหนในทางปฏิบัติ

  • สัญชาตญาณของผมง่ายกว่านั้นมาก — ถ้าสมมติว่าแนวคิดมีโครงสร้างแบบลำดับชั้นอยู่บ้าง ก็พอจะคำนวณคร่าว ๆ ได้ว่าในปริภูมิ 12000 มิติจะมีแนวคิดได้กี่แบบ ถ้าคิดว่าแต่ละแนวคิดในบางมิติจะตั้งฉากอย่างน้อยหนึ่งแกนกับแนวคิดอื่นทั้งหมด นั่นแปลว่าจะมีฟังก์ชันที่แยกเชิงเส้นระหว่างสองแนวคิดได้เสมอ แม้ cosine distance จะไม่ได้มากพอก็ตาม ในกรณีสุดโต่ง แบบนี้อาจไปได้ถึง 12,000! แนวคิดเลย ซึ่งมากเกินพอสำหรับ taxonomy ทั่วไป

    • การจะทำให้เป็น 12,000! แนวคิดได้ ต้องมีการจับคู่ลำดับให้แต่ละแนวคิดกับมิติ แต่ในโมเดลจริง ลำดับของมิติไม่มีความหมาย กล่าวคือ [weight_1, weight_2,...] กับ [weight_2, weight_1,...] เหมือนกันทุกประการภายในโมเดล ในทางปฏิบัติ language model จะเหมือนมีแค่ค่าบวก ค่าลบ หรือ 0 ในแต่ละแกน ซึ่งเท่ากับประมาณ 3^12,000 แนวคิด จริง ๆ แล้วในเวกเตอร์ส่วนใหญ่แทบทุกแกนจะเกือบเป็น 0 หมด ยกเว้นไม่กี่สิบแกน (เพราะข้อจำกัดด้านเวลาในการฝึก)

    • ตัวเลขนั้นใหญ่กว่าจำนวนอะตอมในเอกภพทั้งหมด (10^80) มากอย่างมหาศาล (ประมาณ 10^43741)

    • ตรงที่ว่า “cosine distance ไม่ได้มากนัก” นั่นแหละคือข้อจำกัดสำคัญอยู่แล้ว

  • ถ้าเคยเล่นเกม 20 Questions ก็จะรู้ว่าเราไม่จำเป็นต้องใช้ 1000 มิติเพื่อแทนแนวคิดนับพันล้าน เวกเตอร์ขนาดมหึมาแบบนี้ยังเก็บข้อมูลที่ซับซ้อนกว่าแนวคิดนับพันล้านได้อีกมาก ที่จริง บทกวีทั้งบทพร้อมตำแหน่งคำพิมพ์ผิดก็สามารถถูกแทนและค้นคืนได้ด้วยเวกเตอร์แบบนี้ อย่างกรณีที่เอาบทกวีไปให้ GPT แล้วถามหาตำแหน่งคำผิด ข้อมูลนั้นน่าจะถูกแยกแยะไว้อย่างชัดเจนในบางจุดของเลเยอร์ภายใน

    • จริง ๆ แล้วนั่นไม่ใช่งานของเวกเตอร์เดี่ยว แต่เป็นสิ่งที่ทั้งโมเดลทำร่วมกัน โมเดลทั้งตัวทำงานคล้ายเวกเตอร์ระดับล้านล้านมิติแบบหนึ่ง

    • ถ้าใช้เวกเตอร์แบบไบนารี 20 มิติก็แทนแนวคิดได้เกินหนึ่งล้านเล็กน้อย และ 30 มิติก็ได้หนึ่งพันล้านแนวคิดแล้ว

  • แม้หลายคอมเมนต์จะชี้ช่องโหว่ของบทความนี้ไปมากแล้ว แต่ผมขอเพิ่มข้อสังเกตพื้นฐานสุด ๆ อีกข้อ: คำกล่าวว่าปริภูมิ 12k มิติเก็บแนวคิดได้ 10^200 นั้นเหลวไหลเกินไป ปริภูมิเวกเตอร์ 12k มิติอาจเก็บค่าจำเพาะแยกกันได้มากมายก็จริง แต่ไม่ได้แปลว่าสิ่งเหล่านั้นล้วนเป็น “แนวคิด” ข้ออ้างแบบนี้เกินเลยมาก ผมว่าแม้แต่ Shannon ก็คงอยากทักเรื่องนี้ชัด ๆ

  • ความผิดพลาดหลักคือ ในโลกจริงไม่ได้มี “แนวคิด” อยู่เป็นหมื่นล้านด้วยซ้ำ “แนวคิด” แบบที่มนุษย์ใช้ กับ “instance” หรือ “entity” เชิงกลไกนั้นเป็นคนละอย่างกันโดยสิ้นเชิง instance อาจมีได้ไม่สิ้นสุด แต่จำนวนแนวคิดเชิงนามธรรมที่เราใช้คิดจริง ๆ นั้นจำกัดกว่ามาก