Arama Olmadan Büyükusta Seviyesinde Satranç
(github.com/google-deepmind)- Google DeepMind'in
searchless_chessprojesi, NeurIPS 2024 makalesi Amortized Planning with Large-Scale Transformers'ın uygulamasıdır ve satranç üzerinden büyük ölçekli Transformer'ların açık arama olmadan planlama problemlerini ne kadar iyi çözebildiğini değerlendirir - Temel veri kümesi ChessBench, Stockfish 16'nın sağladığı yasal hamleler ve değer açıklamalarını içeren 10 milyon satranç oyunundan, toplam 15 milyar veri noktasından oluşur
- En fazla 270 milyon parametreli Transformer modelleri gözetimli öğrenmeyle eğitilir; veri kümesi boyutu, model boyutu, mimari türü ve tahmin hedefi değiştirilerek etkileri karşılaştırılır
- En büyük model, yeni tahtalarda action-value tahminlerini oldukça doğru yapar, açık arama olmadan zor satranç bulmacalarını çözer ve insan rakiplere karşı Lichess blitz Elo 2895'e ulaşır
- Stockfish'in arama tabanlı algoritması büyük ölçekli Transformer'lara oldukça iyi damıtılabilse de tam damıtıma henüz ulaşılamadığı için ChessBench sonraki araştırmalar için bir benchmark olarak kalır
Projenin amacı ve makalenin bağlamı
searchless_chess, Amortized Planning with Large-Scale Transformers: A Case Study on Chess makalesinin uygulamasıdır- Satranç, yapay zekada temsili bir planlama problemi olarak kullanılır ve bu proje, büyük ölçekte bile ezberlemenin anlamsız olduğu görevlerde Transformer performansını değerlendirir
- Araştırma, arama tabanlı satranç motorlarının davranışının Transformer'a gözetimli öğrenme ile damıtılıp damıtılamayacağını satranç üzerinde doğrular
ChessBench veri kümesi
- ChessBench, Stockfish 16'nın sağladığı yasal hamleleri ve değer açıklamalarını içerir
- Satranç oyunu sayısı: 10 milyon
- Toplam veri noktası: 15 milyar
- Stockfish 16, güncel seviyede bir satranç motoru olarak kullanılır
- Veri kümesi tahmin hedeflerine göre ayrılır
-
Action-Value
-
Behavioral Cloning
-
State-Value
- Bulmaca değerlendirmesi için
puzzles.csv - İndirme boyutu örnekleri şöyledir
- Train Action-Value: ilk shard 1.2GB, toplam 1.1TB, toplam 2148 shard
- Train Behavioral Cloning: 34GB
- Train State-Value: 36GB
- Test Action-Value: 141MB
- Test Behavioral Cloning: 4.1MB
- Test State-Value: 4.4MB
- Puzzles: 4.5MB
- Bulmaca değerlendirmesi için
-
Modeller ve deney düzeni
- Transformer modelleri en fazla 270M parametreye kadar eğitilir
- Eğitim, ChessBench tabanlı gözetimli öğrenme ile yürütülür
- Deneyler şu unsurların etkisini karşılaştırır
- veri kümesi boyutu
- model boyutu
- mimari türü
- tahmin hedefi: state-values, action-values, behavioral cloning
- En büyük model, yeni tahtalarda action-values değerlerini oldukça doğru tahmin ederek basit ezberin ötesinde genelleme gösterir
Aramasız performans ve karşılaştırmalar
- Nihai satranç politikası, açık arama olmadan zor satranç bulmacalarını çözer
- İnsan rakiplere karşı Lichess blitz'te Elo 2895 elde ederek büyükusta seviyesinde performans gösterir
- Karşılaştırma hedefleri arasında Leela Chess Zero ve AlphaZero da bulunur
- Her iki sistem de self-play ile eğitilmiş modeller olarak karşılaştırılır
- Arama kullanan ve kullanmayan durumların ikisi de karşılaştırılır
- Stockfish'in arama tabanlı algoritması büyük ölçekli Transformer'a çok iyi biçimde yaklaştırılarak damıtılabilir, ancak tam damıtım hâlâ mümkün değildir
Depo yapısı ve çalışma akışı
- Başlıca dizinler ve dosyalar şu rollere sahiptir
src/engines: Stockfish, Leela Chess Zero, sinir ağı motor arayüzlerisrc/transformer.py: Sadece decoder içeren Transformersrc/train.py: örnek eğitim ve değerlendirme betiğisrc/puzzles.py: bulmaca değerlendirme betiğisrc/tournament.py: Elo turnuva betiğisrc/searchless_chess.ipynb: model davranışı analizi not defterisrc/tokenizer.py: satranç tahtası tokenization işlemi
- Önceden eğitilmiş checkpoint'ler
9M,136M,270Mmodelleri olarak sunulur - Model davranışı analizi not defterinde, tüm yasal hamlelerin kazanma oranını hesaplamak gibi analizler yapılabilir
Kurulum ve bağımlılıklar
- Çalışma ortamı Python 3.10 gerektirir
- Gerekli bağımlılıklar
pip install -r requirements.txtile kurulur - GPU varsa daha hızlı eğitim için CUDA destekli JAX kurulması önerilir
- Örnek olarak CUDA 12 için
jax[cuda12_pip]kurulum komutu kullanılır - JAX sürümü, kullanımda olan CUDA kurulumuyla uyumlu olmalıdır
- Örnek olarak CUDA 12 için
- Harici motorların ve araçların kurulması gerekir
Değerlendirme ve kullanım
- Yerel eğitim
srciçindepython train.pyile çalıştırılır- Checkpoint'ler
/checkpoints/localaltına kaydedilir
- Checkpoint'ler
- Bulmaca değerlendirmesi
python puzzles.py --num_puzzles 10 --agent=localbiçiminde çalıştırılır puzzles.pytarafından desteklenen ajanlar şunlardır- Yerel eğitilmiş model:
local - Önceden eğitilmiş modeller:
9M,136M,270M - Stockfish:
stockfish,stockfish_all_moves - Lc0:
leela_chess_zero_depth_1,leela_chess_zero_policy_net,leela_chess_zero_400_sims
- Yerel eğitilmiş model:
- Elo hesabı,
python tournament.py --num_games=200ile oyunlar üretildikten sonra BayesElo'nundata/tournament.pgndosyasını okumasıyla yapılır
Lisans ve sınırlamalar
- Yazılım Apache License 2.0 ile dağıtılır
- Model ağırlıkları Creative Commons Attribution 4.0 lisansına tabidir
- Veri kümesinin bir bölümü lichess.org'un Creative Commons CC0 public domain lisansını, geri kalanı ise CC-BY lisansını izler
- Dağıtılan içerik, açık ya da zımni hiçbir garanti olmaksızın
"AS IS"esasına göre sunulur - Bu proje resmî bir Google ürünü değildir
1 yorum
Hacker News yorumları
Konu dışı olacak ama GM seviyesinde olmayan bilgisayar satrancının bugün nerede olduğunu merak ediyorum
Kendi seviyeme yakın bir rakiple ya da antrenman için benden reytingi yaklaşık 100 puan yüksek bir rakiple oynamak istediğim zamanlar oluyor
Çoğu motor arama derinliği azaltılarak zayıflatılabiliyor, ama genelde bu pek iyi çalışmıyor. Yeterince azaltınca oyunların yaklaşık yarısını kazanır hale gelsem de, çoğu oyunda sürekli geride kalıp motorun bir iki büyük hata yapmasıyla kazanmışım gibi bir his kalıyor
İstediğim şey, seçtiğim seviyede oynayan ama o reyting aralığındaki tipik bir insan oyuncu gibi hissettiren bir bilgisayar rakip. Böyle bir motor var mı merak ediyorum
Geleneksel bir arama algoritmasının kolayca kaçınacağı ama bir insanın düşebileceği tuzaklara düşmesi gibi, gerçekten “insan gibi” hissettirdiği birkaç an oldu
Ayarlanabilir değil, ama farklı reytinglere sahip birkaç sürümü var. Yine de aralık çok geniş değil
https://www.maiachess.com/
https://lichess.org/@/maia1
Oyuncu reytingi yükseldikçe yalnızca sezgisel hamle seçimini değil, arama sürecinin kendisini de modellemek gerektiği için sonraki hamleyi tahmin etmek zorlaşıyor
Sadece belirli bir oyuncunun oyun kayıtlarıyla eğitip daha kişiselleştirmek de mümkün
Maia’ya benzer bir yaklaşım kullanıyor, ama farklı bir sinir ağı olduğu için hamle eşleşme performansı biraz daha iyiydi; bunun üzerine botun hatalarımdan yararlanmasını sağlamak için beklenen değer maksimizasyonu algoritması eklemiştim
Yeterince istikrarlı oynayamazsanız doğrudan kaybediyordunuz
Bana kalırsa bu özellik kaybolmuş gibi. Baskı altında insana özgü hatalar yapıyor hissi verdiği için, bilgisayar gibi oynayıp rastgele aptalca hamle yapanlardan farklı olarak gerçekten rakip gibi hissettiren tek bilgisayardı
Rakibin de iyi oynadığı ama genel olarak benim biraz daha iyi oynayıp hak ederek kazandığım hissi çok nadir
Neredeyse her zaman ben kazanmışım gibi değil, rakip kaybetmiş gibi görünüyor. Bu yalnızca yapay zekaya özgü bir sorun değil
Simetrik oyunlarda tatmin edici şekilde kaybedebilen ve yenilgiden de tatmin edici şekilde öğrenmeyi sağlayan bir yapay zeka yapılabilirse, bu milyar dolarlık bir iş olur. Ciddi psikoloji araştırması olmadan bunun zor olduğunu düşünüyorum
Bu konu üzerine bir sunum yaptım ve sunum içeriğini de yazıya döktüm[1]. Bu makale bilgi damıtmanın iyi bir örneği
Makale satrancın kendisinden ziyade, uzmanların ayarladığı karmaşık doğrusal olmayan bir arama fonksiyonunun, satranç gibi standartlaştırılmış girdilerde neredeyse doğrusal sayılabilecek bir Transformer modeline damıtılabileceğini gösteren bir çalışma gibi
[1]: https://hlfshell.ai/posts/deepmind-grandmaster-chess-without...
Bu yüzden zamanın bir etken olma ihtimali yüksek. İnsanların zaman sıkıntısından bayrağı düşebilir ya da az zamanı varken hata yapma olasılıkları daha yüksektir
Arama olmadan da çok iyi bir değerlendirme fonksiyonu öğrenmiş olması yine de harika. Yalnız Stockfish fallback’in devreye girdiği oyunların hariç tutulmasını isterdim. İnsanlar için de 2 hamlede mat ile 10 hamlede mat, zaman kaybı açısından galibiyet ile beraberlik/mağlubiyet arasındaki farktır
Sınırlı arama derinliğine sahip Stockfish ile doğrudan bir karşılaşma da görmek isterdim. Böylece bu değerlendirme fonksiyonunun arama ağacının ne kadarını damıttığı kabaca anlaşılabilirdi
Satranç sinir ağlarına başlamak isteyenlere bu depoyu şiddetle tavsiye ederim: https://github.com/sgrvinod/chess-transformers
Okunması kolay PyTorch koduyla tipik uygulama biçimini izliyor ve mimarisi de bugün iyi performans gösteren satranç sinir ağlarına benziyor
https://lczero.org/blog/2024/02/how-well-do-lc0-networks-com...
En iyi sinir ağı satranç motorlarının yazarlarının bu DeepMind makalesi hakkında yazdığı yazı
Eğitimde kullanılan devasa sentetik veri kümesi sonuçta çok sayıda geleneksel aramayla oluşturuldu. Bu yüzden biraz komik bir tarafı var, ama yine de etkileyici
GM ve satranç yazarı Matthew Sadler’ın antrenman oyunları için Leela Zero’yu fiilen yalnızca sezgiyle oynayacak, çok az arama yapacak ya da hiç arama yapmayacak şekilde ayarladığını hatırlıyorum
Genelde o kazanıyordu ama her zaman değil. Sanırım The Silicon Road to Chess Improvement’da geçiyordu
Tüm oyunlardaki tüm tahta pozisyonları için Stockfish çalıştırıp eğitim verisi oluşturursanız, sonuçta arama ağacını Transformer modeline encode etmiş olmuyor musunuz?
O zaman modelin parametre sayısını artırdıkça arama ağacının daha fazlasını içine alabilir ve performans iyileşir; ama bu pek ilginç görünmüyor
Bu depo, makalemiz Grandmaster-Level Chess Without Search’ün uygulamasını sunuyor: https://arxiv.org/abs/2402.04494
Makine öğrenmesindeki son atılımlar ağırlıklı olarak ölçekten, yani büyük ölçekli attention tabanlı yapılardan ve benzeri görülmemiş büyüklükteki veri kümelerinden geldi. Bu makale, satrançta büyük ölçekli öğrenmenin etkisini inceliyor
Karmaşık sezgisellere, açık aramaya ya da ikisinin birleşimine dayanan geleneksel satranç motorlarının aksine, 10 milyon satranç oyunundan oluşan bir veri kümesiyle 270 milyon parametreli bir Transformer modeli gözetimli öğrenmeyle eğittik
Veri kümesindeki her tahtaya güçlü Stockfish 16 motorunun sağladığı hamle değerleriyle anotasyon eklendi ve yaklaşık 15 milyar veri noktası oluştu
En büyük model, insan rakiplere karşı Lichess blitz Elo 2895’e ulaştı ve alana özgü ayarlama ya da açık arama algoritmaları olmadan zor satranç bulmacalarını çözdü
Ayrıca MCTS’siz AlphaZero’nun politika/değer ağlarını ve GPT-3.5-turbo-instruct’ı geride bıraktı. Model ve veri kümesi boyutlarını sistematik olarak incelediğimizde, güçlü satranç performansının ancak yeterli ölçekte ortaya çıktığı görüldü. Tasarım tercihleri ve hiperparametreler üzerine kapsamlı ablasyon deneyleri de yaptık
İnsan gibi daha çok düşünen bir motor olsa güzel olurdu. Bu yöntem Stockfish anotasyonlu oyun kayıtları kullandığı için temelde bilgisayar gibi düşünecek gibi görünüyor
İnsan gibi düşünseydi, oyun incelemelerinde her pozisyonda neye bakılması gerektiğini benim Elo seviyeme göre göstermek için çok iyi olurdu
Magnus Carlsen’in olağanüstü olmasının nedeni, bilgisayarlarla karşılaştırıldığında çok büyük zaman ve hesaplama kısıtları altında bugünkü satranç seviyesine ulaşmış olması. Öğrenme verimliliği herhangi bir satranç motoruyla karşılaştırıldığında bile sıradışı
Demoscene programı gibi hissettiriyor. Gerçekten çalışan 1KB’lık bir satranç programı bile var
Satrancı tamamen çözerseniz, şu an hesaplanamayacak kadar büyük bir ağaç ortaya çıkar. Kabaca 10^80 civarı diye hatırlıyorum ama yanılıyor olabilirim
O ağaca kazanma/kaybetme/beraberlik anotasyonu eklerseniz, arama olmadan da optimal bir oyuncu mümkün olur
Sıkıştırma ve optimizasyon için bariz iki yaklaşım, ya ağacı yaklaşıklaştırmak ya da anotasyonları yaklaşıklaştırmaktır. Bu iki yöntemin ne kadar iyi çalışacağı, ağaç yapısına büyük ölçüde bağlıdır
Bu sonuç, öğrenme yaklaşımının mutlak gücünden ziyade satranç oyun ağacının bu iki yaklaşıma ne kadar iyi uyduğunu daha fazla gösteriyor gibi. Benim çıkardığım sonuç, o ağacın makul bir yaklaşık temsilinin 270 milyon kelime ölçeğinde veri ile mümkün olduğu
Satrançta tahtada 7 taş kaldığında oyun 18,4 TB’lık bir veritabanıyla çözülmüş durumda; burada anlatılıyor: https://lichess.org/@/lichess/blog/7-piece-syzygy-tablebases...