Connect Four'u oynamak için makine öğrenme algoritması


14

Şu anda makine öğrenimi hakkında okuyorum ve Connect Four oynamaya nasıl uygulanacağını merak ettim .

Şu anki girişimim sigmoid fonksiyon modelini ve hepsi-bir-hepsi yöntemini kullanan basit bir çoklu sınıf sınıflandırıcısı.

Bence, girdi özellikleri 7x6 = 42 ızgara alanının durumu (oyuncu 1'in diski, oyuncu 2'nin diski, boş) olmalıdır.

Çıktı, diski yerleştirilecek satır sayısı olacaktır. Bu 1 ile 7 arasında ayrı bir sayı olduğundan, sanırım bu çok sınıflı bir sınıflandırma sorunu olarak ele alınabilir.

Ancak, denetimli öğrenmede kullanılabilecek eğitim örneklerini nasıl oluştururum?

Asıl amaç oyunu kazanmaktır, ancak son dönüşü değil son dönüşü yaparken sonuç belli değildir. Binlerce kez rastgele ne yapacağına rastgele karar veren iki oyuncuya izin verirsem, her oyun turunun galibi tarafından yapılan tüm dönüşleri eğitim örnekleri olarak almak yeterli olacak mı? Yoksa bunu tamamen farklı bir şekilde yapmak zorunda mıyım?

Edit: Yorumlarda önerildiği gibi pekiştirme öğrenme hakkında biraz okuyun. Bildiğim kadarıyla, Q-Learning hile yapmalı, yani mevcut durumun bir Q fonksiyonuna ve bu durumdan başlayarak maksimum kümülatif ödül olmak için yapılacak harekete yaklaşık olarak yaklaşmalıyım. Daha sonra her adım, maksimum Q değeriyle sonuçlanan eylemi seçmek olacaktır. Ancak, bu oyunun bunu yapmak için çok fazla durumu vardır, örneğin bir arama tablosu olarak. Peki, bu Q-Fonksiyonunu modellemenin etkili bir yolu nedir?


2
Google "Takviye Öğrenimi"
George

Tamam, sanırım bu tam olarak bu problem için geçerli. Önümüzde çok fazla okuma var gibi görünüyor. Daha spesifik işaretçiler veya öneriler var mı?
Tom

1
Eğer daha fazla bilgi sahibi olsaydım cevap olarak gönderirim :) Ne yazık ki pekiştirme öğrenimi konusunda deneyimim yok. Tom Mitchell'in "Machine Learning" kitabından başlardım. Çok iyi bir tanıtım kitabı ve Takviye Öğrenimi hakkında bir bölümü var.
George

1
İkincisi, sadece makine öğrenmeyi ve tanımayı denemeyi merak ediyorum.
Tom

1
@Tom, makine öğrenme tekniklerini 'tanımanın' daha iyi yolları var. Daha temel sınıflandırma ve regresyon teknikleri ile başlayıp oradan ilerlerdim. UCI'nin makine öğrenimi veri havuzundan veri kümeleri alabilir, Andrew Ng'in (Stanford) makine öğrenimi ders notlarına göz atabilir ve uygulamaya başlayabilirsiniz. Takviye öğrenmeyi kullanarak bağlantı 4'ü çözmeye çalışarak doğrudan atlamak oldukça garip ve aşırı karmaşık görünüyor.
Nick

Yanıtlar:


8

Sadece takviye öğrenimine daha basit bir alternatif sunmak için, iyi hareketler aramak için temel minimax algoritmasını kullanabilir ve tahta konumlarını değerlendirmek için makine öğrenimini kullanabilirsiniz.

Açıklığa kavuşturmak için, minimax, her düğümün yapraklardan elde edilen sonuçla etiketlendiği bir oyun ağacı oluşturur (1 = A oyuncusu kazanır, 0 = B oyuncusu kazanır), A'nın bu sayıyı maksimize eden hamleleri seçtiği ve B'nin hamleleri seçtiği varsayılarak bunu en aza indirir.

Oyun çok basit olmadığı sürece, tüm oyun ağacını terminallere kadar inşa edemezsiniz. Bunun yerine bitmemiş tahta pozisyonlarında durmanız ve yaprakları biraz sezgisel olarak değerlendirmeniz gerekir (esas olarak A oyuncusu verilen pozisyondan kazanma olasılığı). Sinir ağı gibi bir makine öğrenme algoritmasının, bilinen dört sonuçla dört pozisyonu birleştirerek bu olasılığı öğrenmeye çalışmasını sağlayabilirsiniz.

Eğitim örnekleri oluşturmak için, basit bir sezgisel tarama ile minimax çalarınızı inşa edebilir, bin kere oynamasına izin verebilir, ilk sinir ağınızı eğitmek için bu oyunları kullanabilir, sonra kendinize bin oyun ödeyebilir ve benzeri şeyler yapabilirsiniz. Biraz şansla, sisteminiz her nesilde gelişecektir.


2

Bir süre önce bağlanmak için minimax kullanma hakkında bir blog yazısı yazdım . Kodu burada görebilirsiniz . Modellerinizi eğitmeniz gerekiyorsa, belki de minimax uygulamama karşı birkaç bin oyun oynamasına izin verebilirsiniz.


Kodumu Github'da kullanmaktan çekinmeyin. github.com/lukasvermeer/minimax
Lukas Vermeer

Stack Exchange'e hoş geldiniz. Bu bir soru ve cevap sitesidir . Lütfen sss'ımızı , özellikle nasıl cevap vereceğimizi okuyun . Özellikle, yalnızca bir yanıt bağlantısı içeren gönderiler istemiyoruz. Katkınız için teşekkür ederiz, ancak blog yayınınızın ana noktalarını buradaki yazınızda özetleyebilir misiniz?
Gilles 'SO- kötü olmayı bırak

Üzgünüm, ama asıl soru "denetimli öğrenmede kullanılabilecek eğitim örneklerini nasıl oluştururum?" Bunları oluşturmak için kullanılabilecek çalışma koduna bağlantılar sağladım. Yukarıda daha fazla metin yazmanın orijinal ihtiyacı karşılamaya nasıl yardımcı olacağını göremiyorum.
Lukas Vermeer

"Potansiyel bir çözümün bağlantısı her zaman açıktır, ancak lütfen bağlantınızın çevresine bağlam ekleyin, böylece diğer kullanıcılarınız ne olduğu ve neden orada olduğu hakkında bir fikir sahibi olur. Hedef site olması durumunda her zaman önemli bir bağlantının en alakalı kısmını belirtin erişilemiyor veya kalıcı olarak çevrimdışı oluyor. " Sanırım ilkini yaptım. İkincisi önemsiz olacaktır. Asıl soru, bir çözümün nasıl uygulanacağına dair bir açıklama değil, örnek oyunlara ihtiyaç duyuyor.
Lukas Vermeer
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.