Ημέρα 22: Πώς να φτιάξετε ένα AI Game Bot χρησιμοποιώντας το OpenAI Gym και το Universe

Ας το παραδεχτούμε, το AI είναι παντού. Μια ανοιχτή μάχη ξεδιπλώνεται μεταξύ του Elon Musk και του Mark Zuckerberg για το μέλλον της AI. Υπάρχουν μερικοί που το δαιμονοποιούν. Και ορισμένοι των οποίων οι ουτοπικές απόψεις ισχυρίζονται ότι η τεχνητή νοημοσύνη θα μπορούσε σχεδόν να μοιάζει με Θεό στη βοήθεια της ανθρωπότητας. Όποια και αν είναι η κλίση των προβολών σας, το AI είναι εδώ για να μείνετε.

«Με τεχνητή νοημοσύνη, καλούμε τον δαίμονα». - Elon Musk «Ο φόβος της αύξησης των δολοφόνων ρομπότ είναι σαν να ανησυχείτε για τον υπερπληθυσμό στον Άρη». - Άντριου Νγκ

Εάν είστε ενθουσιασμένοι για να βουτήξετε και να παίξετε με AI, τότε τα παιχνίδια είναι ένα εξαιρετικό μέρος για να ξεκινήσετε. Ήταν το τεστ για τεχνητή νοημοσύνη. Αλλά πριν πηδήξουμε, εδώ είναι λίγη ιστορία για το πώς ο προγραμματισμός παιχνιδιών εξελίχθηκε με την πάροδο του χρόνου.

Η ιστορία του προγραμματισμού παιχνιδιών

Οι προγραμματιστές παιχνιδιών χρησιμοποιούσαν ευρετικές αποφάσεις τύπου «αν-τότε-αλλού» για να κάνουν εκπαιδευμένες εικασίες. Το είδαμε στα πρώτα παιχνίδια arcade, όπως το Pong και το PacMan. Αυτή η τάση ήταν ο κανόνας για πολύ καιρό. Ωστόσο, οι προγραμματιστές παιχνιδιών μπορούν να προβλέψουν μόνο τόσα πολλά σενάρια και περιπτώσεις, ώστε το bot σας να μην λειτουργεί σε κύκλους!

Οι προγραμματιστές παιχνιδιών έπειτα προσπάθησαν να μιμηθούν πώς οι άνθρωποι θα έπαιζαν ένα παιχνίδι και μοντελοποίησαν την ανθρώπινη νοημοσύνη σε ένα παιχνίδι.

Η ομάδα στο DeepMind το έκανε αυτό με τη γενίκευση και τη μοντελοποίηση της νοημοσύνης για την επίλυση οποιουδήποτε παιχνιδιού Atari ρίχτηκε σε αυτό. Το bot του παιχνιδιού χρησιμοποίησε νευρωνικά δίκτυα βαθιάς μάθησης που δεν θα είχαν ειδικές γνώσεις για το παιχνίδι. Κέρδισαν το παιχνίδι με βάση τα εικονοστοιχεία που είδαν στην οθόνη και τις γνώσεις τους για τα χειριστήρια του παιχνιδιού. Ωστόσο, τμήματα του DeepMind εξακολουθούν να μην είναι ανοιχτού κώδικα καθώς η Google το χρησιμοποιεί για να νικήσει τον ανταγωνισμό.

Ο εκδημοκρατισμός της τεχνητής νοημοσύνης

Για να αποφύγει τη συγκέντρωση της απίστευτης ισχύος της AI στα χέρια μερικών, ο Elon Musk ίδρυσε το OpenAI. Επιδιώκει τον εκδημοκρατισμό της τεχνητής νοημοσύνης καθιστώντας την προσβάσιμη σε όλους. Σήμερα θα εξερευνήσουμε το OpenAI Gym και το Universe που κυκλοφόρησε πρόσφατα, το οποίο είναι χτισμένο στην κορυφή του Gym.

Το OpenAI Gym παρέχει μια απλή διεπαφή για αλληλεπίδραση και διαχείριση οποιουδήποτε αυθαίρετου δυναμικού περιβάλλοντος. Το OpenAI Universe είναι μια πλατφόρμα που σας επιτρέπει να δημιουργήσετε ένα bot και να το δοκιμάσετε.

Υπάρχουν χιλιάδες περιβάλλοντα. Περιλαμβάνονται από κλασικά παιχνίδια Atari, Minecraft και Grand Theft Auto, έως προσομοιώσεις αναδίπλωσης πρωτεϊνών που μπορούν να θεραπεύσουν τον καρκίνο. Μπορείτε να δημιουργήσετε ένα bot και να το εκτελέσετε σε οποιοδήποτε περιβάλλον χρησιμοποιώντας μόνο μερικές γραμμές κώδικα Python. Αυτό είναι πολύ φοβερό για να μην το δοκιμάσετε!

Έργο (1 ώρα)

Θα κατασκευάσουμε ένα AI Game Bot που χρησιμοποιεί την τεχνική «Ενίσχυση εκμάθησης». Θα το εξηγήσω αργότερα. Θα παίξει αυτόνομα και θα νικήσει το παιχνίδι Atari Neon Race Car (μπορείτε να επιλέξετε οποιοδήποτε παιχνίδι θέλετε). Θα δημιουργήσουμε αυτό το bot παιχνιδιών χρησιμοποιώντας βιβλιοθήκες του OpenAI's Gym και Universe.

Βήμα 1: Εγκατάσταση

Βεβαιωθείτε ότι έχετε εγκαταστήσει το Python ή εγκαταστήστε το χρησιμοποιώντας το Homebrew. Μπορείτε να κατεβάσετε ένα ειδικό Python IDE όπως το PyCharm ή το iPython notebook. Μου αρέσει να το διατηρώ απλό και να χρησιμοποιώ το Sublime. Τέλος, εγκαταστήστε Gym, Universe και άλλες απαιτούμενες βιβλιοθήκες χρησιμοποιώντας pip.

// Install python using brewbrew install python3// Install the required OpenAI librariespip3 install gympip3 install numpy incrementalbrew install golang libjpeg-turbo pip install universe

Τα πάντα στο Σύμπαν (τα περιβάλλοντα) λειτουργούν ως κοντέινερ μέσα στο Docker. Σε περίπτωση που δεν το έχετε ήδη, εγκαταστήστε και εκτελέστε το Docker από εδώ.

Βήμα 2: Κωδικοποιήστε το Game Bot

Το Game Bot είναι κωδικοποιημένο στο Python, οπότε ξεκινάμε εισάγοντας τις δύο μόνο εξαρτήσεις που απαιτούνται: Gym και Universe.

import gymimport universe

Για αυτό το Bot Bot, ας χρησιμοποιήσουμε το αγαπημένο μου παιδικό παιχνίδι, το Neon Race Cars, ως περιβάλλον δοκιμής. Μπορείτε να βρείτε μια πλήρη λίστα με άλλα περιβάλλοντα / παιχνίδια που μπορείτε να επιλέξετε από εδώ.

Το Σύμπαν σας επιτρέπει να τρέχετε όσα περιβάλλοντα θέλετε παράλληλα. Αλλά για αυτό το έργο, θα χρησιμοποιήσουμε μόνο ένα.

env = gym.make(‘flashgames.NeonRace-v0’)env.configure(remotes=1) # creates a local docker container

Μάθηση Ενίσχυσης

Τώρα προσθέτουμε τη λογική του παιχνιδιού bot που χρησιμοποιεί την τεχνική εκμάθησης ενίσχυσης. Αυτή η τεχνική παρατηρεί την προηγούμενη κατάσταση και την ανταμοιβή του παιχνιδιού (όπως τα pixel που εμφανίζονται στην οθόνη ή το σκορ του παιχνιδιού). Στη συνέχεια έρχεται με μια δράση για την εκτέλεση στο περιβάλλον.

Ο στόχος είναι να βελτιωθεί η επόμενη παρατήρησή της (στην περίπτωσή μας - να μεγιστοποιηθεί το σκορ του παιχνιδιού) Αυτή η ενέργεια επιλέγεται και εκτελείται από έναν πράκτορα (Game Bot) με σκοπό τη μεγιστοποίηση του σκορ. Στη συνέχεια εφαρμόζεται στο περιβάλλον. Το περιβάλλον καταγράφει την προκύπτουσα κατάσταση και την ανταμοιβή με βάση το αν η δράση ήταν ευεργετική ή όχι (κέρδισε το παιχνίδι;).

Τώρα μπορούμε να ανακτήσουμε τη λίστα των παρατηρήσεων για κάθε περιβάλλον που αρχικοποιήθηκε χρησιμοποιώντας τη μέθοδο env.reset ().

observation_n = env.reset()

Η παρατήρηση εδώ είναι ένα συγκεκριμένο για το περιβάλλον αντικείμενο. Αντιπροσωπεύει αυτό που παρατηρήθηκε, όπως τα ακατέργαστα δεδομένα pixel στην οθόνη ή την κατάσταση / το σκορ του παιχνιδιού.

Το επόμενο βήμα είναι να δημιουργήσετε έναν πράκτορα παιχνιδιού χρησιμοποιώντας έναν άπειρο βρόχο, ο οποίος εκτελεί συνεχώς κάποια ενέργεια βάσει της παρατήρησης. Στο bot μας, ας καθορίσουμε μια μόνο ενέργεια του επαναλαμβανόμενου πατήματος του πάνω βέλους (Silly bot! Μη διστάσετε να το εξελίξετε σε ένα περίπλοκο…). Η ενέργεια εδώ ορίζεται από τον τύπο συμβάντος (KeyEvent), το πλήκτρο ελέγχου (Πάνω βέλος) και τη ρύθμιση σε αληθές για όλες τις παρατηρήσεις που βλέπει ο πράκτορας.

while True:action_n = [[('KeyEvent', 'ArrowUp', True)] for ob in observation_n]

Στη συνέχεια, χρησιμοποιούμε τη env.step()μέθοδο για να χρησιμοποιήσουμε την ενέργεια για να προχωρήσουμε ένα βήμα προς τα εμπρός. Αυτή είναι μια πολύ βασική εφαρμογή της ενισχυμένης μάθησης.

 observation_n, reward_n, done_n, info = env.step(action_n)

Η μέθοδος βήμα εδώ επιστρέφει τέσσερις μεταβλητές:

  1. observation_n: Παρατηρήσεις του περιβάλλοντος
  2. reward_n: Εάν η δράση σας ήταν ευεργετική ή όχι: + 1 / -1
  3. done_n: Υποδεικνύει εάν το παιχνίδι τελείωσε ή όχι: Ναι / Όχι
  4. info: Πρόσθετες πληροφορίες, όπως απόδοση και καθυστέρηση για σκοπούς εντοπισμού σφαλμάτων

Μπορείτε να εκτελέσετε αυτήν την ενέργεια ταυτόχρονα για όλα τα περιβάλλοντα στα οποία εκπαιδεύετε το bot σας. Χρησιμοποιήστε τη μέθοδο env.render () για να ξεκινήσετε το bot.

env.render()

Τώρα έχετε το Game Bot έτοιμο να ανταγωνιστεί το περιβάλλον. Ο πλήρης κώδικας για αυτό το βασικό bot καθώς και μια προηγμένη έκδοση διατίθεται στο repo Github εδώ.

Βήμα 3: Εκτελέστε το Game Bot

Τώρα για το διασκεδαστικό μέρος: βεβαιωθείτε ότι το Docker τρέχει και εκτελεί το bot. Δείτε το σε δράση ξυλοδαρμό άλλων αυτοκινήτων ή δεν το έκανε. Εάν αποτύχει, συνεχίστε να τροποποιείτε το bot σας για να το κερδίσετε!

python gamebot.py

Συνεχίστε με το AI και τελικά μπορείτε να ξεκλειδώσετε τη λειτουργία God! # 100DaysOfCode

Αν σας άρεσε αυτό, παρακαλώ χειροκρότημα ; Οι άλλοι μπορούν να το δουν επίσης! Ακολουθήστε με στο Twitter @H ariniLabs ή στο Medium για να λάβετε τις πιο πρόσφατες ενημερώσεις για άλλες ιστορίες ή απλά για να πείτε Γεια :)

PS: Εγγραφείτε στο newsletter μου εδώ για να είστε ο πρώτος που θα πάρει φρέσκο ​​νέο περιεχόμενο και είναι γεμάτο με μια δόση έμπνευσης από τον κόσμο του # WomenInTech και ναι άνδρες μπορούν επίσης να εγγραφούν !