Neden AlphaGo’ya benzeyen satranç için sağlam bir güçlendirme öğrenme motoru yok?


32

Bilgisayarlar uzun zamandır "kaba kuvvet" tekniğini kullanarak, belirli bir derinliği araştırarak ve daha sonra konumunu değerlendirerek satranç oynayabildiler. Ancak AlphaGo bilgisayarı, pozisyonları değerlendirmek için sadece bir YSA kullanıyor (bildiğim kadarıyla derinlemesine arama yapmıyor). AlphaGo'nun Go ile oynadığı gibi satranç oynayan bir satranç motoru oluşturmak mümkün mü? Neden kimse bunu yapmadı? Bu program günümüzün en iyi satranç motorlarından (ve satranç oyuncularından) daha iyi performans gösterir mi?


5
Bkz arxiv.org/abs/1509.01549 (Zürafa: Satranç oyna Deep Takviyeli Öğrenme Vasıtasıyla) ve popüler bir makale technologyreview.com/s/541276/... . Ayrıca erikbern.com/2014/11/29/deep-learning-for-chess.html
amip eski haline Monica diyor

Birisi bunu düzgün bir şekilde yapmak için etrafa gelene kadar bu sadece bir zaman meselesiydi. Sorunuzu gönderdikten bir ay sonra, işte buradasınız: arxiv.org/abs/1712.01815 .
amip diyor Reinstate Monica

Yanıtlar:


49

EDIT (kağıdı okuduktan sonra):

Ben kağıdı dikkatlice okudum. Google’ın makalede iddia ettiği şeyle başlayalım:

  • Monte-Carlo-Tree-Search + Derin sinir ağları ile Stockish'i mağlup ettiler
  • Maç kesinlikle tek taraflı, AlphaZero için pek çok galibiyet aldı, ancak hiçbiri Stockish için değildi.
  • Sadece dört saat içinde yapabildiler
  • AlphaZero bir insan gibi oynadı

Ne yazık ki, yok iyi bir dergi kağıt olduğunu düşünüyorum. Bağlantıları ile açıklayacağım (yani, hayal etmediğimi biliyorsun):

https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author

Maç sonuçları kendileri tarafından oldukça garip bir zaman kontrolü seçimi ve Stockish parametre ayarları nedeniyle özellikle anlamlı değildir: Oyunlar 1 dakikalık sabit bir sürede oynandı, bu da Stockish'in zaman yönetimi sezgisini kullanmadığı anlamına gelir ( Stockish'in oyundaki kritik noktaları tanımlaması ve ne zaman bir hamle için fazladan zaman harcayacağına karar vermesi için çok çaba sarf edilmiştir, hamle başına sabit bir zamanda, güç önemli derecede acı çekecektir).

Stockish, hamle başına sadece bir dakika ile en iyi satranç oynayamazdı. Program bunun için tasarlanmamıştır.

  • Stockish normal bir ticari makinede çalışırken, AlphaZero AlphaZero için ayarlanmış 4 milyon + TPU makinesindeydi. Bu, yüksek kaliteli masaüstünüzü ucuz bir Android telefonla eşleştirmeye benzer. Tord şunu yazdı:

Bunlardan biri sıradan bilgisayarlarda çalışan geleneksel bir satranç programı, diğeri ise temelde farklı teknikler kullanıyor ve satın alınamayan özel tasarımlı bir donanım üzerinde çalışıyor (ve olsaydı sıradan kullanıcıların bütçesinden çıkacaktı).

  • Google istemeden Stockfish için 32 çekirdekli bir makineye 64 adet konu verdi. GM Larry Kaufman'dan (dünya standartlarında bilgisayar satranç uzmanı) alıntı yapıyorum:

http://talkchess.com/forum/viewtopic.php?p=741987&highlight=#741987

Testin adil olmaktan çok uzak olduğunu kabul ediyorum; SF'ye zarar veren bir diğer konu ise, 32 çekirdekli bir makinede 64 iş parçacığı üzerinde çalışmasıydı, ancak kabaca 5 ila 3 yavaşlamayı dengelemek için neredeyse hiçbir SMP avantajı olmadığı için, bu makinede sadece 32 iş parçacığı çalıştırmak çok daha iyi çalışacaktı. Ayrıca maliyet oranı dediğimden daha fazlaydı; 64 çekirdekli bir makine olduğunu düşünüyordum, ama 32 çekirdekli bir makine tahmin ettiğimin yarısına mal oldu. Bu yüzden belki de 30'dan 1'e kadar hepsi tahminen fena değil. Öte yandan, daha ne kadar geliştirilebileceğini hafife aldığınızı düşünüyorum.

  • Stockish sadece 1GB hash tablo verdi. Bu bir şaka ... iPhone'umda Stockish iOS uygulamam için daha geniş bir hash masası var (Feragatname: Yazarım )! Tord şunu yazdı:

    ... konu sayısı için çok küçük karma tabloları ...

1GB hash tablo kesinlikle böyle bir maç için kabul edilemez. Stockish sık sık karmaşaya maruz kalırdı. Eski karma girdileri değiştirmek için CPU döngüleri gerekir.

  • Stockish, bu kadar çok iş parçacığı ile çalışmak üzere tasarlanmamıştır. Benim iOS satranç uygulamasında, sadece birkaç iplik kullanılır. Tord şunu yazdı:

... önemli miktarda test almış olduğundan çok daha fazla arama parçacığıyla oynuyordu ...

  • Stockish, bir açılış kitabı ya da 6 parçalı Syzygy oyunsonu masası olmadan çalışıyordu. Örneklem büyüklüğü yetersizdi. Stockfish versiyonu son değildi. Tartışma burada .

SONUÇ

Google kanıtlanmış henüz şüphe olmadan kendi yöntemleri stockfish üstündür. Sayıları yüzeyseldir ve AlphaZero'ya şiddetle önyargılıdır. Yöntemleri bağımsız bir üçüncü tarafça tekrarlanamaz. Deep Learning'in geleneksel satranç programlaması için üstün bir yöntem olduğunu söylemek için hala çok erken.


EDIT (Aralık 2017):

Satrançta derin güçlendirme öğrenmek için Google Deepmind'den ( https://arxiv.org/pdf/1712.01815.pdf ) yeni bir makale var . Soyut, dünyanın bir numaralı Stockish satranç motoru "ikna edici" yenildi. Bunun 1997 Deep Blue maçından bu yana bilgisayar satrançındaki en önemli başarı olduğunu düşünüyorum. Makaleyi ayrıntılı olarak okuduktan sonra cevabımı güncelleyeceğim.


Orijinal (Aralık 2017'den önce)

Sorunuzu netleştirelim:

  • Hayır, satranç motorları yok kaba kuvvet kullanır.
  • AlphaGo yapar kullanımı ağaç arama, kullandığı Monte Carlo Ağacı Arama . İkna olmak istiyorsanız Google " Monte Carlo Ağacı Arama alphaGo ".

YSA satranç motorları için kullanılabilir:

Bu program günümüzün en iyi satranç motorlarından (ve satranç oyuncularından) daha iyi performans gösterir mi?

Zürafa, FIDE 2400 derece hakkında olan Internation Master seviyesinde oynar. Ancak Stockish, Houdini ve Komodo'nun hepsi FIDE 3000'de oynuyor. Bu büyük bir boşluk. Niye ya? Neden Monte-Carlo Ağacı Aramıyorsunuz?

  • Satrançta materyal bulgusu basittir. Çoğu zaman, bir satranç pozisyonu sadece tahtadaki malzemeleri sayarak kazanıyor / kaybediyor. Lütfen sayım malzemelerinin Go için işe yaramadığını hatırlayın. Malzeme sayımı, sinir ağlarını çalıştırmaktan daha hızlı büyüklükteki siparişlerdir - bu, 64-bit bir tamsayı ile gösterilen bitboard'lar tarafından yapılabilir. 64 bit sistemde, sadece birkaç makine talimatıyla yapılabilir. Geleneksel algoritma ile arama yapmak makine öğrenmekten çok daha hızlı . Saniyedeki daha yüksek düğümler daha derin aramalara çevrilir.
  • Benzer şekilde, sıfır hareket budama, geç hareket azaltma ve katil hareketler gibi çok kullanışlı ve ucuz teknikler vardır. Bunlar ucuzdur ve AlphaGo'da kullanılan yaklaşıma daha verimlidirler.
  • Satrançta statik değerlendirme hızlı ve faydalıdır
  • Makine öğrenmesi parametreleri optimize etmek için faydalıdır, fakat aynı zamanda satranç için SPSA ve CLOP'a sahibiz.
  • Satrançta ağaç azaltma için birçok yararlı ölçüm vardır. Go için çok daha az.

Monte Carlo Tree Search'ün satranç için iyi ölçeklenmediği konusunda araştırma yapıldı. Go satranç için farklı bir oyundur. Satranç algoritmaları Go için çalışmıyor çünkü satranç acımasız taktiklere dayanıyor. Satrançta taktikler tartışmalı olarak daha önemli.

Şimdi, MCTS'nin AlphaGo için iyi çalıştığını ancak satrançta daha az çalıştığını tespit ettik. Derin öğrenme şu durumlarda daha yararlı olacaktır:

  • Ayarlanmış NN değerlendirmesi geleneksel algoritmalardan daha iyidir. Ancak ... derin öğrenme sihir değildir, siz programcının hala programlamayı yapması gerektiği gibi. Daha önce de belirtildiği gibi, satrançta ayar parametreleri için kendi kendine oynamak için SPSA gibi bir şeyimiz var.
  • Yatırım, para! Satrançta makine öğrenmesi için fazla para yok. Stockish ücretsiz ve açık kaynaktır, ancak tüm insan oyuncuları yenebilecek kadar güçlüdür. Birisi ücretsiz olarak yalnızca Indirirse Google neden milyonlar harcadı? CPU kümeleri için neden para ödeyecek? Yeteneklerini kim ödeyecek? Kimse yapmak istemiyor, çünkü satranç "çözülmüş" bir oyun olarak kabul edilir.

Derin öğrenme aşağıdakileri başarabilirse, geleneksel algoritmayı yenecektir:

  • Satranç pozisyonu göz önüne alındığında, bir insan büyük ustası gibi "hissedin". Örneğin, bir insan büyük usta, deneyim açısından kötü olan çizgilere girmez. Ne geleneksel algoritma ne de derin öğrenme bunu başaramaz. NN modeliniz, konumunuz için size bir olasılık [0..1] verebilir, ancak bu yeterince iyi değil.

İşaret etmeme izin ver:

Hayır. Zürafa (@Tim tarafından gönderilen bağlantı) Monte Carlo Ağacı Aramasını kullanmaz. Normal nega-max algoritmasını kullanır. Tek yaptığı düzenli değerlendirme fonksiyonunu NN ile değiştirmek ve çok yavaş.

bir tane daha:

Her ne kadar 1997'de Kasparov Deep Blue tarafından dövüldü. "İnsanlık" 2003-2005 yıllarında gerçekten kaybedildi, Kramnik, Deep Fritz'e galibiyetsiz bir maç kaybetti ve Michael Adams, tek taraflı bir maçta küme makinesinde kaybetti. Bu süre zarfında, Rybka dünyadaki en iyi oyuncular için bile çok güçlü oldu.

Referans:

http://www.talkchess.com/forum/viewtopic.php?t=64096&postdays=0&postorder=asc&highlight=alphago+chess&topic_view=flat&start=0

Alıntı yaparım:

Satrançta, bir motorun ne kadar iyi çalıştığı ve hızlı bir şekilde hesaplanabileceği hakkında resonable bir tahmin veren önceliklendirme kavramına sahibiz. Ayrıca, Go'da yapılamayan statik bir değerlendirme fonksiyonunda kodlanabilecek oyunun bir çok yönü daha vardır. Pek çok sezgisel inceleme ve iyi değerlendirme nedeniyle, EBF (Etkili Dallanma Faktörü) oldukça küçüktür. Statik değerlendirme işlevinin yerine bir Sinir Ağı kullanılması, motoru oldukça fazla yavaşlatır.


1
Teşekkür ederim. Bazı sorular: Satranç motorları alfa-beta algoritmasını kullanıyor, bu bir "kaba kuvvet" -algoritmi değil midir? "Monte Carlo Ağacı Arama" şu anki pozisyonun önünde birkaç hamle göründüğü anlamına mı geliyor?
lijas

1
@lijas "kaba kuvvet" genellikle tüm olasılıkları araştırmak olarak tanımlanır. Satranç motorları bunu yapmaz.
SmallChess

7
@lijas Soruyu az önce cevapladınız. Matris çarpımları yavaş bir işlemdir.
SmallChess

3
Alfa Beta araması kesinlikle "kaba forcish". AI Berlin trendleri üzerine Hans Berliner: "Bence en önemli eğilim bilgisayarların bu son 50 yılda oldukça hızlı bir şekilde hızlanmasıydı. Bu süreçte, çoğu durumda yakalayamadığımız en iyi antropomorfik çözümlere sahip olduğumuz birçok şeyi bulduk. Bir insanın yönteminin asıl özü, tatmin edici bir çözüm bulunana kadar yalnızca saydamlaştırılmış daha kaba-kırılgan yöntemlerle yapılabilir. Eğer bu sapkınlıksa, öyle olsun. " (bkz. ieeexplore.ieee.org/document/820322/?reload=true )
Daniel Lidström

1
@smallchess alpha beta, fiili olarak arama algoritmasıdır, negascout gibi değişkenler bile yalnızca artımlı iyileştirmelerdir. Başka nelere atıfta bulunabilir? Bu derin öğrenme sistemleri gelmeden önce iyi yazılmış.
Daniel Lidström

6

DeepBlue, Kasparov'u çoktan yendi , bu nedenle bu sorun çok daha basit bir yaklaşımla çözüldü. Bu mümkündü çünkü satrançtaki muhtemel hamlelerin sayısı o zamandan çok daha küçüktü , bu yüzden çok daha basit bir problemdi. Dahası, hem NN hem de kaba kuvvetin çok büyük bilgi işlem kaynaklarına ihtiyaç duyduğunu unutmayın ( burada AlphaGo'nun arkasındaki bilgisayarın bir fotoğrafını bulabilirsiniz , GPU'ları değil, hesaplama için TPU'ları bile kullandığına dikkat edin). Bütünüyle karışıklık, Deep Blue Kasparov'u yendiğinde, go topluluğu, bunun mümkün olmayacağını savundu (birçok farklı sebepten dolayı, ancak oyuna ayrıntılı bir giriş yapmam gereken argümanları özetlemek için). Git Evet, NN'ye satranç oynamayı öğretebilir, Mario veya oynamayı öğretmeyi deneyebilirsinStarcraft ...

Sanırım bunun nedeni, ana akım medyada, insanların zaten çözülmüş olan problemleri çözdüğü durumlar hakkında sık sık duymamanızdır.

Dahası, öncülünüz yanlıştır, Deep Learning satranç oynamak için kullanılır, örneğin Deep Learning Machine 72 Saatte Kendini Satranç Öğretir, Uluslararası Master Seviyesinde Oynar . Ayrıca, ilgili makaleye bakın, Zürafa: Satranç Oynamak için Derin Güçlendirmeyi Öğrenme Kullanımı .


3
Açıkçası , derin pekiştirme öğrenmesiyle eğitilmiş bazı satranç programları olmasına rağmen , gerçek şu ki, hiç kimsenin "geleneksel" satranç motorlarını yenecek bir program yapmadığı söyleniyor. Bunun, (geleneksel motorları yenen) bu sorunun AlphaGo seviyesinde bir şeyler geliştirmek için gereken çabayı harcayacak kadar ilgi çekici ve motive edici olmadığı için olduğunu düşünüyorum.
amip diyor Reinstate Monica

1
@ amoeba, yaygın olarak bulunan go-play yazılımı da derin öğrenme kullanmaz ve genellikle amatör 1 dan oyunculardan daha zayıf, genellikle AlphaGo'dan çok daha kötüdür. AlphaGo, konseptin bir kanıtıdır.
Tim

1
@ rus9384 kolay değil ama biz zaten "çözdük", Deep Bluie Kasparov'u yendi, satranç Turing testini geçen siyah kuğumuzu aldık.
Tim

5
Çözülen oyun başka bir şey: mükemmel oyunun siyah / beyaz için kazanmayı garanti edip etmediğini veya berabere bittiğini bilmiyoruz.
rus9384

1
@ rus9384: Mükemmel bir satranç oyununa karşı bir oyuna başlamak ve "Beyaz kazanır. 97 hamlede Checkmate" görmek eğlenceli olur.
Eric Duminil
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.