Morikatron Engineer Blog

モリカトロン開発者ブログ

【GAIL】逆強化学習とGANを組み合わせた模倣学習アルゴリズムを実装してみる【CartPole】

こんにちは、エンジニアの竹内です。

以前の記事でDQNに模倣学習の仕組みを取り入れたDeep Q-Learning from Demonstrationsというアルゴリズムを紹介しましたが、模倣学習には他にもいろいろなアプローチが存在します。
特にエキスパートの行動軌跡から環境の報酬関数を推定する逆強化学習(Inverse Reinforcement Learning)という手法を利用したものは模倣学習アルゴリズムの中でも代表的な手法の1つであり、環境からの報酬が得られない場合でも模倣学習を行う事ができます。
そこで今回は逆強化学習を用いた模倣学習アルゴリズムの中でも特に有用な手法である、敵対的生成ネットワーク(Generative Adversarial Network)を組み合わせたGenerative Adversarial Imitation Learning(GAIL)という手法を紹介し、Tensorflow2で実装していきたいと思います。

  • 逆強化学習とは?
  • GAILの概要
  • 実装
    • メイン部分
    • Generator(PPO Agent)
    • Discriminator
    • デモデータの作成
  • 学習結果
  • まとめ
  • Reference
続きを読む

CEDEC2020の補足 ー格闘ゲーム編その2ー

どうも、モリカトロンのプログラミングおじさん、岡島です。
馬淵の記事で予告された通り、今回は僕から

用意した環境ではUE4の描画を切ることが出来ず(その辺りの話は岡島さんが書いてくれると思います)

の部分について補足説明をします。

UE4とPythonを通信させて学習環境を構築することについてはCEDiLにアップロードした資料の 付録2-1 に 簡単なまとめをしておりますので、そちらもご覧ください。

cedil.cesa.or.jp

  • 最初に: 格闘ゲームAIの研究に使っていたマシンスペック
  • 格闘ゲームAIの分散学習の様子
  • もっとたくさんのゲームを並列で動かしたい
  • UE4 のゲームを画面なしで起動する方法
  • 学習がうまくいかない理由の調査
  • -NullRHI だとアクターのモーションが再生されない?
    • 検証
    • 検証結果
    • これはバグ?
  • おわりに
  • おまけ
続きを読む

CEDEC2020の補足 ー格闘ゲーム編その1ー

 お久しぶりです。モリカトロンでエンジニアをやっております、馬淵です。

 前回私がブログを書いたのがNEATに関して書いたとき*1(2020年2月24日)で、これを書き始めているのが2020年9月8日なので、私がブログを書くのは実に6ヶ月強ぶりになります。 何故これほど間隔が空いたのかですが、2020年9月4日のCEDECにおける弊社の講演を見ていただいた方には既に察しの通り、CEDEC発表に向けて色々行っていたからです。 今回の発表で出てきたWANN(Weight Agnostic Neural Network:重みを無視できるNN)ですが、実はNEATの手法を利用して実装されており、私がNEATに関して書いているときはWANNに関しての調査を行っている時期でした。 その後、WANNを手加減や調整に利用出来たらよいという理想を基に格闘ゲームAIのプロジェクトが立ち上がり、CEDECでの発表がトントン拍子で決定、発表に至るという状態です(完璧な伏線回収ですね)。そこで、今回はCEDEC2020の発表で説明しきれなかったことや、発表に至るまでの失敗例、創意工夫、苦労話などを書いていこうと思います。

続きを読む

【CEDEC2020】模倣学習でAIに3Dアクションゲームを攻略させてみる(後編)【ML-Agents】

こんにちは、エンジニアの竹内です。
この記事は【CEDEC2020】模倣学習でAIに3Dアクションゲームを攻略させてみる(前編)【ML-Agents】 - Morikatron Engineer Blogの続きとなります。
前編ではUnity側で行った学習の準備を中心的に扱いましたが、後編ではPython側における学習パイプラインやアルゴリズムの実装、それから学習した結果や考察などを中心に扱っていきます。

  • Python側でやること
    • 行動の選択肢の変換
    • gymラッパーの作成
    • デモデータのロード
    • アルゴリズムの実装
  • 学習
  • 他に試した事や失敗例、考察
    • デモの行動を重視しすぎると敵を攻撃しなくなる
    • チェックポイントに戻ることでデモにない状態に陥る事がある
    • 局所的な方策と大局的な方策を分けて学習させる(失敗)
    • 状態価値と行動価値の可視化
  • まとめ
続きを読む

【CEDEC2020】模倣学習でAIに3Dアクションゲームを攻略させてみる(前編)【ML-Agents】

こんにちは。エンジニアの竹内です。
まずはじめに、この記事はCEDEC2020というゲーム開発者向けのカンファレンスで発表した内容(CEDEC2020: 攻略、接待、変更に強いAIプレイヤー開発のためのアプローチ)の模倣学習部分について、発表で網羅しきれなかった検証過程での試行錯誤や、考察、技術的な部分の深堀りなどについて解説したものです。
CEDEC2020で行った講演の資料は以下のリンクからご覧いただけますが、この記事単体でも内容は追えるようにしています。
攻略、接待、変更に強いAIプレイヤー開発のためのアプローチ
前編では主に学習を行うためにUnityサイドで行った準備について触れていきたいと思います。

  • 何をしたか?
  • 誰のための記事?
  • 学習に使用した環境について
  • Unity ML-Agents
  • 模倣学習させるための準備
    • 特徴量と報酬の設定
      • 画像情報を利用しなかった理由
      • 特徴量の選択
      • 報酬の設定
    • エージェントの移動方法の変更
    • 最大ステップ数などの細かい部分の設定
    • デモの作成
  • まとめ
続きを読む

幻想的な旅:自分のマンモスを復活しました・パート3

こんにちは!まるたんです。今日はみんな待てました、マンモスパート3の記事です!

 

AI:ペイントができる?

ペイントて言う時に、何ですか?意味を調べるとペイントは「着色のため物体の表面に塗る流動体」。AIはそれを物理的に行うことはできません。ただ、AIはこれを事実上行うことができます。

しかし、アーティストとしての絵画について、独自のビジョンを持っている場合、AIは人間の美的タッチで創造的な作業を行うことが困難になります。

AIのはとても上手のがスタイルのコピー・転送することです。例えば、写真から有名な画家のスタイルにする。

マーケットにこういういくつなサービスがある。一番有名のは:

AI Gahaku

 

DeepDreamGenerator

AI Painter

楽しいですので試してみてください。

 

塗料のツール:

塗装を始めるために、いくつのツールは必要になる。

※:今日はエアーブラシのペインティングではなくて筆のペインティングの話をするのでエアーブラシの技術の話はしない。

筆:

筆の形、サイズなど大勢な違う種類はあります。

最大の違いは毛の種類です:人工または自然な毛。

初心者の時、人工に使った方がおすすめです。一番安いだから。

そして、4種類ぐらいで一応大丈夫です。

サイズ1:一番使う筆

サイズ4:大きな作業の筆

ドライブラシ:ドライブラシの技術の専門筆(後で説明します)

サイズ4/0ぐらい:詳しい詳細をペイントする時

f:id:morika-martin:20200824110617j:plain

https://www.bnamodelworld.com/mig-productions-mig-abt830-1-round-brush-size-1?zenid=04cac8c9fb57b6c6705f98b015018539

f:id:morika-martin:20200824110701j:plain

https://www.games-workshop.com/en-JP/M-Drybrush
塗料:

同じくチョイスが多いです。始まりたい場合、一番簡単のはGamesWorkshopのお店に直接行ってスタッフに相談のお願いをしましょう。

f:id:morika-martin:20200824110930j:plain

http://quindiastudios.blogspot.com/2012/04/citadel-paint-bundle.html
プライマースプレー: 

ミニチュアのプライミングはペイントの重要な部分です。プライマーは、モデルの表面を塗装する準備をする特別なタイプの塗料です。 基本的に、プライマーは塗料を吸収し、ミニチュアへの接着性を高めるために作成されます。

f:id:morika-martin:20200824111045j:plain

https://citadelcolour.com/playlist/6038888620001/6038126833001
 ウェットパレット:

ウェットパレットは特別な種類のペイントパレットであり、ペイント中に濡れた状態を保ち、ペイント中の乾燥を防ぎます。

f:id:morika-martin:20200824111115j:plain

https://www.incomgaming.co.uk/products/painter-everlasting-wet-palette
他:

筆のクリーナー:ペインティングのセッションが終わる時、筆のクリーニングするためのツール

ティッシュ、水

ミニチュア塗料のステップ:

 ペインティングの技術がたくさんあります。今日はそれぞれの技術を詳しい説明するわけでなくて軽くよく使っている技術の意味の説明をする。

良い画家になることは非常に長いクエストです。数年の練習・失敗、気が長いのは必要です(笑)。しかし、今の世界で簡単に始めて、短時間で十分なレベルに到達することは、これまでにないほど簡単です。チュートリアルは沢山あります!

いいスタートはこちらになります:

https://citadelcolour.com/#painting-basics

 

ベースコート:

ベースコートは、ミニチュア、具体的にはミニチュアのパーツに塗る最初のペイントコートです。多くの場合、ベースコートは中間調の色なので、シェーディングに必要な場所を暗くし、ハイライトを明るくすることができます。

シェーディング:

シェーディングは、別の色を暗くするために、何らかの形で色を適用しています。 あなたが適用するより暗い色は、レイヤリング、グレージング、ワォッシングなどで行うことができます。

ハイライト:

ハイライトは、照明を表現するために別の色に明るい色を適用しています。

ウォッシング:

ウォッシュは、非常に水っぽい特殊なタイプの塗料です。 ミニチュアにウォッシュを適用して、陰影と深みを追加します。

ドライブラシ:

これは筆を使ってペイントを塗って、ほとんどのペイントをティッシュペーパーで拭き取る。 次に、ミニチュアを軽くブラッシングします。一般的にこれは何かをすばやく簡単にハイライトするための優れた方法です。

ブレンド:

方法がたくさんあります。色のグラデーションを作成するプロセスです。 ブレンディングを使用すると、2つの異なる色の間のスムーズな移行を作成したり、色を暗くしたり、明るくすることもできます。

グレージング:

グレージングとは、色を取り、別の色の上にペイントして色を付けるプロセスです。

レイヤリング:

これはペイントのレイヤーを別のペイントのレイヤーの上に適用して、通常は前のレイヤーの一部を表示したままにするペイントテクニックです。 標準のレイヤリングでは、多くの場合、シェーディングとハイライトを作成するために色を構築する必要があります。

 

ミニチュアのペインティングをする時、毎回上に書いてあるの技術を使うわけではなくて、あなたはあなたの好み、スキル、そしてあなたが目指しているレンダリングに適応します。

 

マンモス:

早速自分のマンモスを復活しましたイメージです❣

f:id:morika-martin:20200824124723j:plain

f:id:morika-martin:20200824124758j:plain

f:id:morika-martin:20200824124823j:plain

f:id:morika-martin:20200824124844j:plain

f:id:morika-martin:20200824124913j:plain

f:id:morika-martin:20200824124952j:plain

f:id:morika-martin:20200824125031j:plain

f:id:morika-martin:20200824125103j:plain

f:id:morika-martin:20200824125131j:plain

f:id:morika-martin:20200824125215j:plain

f:id:morika-martin:20200824125314j:plain

f:id:morika-martin:20200824125343j:plain

f:id:morika-martin:20200824125431j:plain

 

このたびに長く付き合ってもらってありがとうございました。また今度他の記事で会いましょう!

【CFR】不完全情報ゲームを学習するAIを実装してみる【KuhnPoker】

こんにちは、エンジニアの竹内です。
これまでの記事ではDQfD、PPOといった深層強化学習のアルゴリズムを紹介してきましたが、今回は少し趣向を変えて、ニューラルネットを使わずに不完全情報ゲームの戦略を求めるアルゴリズムを扱いたいと思います。

  • 不完全情報ゲームのAI
  • KuhnPokerのルール
  • 記号の定義と説明
    • ナッシュ均衡
  • Counterfactual Regret Minimization
  • 実装
    • ゲームのルール部分
    • CFRアルゴリズム
  • 結果
  • まとめ
  • References
続きを読む