GÜNCELLEME 2018-07-26: Hepsi bu! Şimdi bu tür oyunların çözülebileceği noktaya yaklaşıyoruz! OpenAI kullanarak ve DotA 2 oyununu temel alan bir takım, 5v5 oyunda yarı profesyonel oyuncuları yenebilecek bir AI yapabilir . DotA 2'yi biliyorsanız, bu oyunun mekanik açısından Diablo benzeri oyunlara oldukça benzediğini biliyorsunuz, ancak takım oyunu nedeniyle daha da karmaşık olduğunu iddia edebiliriz.
Beklendiği gibi, bu, derin öğrenme ile takviye öğrenmedeki en son gelişmeler ve temiz bir API aldığınız için bir AI geliştirmeyi kolaylaştıran ve aynı zamanda oyunu hızlandırabileceğiniz için (AI oynandı) OpenAI gibi açık oyun çerçevelerinin kullanılması sayesinde başarıldı. her gün kendisine karşı 180 yıllık oyun eşdeğeri!).
5 Ağustos 2018'de (10 gün içinde!) , Bu AI'yı en iyi DotA 2 oyuncularına karşı planlamak planlanıyor. Eğer bu işe yararsa, büyük bir devrim bekliyoruz, belki de Go oyununun çözümü kadar aracı değil, ama yine de oyunlar AI için büyük bir kilometre taşı olacak!
GÜNCELLEME 2017-01: Saha, AlphaGo'nun başarısından bu yana çok hızlı ilerliyor ve neredeyse her ay oyunlarda makine öğrenme algoritmalarının geliştirilmesini kolaylaştıran yeni çerçeveler var. İşte en son bulduğum listeler:
- OpenAI's Universe : makine öğrenimini kullanarak neredeyse tüm oyunları oynamak için bir platform . API Python'dadır ve oyunları bir VNC uzak masaüstü ortamının arkasında çalıştırır, böylece herhangi bir oyunun görüntülerini yakalayabilir! Evren'i Diablo II'yi bir makine öğrenme algoritması ile oynamak için kullanabilirsiniz!
- OpenAI's Gym : Evren'e benzer, ancak özellikle takviye öğrenme algoritmalarını hedefliyor (bu yüzden AlphaGo tarafından kullanılan çerçevenin genelleştirilmesinden başka bir çok oyuna benziyor). Orada Udemy bir ders OpenAI Gym kullanarak koparma veya Doom gibi oyunlara makine öğrenme uygulamasını kapsayan.
- TorchCraft : Torch (makine öğrenme çerçevesi) ile StarCraft: Brood War arasında bir köprü .
- pyGTA5 : GTA5'te yalnızca ekran görüntülerini ( çevrimiçi birçok video içeren) kullanarak kendi kendine giden otomobiller inşa etme projesi .
Çok heyecan verici zamanlar!
ÖNEMLİ GÜNCELLEME (2016-06): OP tarafından belirtildiği gibi, yapay ağları sadece görsel girdileri kullanarak oyun oynamak için eğitme sorunu, DeepMind Derin Öğrenme-Ağ (DQN) gibi oldukça umut verici sonuçlarla birçok ciddi kurum tarafından ele alınmaktadır. ) .
Ve şimdi, bir sonraki seviye zorluğa girmek istiyorsanız, sadece görsel girişleri kullanarak Doom'u oynamak için ağları eğitmek için son derece optimize edilmiş bir platform (7000 fps) olan ViZDoom gibi çeşitli AI vizyon oyunu geliştirme platformlarından birini kullanabilirsiniz. :
ViZDoom, yalnızca görsel bilgileri (ekran arabelleği) kullanarak Doom oynayan AI botlarının geliştirilmesine izin verir. Öncelikle makine görsel öğrenimi ve özellikle derin takviye öğrenimi araştırmaları için tasarlanmıştır. ViZDoom, oyun mekaniğini sağlamak için ZDoom'a dayanmaktadır.
Ve sonuçlar oldukça şaşırtıcı, web sayfalarındaki videolara ve Python'daki güzel öğreticiye bakın !
Quake 3 Arena için Quagents adında benzer bir proje de var , bu da temel oyun verilerine kolay API erişimi sağlıyor, ancak bunu kaldırabilir ve sadece ajanınızı kontrol etmek için ekran görüntülerini ve API'yi kullanabilirsiniz.
Sadece ekran görüntülerini kullanırsak neden böyle bir platform yararlıdır? Temeldeki oyun verilerine erişmeseniz bile, böyle bir platform şunları sağlar:
- oyunların yüksek performanslı uygulanması (öğrenme algoritmalarınızın daha hızlı birleşebilmesi için daha az veriyle daha fazla veri / oyun / öğrenme nesli üretebilirsiniz!).
- ajanlarınızı kontrol etmek için basit ve duyarlı bir API (örneğin, bir oyunu kontrol etmek için insan girişlerini kullanmaya çalışırsanız, bazı komutlarınız kaybolabilir, bu nedenle çıktılarınızın güvenilmezliği ile de ilgilenirsiniz ...).
- özel senaryoların kolay kurulumu .
- özelleştirilebilir oluşturma ( işlemeyi kolaylaştırmak için aldığınız görüntüleri "basitleştirmek" için yararlı olabilir)
- senkronize ("adım adım") oynatma (böylece ilk başta gerçek zamanlı olarak çalışmak için algoritmanız gerekmez, bu büyük bir karmaşıklık azalmasıdır).
- platformlar arası uyumluluk, geriye dönük uyumluluk (yeni bir oyun güncellemesi olduğunda botunuzun artık oyunla çalışmamasını riske atmazsınız) gibi ek kolaylık özellikleri vb.
Özetlemek gerekirse, bu platformlarla ilgili en iyi şey , uğraşmak zorunda kaldığınız önceki teknik sorunların çoğunu ( oyun girdilerini nasıl manipüle edeceğiniz, senaryoları nasıl kuracağınız vb.) Azaltmaları ve böylece öğrenme algoritmasıyla uğraşmanız gerektiğidir. kendisi.
Şimdi, işe gidin ve bizi şimdiye kadarki en iyi AI görsel botu yapın;)
Yalnızca görsel girdilere dayanan bir yapay zeka geliştirmenin teknik sorunlarını açıklayan eski yazı :
Yukarıdaki bazı meslektaşlarımın aksine, bu sorunun inatçı olduğunu düşünmüyorum. Ama kesinlikle hella zor biri!
Yukarıda belirtildiği gibi ilk sorun , oyunun durumunun temsil edilmesidir : tam durumu tek bir görüntü ile temsil edemezsiniz, bir tür ezberlemeyi sürdürmeniz gerekir(sağlık değil aynı zamanda donanımlı nesneler ve kullanılabilecek eşyalar, görevler ve hedefler vb.). Bu tür bilgileri almak için iki yolunuz vardır: ya en güvenilir ve en kolay olan oyun verilerine doğrudan erişerek; ya da bazı basit prosedürleri uygulayarak bu bilgilerin soyut bir temsilini oluşturabilirsiniz (envanter açın, ekran görüntüsü alın, verileri çıkarın). Tabii ki, bir ekran görüntüsünden veri ayıklamak ya bazı denetimli prosedürler (tamamen tanımladığınız) koymanız ya da denetimsiz olmanız (bir makine öğrenme algoritması aracılığıyla, ancak daha sonra karmaşıklığı büyük ölçüde ölçeklendirecektir ...). Denetimsiz makine öğrenimi için, yapısal öğrenme algoritmaları adı verilen oldukça yeni bir algoritma türü kullanmanız gerekecektir (verilerin sınıflandırılması veya bir değeri tahmin etmek yerine verilerin yapısını öğrenir).http://techtalks.tv/talks/54422/
Daha sonra, başka bir sorun, ihtiyacınız olan tüm verileri getirmiş olsanız bile, oyunun sadece kısmen gözlemlenebilir olmasıdır . Bu nedenle, dünyanın soyut bir modelini enjekte etmeniz ve oyundan işlenmiş bilgilerle, örneğin avatarınızın konumu ile ekranın dışındaki görev öğelerinin, hedeflerin ve düşmanların konumu ile beslemeniz gerekir. Bunun için Vermaak 2003'ün Karışım Parçacık Filtrelerini inceleyebilirsiniz.
Ayrıca, bir olması gerekir özerk ajan ile, hedefleri dinamik olarak oluşturulmuş. Deneyebileceğiniz iyi bilinen bir mimari BDI ajanıdır, ancak muhtemelen bu mimarinin pratik durumunuzda çalışması için ince ayar yapmanız gerekecektir. Alternatif olarak, çok iyi çalışılmış ve esnek bir çerçeve olduğu için, büyük resmileştirme ve kanıt prosedürleri ile istediğinizi elde etmek için muhtemelen petri ağlarının her türlü varyasyonuyla birleştirebileceğiniz Yinelemeli Petri Net de vardır.
Ve nihayet, yukarıdakilerin hepsini yapsanız bile, oyunu hızlandırılmış bir hızda taklit etmenin bir yolunu bulmanız gerekecek (bir video kullanmak güzel olabilir, ancak sorun algoritmanızın sadece kontrolsüz olarak izleyebilmesi ve kendini denemek öğrenme için çok önemlidir). Gerçekten de, mevcut en yeni algoritmanın, bir insanın öğrenebileceği aynı şeyi (takviye öğrenimi ile daha da fazla) öğrenmek için çok daha fazla zaman aldığı bilinmektedir, bu nedenle süreci hızlandıramazsa ( örneğin, oyun süresini hızlandıramazsanız), algoritmanız tek bir yaşamda bile birleşmez ...
Sonuç olarak, burada elde etmek istediğiniz şey, mevcut en yeni algoritmaların sınırında (ve belki de biraz ötesinde) . Bence bu mümkün olabilir, ancak öyle olsa bile, çok fazla zaman harcayacaksınız , çünkü bu teorik bir sorun değil , burada yaklaştığınız pratik bir problem ve bu yüzden çok fazla uygulamanız ve birleştirmeniz gerekiyor çözmek için farklı AI yaklaşımları .
Üzerinde çalışan bir ekiple onlarca yıl araştırma yapmak yeterli olmayabilir, bu yüzden yalnızsanız ve yarı zamanlı olarak (muhtemelen yaşamak için bir işiniz olduğu gibi) üzerinde çalışıyorsanız, yakın bir yere ulaşmadan bir ömür boyu harcayabilirsiniz çalışan bir çözüm.
Buradaki en önemli tavsiyem , beklentilerinizi düşürmeniz ve karmaşıklığı azaltmaya çalışmanız olacaksorununuzu, mümkün olan tüm bilgileri kullanarak ve ekran görüntülerine güvenerek mümkün olduğunca kaçının (yani, doğrudan oyuna bağlanmaya çalışın, DLL enjeksiyonunu arayın) ve denetlenen prosedürleri uygulayarak bazı sorunları basitleştirin. algoritma her şeyi öğrenir (yani, şimdilik görüntü işlemeyi olabildiğince düşürün ve dahili oyun bilgilerine güvenin, daha sonra algoritmanız iyi çalışıyorsa, AI programınızın bazı bölümlerini görüntü işleme ile değiştirebilirsiniz, böylece tam amacınıza ulaşırsınız, Örneğin, iyi çalışacak bir şey elde edebiliyorsanız, sorununuzu karmaşıklaştırmayı deneyebilir ve ekran görüntülerinde denetimsiz makine öğrenme algoritmalarıyla denetimli prosedürleri ve hafıza oyunu verilerini değiştirebilirsiniz).
İyi şanslar ve işe yararsa, bir makale yayınladığınızdan emin olun, böyle zor bir pratik sorunu çözmek için kesinlikle ün kazanabilirsiniz!