Soru:
Alpha Zero - Stockfish karşılaşmasında rastgeleliğin kaynağı neydi?
firtydank
2017-12-16 10:06:32 UTC
view on stackexchange narkive permalink

Anladığım kadarıyla Alpha Zero'nun algoritması "öğrenme" aşamasından sonra düzeltildi, bu nedenle her pozisyon için aynı hareketle karşımıza çıkacak mıydı? Maçtaki değişkenlik tamamen bir Stockfish ayarından mı kaynaklanıyor yoksa Alpha Zero da hamle seçiminde bir rastgelelik öğesi mi gösteriyordu?

Alfa sıfır tarafından kullanılan Monte Carlo ağaç araması oldukça rastgele geliyor.
Monte Carlo, deterministik bir algoritma değildir.
Anladığım kadarıyla, algoritma gerçek eşleşme için yataklanırken, "öğrenme" aşamasında sinir ağını eğitmek için kullanıldı. Görünüşe göre bir numarayı kaçırıyorum.
Bence mcts her zaman kullanıldı.
Olası bir başka olasılık kaynağı ise zamandır. Aynı hareket aynı harekette kullanılabilse de, bir miktar hesaplama yapmak için her zaman farklı bir zaman alma yeteneği vardır, bu yüzden belki bir seferde biraz daha hızlı koştu ve daha sonra daha iyi bir zaman ortaya çıktı. cevap çünkü daha da ileri gitti ve zaman yavaşladı.
Iki yanıtlar:
SmallChess
2017-12-17 19:04:28 UTC
view on stackexchange narkive permalink

AlphaZero'nun http://www.chessgames.com/perl/chess.pl?tid=91944&crosstable=1 içinde 1.d4 ve 1.Nf3 oynadığını fark ettim. Olasılıklar:

  • Çoklu iş parçacığı (herhangi bir yazılım mühendisi bunun deterministik olmadığını söyleyebilir)
  • Monte Carlo Ağaç Arama (algoritma rastgele yollar çizer, bu nedenle deterministik olamaz)

Modelin parametreleri "sabit" iken (kendi kelimeleriniz), gerçek hareketin farklı olabileceğini lütfen unutmayın. AlphaZero için kaynak kodumuz yok, ancak çoklu okuma ve MCTS muhtemelen iki ana durumdur.

Çoklu iş parçacığı belirleyici değildir ne demek? Nasıl kullanıldığına bağlı değil mi? Hangi iş parçacığının önce bittiğini bilemeyebiliriz, ancak çoğu zaman insanlar, işlerin yürütülmesi sırasındaki herhangi bir tutarsızlığın programın nihai sonucunu etkilemediğinden emin olma konusunda dikkatli olma eğilimindedir (veya en azından dener).
@BenjiAltman Kaynak kodumuz olmadığını yazdım. Kendi cevabınız için katkıda bulunabilirsiniz.
Bu konuda yeterince bilgim yok, ancak "herhangi bir yazılım mühendisi size bunun deterministik olmadığını söyleyebilir" dediniz ve katılıyorum, ancak bu, algoritmaya rastgelelik getireceği anlamına gelmez.
Herhangi bir yazılım mühendisi, algoritmanızın deterministik olması gerekiyorsa çok iş parçacıklı algoritmaya güvenmemeniz gerektiğini, ancak algoritmanın * olmayan * olması gerekiyorsa çoklu iş parçacığına da güvenmemeniz gerektiğini söyleyebilmelidir - deterministik.
Satranç motorlarında çoklu okuma neredeyse hiçbir zaman belirleyici değildir.
@BenjiAltman Threads işlemeyi ve farklı zamanlarda bitirebilir. Program bir şekilde her iş parçacığının bitmesini beklemediği ve bunları _belirsiz olarak_ döndürmediği sürece, gerçek sonuç zamanlayıcı tarafından hangi iş parçacığına daha yüksek öncelik verildiğine bağlı olabilir.
@rec Doğru. Satranç gibi yüksek performanslı uygulamalar konuların bitmesini beklemez (bunlar iş uygulamaları değildir!) Ve bu nedenle belirleyicidir. Örneğin, çok çekirdekli çalışan Stockfish% 100 deterministik değildir.
@rec Bu mantıklı, açıklama için teşekkürler!
Daha somut bir örnek vermek gerekirse, A dişinin 4 kat derinliğe kadar bir konumu değerlendirmesi gerekiyorsa, B dişinin aynı konumu 6 kat derinlikte değerlendirmesi gerekiyorsa ne olacağını düşünün. A evresi önce konumu değerlendirirse, beklenen 4 katlı değerlendirmeyi yapacak, ancak eğer B evresi önce konumu değerlendirirse, A evresi daha derin 6 katlı değerlendirmeye güvenecektir. Motor hiçbir noktada yanlış bir şey yapmaz, ancak yine de bir yarış durumu vardır.
Benjamin
2019-05-08 02:13:30 UTC
view on stackexchange narkive permalink

LC0 yazarları AlphaZero makalesini çok dikkatli bir şekilde incelediler, kendi deneylerini yaptılar ve aşağıdaki sonuca vardılar. AlphaZero, algoritmasına Monte Carlo ağaç araması adını vermesine rağmen (Tüm Monte Carlo yöntemleri tanım gereği açıkça rastgeledir), belirli sayıda hareketten sonra açık bir determinizm kullanmaz (bunun 15 hareket olduğuna inanıyorum).

MCTS'nin, hareket seçimine rastgelelik katabilecek iki farklı bölümü vardır.

  1. Arama aşamasında, AlphaZero 2 faktöre göre araştırılacak hareketlerin ağırlıklarını atar: sinir ağı tarafından değerlendirilen kazanma olasılığı ve ayrıca bazı alt ağaç boyutu istatistikleri ebeveyn ve çocuk alt ağaçları hareket ettirir. İlk faktör, daha fazla gelecek vaat eden satırların önce değerlendirilmesini sağlar ve ikinci faktör, sonunda daha az umut verici satırların aranmasını sağlar. MCTS'nin doğal bir uygulamasında, bu ağırlıklı olasılıklar arasında ağırlıklı rastgele seçimler kullanacaktır. Gerçekte, AlphaZero her seferinde maksimum ağırlığı seçerek, tamamen belirleyici bir şekilde bunlar arasında seçim yapar. Bunu yapar çünkü bu adımdaki rastgelelik yardımcı olmaz ve ortalama olarak motoru daha önemli varyasyonlardan uzaklaştırır.

  2. Taşıma aşamasında, arama aşaması tarafından hesaplanan derin ve doğru değerlendirmelere sahip olan hareket adayları arasında ağırlıklı bir seçim yapabilir. Buradaki fikir, oyuna çeşitlilik getirmeye çalışmak için biraz yetersiz hareketler yapmaktır, böylece her seferinde aynı oyunu oynamaz. Bu özellikle antrenman sırasında önemlidir, ancak aynı zamanda daha ilginç maç sonuçlarına yol açar. AlphaZero'nun bunu yalnızca ilk 15 hamle kadar yaptığı ve bundan sonra her zaman en iyi hamleyi seçtiği ortaya çıktı. Bu determinizmin, son derece doğru oyunsonu oyunu için gerekli olduğu ortaya çıkıyor, burada değerlendirmedeki küçük farklılıkların beraberlik ve galibiyet arasındaki fark olduğu ortaya çıkıyor.

Bu hem eğitim hem de değerlendirme sırasında geçerlidir.

Başka bir deyişle, açılıştan çıktığında, oyunu geleneksel bir motor kadar belirleyicidir.

Bununla birlikte, geleneksel motorlarla aynı türden çok iş parçacıklı ve zaman kontrollü non-determinizme sahip olacağına dikkat edin.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...