• 『人工知能の挑戦』動画で使っている人工知能の仕組み

    2016-02-26 17:458
    どもども。最近、こんな動画を上げました。


    動画内ではあんまり仕組みの説明をしていません。普通に動画を見る層にもカジュアルに楽しんでもらおうと思っているので、難しい説明はかなり省略しています。あくまで成長していく過程をみんなで楽しもうじゃないのー、というコンセプトなので。そして、これからも説明は最小限にするつもりなんですけど、コメントを見ていると詳しく知りたい層も少しいるのかなーと思いまして。ブロマガの記事で説明してみますー。

    私個人は人工知能、NN、機械学習などの専門家でもなんでもなく、かじった程度ですので誤りはあるかと思います。正しい情報を知りたい方は原典や専門書を読まれることをオススメします。というのを前提に、誤解を恐れずに、なるべく初心者にわかりやすいよう疑問に応える感じで書いてみようと思います。

    ゲーム画面は認識しているの?

    はい、認識しています。

    以下の画面で左側に写っているものは、主人公を中心としてゲーム画面を32x32で表したものです。



    黒のマスが飛んでくるもの(玉)。灰色が敵。白が主人公が乗ることができる足場です。これはゲームと連動して変化してきます。

    そして、この32x32のゲーム画面を入力として「ニューラルネットワーク」というものを組み立てます。これが画像の真ん中の部分ですね。



    ニューラルネットワークっていうのは簡単にいえば人間の脳みその神経回路を簡易的にコンピューターで表したものです。脳みそは「ニューロン」っていうやつの塊です。ニューロンは信号を受け取り、中で「なんか処理」したあとに、信号を出力するものらしいです。そして出力された信号を別のニューロンが受け取って…、みたいなのが繰り返され、結果的に人間は思考したり、記憶したりします。

    で、今回は入力信号をゲーム画面として、中間の「ニューロンたち=ニューラルネットワーク(NN)」に放り投げているわけです。そして出力は下の画像でいう右側のゲームのボタンになります。



    動画の中で「ちっちゃい脳みそを作る」と言っていますが、まさにそんな感じで、魔界村の1面をやるだけの特別なミニ脳みそを作っているわけです。

    遺伝的アルゴリズムはどこに使ってるの?

    ニューラルネットワークの構築に遺伝的アルゴリズム(GA)を利用しています。

    ニューラルネットワークで一番むずかしいのはそれをどう組み合わせたら欲しい結果がでるのか、という構築部分です。この構築部分には色々な方法がありますが、NEATというアルゴリズムでは構築にGAを使っています。

    つまり、魔界村を解くためのニューラルネットワーク構築にGAを利用した、が正しいです。

    しかし、ニコニコ動画ではこんなにGAに親しみがあるとは思いませんでした。いやーGAは視覚的に面白いですもんね。私もこの動画を発想したのは、GAでリフトに乗る学習をさせてる動画をBlenderで作ってた人がいたからなんですよね(その動画は消えてしまっていました…残念)。

    グラディウスを学習させてみた』とはどう違うの?



    ゲームを解く方法が異なります。グラディウスの方はGAを適用するところが「時間経過ごとのゲームパッド操作を構築する」というところです。動画内のコメントで「目隠しでランダムにプレイして良さそうなものを選んでいく」みたいなのがありましたけど、それがこのグラディウスのやりかたです。

    今回の魔界村はニューラルネットワークが肝なので、わりと人工知能っぽい感じです。

    (このグラディウス動画も見ていて面白いのでおすすめです)

    ぶっちゃけこの人工知能すごくないよね

    今回の魔界村のNN方式とグラディウスのGA方式、どちらの方がゲームを解く能力が優れているのかと考えると、圧倒的にグラディウス方式がいいと思っています。そもそも敵とか玉に反応するプログラムを書いたらそれが一番簡単で優れているでしょうね。

    が、これの面白いところは人間が考えていなかった発想で動き出すところです。これはあたかも「コンピューター自身が思考しているんじゃね?」って感じで見ていて面白いんですよ。

    あと、そもそも、この動画で使っているニューラルネットワークの構築プログラム自体が専門家(ガチ勢)からみたらおもちゃみたいなものだと思ってください。あくまで成長を楽しむものです。盆栽みたいな感じで、じじいの老後の楽しみだと思ってください(ゲフゲフ)

    全部自分で作ったの!?

    動画内でも出していますが、元ネタは「MarI/O」という海外の動画(SethBling)のコードを参考にしています。ゲーム画面から入力の部分は自分で作りました。またいろんなパラメータ調整とか雑多な部分は書き換えています。が、ニューラルネットワークの構築部分はSethBlingのコードによるものです。関係ないですけど、SethBlingのほかの動画もかなり面白いです。

    評価値が悪いんじゃないの?

    今回は「どれだけ右に進んだか」だけでやっていますが、後編では色々と試行錯誤しています(動画で見せるかどうかは未定)。

    しかし、評価値の設定はかなり難しいですね…。いろいろ試したけど結局「どれだけ右に進んだか」が正解のような気もしていますよ…。

    まとめ

    では、後編もお楽しみに…(ボスが倒せない…ん…だが…)。

    参考文献
    MarI/O - Machine Learning for Video Games
    NEATの論文
    SethBlingの書いたMarI/Oのコード


  • 広告
  • 【〆済】デブネコMOD動画のエンディング絵を募集(10/26締切)

    2015-10-02 21:023
    追記:10/27
    締めきりました!多数の応募ありがとうございました!!

    デブネコMODシリーズ(mylist/47303265)も次のパートで最後となります。早いものです…。
    最後のパートではエンディングロールを作るつもりでして、そこに貼れるエンディング絵を募集したいと思います。
    時間経過するとともにいただいた絵がパタパタと切り替わっていくイメージでエンディングを考えています。

    期限: 2015/10/26迄
    宛先: shu3321@gmail.com (@shu33333宛にDMでも可)
    件名: 「デブネコMODのED絵」と付けてもらえるとわかりやすいです。

    条件:

    • 16:9のある程度大きな画像
    • デブネコMODに最低限関係あると判断できるもの
    • 絵に限らず(例えば「ぬいぐるみ作ったよ!」みたいなのの写真でも可)
    • 作者の名前(特に指定がない場合は『名無し』として紹介します)
    • 動画に載ることを許可する人
    • 枚数制限は無し(1人で何枚描いてもいいです)
    個人的には動画内の1シーンとかを描いてもらえると嬉しかったりしますが、特に指定はありません。

    どれくらいの応募が来るのか未知数ですけども、あまりにも多ければ厳選すると思います。その場合でも送ってもらった絵は大事に保管させてもらいますのでご安心ください(何がだ)。あと返信できないと思いますがちゃんと見ております。

    このシリーズでは色々とコメントをいただきながら作ってきたので、なんとなく動画視聴者のみなさんと創りあげて来たという感を(勝手に)持っており、エンディングもどうせなら一緒に創ってみたいな…と半年くらい前から構想してました。
    仲良くなったと思って飲みに誘ったらやんわり断られて「あれ!?なんか意外と距離感すごい!」って感じで、応募が1通も来ない可能性もありますけど、その時は1人で飲みに行く所存です。

    よろしくお願いします。

  • デブネコMODのLINEスタンプ申請中

    2015-07-24 15:30
    (2015/10/5追記)
    販売されました → デブネコMODスタンプ

    -----
    どもども。

    実はコソコソとデブネコMODのLINEスタンプを作っておりまして1ヶ月位前に申請を出しておりました。全部自分で描いたデスヨ…(2週間くらいかかった…)。

    販売されてから情報公開しようかなーとも思っていたんですけども…。LINEスタンプのリジェクトされてしまいまして、理由は以下のような感じです。

    申請いただいたスタンプと、ご登録いただいた販売者情報を一致させる情報が確認できませんでした。

    アッ…(察し)。

    ということで申請者がshu3自身であることを証明するために、ここに描いたスタンプを少しだけ張っておいて、この記事で私自身であることを証明しておこうと思います。






    ということで、販売まではもう少しお待ちください!