LLM’ler ve satrançta görülen tuhaf olgu
(substack.com/dynomight)- Birden fazla LLM aynı koşullarda satranca sokulduğunda çoğu açılıştan sonra çöktü; ancak yalnızca gpt-3.5-turbo-instruct, Stockfish’in en düşük zorluk seviyesine karşı çok güçlü performans gösterdi
- Deneyde LLM beyaz olarak oynatıldı, Stockfish’in en düşük zorluk seviyesiyle karşılaştırıldı ve her hamleden sonraki tahta durumu satranç motorunun centipawn puanı ile değerlendirildi
llama-3.2-3b,llama-3.1-70b,Qwen-2.5-72b,command-r-v01,gemma-2-27b,gpt-3.5-turbo,gpt-4o-mini,gpt-4o,o1-minimodellerinin hiçbirigpt-3.5-turbo-instructseviyesine yaklaşamadı- Benzer ailelerden modeller karşılaştırıldığında instruction/chat ince ayarının satranç performansını düşürdüğü görüldü; ancak bozulma miktarı modele göre küçükten çok büyüğe değişti
- Açık modellerde, prompt’un sonundaki tek bir boşluğun performansı büyük ölçüde değiştirdiği bir tokenizer sorunu ortaya çıktı; satranç notasyonu girdisi LLM’in iç temsillerine ve üretim kısıtlarına hassas tepki veriyor
Deney düzeni ve değerlendirme yöntemi
- LLM’e, bir satranç büyükustası gibi bir sonraki hamleyi seçmesini isteyen bir prompt verildi; girdi ise kısmen ilerlemiş bir satranç oyun kaydıydı
- Notasyonda
e4,Rdf8,R1a3gibi standart cebirsel notasyon kullanıldı - Hamle numarası yazmaması ve seçiminin gerekçesini açıklamaması yönünde talimatlar da yer aldı
- Notasyonda
- Tüm oyunlarda LLM beyaz olarak oynadı; rakibi ise standart satranç yapay zekası Stockfish’in en düşük zorluk seviyesiydi
- Her hamleden sonraki tahta durumu bir satranç motoruyla puanlanarak model performansları karşılaştırıldı
- Birim centipawn idi; bir piyon 100 puan kabul edildi ve konumsal değer de hesaba katıldı
- Oyun bittiğinde LLM galibiyeti +1500, beraberlik 0, yenilgi -1500 olarak işlendi
Açılıştan sonra hızla zayıflayan modeller
llama-3.2-3b, 3 milyar parametreli bir base model; 50 oyunun tamamını kaybetti- Birkaç hamle boyunca standart açılışlar oynayabildi, ancak kısa süre sonra taş kaybetmeye başladı
- Rakip Stockfish’in en düşük ayarı olmasına rağmen hepsini kaybetti
- 70 milyar parametreli
llama-3.1-70bsadece biraz daha iyiydi; yine de çok kötü sonuçlar verdi llama-3.1-70b-instruct,Qwen-2.5-72b,command-r-v01,gemma-2-27bde aynı şekilde test edildi, ancak güçlü satranç performansı gösteremedi- Birkaç oyun oynatılan
llama-3.1-405bdegpt-3.5-turbodan daha büyük bir model olmasına rağmen sonuçları hâlâ kötüydü
İstisnai derecede güçlü olan gpt-3.5-turbo-instruct
gpt-3.5-turbo-instruct, OpenAI’ın kapalı bir modeli olduğu için ayrıntıları belirsiz; ancak 10 denemede çok iyi performans gösterdi- Stockfish zorluğu birkaç seviye artırıldığında bile tüm oyunları kazanacak kadar güçlüydü
- Benzer adlı
gpt-3.5-turbo, daha sohbet odaklı ayarlanmış bir modeldir ve satranç performansıgpt-3.5-turbo-instructtan büyük ölçüde farklıydı gpt-4o-mini,gpt-4o,o1-minide test edilenler arasındaydı;gpt-4obiraz daha yavaş kaybetti, ancak tüm oyunlarda yenildi- İnternetteki LLM satranç deneyleri akışı, 2023 Eylül-Ekim döneminde ileri amatör seviyede olduklarına dair ilginin artmasıyla başlamış; son modellerde ise yeniden açılıştan sonra çökme görünümüne dönmüştü
instruction/chat ince ayarı ve satranç performansı
- Benzer ailelerde base’e yakın modeller ek ince ayarlı modellerle karşılaştırıldığında, ek instruction ince ayarının her durumda satranç performansını kötüleştirdiği görüldü
- Bozulma miktarı sabit değildi
- İki durumda fark küçüktü
- Bir durumda fark çok büyüktü
gpt-3.5-turbo-instructadı, alışılmış adlandırma geleneğinden farklı yorumlanmalı- Burada
gpt-3.5-turboya göre base model’e daha yakın bir model olarak ele alınıyor - Bu, normalde
instructveyaiteklerinin daha fazla sohbet/talimat izleme ayarı anlamına gelmesinin tersidir
- Burada
Olası neden adayları
-
Büyük base model satranç oynayabiliyor, ancak instruction ince ayarı bunu bozuyor olabilir
- Deney sonuçlarıyla uyumlu, ancak daha büyük
llama-3.1-405bmodelinin de kötü sonuç vermesi bir karşı örnek
- Deney sonuçlarıyla uyumlu, ancak daha büyük
-
gpt-3.5-turbo-instructdaha fazla satranç oyunuyla eğitilmiş olabilir- Tüm modellerin çok sayıda satranç oyunu üzerinde eğitilmiş olması muhtemel, ancak tam miktarı bilmek zor
-
Transformer mimarisi farkları etkili olmuş olabilir
- Llama ailesi modellerinin satrançta özellikle zayıf olma olasılığını da dışlamak zor
-
Farklı veri türleri arasında rekabet olmuş olabilir
- Yalnızca satranç oyunlarıyla eğitilen Transformer satrancı çok iyi oynayabilir
gpt-3.5-turbo-instruct, satranç oyunu oranı daha yüksek verilerle eğitildiyse parametrelerin daha büyük bir bölümü satranca ayrılmış olabilir- Bu hipotez doğruysa, yeterince büyük bir model satranç oyunu oranı düşük olsa bile yeterli satranç verisi öğrendiğinde satrancı iyi oynayabilmeli
Uygulama ayrıntıları ve kısıtlar
- Açık modeller doğrudan çalıştırıldı; OpenAI dışındaki modeller açık model olarak sınıflandırıldı
- Açık modellerin çalıştırılmasında
Q5_K_Mquantization kullanıldı - Açık modellerde mevcut yasal hamleler doğrudan oluşturuldu ve llama.cpp grammars ile çıktı kısıtlanarak her zaman yasal hamle çıkması sağlandı
- OpenAI modelleri tam grammar desteği sunmadığından en fazla 10 kez üretim yaptırıldı; yine de yasal hamle çıkmazsa rastgele bir hamle seçildi
- Sohbet modelleri olan
llama-3.1-70b-instruct,gemma-2-27b-it,gpt-3.5-turbo,gpt-4o-mini,gpt-4oiçin ayrı bir system prompt kullanıldı o1-miniiçin system prompt değiştirilemediğinden olduğu gibi çalıştırıldı- Açık modeller temperature 0.7 ile, OpenAI modelleri ise varsayılan değerlerle çalıştırıldı
Prompt boşluğu ve tokenizer’daki tuhaf olgu
- Açık modellerde
1. e4 e5 2.gibi sonunda boşluk bulunan prompt’lar,1 e4 e5 2.gibi boşluksuz biten prompt’lara göre çok daha kötü performans verdi - Nedenin tokenizer ile ilgili olduğu değerlendiriliyor
- Llama tokenizer’ı
1.sonrasındaedizisini tek bir token olarak üretir - Bu, bir boşluk token’ının ardından
eüretmekle aynı şey değildir - Girdinin sonuna boşluk koyup sonraki token’ı üretmesini istemek modeli kafa karıştırıcı bir duruma sokar
- Llama tokenizer’ı
- Uygun işlem yöntemi, girdinin son token’ını silip silinen dizeyle başlayan tüm dizeler için kısıtlı üretim yapmaya dayanan token healing yöntemidir
- Uygulamada token healing yerine boşluk çıkarıldı; grammar’ın boşluk üretebilmesi veya üretmeyebilmesi sağlandı ve ardından mevcut yasal hamle ile isteğe bağlı boşluk ürettirildi
- Güncellemede, bu olgunun nedeninin gerçekten anlaşıldığı ve doğru açıklamayı henüz kimsenin bulamadığına dair bir ipucu eklendi
OpenAI optimizasyonu olasılığı
- Bir varsayım, OpenAI’ın satranç performansına yönelik ilgiyi görüp
gpt-3.5-turbo-instructun satranç performansını artırmak için eğitim verisi, fine-tuning veya algoritma tarafında bir şeyi optimize etmiş olabileceği - Aynı varsayıma göre bu optimizasyon, maliyet ya da başka işlevlerde gerileme gibi trade-off’lar nedeniyle sonraki modellerde korunmamış olabilir
- Bu, net bir kanıt değil; “OpenAI bunu kasıtlı yaptı” düzeyinde bir tahmin ve zamanlamanın uyup uymadığı da kesin değil
1 yorum
Hacker News yorumları
Yazı bariz bir olasılığı kaçırmış gibi: OpenAI satrancı “kazanılması gereken” bir benchmark olarak görüp
gpt-3.5-turbo-instructiçinde yalnızca satranca özel işlem yapmış olabilir; sonraki modellere ise sürekli medya ilgisi yaratmadığı için bu özel işlemi koymamış olabilirTestte önemli kısımlar var: Kapalı OpenAI modeli yasal hamle üretmezse en fazla 10 kez yeniden üretiyor, yine olmazsa rastgele seçiyordu; açık modeller
Q5_K_Mquantization ile yerelde çalıştırıldı; prompt sonundaki boşluk olup olmaması bile açık model performansını ciddi ölçüde değiştirdi; açık modellerde sıcaklık 0.7, OpenAI modellerinde ise varsayılan değer kullanıldıTokenizer’ın tuhaf davranışları, sıcaklık, quantization, rastgele hamleler ve satranç prompt’u birbirine karışmış durumda; sonuçları nasıl yorumlamak gerektiğini bilmiyorum. Yine de yazı ilginç
Belki de gerçekten zeki modeller istiyorsak tokenization’ın kendisini bırakmamız gerekiyordur. Modelin ne gördüğünü ve dünyayı nasıl algıladığını, en baştan girdi bilgi akışının yapısıyla sınırlıyoruz
Ham bitler ya da baytlarla çalışmanın yavaş olduğunu biliyorum, ama büyük sorunların tokenization’dan kaynaklanıyor olabileceği hipotezini yanlışlamak nispeten ucuz ve kolay görünüyor. Radikal biçimde farklı tokenization araştırmalarını daha fazla görmemek şaşırtıcı
Örneğin LLM’lerin temel sayma işlemini yapamamasının tokenization’dan kaynaklandığı söylenir, ama aynı LLM düşünce süreci prompt’u kullanınca iyi sayıyor. O zaman bunu tokenization ile açıklayamazsınız. Sorun, adım adım çözünce doğru çözüldüğünü bir insanın ona söylemesi gerekmesi; bu yardım olmadan kolayca tahmin yürütüyor
Görüntüleri token’a dönüştürebiliyorsak, sesi de token’a dönüştürebiliyorsak, modelin doğrudan seçtiği bir anlam temsili token kümesi oluşturup bu token’ları tekrar metne decode etmek de mümkün olamaz mı diye düşünüp duruyorum. Dezavantajı, kodlanmış token’ları metne geri çevirme sürecinin kayıplı olması; bu yüzden görülen metni bire bir alıntılayamaz hale geliyorsunuz
Benim anladığım kadarıyla OpenAI,
gpt-4oraporundaki görsellerde tam olarak böyle bir şey yapmış gibi. “Explorations of capabilities” bölümüne bakın: https://openai.com/index/hello-gpt-4o/Karpathy de aynı fikre katılıyor. 2 saat boyunca tokenizer’ı baştan yaparken tokenizer’lardan nefret ettiği bir video
Prompt’u ve tahta konumunu çeşitli şekillerde değiştirerek denemeye değer. Bu arada modele verilen tahta konumu şu görsel: https://i.imgur.com/qRxalgH.png
Bu deneyde birden fazla tuhaflık olabilir. Örneğin instruction-tuning yapılmamış varyant modellere talimat vermek ters etki yaratıyor olabilir. Daha önemlisi, yalnızca kesilmiş PGN verildiğinde bu konumda beyazın büyükusta seviyesinde bir oyuncu gibi görünüp görünmediğinden emin değilim. Model satrancı iyi anlasa bile mevcut konumda en olası hamleyi tahmin etmeye çalışacaktır; beyazın kötü bir oyuncu olduğuna karar verirse kötü bir hamlenin olasılığını daha yüksek tahmin edebilir
Yine de Stockfish’i en düşük seviyeye alıp “çok güçlü bir rakip” gibi karşısına koymak modeli bir ölçüde şaşırtmış olabilir. Grafiği doğru yorumladıysam modelin ilk birkaç hamlesi iyi görünüyor, sorunlar ondan sonra başlıyor gibi. Prompt yönergeleri, Stockfish gücü, başlangıç konumu, hayali oyuncu adları vb. değiştirilerek deney tekrarlanabilir
Tek bir hamleye karşı olsaydı, “kazanıyor” ya da “kaybediyor” demek tam olarak ne anlama gelirdi ki?
Katılıyorum. Birkaç prompt varyasyonu denenebilir: modele düşünme sürecine izin verilse nasıl olurdu; bu deneyde açıkça yasaklanmıştı. Ayrıca her adımda tahta konumu prompt’ta açıklanırsa, modelin bunu içeride hesaplaması ya da tahmin etmesi gerekmez
Modelin yasa dışı hamle yapmayı deneyip denemediğini merak ediyorum. Orijinal yazar bundan bahsetmemiş; oysa satranç kuralları epey keyfî ve LLM’ler zor problemlerde cevap olmadığını kabul etmek yerine kulağa makul gelen şeyler uydurmakla kötü şöhretli olduğundan, bunun en az bir kez kaçınılmaz olarak yaşanacağını düşünüyorum
Eğitimli insanların LLM’lerin satrancı makul bir seviyede oynayabileceğini neden beklediğini anlamıyorum
LLM kendi verisinin kalitesini bilmez. “x gibi davran” prompt’u, satranç için açıkça gerekli olan gerçek akıl yürütme ve deterministik hesaplamanın yerine geçmez
turbo-instruct’ın gerçekten iyi oynamasına şaşırmamız gerekmez mi? “Gerçek akıl yürütme” gibi temelsiz antropomorfik sezgilere dayanan üstünkörü iddialar çok fazla. Bence mevcut durum, kimsenin neler olup bittiğini doğru dürüst anlamadığının iyi bir kanıtıEğer bir zihinsel model LLM’lerin satranç oynayamaması gerektiğini söylüyorsa, güçlü satranç oynayan bir LLM’i açıklayamaz. Tersine, iyi oynamaları gerektiğini söyleyen bir model de birçok büyük modelin satrançta feci şekilde başarısız olmasını açıklayamaz. Açıkça daha karmaşık bir şey oluyor
“Makul seviye” öznel, ama bu kadarıyla yeni başlayanları yenebilmesi gerekir. Yazıda kullanılan Stockfish’in en düşük seviyesi bile en alt düzey orta seviye oyuncu seviyesinde. Mevcut açık uygulamalardan mı, yoksa genel olarak LLM fikrinden mi bahsettiğinize bağlı; daha iyi sonuç istiyorsanız modele çok daha fazla satranç kitabı ve geçmiş maç analizi de yedirilebilir
GPT-3.5-turbo-instruct’ın ileri amatör seviyesinde oynadığını bizzat gördüm. Ancak yeni modellere giren RLHF ve distilasyon bu yeteneği bozuyor gibi görünüyorgpt-3.5-instruct’ın Stockfish’i neden yenebildiğiAçık bir modeli
Q5_K_Mniceleme ile çalıştırmış olmaları, tüm parametreleri kayıplı sıkıştırdıkları anlamına gelir sadece. Muhtemelen önemli değildir, değil mi?Satrancı dizi olarak öğrenme biçiminin faydadan çok sorun yarattığını düşünüyorum. 1 trilyon oyunla eğitmek bile kurtarmaz: https://en.wikipedia.org/wiki/Shannon_number
Tamlık adına ekleyeyim: modern satranç motorları, araçlarının bir parçası olarak yüksek kaliteli satranç odaklı modeller kullanır ve mevcut ya da geçmişteki tüm oyuncularla her seferinde en azından berabere kalabilir. Rakip en ufak bir hata yaparsa kaybeder. Stockfish seviyesini maksimuma, ya da en azından 1800+ Elo oyuncuya çıkarırsanız daha başarılı oyunlar çıkabilir; ama bu, ileri seviye oyuncuların çöp hamleleri daha az yapması nedeniyle eğitim verisindeki gürültünün azalmasının sonucudur, daha iyi oyun anlamına gelmez
Milyarlarca, trilyonlarca konumda en iyi hamleyi öğrenip bunu bir tür yapay zekaya koymak daha iyi işleyebilir. Benzer konumlarda çoğu zaman aynı türden en iyi hamleler bulunur
gpt-3.5-turbo-instruct,gpt-3.5-turbo,gpt-4içeren ilgili deneyler kümesi buldumSonuç da aynı şekilde şaşırtıcı: gpt-3.5-turbo-instruct satrancı çok daha iyi oynuyor
https://blog.mathieuacher.com/GPTsChessEloRatingLegalMoves/
OpenAI’ın oyun oynayan yapay zeka yapma konusunda çok fazla deneyimi var. Hatırlarsanız birkaç yıl boyunca ana odakları buydu. Bu yüzden satranç öğrenmenin genel zekâyı etkileyip etkilemediğini görmek için bir modeli satranca iyi uyacak şekilde yapmış olabilirler. İnsanların satranç öğrenince daha zeki olabilmesi, matematik veya programlama öğrenmenin de buna benzer etkileri olabilmesi gibi
LLM akıl yürütme ya da arama yapmaz; önceki metne dayanarak metin yazar. Bu yüzden bize oyun oynuyormuş gibi görünebilir, ama aslında geçmiş maçlara dayalı akıllı bir tahmindir. Kasparov’un gerçek taş dizilimini hayal etmeden hamle yazmasına benzer. İlginç deney, yalnızca kurallar verildiğinde modelin oynayıp oynayamayacağını görmek olurdu; muhtemelen oynayamazdı. Şu anda bir hedefi takip etmek yerine hafızadan yeniden oynatma durumunda. Henüz ileriye dönük dikkat gibi bir şey yok ve beam search yeterince pahalı olduğundan, klasik satranç algoritmasına geri dönmek daha iyi olur
OpenAI, etkileşimli ajanlar dışında bir şey yapmadı