Flappy Bird Oynamak için Sinir Ağı + Genetik Algoritma Kullanın Öğretici

Derlemeyi ve organize etmeyi isteyin

Qubit Üretildi | Genel Hesap QbitAI

Şok! "Flappy Bird" uzun yıllardır popülerdir, ancak Çince adı yoktur.

Sorun değil. Bu, tüm yapay zekaların bu oyunu el çalışması yapmak için kullanmasını engellemez. Örneğin, bugünün HTML5 öğreticisi, size kuşlarla oynayabilen bir yapay zeka oluşturmak için sinir ağı + genetik algoritmayı kullanmayı öğretmek içindir.

Önceden söyleyeyim, bu AI'nın kodu eğitimin sonunda indirildi. Tüm kod, HTML5 kullanılarak Phaser çerçevesi kullanılarak yapılır. Ek olarak, sinir ağı sıfırdan inşa etmek yerine Synaptic Neural Network kütüphanesini kullanır.

Demo

Yukarıdaki Demo demosunun ekran görüntüsüdür. Bu algoritmanın gerçek etkisini görmek için aşağıdaki web sitesini ziyaret edin.

algoritma

Bu sistemin algoritması esas olarak NeuroEvolution'a dayanmaktadır. Bu makine öğrenimi yöntemi, yapay sinir ağlarını (YSA) eğitmek için genetik algoritma (GA) gibi evrimsel yöntemleri kullanır.

Başka bir deyişle, bu örnekteki makine öğrenimi = genetik algoritma + sinir ağı

Yapay sinir ağları

Yapay sinir ağları, makine öğrenimi algoritmalarının bir alt kümesidir. Biyolojik sinir ağlarının yapısından ve işlevinden esinlenirler.Bu ağlar, birbirine sinyal gönderen birçok nörondan oluşur.

Bir sinir ağı, bir giriş katmanından, bir veya daha fazla gizli katmandan ve bir çıktı katmanından oluşur. Her katmanda bazı nöronlar bulunur ve giriş ve çıkış katmanlarındaki nöronlar doğrudan dış ortama bağlıdır.

Bu projede, her ajanın (yani kuşun) içinden geçmesi gereken AI beyni olarak kendi sinir ağına sahip olması. Bu beyinler üç katmandan oluşur ve aşağıdaki şekilde yapılandırılmıştır:

  • Kuştan boşluğa yatay ve dikey mesafeleri temsil eden bir giriş katmanı, iki nöron

  • Bir gizli katman, altı nöron

  • Bir çıktı katmanı, bir nöron, aşağıdaki eylemleri gerçekleştirir: eğer çıktı > Sadece 0,5'te uç

  • Yukarıdaki metin aşağıdaki resim ile de temsil edilebilir:

    Genetik Algoritma

    Burada sinir ağlarını eğitmek ve iyileştirmek için genetik algoritmalar kullanıyoruz.

    Adından da anlaşılacağı gibi, genetik algoritma, doğal seçilim ve genetik süreçlerden yararlanan, arama tabanlı bir optimizasyon tekniğidir. Bu algoritma, ilk rastgele evrimi gerçekleştirmek için aynı seçim, kombinasyon geçişi ve mutasyon kombinasyonunu kullanır.

    Aşağıdakiler, genetik algoritmamızın ana adımlarıdır:

  • İlk 10 kuş (popülasyon) oluşturmak için rastgele sinir ağını kullanın

  • Oyun oynamaya giderken kuşların kendi sinir ağlarını kullanmalarına izin verin

  • Her kuş için, uçuş kalitesini ölçmek için uygunluk işlevini hesaplayın

  • Tüm kuşlar öldüğünde, mevcut popülasyonu bir sonraki nesle değerlendirmek için genetik operatörleri kullanın.

  • 2. adımı tekrarlayın

  • Fitness fonksiyonu

    Yukarıdaki üçüncü adımda, uygunluk işlevinin ayrıntıları ve nasıl tanımlanacağı hakkında konuşacağız.

    Popülasyonu geliştirmek için en iyi bireyleri (kuşları) kullanmak istediğimizden, bir uygunluk işlevi tanımlamamız gerekir.

    Genel olarak konuşursak, uygunluk işlevi, nesnenin kalitesini ölçmek için kullanılır. Ekibimizdeki her kuş ölçülür ve yeni nesil popülasyonu oluşturmak için bunlardan uygun bireyler seçilir.

    Bu projede kuşun uçuş mesafesine göre ödüller veriyoruz. Ayrıca kuşu, kuş ile bir sonraki boşluk arasındaki mesafeye göre cezalandıracağız. Bu şekilde, hangi kuşların aynı mesafeden uçtuğunu ayırt edebilirsiniz.

    Alternatif strateji

    Yukarıdaki 4. adımdaki genetik algoritma için, uygulama adımları aşağıdadır. Temel olarak, en iyi bireysel kuşlar hayatta kalacak ve yavruları en kötü performans gösterenlerin yerini alacak.

  • Mevcut popülasyondaki bireyler uygunluk durumuna göre sıralanır

  • Ödül vermek ve bunları doğrudan gelecek nesle aktarmak için ilk dördü seçin

  • En yüksek dereceli iki birey, bir yavru oluşturmak için çapraz birleştirilir.

  • İlk dörtten rastgele iki kişiyi seçin ve üç yavru üretmek için çapraz birleştirin

  • İki doğrudan kopya yavru oluşturmak için ilk dörtten rastgele iki kişi seçin

  • Her yavru için rastgele bir mutasyon uygulayın

  • Kod

    Yukarıdaki kod, aşağıdaki adrese gidilerek alınabilir:

    https://github.com/ssusnic/Machine-Learning-Flappy-Bird

    sonuç olarak

    Bu eğitimde, yapay zekanın Flappy Bird oyununu oynamayı öğrenmesine başarıyla izin verdik. Birkaç tekrardan sonra neredeyse yenilmez bir kuş elde edebiliriz. Bu hedefe ulaşmak için iki makine öğrenme algoritması benimsedik: yapay sinir ağı + genetik algoritma.

    Bu projeyle ilgileniyorsanız, gelecekte ne olacağını görmek için koddaki bazı parametreleri değiştirmeyi deneyebilirsiniz. Örneğin, gizli katmandaki nöron sayısı veya popülasyonun her neslindeki birey sayısı değiştirilebilir. Elbette, engeller arasındaki mesafe, yerçekimi vb. Gibi faktörler eklemek gibi uygunluk işlevini de değiştirebilirsiniz.

    Ve benzer kavramları diğer oyunlara da uygulamayı deneyebilirsiniz!

    İyi şanslar ~

    - Bitiş -

    Samimi işe alım

    Qubit, editörleri / muhabirleri işe alıyor ve merkezi Pekin, Zhongguancun'da bulunuyor. Yetenekli ve hevesli öğrencilerin bize katılmasını dört gözle bekliyoruz! Ayrıntılar için, lütfen QbitAI diyalog arayüzünde "işe alım" kelimesiyle yanıt verin.

    Qubit QbitAI

    ' ' Yapay zeka teknolojisi ve ürünlerindeki yeni eğilimleri takip edin

    "Ön Dalgalar" Sürekli "Arka Dalgalar" Güçlü, Sichuan Fotoğrafçıları Zamanın Görüntülerini Yapıyor
    önceki
    Genç general Shenhua, öğretmenini toplu olarak ziyaret eder ve yiyecek ve ikramiye kazandı! Xu Genbao bir kişiye odaklanıyor
    Sonraki
    Asya Oyunları e-spor programı ortaya çıktı, oyun 3 gün oynanacak mı? Oyuncu patladı, personel söylentileri acilen yalanladı
    32 dakikada 90 puan kazandı ve Alman yakışıklı Rocket Gun'ı harekete geçirdi.Patron 2 gereksinimleri önceden gerçekleştirilmeli mi?
    O yıllar Haikou ile övünüyordu ve şimdi BYD bunu adım adım yerine getiriyor
    Makine öğrenimi mühendisi mi olmak istiyorsunuz? Bu kendi kendine çalışma kılavuzu toplamaya değer
    Wuhan'dan genç bir oyuncu sıkı antrenman yapıyor ve U23 Lig Şampiyonası'nı gösteriyor! Önümüzdeki yıl Süper Lig'de kaç kişi öne çıkacak?
    Birinde 5 kral! Tek başına! Harden 4 tekli şahı + son 5 dakika şahı + 120 saniye şahı süpürdü
    Liger ile birlikte Chery, pazardan büyük bir parça et yemek üzere.
    Cui Kangxi bir kaplan kadar güçlü! Çinli Maradona, milli futbol kodamanını rahatsız ettiği için görevden alınan Quan Jian'a geri döndü
    Bashan Otoyolu resmen trafiğe açıldı! Sichuan, kuzeyden Siçuan'a başka bir büyük kanal daha ekliyor
    NBA5'teki en iyi şut blokları kimler? 1, 2, 3 numara Yao Ming'in üstündedir ve 5 numara Yao Ming'in 4 katıdır
    Haval F5, Pekin Otomobil Fuarı'nda görücüye çıktı Yeni Haval adının amacı nedir?
    İnsanlar bana çok mu gülüyor? Yanbian Northland'ın patronu Milli Futbol Takımı'na karşı oynadı ve taraftarlar maçtan sonra onu övdü.
    To Top