AlphaZero Nasıl Satranç Oynuyor?
Şu ana kadar muhtemelen satranç motoru mahallesinin yeni çocuğu AlphaZero ve onun, dünyanın en güçlü açık kaynak satranç motoru Stockfish karşısındaki ezici galibiyeti hakkındaki haberleri duymuşsunuzdur.
Satranç camiasının bu maça karşı olan tepkileri ise hayranlıktan mutlak kuşkuya kadar değişiyordu.
Peki AlphaZero gerçekte nasıl çalışıyor?
Onu diğer satranç motorlarından farklı yapan şey ne ve neden bu kadar iyi? Bu iki kısımlı makalede sizlere AlphaZero'nun kukuletası altında neler döndüğünü açıklamaya çalışacağım.
Öncelikle, neler olduğu konusunda biraz kafa yoralım. AlphaZero, DeepMind (Google'ın sahip olduğu bir şirket) tarafından iki oyunculu, alternatif hamleli oyunları öğrenme konusunda uzmanlaşmak için geliştirildi. Satranç kuralları ile çalıştırıldı, başka hiçbir şey ile değil.
Sonra kendisine karşı satranç oynayarak satranç öğrenmeye başladı. İlk oyunu tamamen rastgele hamleleri içermiş olmalı. Bu oyunun sonunda, DeepZero kaybeden tarafın o kadar da zekice olmayan şeyler yaptığını ve kazanan tarafın daha iyi oynadığını öğrendi. DeepZero kendine ilk satranç dersini öğretti. İkinci oyundaki satranç kalitesi ise ilkinden bir nebze daha iyiydi.
Dokuz saat ve 44 milyon bölünmüş-kişilik satranç oyunundan sonra, AlphaZero kendine (çok yüksek ihtimalle) tüm zamanların en iyi, silikon ya da karbondan oluşan, satranç oyuncusu olmaya yetecek kadar satranç öğretti.
Bunu nasıl yaptı?
Londra'daki Google genel merkezinin içeriden görünümü, DeepMind bölümü sekizinci katta yer alıyor. | Fotoğraf: Maria Emelianova/Chess.com.
Stockfish'ten daha fazla varyant hesaplamadı.
Aslında tam tersi: Stockfish saniye başına 70 milyon konum inceledi, buna karşılık AlphaZero ise yaklaşık olarak yüzde 99.89 daha az konumla yetindi: saniye başına 80,000. Bu akıllara 1998 yılında bir maçta Michael Adams tarafından mağlup edilen Jonathan Rowson'un yorumlarını getiriyor: “Onun ne kadar az şey gördüğüne şaşırdım.”
Daha güçlü oyuncular daha zayıf oyunculara nazaran daha az varyant hesaplama eğilimindeler. Bunun yerine son derece bilenmiş sezgileri onları hesaplamalarının daha alakalı dizelere odaklanmasını sağlıyor. AlphaZero da tam olarak bunu yaptı. Kendi kendine insana benzer bir şekilde, daha önce hiçbir makinenin yapmadığı şekilde bir "sezi" geliştirdi ve bunu bir miktar hesaplama ile birleştirdi.
Haydi bunu nasıl yaptığını görelim.
IM Danny Rensch Twitch'te AlphaZero'nun maçlarını bir seri video ile açıklıyor.
Analiz Ağacı
Satranç motorları varyatları hesaplamak için ağaç-vari bir yapı kullanıyor, ve konumu değerlendirmek ve varyantın en sonunda +1.5 (Beyaz'ın avatantajı bir buçuk piyon değerinde) ya da -9.0 (Siyah'ın avantajı bir vezir değerinde) gibi bir değer atamak için bir değerlendirme fonksiyonu kullanıyor. AlphaZero'nun hem varyantların hesaplanmasına hem de konumları değerlendirmeye yaklaşımı diğer satranç motorlarının yaptığından radikal olarak farklı.
Tüm popüler satranç motorları, rakibin ne oynarsa oynasın sadece sana en büyük avantajı veren hamleyi seçmeye verilmiş havalı bir isim olan, minimax algoritmasına dayanıyor. Minimax alpha-beta budaması ile değişmeden zenginleştirilmiş, incelenecek olan varyant ağacının boyutunu düşürmede kullanılıyor. İşte bu budamanın nasıl çalıştığına yönelik ekstrem bir örnek: Diyelim ki bir motor bir hamleyi düşünüyor ve rakibinin 20 makul cevabı olduğunu görüyor. Bu cevaplardan birisi zorunlu şahmata neden oluyor. Sonrasında motor değerlendirmekte olduğu bu hamleyi, diğer 19 cevaptan herhangi birinde nasıl olacağına bakmadan, bırakabilir (ya da "kesebilir").
Başka bir konu ise, eğer bir satranç motoru sadece kötü görünen hamleleri budarsa, örneğin: materyal kaybeden, herhangi bir taş fedasını değerlendirme konusunda başarısız olacaktır. Bu da kısmen ilk satranç motorlarının bu kadar mateyalist olmasının başlıca nedeni. Stockfish gibi güncel satranç motorlarında, alpha-beta budama işlemi öldürücü hamle bulgulayıcısı (başka benzer bir varyanttaki güçlü bir hamlenin burada da güçlü olması ihtimali), karşı hamle bulgulayıcısı (bazı hamlelerin konum gözetmeksizin doğal cevapları var — Eminim axb5'i sıkça axb5 ile karşılamışsınızdır, değil mi?) gibi bir dizi satranca özel geliştirmelerle birleştiriliyor.
AlphaZero, bunun aksine, Monte Carlo Ağacı Aramasını ya da kısaca MCTS'yi kullanıyor. Monte Carlo, kumarhaneleriyle ünlü, bu nedenle bu terimi bir bilgisayar bağlamında gördüğünüzde, rastlantısal birşeyin döndüğü anlamına geliyor. Saf MCTS kullanan bir motor bir konumu o pozisyondan rastgele (“playouts” olarak adlandırılan) birkaç hamle dizisi yaratarak değerlendirir ve getirdikleri final skorlarına (kazanç/berabere/kayıp) göre ortalamasını alır. Bu yöntem toplamda çok basit olarak görünebilir, ancak eğer bunun üzerine biraz düşünürseniz aslında bir konumu değerlendirmenin oldukça makul bir yöntemi olduğunu farkedeceksiniz.
Monte Carlo Kumarhanesi.
AlphaZero her hamlede 800 adet hamle dizisi yaratıyor. Ayrıca halihazırda (çok fazla) denenmemiş, muhtemel görünen ve "iyi" konumlara yol açan, "iyi"nin değerlendirme fonksiyonunun (bir sonraki makalede bu konuda daha fazlası yer alacak) onlara yüksek değer verdiği anlamına geldiği, hamleleri tercih ederek saf MCTS'yi arttırıyor. Gerçekte durmadan gelişen değerlendirme fonksiyonuna uygun yarı-randomize hamle dizeleri yaratıyor. Bu tıpkı sizin hesap yapmanız gibi değil mi? Sadece makul oyun dizelerine odaklanarak?
AlphaZero'nun yaptığı şeyde şimdiye kadar kesinlikle satranca özel hiçbir şey olmadığını farkettiniz mi. Bir sonraki makalemde, AlphaZero'nun satranç konumlarını nasıl değerlendirmeyi öğrendiğine bakacağız, ve orada da satranca özel hiçbir şeyin olmadığını göreceğiz!
Tıpkı yeni doğmuş bir bebek gibi, AlphaZero bu dünyaya çok az bilgiyle geldi ama son derece öğrenmeye yönelikti. MCTS'nin bir zayıflığı, yarı-randomize hamle dizileri yaratmaya bağlı olması nedeniyle, en iyi hamleyi içeren bir kesin dizenin olduğu gergin pozisyonlarda tamamen ters anlayabilir. Eğer bu dizeyi rastgele seçmezse, hata yapabilir. Bu körlük muhtemelen AlphaZero'dan önceki AlphaGo'nun 18 kez dünya Go şampiyonu Lee Sedol'a karşı bir oyun kaybetmesinin nedeniydi. Ancak görünen o ki Stockfish'e karşı olan maçta bu bir sorun değildi.
MCTS daha önce iki oyunculu oyunlarda denendi, ama iyi geliştirilmiş bir minimax plus alpha-beta yaklaşımından daha kötü bir performans sergilediği görüldü. AlphaZero'da MCTS uygulanan nöral ağ bazlı değerlendirme fonksiyonu ile çok iyi birleşitiriyor.
Bir sonraki makalemde, bu nöral ağın, özellikle kendi kendine etkileyici öğrenme yolu ve satranç konumlarını nasıl değerlendirdiği hakkında daha fazlasını açıklayacağım. Ayrıca AlphaZero'nun çalıştığı donanımı tanımlayacağım ve bildiğimiz kadarıyla bütün bu satrancı nasıl etkileyeceği ile ilgili tahminlerimi paylaşacağım.
AlphaZero'nun satranç oynama yöntemi ile ilgili neler düşünüyorsunuz? Yorum kısmında bizlerle paylaşın.