- Yüksek boyutlu gömme uzaylarında, tam ortogonallik yerine yarı ortogonallik (quasi-orthogonality) kullanılarak çok sayıda kavram temsili mümkün hale gelir
- Johnson-Lindenstrauss (JL) lemması, rastgele yüksek boyutlu verilerin neredeyse hiç bilgi kaybı olmadan daha düşük boyutlara projekte edilebileceğini garanti eder
- Optimizasyon sürecinde kayıp fonksiyonunun tasarımı kritiktir; temel kayıp fonksiyonu verimsiz veya önyargılı vektör yerleşimlerine yol açabilir
- Deney sonuçları, gömme uzayının gerçek kapasitesinin teorik olarak tahmin edilenden çok daha büyük olduğunu ve milyonlarca ile milyarlarca kavramın doğal biçimde bir arada bulunabileceğini gösteriyor
- Bu bulgular, doğal dil işleme, gömme tasarımı gibi makine öğrenimi pratiğinde veri temsili ve boyut indirgeme açısından büyük pratik önem taşıyor
Giriş: Dil modeli gömme uzayının kapasitesi sorusu
3Blue1Brown’un yakın tarihli transformer modeli video serisinde, Grant Sanderson şu ilginç soruyu gündeme getiriyor: GPT-3’ün 12.288 boyutlu gömme uzayına yüz binlerce değil, milyonlarca gerçek dünya kavramı nasıl sığabiliyor?
Bu soru, yüksek boyutlu geometri ve Johnson-Lindenstrauss (JL) lemması adlı matematiksel sonuçla bağlantılı
Bu konuyu araştırma süreci, vektör uzaylarının temel özellikleri ve optimizasyon hakkında yeni içgörüler sağladı; hatta Grant ile bir iş birliğine kadar uzandı
Vektörlerin yarı ortogonalliği ve gömme uzayının kapasitesi
- N boyutlu bir uzayda yalnızca N tane tamamen ortogonal vektör bulunabilir
- Ancak pratikte 90 dereceden biraz sapmaya izin veren yarı ortogonal (quasi-orthogonal) ilişkiler kabul edilirse (ör. 85~95 derece arası açılar), aynı uzayda temsil edilebilecek vektör sayısı geometrik olarak artar
- Grant’in videosunda, 100 boyutlu bir uzaya 10 bin birim vektörün neredeyse ortogonal olacak şekilde yerleştirildiği bir görselleştirme sunuluyor
- Fakat aynı deneyi yeniden üretme sürecinde, optimizasyon kayıp fonksiyonu tasarımında ince ama önemli bir tuzak keşfediliyor
Kayıp fonksiyonunun sorunları ve ortaya çıkan desenler
- Temel kayıp fonksiyonu:
loss = (dot_products.abs()).relu().sum() - Gerçek birim küre üzerinde bu kayıp fonksiyonu iki sorun yaratıyor
- Gradient Trap: Vektör açısı 90 dereceye yaklaşınca gradyan güçlü biçimde çalışıyor, ancak 0 veya 180 derece civarında gradyan neredeyse sıfıra indiği için iyileştirme tıkanıyor
- %99 çözüm: Optimizasyon, 10 bin vektörün her birinin 9.900 tanesiyle düzgün biçimde ortogonal, ama 99 tanesiyle neredeyse paralel olduğu bir yerleşim bularak toplam kaybı düşürüyor; yani fiilen referans vektörlerin kopyaları oluşuyor
- Bu çözüm, genel görünüm açısından beklentiden temelden farklı olduğundan daha incelikli bir kayıp fonksiyonu gerekiyor
- Bu nedenle üstel ceza kullanan bir kayıp fonksiyonuna geçiliyor: loss = exp(20*dot_products.abs()**2).sum()
- Bu yaklaşım, istenen dağılıma daha yakın sonuç veriyor (maksimum ikili açı yaklaşık 76,5 derece)
Johnson-Lindenstrauss (JL) lemması: Geometrik güvence
- JL lemması, rastgele yüksek boyutlu veri noktaları kümesi daha düşük boyuta projekte edilse bile, Öklidyen uzaklıkların büyük ölçüde korunduğunu garanti eder
- 1~N adet nokta, hata çarpanı ε ve projeksiyon boyutu k için
(1-ε)||u-v||² ≤ ||f(u)-f(v)||² ≤ (1+ε)||u-v||² - Gerekli en küçük boyut k şu şekildedir:
k ≥ (C/ε²) * log(N)
Burada C, başarı olasılığını ayarlayan sabittir - Genel kullanımda C değeri muhafazakâr biçimde 4~8 alınır; ancak özel projeksiyon yöntemlerinde (ör. Hadamard matrix, optimizasyon yöntemleri) daha küçük C değerlerine ulaşmak mümkündür
Pratik uygulama alanları
- Boyut indirgeme:
- Örnek: e-ticaret müşterilerinin tercihlerini on binlerce ürün boyutundan birkaç bin boyuta verimli biçimde dönüştürmek
- Yüksek boyutlu verilerin gerçek zamanlı analizi ve öneri sistemlerinde kullanılabilir
- Gömme uzayının kapasite sınırlarını analiz etme:
- Tam ortogonallik yerine, kavramlar arası benzerlik/farklılık spektrumunu uzay içinde doğal biçimde temsil etmek mümkündür
- Gerçek kelime örnekleri olarak "archery", "fire", "gelatinous", "green" gibi kavramların fiziksel ve soyut anlamları yüksek boyutlu uzayda üst üste ifade edilebilir
Gömme kapasitesinin deneysel analizi
- Hadamard matrix dönüşümü gibi yöntemlerle yapılan optimizasyonlarda C değeri 2,5~4 aralığında bulunuyor; GPU tabanlı optimizasyonda ise çok daha aşağı inebiliyor
- Deney yöntemi: N adet standart basis vector’ü sırayla k boyutlu uzaya projekte etmek ve optimizasyonu 50 bin kez yinelemek
- Gözlemler:
- C değeri, N arttıkça önce tepe değerine (~0,9) ulaşıp sonra kademeli olarak düşüyor
- N/k oranı yükseldikçe C değeri 0,2’nin altına iniyor
- Bu durum, yüksek boyutlu uzayda sphere packing verimliliğinden kaynaklanıyor
- Pratikte bunun anlamı, teorik üst sınırın işaret ettiğinden daha fazla kavramın temsil edilebilmesidir
Dil modeli gömmelerinin gerçek anlamı
- Gömme boyutu k, yaklaşık ortogonal açı F (90°-gerçek açı) ve C değerine bağlı olarak saklanabilecek kavram sayısı şöyle ifade edilebilir:
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’den fazla vektör saklanabilir
- Yalnızca 86° bile gözlemlenebilir evrendeki atom sayısından (10^80) daha fazla kapasite anlamına geliyor
- Başka bir deyişle, gerçek dil modelleri nispeten az boyutta bile milyonlarca anlamı zengin biçimde koruyabiliyor
Pratik uygulamalar ve gelecek yönelimler
- Verimli boyut indirgeme:
- Hadamard dönüşümü, BCH coding gibi yöntemlerle birleştirilen rastgele projeksiyon tabanlı yaklaşımlar sayesinde, karmaşık optimizasyona gerek kalmadan büyük ölçekli veri boyut indirgeme ve hızlı hesaplama mümkün olabilir
- Gömme uzayı tasarımı:
- Uzay kapasitesine dair bu içgörü, transformer gibi büyük dil modellerinin "Canadian", "Muppet-like" gibi ince kavramların bile anlamsal ilişkilerini aynı anda koruyabilmesini açıklıyor
- Sonuç olarak, mevcut gömme standartları (1.000~20.000 boyut) insan bilgisini temsil etmek için yeterli görünüyor; asıl mesele bu uzay içinde ideal yerleşimi öğrenmek
Sonuç
- Kayıp fonksiyonundaki ince optimizasyon sorunlarını incelemekle başlayan süreç, yüksek boyutlu geometri ve makine öğreniminin temel yapıları hakkında derin içgörülere ulaşıyor
- 1984’te yayımlanan JL lemması, bugün makine öğrenimi gömmeleri, bilgi temsili ve boyut indirgeme ilkeleri için temel bir yapı taşı olmaya devam ediyor
- Yazı, Grant Sanderson’a, 3Blue1Brown kanalına ve Suman Dev’e iş birliği için teşekkür ederek bu araştırma ve yazım sürecinin keyfini paylaşıyor
Ek okumalar
- 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 yorum
Hacker News görüşü
Bu geometrik özelliğin sonuçları gerçekten çarpıcı. k boyutlu bir uzaya birbirine neredeyse dik olan vektörlerden kaç tane sığdırılabileceğini kabaca tahmin etmenin basit bir yolu olduğu düşünülebilir. Vektörler arasındaki minimum açıya odaklanırsanız, sonuçta bu küresel kodlar (spherical codes) analizi oluyor. Buna rağmen bu yazı, küresel kodlarla ilgili mevcut araştırmalara hiç atıf yapmıyor ve büyük ölçüde bir dil modeli tarafından yazılmış gibi görünüyor. Ayrıca çok sayıda temel tutarsızlık, sonuçların güvenilirliğini düşürüyor. Örneğin, K ve N'e göre C değerini gösteren grafikte x ekseni K mı N mi? Başlıkta x ekseninin N (vektör sayısı) olduğu yazıyor ama sonrasında "çok büyük bir uzayda" C=0.2 elde edildiği söyleniyor; grafikte ise C=0.2'ye yalnızca N=30,000 ve K=2 iken ulaşılıyor — yani 2 boyutlu uzayda 30,000 vektör var demek! Tersine, eğer x ekseni K ise, yazı 30,000 boyutta 2 vektörle ölçülen sonucu 12,888 boyutta 10 üzeri 200 vektör durumuna ekstrapole ediyor ki bunun hiçbir anlamı yok. İnsanların çalışmalarına olumlu ve dostane yaklaşmak istiyorum ama son zamanlarda Hacker News'ta LLM ile yazılmış gönderi seli gerçekten bunaltıcı hale geldi
Bir şeyin LLM ile üretildiğini söylemek ne kanıtlanabilir ne de tek başına özellikle anlamlı; sadece "hata var" demek daha doğrudan ve faydalı. Gerçekten hataları işaret etmiş olman daha yardımcı olmuş. O grafikte x ekseni olarak N'yi okumak doğru gibi görünüyor
Küresel kodları bilmiyor olmam, bu alandaki terminolojinin epey yabancı olduğunu düşündürdü. Wikipedia bile bunu neredeyse hiç bilmiyor gibi, Google sonuçları da çoğunlukla 32 boyutun altında, küresel golf topu gibi optimal paketlemeleri ele alıyor. Bazen zaten var olan matematik, sezgisel olmayan uzman terimlerinin altında gizlenip yeniden keşfediliyor
Evet. Yüksek boyutlu vektör uzaylarının geometrik özelliklerini, bilgiyi ve küresel kodları daha iyi açıklayan yazıların hangileri olduğunu merak ediyorum
Bahsettiğin grafikte K=2 iken C=0.2'ye ulaşıldığını göremiyorum. K=3 de yalnızca C=0.3'e kadar gidip bitiyor. Bunun neden sorun olduğunu da tam anlamadım. Yazar N taban vektörünü K boyutuna projeliyor gibi görünüyor ve C de N uzayından K uzayına eşlerken oluşan bir tür hata ölçüsü gibi. Bu fikrin grafikle neden çeliştiğini düşünüyorsan daha ayrıntılı duymak isterim. Söylediğinde bu kavramın kendisini ele almıyor gibisin
Bence yazar, tüm vektörlerin tamamen dik olduğu duruma fazla odaklanıyor ve bu yüzden pratikte kabul edilebilir hata düzeyini olduğundan yüksek tahmin ediyor. Gerçekte önemli olan, dik vektörlerin neredeyse dik kalması değil; dik olmaktan uzak vektörler arasında da mesafe sıralamasının korunmasıdır. Epsilon çok daha küçük olsa bile pratikte sorun çıkabilir. Yani “bu çalışmada gösterildiği gibi, 1,000 ila 20,000 civarı boyut insan bilgisini ve akıl yürütmeyi barındırmak için yeterlidir” iddiasını fazla iyimser buluyorum
Vektörler genelde n-kürenin yüzeyine normalize edilir ve sonuçlarda anlamlı olan mesafe aslında kosinüs benzerliğidir. Bu yüzden pratikte önemli olan şey "neredeyse dik" olmalarıdır. Eğitim sırasında amaç, anlamsız temsilleri küre üzerinde daha "dik" hale getirmektir. Gerçek donanım üzerinde uygularken kayan nokta hassasiyetinin de sınırları var; bu yüzden bu yaklaşım özellikle iyi çalışıyor. Bu arada bu fikir ilk kez o blogda ya da YouTube videosunda önerilmedi. AI'da, ya da en azından sinir ağı eğitiminde, bu lemmaya verilen önem yaklaşık 10 yıl önce C. Eliasmith tarafından zaten dile getirilmişti ve GPT gibi aşırı yüksek boyutlu bilgi ağlarının pratikte eğitilebilir olmasından çok önce araştırılıyordu
OP'nin argümanı çok iyi değil ama yine de yaklaşık 20 bin boyutluk temsil kapasitesi konusunda umut verici
Ben de tüm vektörlerin tamamen dik ya da bağımsız olduğunu düşünmüyorum. Uzaklık ölçümü, eğrisel uzay (curvilinear space) ve çarpık koordinatlar (skew coordinate) hakkında da okumaya değer bir yazı var: https://news.ycombinator.com/item?id=41873650. “Özelliklerin sırasına göre uzaklık ölçümü ne kadar değişir?”, “Tüm dik eksenlerin sırası değişirse algoritmanın çıktısı da değişir mi?”, “Yüksek boyutlu uzaylardaki özellikler gerçekten birbirine 90 derece dik mi?” gibi temel sorular var. Eğer özellikler istatistiksel olarak bağımsız değilse, gerçekte tamamen dik olmaları mümkün değildir ve bağımsızlık varsayımına dayanan uzaklık ölçümlerinin kullanışlılığı sınırlı olabilir. Naive Bayes, doğrusal regresyon, lojistik regresyon, LDA, PCA gibi doğrusal modeller bağımsız olmayan özellikler altında daha az güvenilirdir. L1 lasso veya L2 ridge regularization gibi teknikler de aykırı değerler ya da bağımsız olmayan, dik olmayan verilerde risk taşıyabilir. [Tam dikliği] zorla sıkıştırmak zor olduğundan modelin yeterli olduğunu düşünmek güç. Ayrıca temelde gbit'te eşzamanlı kodlamanın mümkün olup olmadığı sorusu da var
Yazının büyük bölümünden yayılan ChatGPT havası epey rahatsız ediciydi ve odaklanmayı zorlaştırdı. Ben de İngilizcemi cilalamak için AI kullanıyorum ama tonumu ya da biçimimi fazla değiştirmemesini özellikle istiyorum; bu seviyeden kaçınmaya çalışıyorum. Yine de bu matematiksel gözlemi gerçekten ilginç buluyorum. Büyük dil modellerinin ya da başka AI sistemlerinin gerçekte nasıl çalıştığına dair temel bir işaret sunuyor. Yüksek boyutlu verinin yapısını koruyarak daha düşük boyutlara nasıl projelendiğine bakınca, bu tür mekanizmaların verimlilik ve ölçeklenmenin anahtarı olduğu görülüyor
İronik olarak ikinci paragrafın, “fascinating”, “crucial”, “delving” gibi ifadeler ve paragraf yapısı nedeniyle doğrudan ChatGPT'den geçmiş gibi hissettiriyor
Hangi kısımlar özellikle GPT havası veriyor merak ettim. Çok fazla listeleme yapan üslup mu?
Bu tür sezgisel teoriler ve Johnson-Lindenstrauss (JL) lemması, AI güvenliği alanında SAE'ler (sparse autoencoder) gibi mekanik yorumlanabilirlik araştırmalarını mümkün kılan temel unsurlar. Bu fikirlerin birçoğu Anthropic'in 2022'de yayımladığı şu makalede iyi özetlenmiş: https://transformer-circuits.pub/2022/toy_model/index.html
Bir dil modeli, tek bir katmanın C boyutuna “kavramları” sabit şekilde tıkıştırmıyor (muhtemelen 12k sayısı bu şekilde kullanılıyor). Vektörler tam dik olmasa da kavramları ayırt edip farklı şekilde ele alabilir. LLM'ler vektör uzayında kavramlar arasındaki mesafeleri sadece uzaklaştırmıyor; anlamlar pek çok yerde üst üste biniyor. Bu özellik tam da yoğun temsilin (dense representation) özü. Bir sparse autoencoder eğitirseniz, hangi nöronun hangi konu için aktive olduğunu görebilirsiniz. Neuronpedia bunun pratikte nasıl göründüğünü iyi gösteriyor: https://www.neuronpedia.org/
Tam da o sparse autoencoder araştırması, bu yazının söz ettiği “neredeyse dik” kavramına dayanıyor. Bunun ilk adı “superposition hipotezi” idi: https://transformer-circuits.pub/2022/toy_model/index.html SAE'ler, yoğun vektörleri aşırı tam (overcomplete) bir uzayda birbirine neredeyse dik, seyrek “kavramlara” ayırma işini yapıyor. Bu yaklaşım pratikte gerçekten işe yarıyor ve hatta farklı LLM'ler arasındaki embedding uzaylarını verimli şekilde eşlemek için bile kullanılabiliyor
Tam diklik koşulunu gevşetirseniz çok daha fazla bilgi sığdırabilirsiniz. Özünde ek (kesirli boyutlu) bilgiyi mevcut boyutlarla kümeliyorsunuz. Başka bir deyişle pek çok kavram birbirine tamamen dik değil; belli ölçüde örtüşme ya da korelasyon taşıyor. Bu yüzden makaledeki içerik aşırı sarsıcı değil. Ayrıca “remarkable”, “fascinating”, “profound” gibi ifadelerin aşırı kullanımı, okuyucuyu ince şekilde cezbetmeye çalışan bir LLM havası veriyor
Biraz tali ama eğlenceli bir nokta: Siz de bu kadar bir alana milyarlarca kavram sığdırabilirsiniz. Vektörün her bileşeninde sadece 4 bit'e önem verdiğinizi varsaysanız bile, fp4 ile 12000 boyutlu bir vektör yaklaşık 6KB eder; bu da UTF-8 ile birkaç sayfa metne benzer. 3K token'lık bir 64K embedding düzeyi gibi. Bu şekilde temsil edilen bir “düşünce” için olası durumların sayısı muazzamdır. Bir token işlenirken her katman, yaklaşık 60 kez önceki “düşünceyi”, attention'ı ve FFN ile öğrenilmiş veriyi harmanlar. Bu yüzden tüm sistem Bash'i Python'a dönüştürmek ya da sözel problem çözmek gibi karmaşık işleri yapabilir. Elbette bunun %100 alan verimli olmasını beklemiyorum. Vektörleri farklı “şiddetlerle” birleştirirken iyi çalışması gerekir ve eğitim de her zaman en verimli sıkıştırmaya yakınsamaz. Yine de kuramsal sınırı sadece bir üst sınır olarak bile düşünsek, aşırı yüksek boyutlu vektörlerin içine pratikte ‘düşünce’ diyebileceğimiz şeyleri son derece yoğun biçimde yerleştirebileceğimize dair yeni bir sezgi veriyor
Benim sezgim çok daha basit: Kavramların belli ölçüde hiyerarşik olduğunu varsayarsak, 12000 boyutlu uzaya kaç kavram sığacağını kabaca hesaplayabiliriz. Her kavramın bazı boyutlarda diğer tüm kavramlardan en az bir eksende dik ayrıldığını varsayarsanız, kosinüs uzaklığı yeterince büyük olmasa bile iki kavramı doğrusal olarak ayırabilecek bir fonksiyonun varlığı garanti edilir. Bu durumda uç sınırda 12,000! kavrama kadar çıkılabilir, yani çoğu sınıflandırma şeması için fazlasıyla alan var
12,000! kavramı gerçekleştirebilmek için her kavram için boyutlara bir sıra eşlemeniz gerekir ama gerçek modellerde boyut sırasının bir anlamı yoktur. Yani [weight_1, weight_2,...] ile [weight_2, weight_1,...] model içinde tamamen aynıdır. Pratikte dil modelleri için, her eksende sadece pozitif, negatif ya da 0 olduğunu varsayarsanız yaklaşık 3^12,000 kavram elde edersiniz. Gerçekte çoğu vektörde onlarca eksen dışında neredeyse her şey 0'a yakındır (eğitim süresi sınırlamaları nedeniyle)
Bu sayı evrendeki atom sayısından (10^80) katbekat büyüktür (yaklaşık 10^43741)
“Kosinüs uzaklığı çok büyük değil” kısmı zaten belirleyici sınırlamayı getiriyor
20 Questions oyunu oynadıysanız, milyarlarca kavram için 1000 boyuta ihtiyaç olmadığını bilirsiniz. Bu kadar büyük vektörler, milyarlarca kavramdan çok daha karmaşık bilgileri tutabilir. Örneğin bir şiirin tamamını ve yazım hatalarının yerini böyle bir vektör temsil edip bulabilir. Şiiri GPT'ye yapıştırıp yazım hatasının yerini sorduğunuzda olduğu gibi, iç katmanların bir yerinde o bilgi somut biçimde ayırt edilebilir durumdadır
Aslında bunu yapan basit bir vektör değil, modelin tamamıdır. Modelin bütünü bir bakıma 1 trilyon boyutlu bir vektör gibi davranır
İkili vektör kullanırsanız 20 boyutla 1 milyondan biraz fazla kavram temsil edebilirsiniz. 30 boyutta ise 1 milyar kavrama ulaşırsınız
Pek çok yorumda söz konusu makaledeki çeşitli sorunlara zaten değinilmiş ama gerçekten çok temel bir gözlem daha eklemek istiyorum: 12k boyutta 10^200 kavram sığdırılabildiği iddiası başlı başına saçma. 12k vektör uzayının çok sayıda ayrı değeri temsil edebilmesi başka şeydir; bunların hepsi kavram değildir. Böyle bir iddia akıl dışı. Shannon yaşasaydı buna özellikle itiraz ederdi diye düşünüyorum
Temel hata şu: Gerçekte milyarlarca kavram yok. İnsanların kullandığı ‘kavram’ ile makinesel ‘örnek’ ya da ‘varlık’ aynı şey değil. Örneklerin sayısı sonsuz olabilir ama bizim düşünmede kullandığımız soyut kavramların sayısı çok daha sınırlıdır