- Dalam ruang embedding berdimensi tinggi, sangat banyak representasi konsep dimungkinkan dengan memanfaatkan kuasi-ortogonalitas (quasi-orthogonality) alih-alih ortogonalitas sempurna
- Lema Johnson-Lindenstrauss menjamin bahwa data berdimensi tinggi arbitrer dapat diproyeksikan ke dimensi yang lebih rendah dengan hampir tanpa kehilangan informasi
- Dalam proses optimisasi, desain fungsi loss sangat penting, karena fungsi loss dasar dapat menghasilkan penempatan vektor yang tidak efisien atau bias
- Hasil eksperimen menunjukkan bahwa kapasitas nyata ruang embedding jauh lebih besar daripada yang diperkirakan secara teoretis, sehingga jutaan hingga miliaran konsep dapat hidup berdampingan secara alami
- Temuan ini memiliki makna praktis besar untuk praktik machine learning seperti representasi data dan reduksi dimensi, termasuk dalam NLP dan desain embedding
Pendahuluan: pertanyaan tentang kapasitas ruang embedding model bahasa
Dalam seri video model transformer terbaru dari 3Blue1Brown, Grant Sanderson mengajukan pertanyaan menarik: bagaimana ruang embedding GPT-3 yang berdimensi 12.288 dapat memuat jutaan konsep dunia nyata
Pertanyaan ini terhubung dengan geometri berdimensi tinggi dan hasil matematika yang dikenal sebagai lema Johnson-Lindenstrauss (JL)
Dalam proses menelaahnya, muncul wawasan baru tentang sifat fundamental ruang vektor dan optimisasi, yang bahkan berlanjut menjadi kolaborasi dengan Grant
Kuasi-ortogonalitas vektor dan kapasitas ruang embedding
- Dalam ruang berdimensi N, hanya ada N vektor yang sepenuhnya ortogonal
- Namun, jika kita mengizinkan hubungan kuasi-ortogonal (quasi-orthogonal) yang sedikit menyimpang dari 90 derajat (misalnya sudut 85~95 derajat), jumlah vektor yang dapat direpresentasikan dalam ruang yang sama meningkat secara eksponensial
- Dalam video Grant, diperlihatkan visualisasi 10 ribu vektor satuan yang ditempatkan dalam ruang 100 dimensi dengan posisi yang nyaris ortogonal
- Namun, saat mereproduksi eksperimen yang sama, ditemukan jebakan halus dalam desain fungsi loss optimisasi
Masalah dan pola pada fungsi loss
- Fungsi loss dasar:
loss = (dot_products.abs()).relu().sum() - Pada unit sphere yang sebenarnya, fungsi loss ini menimbulkan dua masalah
- Gradient Trap: saat sudut vektor mendekati 90 derajat, gradien bekerja kuat, tetapi di dekat 0 derajat atau 180 derajat, gradien nyaris 0 sehingga perbaikan terhambat
- Solusi 99%: teknik optimisasi meminimalkan total loss dengan susunan di mana setiap vektor ortogonal dengan baik terhadap 9.900 vektor lain, tetapi hampir paralel dengan 99 vektor lainnya (yakni salinan dari vektor acuan) di antara 10 ribu vektor
- Jika dilihat secara keseluruhan, solusi ini sangat berbeda dari yang diharapkan, sehingga dibutuhkan fungsi loss yang lebih cermat
- Karena itu, fungsi loss diubah dengan menerapkan penalti eksponensial: loss = exp(20*dot_products.abs()**2).sum()
- Pendekatan ini menghasilkan distribusi yang lebih dekat ke yang diinginkan (sudut pasangan maksimum sekitar 76,5 derajat)
Lema Johnson-Lindenstrauss (JL): jaminan geometris
- Lema JL menjamin bahwa meskipun sekumpulan titik data berdimensi tinggi arbitrer diproyeksikan secara acak ke dimensi yang lebih rendah, jarak Euclidean tetap hampir terjaga
- Untuk 1~N titik, faktor galat ε, dan dimensi proyeksi k:
(1-ε)||u-v||² ≤ ||f(u)-f(v)||² ≤ (1+ε)||u-v||² - Dimensi minimum yang diperlukan k adalah:
k ≥ (C/ε²) * log(N)
di mana C adalah konstanta yang menyesuaikan probabilitas keberhasilan - Umumnya, nilai C diambil konservatif di kisaran 4~8, tetapi pada metode proyeksi khusus (misalnya Hadamard matrix, metode optimisasi), C yang lebih kecil dapat dicapai
Bidang penerapan praktis
- Reduksi dimensi:
- Contoh: mengubah preferensi pelanggan e-commerce secara efisien dari puluhan ribu dimensi produk menjadi beberapa ribu dimensi
- Dapat dimanfaatkan untuk analisis real-time data berdimensi tinggi, sistem rekomendasi, dan sebagainya
- Analisis batas kapasitas ruang embedding:
- Bukan ortogonalitas sempurna, melainkan spektrum kemiripan/perbedaan antar konsep yang dapat direpresentasikan secara alami dalam ruang
- Contoh kata nyata: "archery", "fire", "gelatinous", "green", dan sebagainya, di mana makna fisik maupun abstrak tumpang tindih dalam ruang berdimensi tinggi
Analisis eksperimental kapasitas embedding
- Hasil optimisasi menggunakan transformasi Hadamard matrix dan sebagainya menunjukkan bahwa nilai C berada di kisaran 2,5~4, dan pada optimisasi berbasis GPU bisa menjadi jauh lebih rendah
- Metode eksperimen: memproyeksikan N standard basis vector satu per satu ke ruang berdimensi k, lalu melakukan optimisasi berulang sebanyak 50 ribu kali
- Hasil pengamatan:
- Nilai C mencapai puncak (~0,9) saat N meningkat, lalu berangsur menurun
- Semakin tinggi rasio N/k, nilai C turun hingga di bawah 0,2
- Hal ini berasal dari efisiensi sphere packing di ruang berdimensi tinggi
- Ini mengindikasikan bahwa dalam praktik, ada kapasitas untuk merepresentasikan lebih banyak konsep daripada batas atas teoretis
Makna praktis bagi embedding model bahasa
- Bergantung pada jumlah dimensi embedding k, sudut ortogonal aproksimatif F(90°-sudut aktual), dan nilai C, jumlah konsep yang dapat dimuat adalah
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°) → dapat menyimpan lebih dari 10^200 vektor
- Bahkan dengan 86° saja, jumlahnya melebihi jumlah atom di alam semesta teramati (10^80)
- Artinya, model bahasa nyata dapat mempertahankan jutaan makna secara kaya bahkan dalam dimensi yang relatif sedikit
Aplikasi praktis dan arah ke depan
- Reduksi dimensi yang efisien:
- Melalui pendekatan berbasis proyeksi acak yang dikombinasikan dengan transformasi Hadamard, BCH coding, dan sebagainya, reduksi dimensi data skala besar serta komputasi cepat dimungkinkan tanpa optimisasi yang kompleks
- Desain ruang embedding:
- Wawasan tentang kapasitas ruang menjelaskan bagaimana model bahasa besar seperti transformer dapat sekaligus mempertahankan relasi makna hingga konsep halus seperti "Canadian" dan "Muppet-like"
- Kesimpulannya, standar embedding saat ini (1.000~20.000 dimensi) sudah memadai untuk merepresentasikan pengetahuan manusia; kuncinya adalah mempelajari penempatan ideal di dalam ruang tersebut
Kesimpulan
- Berawal dari penelusuran masalah optimisasi halus pada fungsi loss, pembahasan ini berkembang menjadi wawasan mendalam tentang geometri berdimensi tinggi dan struktur dasar machine learning
- Lema JL yang dipublikasikan pada 1984 kini menyediakan fondasi inti bagi embedding machine learning modern, representasi informasi, dan prinsip reduksi dimensi
- Penulis menyampaikan terima kasih kepada Grant Sanderson, kanal 3Blue1Brown, dan Suman Dev atas kolaborasinya, serta membagikan kegembiraan dari riset dan penulisan ini
Bacaan tambahan
- Sphere Packings, Lattices and Groups – Conway & Sloane
- Database-friendly random projections: Johnson-Lindenstrauss with binary coins – Achlioptas
- Hadamard Matrices, Sequences, and Block Designs – Seberry & Yamada
1 komentar
Opini Hacker News
Implikasi dari sifat geometris ini benar-benar mengejutkan. Kita bisa memikirkan cara sederhana untuk memperkirakan berapa banyak vektor yang hampir saling ortogonal dapat dimasukkan ke dalam ruang berdimensi k. Jika hanya berfokus pada sudut minimum antark-vektor, pada akhirnya ini menjadi analisis tentang spherical codes. Namun tulisan ini sama sekali tidak mengutip riset yang sudah ada tentang spherical codes, dan sebagian besar isinya tampak seperti ditulis oleh model bahasa. Ditambah lagi, banyak ketidaksesuaian mendasar yang mengurangi keandalan kesimpulannya. Misalnya, pada grafik yang menunjukkan nilai C terhadap K dan N, sumbu x itu K atau N? Di caption tertulis sumbu x adalah N (jumlah vektor), tetapi kemudian dijelaskan bahwa pada "ruang yang sangat besar" didapat C=0.2, padahal di grafik C=0.2 hanya tercapai saat N=30.000, K=2—artinya ada 30.000 vektor dalam ruang 2 dimensi! Sebaliknya, jika sumbu x adalah K, tulisan ini mengekstrapolasi hasil yang diukur dari 2 vektor dalam 30.000 dimensi menjadi kasus 10 pangkat 200 vektor dalam 12.888 dimensi, dan itu tidak masuk akal. Saya ingin mendekati karya orang lain secara positif dan bersahabat, tetapi belakangan banjir tulisan buatan LLM di Hacker News benar-benar terasa makin berlebihan
Mengatakan sesuatu dibuat oleh LLM bukan hanya mustahil dibuktikan, tapi juga kurang langsung dibanding sekadar menunjukkan "ada kesalahan". Menunjukkan kesalahannya memang lebih berguna. Untuk gambar itu, menurut saya lebih masuk akal jika sumbu x dibaca sebagai N
Dari fakta bahwa saya tidak tahu apa itu spherical codes, saya merasa istilah di bidang ini sendiri cukup tidak umum. Bahkan Wikipedia tampaknya hampir tidak tahu, dan hasil pencarian Google pun kebanyakan berujung pada pembahasan packing optimal seperti golf bola di bawah 32 dimensi. Sering kali matematika yang sebenarnya sudah ada ditemukan kembali karena tersembunyi di balik istilah teknis yang tidak intuitif
Betul. Saya penasaran tulisan apa yang lebih baik dalam menjelaskan sifat geometris atau informasi dari ruang vektor berdimensi tinggi, serta spherical codes
Dari grafik yang kamu sebut, saya tidak bisa melihat K=2 mencapai C=0.2. K=3 pun berhenti di sekitar C=0.3. Tapi saya juga kurang paham kenapa ini dianggap masalah. Penulis tampaknya memproyeksikan N vektor basis ke K dimensi, dan C terlihat seperti semacam ukuran error saat memetakan dari ruang N ke ruang K. Jika ada alasan ide ini tidak cocok dengan grafiknya, saya ingin mendengar penjelasan lebih rinci. Dalam argumenmu, sepertinya konsep itu sendiri belum dibahas
Saya rasa penulis terlalu fokus pada situasi di mana semua vektor sepenuhnya ortogonal, sehingga tingkat error yang masih dapat diterima jadi terlalu dilebih-lebihkan. Yang benar-benar penting bukan menjaga vektor ortogonal tetap hampir ortogonal, melainkan memastikan urutan jarak tetap terjaga bahkan untuk vektor yang jauh dari ortogonal. Bahkan jika epsilon jauh lebih kecil, masalah nyata tetap bisa muncul. Jadi menurut saya klaim bahwa “seperti yang ditunjukkan penelitian ini, sekitar 1.000–20.000 dimensi sudah cukup untuk memuat seluruh pengetahuan dan penalaran manusia” terlalu optimistis
Vektor biasanya dinormalisasi ke permukaan n-sphere, dan jarak yang benar-benar bermakna dalam praktik adalah cosine similarity. Jadi dalam praktik, yang penting adalah "hampir ortogonal". Selama pelatihan, tujuannya adalah membuat representasi yang tidak bermakna menjadi lebih “ortogonal” di atas sphere. Saat diimplementasikan pada perangkat keras nyata, ada juga batas pada presisi floating-point, sehingga pendekatan ini bekerja sangat baik. Sebagai catatan, ide ini bukan pertama kali diajukan oleh blog atau video YouTube tersebut. Signifikansi lema ini dalam AI, atau setidaknya dalam pelatihan jaringan saraf, sudah dibahas sekitar 10 tahun lalu oleh C. Eliasmith, jauh sebelum jaringan pengetahuan berdimensi sangat tinggi seperti GPT benar-benar bisa dilatih dalam praktik
Logika klaim OP kurang kuat, tapi saya tetap merasa optimistis soal kemampuan representasi di sekitar 20 ribu dimensi
Saya juga tidak pernah menganggap semua vektor itu sepenuhnya ortogonal atau independen. Ada juga tulisan menarik tentang pengukuran jarak, curvilinear space, dan skew coordinate: https://news.ycombinator.com/item?id=41873650. Ada pertanyaan yang mendasar seperti: ‘Seberapa banyak pengukuran jarak berubah tergantung urutan fitur?’, ‘Jika urutan semua sumbu ortogonal dibalik, apakah output algoritme juga berubah?’, dan ‘Apakah fitur-fitur di ruang berdimensi tinggi benar-benar semuanya saling ortogonal 90 derajat?’. Jika fitur tidak independen secara statistik, maka praktis tidak mungkin mereka sepenuhnya ortogonal, dan kegunaan pengukuran jarak yang mengasumsikan independensi mungkin terbatas. Model linear seperti naive Bayes, regresi linear, regresi logistik, LDA, dan PCA menjadi kurang andal saat fitur tidak independen. Teknik seperti regularisasi L1 lasso atau L2 ridge juga punya risiko saat menghadapi data dengan outlier, tidak independen, atau tidak ortogonal. Sulit memampatkan [ortogonalitas sempurna] secara paksa, jadi sulit menyimpulkan modelnya sudah cukup. Dan secara lebih mendasar, masih ada pertanyaan apakah encoding simultan itu mungkin dilakukan dalam gbit
Nuansa ChatGPT yang terasa di sebagian besar tulisan itu cukup mengganggu dan membuat sulit fokus. Saya juga memakai AI untuk memoles bahasa Inggris, tetapi saya memberi instruksi agar nada dan formatnya jangan terlalu diubah, jadi saya berusaha menghindari hal seperti itu. Meski begitu, saya tetap menganggap pengamatan matematis ini sangat menarik. Ini memberi implikasi mendasar untuk melihat bagaimana model bahasa besar dan sistem AI lain benar-benar bekerja. Jika kita melihat bagaimana data berdimensi tinggi diproyeksikan ke dimensi yang lebih rendah sambil tetap menjaga strukturnya, kita bisa melihat bahwa mekanisme seperti ini adalah kunci efisiensi dan skalabilitas
Ironisnya, paragraf keduamu justru langsung terasa seperti sudah melewati ChatGPT karena ungkapan seperti “fascinating”, “crucial”, “delving” dan struktur paragrafnya
Bagian mana yang paling terasa seperti GPT? Apakah karena gaya yang suka membuat daftar panjang?
Teori intuitif seperti ini dan lemma Johnson-Lindenstrauss (JL) adalah inti yang memungkinkan riset interpretabilitas mesin seperti SAE (sparse autoencoders) dalam bidang AI safety. Banyak ide ini dirangkum dengan baik dalam makalah Anthropic tahun 2022: https://transformer-circuits.pub/2022/toy_model/index.html
Model bahasa tidak sedang menyumpalkan “konsep” secara tetap ke dalam C dimensi pada satu layer (mungkin angka 12k dipakai seolah begitu). Bahkan tanpa ortogonalitas sempurna antark-vektor, konsep tetap bisa dibedakan dan diperlakukan berbeda. LLM juga tidak sekadar menjauhkan jarak antarkonsep di ruang vektor; makna saling tumpang tindih di berbagai tempat. Ciri inilah inti dari dense representation. Jika Anda melatih sparse autoencoder, Anda bisa melihat neuron mana yang aktif menurut topik. Neuronpedia memperlihatkan wujud nyatanya dengan cukup baik: https://www.neuronpedia.org/
Justru riset sparse autoencoder itulah yang didasarkan pada konsep “hampir ortogonal” yang dibicarakan tulisan ini. Awalnya ini dikenal sebagai ‘superposition hypothesis’: https://transformer-circuits.pub/2022/toy_model/index.html SAE berfungsi memecah vektor padat menjadi ‘konsep’ sparse yang hampir ortogonal dalam ruang overcomplete. Pendekatan ini benar-benar bekerja dalam praktik, dan bahkan bisa dipakai untuk mencocokkan ruang embedding antar-LLM yang berbeda secara efisien
Jika syarat ortogonalitas sempurna dilonggarkan, kita bisa memasukkan jauh lebih banyak informasi. Pada dasarnya, ini berarti mengguguskan informasi tambahan (seperti dimensi pecahan) ke dalam dimensi yang sudah ada. Dengan kata lain, banyak konsep memang tidak sepenuhnya ortogonal satu sama lain, tetapi memiliki tingkat tumpang tindih atau korelasi tertentu. Jadi isi artikelnya sebenarnya tidak terlalu revolusioner. Dan penggunaan berlebihan kata-kata seperti “remarkable”, “fascinating”, dan “profound” memberi kesan halus seperti tulisan LLM yang mencoba menarik pembaca
Sedikit remeh tapi menarik: Anda juga bisa memuat miliaran konsep dalam ruang sebesar ini. Bahkan jika kita hanya memperhatikan 4 bit pada tiap komponen vektor, vektor 12.000 dimensi dalam fp4 hanya sekitar 6KB, kira-kira setara dengan beberapa halaman teks UTF-8. Itu setara embedding 64K dengan 3K token. Jumlah kemungkinan ‘pikiran’ yang dapat direpresentasikan seperti ini sangat besar. Saat memproses satu token, setiap layer sekitar 60 kali mencampurkan ‘pikiran’ sebelumnya dengan attention dan data yang dipelajari FFN. Itulah sebabnya keseluruhan sistem ini bisa melakukan tugas yang kompleks (misalnya mengubah Bash ke Python, menyelesaikan soal cerita, dll.). Tentu saya tidak berharap efisiensi ruangnya 100%. Ia harus tetap bekerja baik saat vektor digabungkan dengan ‘intensitas’ berbeda, dan pelatihan juga tidak selalu konvergen ke kompresi paling efisien. Pada akhirnya, bahkan jika batas teoretis ini hanya dianggap sebagai batas atas, tetap memberi rasa baru bahwa ruang vektor berdimensi sangat tinggi secara praktis bisa dijejali dengan sesuatu yang layak disebut ‘pikiran’
Intuisi saya jauh lebih sederhana — dengan asumsi konsep-konsep itu memiliki semacam struktur hierarkis, kita bisa menghitung secara kasar berapa banyak konsep yang muat dalam ruang 12.000 dimensi. Jika setiap konsep pada suatu dimensi setidaknya ortogonal pada satu sumbu terhadap semua konsep lain, maka meskipun cosine distance tidak terlalu besar, tetap dijamin ada fungsi yang bisa memisahkan dua konsep secara linear. Dalam kasus ekstrem, ini memungkinkan sampai 12.000! konsep (faktorial), jadi untuk kebanyakan taksonomi ruangnya malah terlalu besar
Untuk mewujudkan 12.000! konsep, Anda harus mencocokkan urutan dimensi untuk tiap konsep, padahal dalam model nyata urutan dimensi tidak punya makna. Artinya [weight_1, weight_2,...] dan [weight_2, weight_1,...] sepenuhnya identik di dalam model. Dalam praktik, untuk model bahasa lebih tepat menganggap tiap sumbu hanya punya salah satu dari tiga keadaan: positif, negatif, atau 0, jadi sekitar 3^12.000 konsep. Kenyataannya, pada sebagian besar vektor hampir semua sumbu selain beberapa puluh itu mendekati 0 (karena batas waktu pelatihan)
Angka itu jauh lebih besar daripada jumlah atom di seluruh alam semesta (10^80), sekitar 10^43741
Justru pada bagian “cosine distance tidak terlalu besar” itulah sudah ada batasan yang menentukan
Jika pernah memainkan 20 Questions, Anda tahu miliaran konsep tidak memerlukan 1000 dimensi. Vektor sebesar ini bisa memuat informasi yang jauh lebih kompleks daripada sekadar miliaran konsep. Bahkan, seluruh isi sebuah puisi beserta lokasi typo-nya bisa direpresentasikan dan ditemukan oleh vektor semacam ini. Seperti saat menempelkan puisi ke GPT lalu menanyakan letak typo, di suatu layer internal pasti ada informasi itu dalam bentuk yang dapat dibedakan secara spesifik
Sebenarnya itu bukan pekerjaan satu vektor sederhana, melainkan seluruh model. Model secara keseluruhan bertindak seperti semacam vektor berdimensi 1 triliun
Jika memakai vektor biner, 20 dimensi cukup untuk merepresentasikan sedikit di atas 1 juta konsep. 30 dimensi menjadi 1 miliar konsep
Banyak komentar sudah menunjukkan berbagai kelemahan pada artikel itu, tetapi saya ingin menambahkan satu pengamatan yang sangat mendasar: klaim bahwa 10^200 konsep bisa dimuat dalam 12k dimensi sendiri sudah terlalu konyol. Memang benar ruang vektor 12k dapat memuat banyak sekali nilai individual, tetapi tidak semuanya adalah konsep. Klaim seperti ini absurd. Shannon pun mungkin ingin menegaskan hal ini
Kesalahan utamanya adalah bahwa secara realistis memang tidak ada puluhan miliar konsep. ‘Konsep’ yang dipakai manusia sangat berbeda dari ‘instance’ atau ‘entity’ yang bersifat mekanis. Instance bisa tak terbatas banyaknya, tetapi jumlah konsep abstrak yang benar-benar kita gunakan untuk berpikir jauh lebih terbatas