Pythonでゲームボーイエミュレーターを作成し、AIモデルをトレーニングする:デンマーク人の大学のプロジェクトが大ヒット

Pythonでゲームボーイエミュレーターを作成し、AIモデルをトレーニングする:デンマーク人の大学のプロジェクトが大ヒット

Atari ゲームを使って人工知能を研究するのは、ちょっと現実的ではないと感じますか?これでゲームボーイエミュレーターが使用できるようになります。

[[322869]]

80 年代や 90 年代に生まれた多くの人々にとって、任天堂のゲームボーイは青春時代の大きな部分を象徴しています。私たちがよく知っているゲームの多くは、有名な「マリオ」や「ゼルダ」シリーズを含め、もともとこの 8 ビット ゲーム コンソールにインストールされていました。国内のプレイヤーにとって、最も多くプレイするゲームはおそらく「ポケモン」シリーズでしょう。

このゲーム機が最初に発売されてから30年が経ちましたが、人々の熱狂はまったく衰えていません。昨日、Python で書かれたゲームボーイ エミュレーターがソーシャル ネットワーク上で大きな注目を集めました。

青春が戻ってきた?著者のRedditへの投稿はすぐに何千ものいいねを獲得した。

プロジェクトの作者の一人である Mads Ynddal 氏が、PyBoy バージョン 1.0 の正式リリースを発表しました。

PyBoyとは何ですか?

つまり、これは Python で完全にゼロから書かれたゲームボーイ エミュレーターであり、API 経由でスクリプトをサポートしています。研究者らは、Cython を使用してソフトウェアをコンパイルできるようにする型定義を追加し、C および C++ で記述されたシミュレーターに匹敵するパフォーマンスを実現しました。

プロジェクトリンク: https://github.com/Baekalfen/PyBoy

特徴

PyBoy は Python 経由でアクセスできるように設計されており、実験研究、ロボット工学、人工知能に取り組む人々をサポートし、奨励します。研究者たちはゲーム固有のラッパーを構築しており、現在、プログラマーはゲームボーイに関する詳細な知識を必要とせずにテトリスやスーパーマリオを操作できるようになっている。ドキュメントを参照できます: https://docs.pyboy.dk。

プロジェクトの作者たちは、より珍しい機能を学び、試してみたかったので、大学のプロジェクトの研究に基づいて、エミュレーターに巻き戻し機能を追加しました。これにより、どのゲームでも時間を巻き戻すことができます。

PyBoy エミュレータのアーキテクチャ

1990年に任天堂はゲームボーイの特許を申請した。次の図は、特許における CPU、RAM、カートリッジ、ディスプレイの統合と接続を示しています。

ゲームボーイの特許からのアーキテクチャ図。

これを基に、PyBoy プロジェクトのメンバーは各コンポーネントのクラスを Python で作成し、「ホスト システム」(Python が実行されるシステム) 上に「クライアント システム」の基盤を構築しました。クライアント システムは仮想 Game Boy ハードウェアであり、理論上は Game Boy 用に作成されたすべてのソフトウェアを実行できます。

次の図は、PyBoy シミュレーター内のすべてのクラスとそれらの関係を示しています。

PyBoy が強化学習にもたらす意味と他の環境との比較

長年にわたり、多くの人がゲームボーイエミュレーターを開発しており、現在ではコンピューターと携帯電話の両方で実行できるツールも存在します。なぜ Python で書くのでしょうか?もちろん、人工知能のトレーニングにも使われます。

[[322871]]

ゲームをプレイしたいですか?ゲームボーイは、現代の人にとってはちょっと「使いにくい」ものかもしれません。

汎用人工知能に最も近いアプローチ - 強化学習

汎用人工知能の概念は、人間が実行できるあらゆる知的タスクを機械がうまく完了できる能力を指します。現時点では、AI に関する研究はまだこの目標からは程遠い。Andrew Ng 氏は以前、ディープラーニングは高次元の「曲線フィッティング」のみを行うと述べていた。

事前に収集されたデータに依存する機械学習アルゴリズム(大量の手動ラベル付けも必要)とは異なり、強化学習は環境報酬のみでトレーニングされるアルゴリズムです。その動作メカニズムは人体のドーパミン システムに似ています。強化学習は現在、経験から学ぶ人間の能力に最も近い機械学習アルゴリズムであり、インテリジェントエージェントが環境に基づいて決定を下す必要があるシナリオに特に適しています。

下の図は、RL エージェントがゲーム画像のみを入力として使用してマリオの制御ポリシーを学習する方法を示しています。

なぜ RL に関する研究が、他のより実用的な問題ではなく Atari でこれほど多く行われているのでしょうか?

  • RL 研究で Atari をベンチマークとして使用する理由はいくつかあります。
  • Atari 環境では、同じアルゴリズムを使用して複数の異なる環境をテストし、RL アルゴリズムの汎用性を検証できます。
  • 入力はゲーム画像のみなので、問題の複雑さが増します。
  • Atari は、さまざまなアルゴリズム間のパフォーマンスを公平に比較​​できる、認められたテスト ベッドを研究者に提供しています。
  • RL の学習には大量のインタラクション データが必要です。実際の環境でのテストの前に、Atari はアルゴリズムの初期検証のために安全で高速、低コストのテスト プラットフォームを提供します。

以下は Atari 環境の例です。

Atari、PySC2、その他の環境とPyBoyとの比較

前のセクションでは、Atari 環境で RL エージェントをトレーニングする多くの利点を紹介しました。ただし、RL の発展に伴い、この比較的単純な環境は徐々に新しい RL 研究には適さなくなっています。少し前、DeepMind が提案した Agent57 は、すべての Atari 環境で人間のプレイヤーの平均レベルを上回りました。これは、Atari 環境での RL 研究が徐々に終わりに近づいていることを示していました。

さらに難しい環境としては、DeepMind と Blizzard のコラボレーションによる PySC2 があり、インテリジェント エージェントが複雑な協力戦略と対立戦略を学習する必要があります。 AlphaStar はこの環境で素晴らしい成果を達成しましたが、解決すべき問題はまだ数多く残っています。以下は PySC2 環境の図です。

PyBoy 環境の難易度は Atari と PySC2 の中間にあると言え、RL パフォーマンスを検証するための新しいベンチマークを提供します。 RL をより複雑な現実世界の問題に適用する前に、この中程度の難しさの環境で低コストで効率的なテストを実施できます。

テスラのAIおよび自動運転ビジョン担当ディレクターのアンドレイ・カルパシー氏は、「バズーカ砲に手を伸ばす前に、必ずBBガンを試してみるべきだ」と語った。

Githubの紹介

インストール方法は?

Python を実行するように設定された環境がすでにある場合は、インストールは非常に簡単です。

  1. パッケージ マネージャーを使用して SDL2 をインストールします (sudo apt install libsdl2-dev または brew install sdl2)
  2. pip install pyboyを使用してPyboyをインストールします。

PyBoy は、ターミナル $ pyboy file.rom から直接使用することも、Python スクリプトで使用することもできます。

  1. pyboyからPyBoyをインポートする
  2. pyboy = PyBoy( 'ROMs/gamerom.gb' )ですが、 pyboy.tick() ではありません:
  3. 合格

このプロジェクトは、macOS、Raspberry Pi (Raspbian)、Linux (Ubuntu)、Windows 10 もサポートしています。

PyBoy API ドキュメント

ユーザーが独自のロボットや AI を作成する必要がある場合、それをサポートするために使用されるすべての外部コンポーネントは PyBoy ドキュメント (https://baekalfen.github.io/PyBoy/index.html) で見つけることができます。さまざまなクラスとその使用方法は非常に詳細なので、ここでは 1 つずつ説明しません。 (構造インデックスは下記参照)

短い例

PyBoy は Python のオブジェクトとして読み込むことができます。したがって、別のスクリプトから初期化し、そのスクリプトによって制御およびプローブすることができます。ゲームとやりとりする粗雑な「ボット」である gamewrapper_tetris.py を見てみましょう。もちろん、すべての外部コンポーネントは PyBoy のドキュメントに記載されています。

Game Boy の一般的なドキュメントについては、すべてのトピックに関する詳細な情報が記載されている Pan Docs をご覧ください。

以下は画面からデータを読み取る簡単なデモンストレーションです。このコードは gamewrapper_mario.py にも記載されています。

  1. osimport sysをインポートする
  2. pyboyからPyBoyをインポートし、WindowEvent
  3. #以下のディレクトリからPyBoyをインポートできるようにします
  4. ファイルパス = os.path.dirname(os.path.realpath(__file__))
  5. sys.path.insert( 0 , ファイルパス + "/.." )
  6. # ROMがargvif len(sys.argv) > 1を通じて与えられているかどうかを確認します:
  7. ファイル名 = sys.argv[ 1 ]そうでない場合:
  8. print( "使用方法: python mario_boiler_plate.py [ROMファイル]" )
  9. 終了( 1 )
  10.  
  11. quiet = sys.argv 内の"--quiet"
  12. pyboy = PyBoy(ファイル名、window_type = "headless"  静かなら  "SDL2" 、window_scale= 3 、debug=not quiet、game_wrapper=True)
  13. pyboy.set_emulation_speed( 0 ) pyboy.cartridge_title() == "スーパーマリオラン"をアサートする 
  14.  
  15. マリオ = pyboy.game_wrapper()
  16. マリオ.start_game()
  17. assert mario.score == 0 assert mario.lives_left == 2 assert mario.time_left == 400 assert mario.world == ( 1 , 1 ) assert mario.fitness == 0 # AI開発のための組み込みフィットネススコア
  18. last_fitness = 0print(マリオ)
  19.  
  20. pyboy.send_input(WindowEvent.PRESS_ARROW_RIGHT) は範囲( 1000 )内の_に対して実行されます:
  21. mario.fitness >= last_fitness であると主張する
  22. last_fitness = マリオフィットネス
  23.  
  24. pyboy.tick()
  25. mario.lives_left == 1 の場合:
  26. assert last_fitness == 27700 assert mario.fitness == 17700 # ライブで負けると、このフィットネススコアリングで10.000ポイント減点されるprint(mario)
  27. その他:
  28. print( "マリオは死ななかった?" )
  29. 終了( 2 )
  30.  
  31. mario.reset_game() がmario.lives_left == 2 であることを確認します 
  32.  
  33. pyboy.stop()

スーパーマリオランド ROM をロードした状態で上記のコードを実行すると、以下のイメージとターミナル出力が得られます。マリオのパターンはインデックス 0、1、16、17 で表示されることに注目してください。

著者について

このプロジェクトの作者であるAsger Anders Lund Hansen氏、Mads Ynddal氏、Troels Ynddal氏はいずれもデンマーク出身です。デンマークのコペンハーゲン大学を卒業したマッズ・インドダル氏は、実はこのゲームボーイエミュレーターは、彼が大学時代に2015年に始めたプロジェクトにまで遡ることができると語った。

[[322874]]

ゲームボーイ エミュレーターのバージョン 1.0 がリリースされましたが、開発者が行うべき作業はまだたくさん残っています。プロジェクト開発者らは、現在進めることができる方向性としては、シミュレーターへのサウンド、カラー、ゲームボーイシミュレーション接続の追加、さらに多くのゲームのパッケージ化、そしてもちろん、シミュレーター上でのニューラルネットワークのトレーニング例などがあると述べた。

皆さんの努力でゲームボーイのゲームも復活できるといいですね。さらに重要なことは、現在では人工知能を訓練するという任務を負っていることです。

<<:  AI を使って「手を洗ってください」を 500 の言語に翻訳する方法

>>:  百度研究所が新しいAIツールを発表:10分以内に記事を自動的に動画に変換可能

ブログ    
ブログ    
ブログ    

推薦する

人工知能は気候変動に対する新時代の解決策である

人類が地球環境において行った行為を元に戻すために、人工知能が私たちの手助けをしてくれるでしょう。気候...

人工知能産業は各地で花開いています。この7つのロボットがあなたに近づいてきます!

現在、中国の製造業、農業、飲食業、企業、機関はすべて、自動化からインテリジェンス化、デジタル化への変...

...

...

プライベートUNIT学習ノート - 対話システムの構築を簡単に始めることができます

対話システムの構築は比較的専門的で複雑なプロセスであり、通常は 3 つの主要な段階に分かれています。...

自然言語処理 (NLP) 開発で注目に値するオープン ソース ツールにはどのようなものがありますか?

インテリジェント音声アシスタントとチャットボットは、現在人工知能のホットスポットであり、画期的な進歩...

フォレスター:AIと5Gがエッジコンピューティングの発展を推進

Forrester は 2021 年の技術予測シリーズを発表しましたが、その中にはエッジ コンピュー...

Facebook、黒人男性を霊長類と認識したアルゴリズムについて謝罪

[[422559]]ビッグデータ概要著者: ミッキー6月27日に英国のデイリーメール紙が公開した動画...

百度のロビン・リー氏は、今後10年間は​​人工知能の革新の時代になると述べた。

【CNMOニュース】最近、百度の創業者で会長兼CEOのロビン・リー氏はインド工科大学マドラス校が開...

ディープラーニング戦争: Facebook が支援する PyTorch 対 Google の TensorFlow

[[225687]]近年、人工知能と機械学習のツールと技術が急速に進歩していることは驚くべきことで...

機械学習アルゴリズムを使用して配信リンクを最適化する方法

【51CTO.comオリジナル記事】 1. 背景紹介---VODソース配信の問題点オンデマンドビデオ...

テスラですら理解できない、車両と道路の連携が自動運転の究極のソリューションなのか?

[[434381]]最初は1兆円、次に1.2兆円と、テスラの時価総額は新たな高値を更新し続けました...

...

AIがAIを攻撃、サイバーセキュリティ戦争が激化

最近のサイバーセキュリティ会議では、調査対象となった業界専門家100人のうち62人が、AIを活用した...

...