Morikatron Engineer Blog

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

自動微分+XLA付き機械学習フレームワークJAXを使用してMNISTを学習させてみる

こんにちは、エンジニアの竹内です。
深層学習を行う際によく利用されるフレームワークといえばGoogleが開発しているTensorflowとFacebookが開発しているPytorchの2大巨頭に加えて、Kerasなどが挙げられるかと思いますが、今回はそのような選択肢の一つとしてGoogleが新しく開発している*1新進気鋭(?)の機械学習フレームワークJAXを紹介したいと思います。
github.com

*1:あくまでリサーチプロジェクトの一つであり、公式の製品では無いらしいです。

続きを読む

AIネット対戦システムの紹介2

こんにちは、モリカトロン株式会社チーフエンジニアの松原です。

前回記事(AIネット対戦システムの紹介 - Morikatron Engineer Blog)に続きまして、AIネット対戦システムのAIクライアント(ゲームをプレイするためのプログラム)を紹介いたします。まずは「ゲームをプレイするプログラム」の仕組みについて、プログラマ以外の方でもわかるよう説明してみます。そして後半はAIネット対戦システム上でリバーシのランダムプレイヤーを実現するプログラムコードを紹介します。

 目次

  • はじめに
  • 「ゲームをプレイする」プログラムとは
  • リバーシをプレイするプログラムコード
  • 思考ルーチンに渡されるデータ
  • 思考ルーチンの内容
  • より強い思考ルーチン
  • おわりに
続きを読む

可搾取量(exploitability)で不完全情報ゲームの戦略を評価する

こんにちは、エンジニアの竹内です。
以前のブログ記事【CFR】不完全情報ゲームを学習するAIを実装してみる【KuhnPoker】 - Morikatron Engineer Blogにて二人不完全情報ゲームのナッシュ均衡を計算的に求めるCounterfactual Regret Minimizationというアルゴリズムを紹介しました。
その際、最終的に得られた戦略プロファイルが解析的に計算されたナッシュ均衡と近い値をとっているかを確認することでアルゴリズムの正当性を示していました。
しかし、この方法では「戦略の更新を繰り返すたびにナッシュ均衡に近づいているのか」がわからないだけでなく、そもそも解析的にナッシュ均衡を計算できないゲームについては最終的に得られた戦略プロファイルを評価することができません。

そこで今回は、二人不完全情報ゲームにおける戦略プロファイルを評価する際に有効な「可搾取量(exploitability)」という指標を紹介し、前回Pythonで実装したCFRアルゴリズムに組み込んでいきたいと思います。

  • 可搾取量とは
    • 可搾取量の定義
      • 定義
    • 可搾取量の具体的なイメージ
  • 実装
    • 大枠
    • 最適反応戦略と可搾取量の計算
    • 正しく実装できているかチェック
    • CFRアルゴリズムのパフォーマンス
  • まとめ
  • Reference
続きを読む

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

どうも、モリカトロンのプログラマおじさん、岡島です。 CEDEC からだいぶたってしまいましたが、前回 からの続きで 接待プレイについての補足などをしていこうと思います。

  • 「接待」について
  • そもそもなんで接待プレイをAIにさせたかったのか
  • 接待プレイの中身について
  • 原理的には「学習後に調整ができるAI」なので接待以外にも
  • 最後に
続きを読む

AIネット対戦システムの紹介

こんにちは、モリカトロン株式会社チーフエンジニアの松原です。

今日は弊社が開発した「AIネット対戦システム」を紹介いたします。

「AIネット対戦システム」はインターネット上でいつでも誰でもゲームの対戦ができるシステムです。AIと人間とが分け隔てなくゲームを楽しめるシステムであると同時に、強化学習のゲームAIプレイヤー育成基盤にもなり得ます。

ゲームAIやボードゲームAIに興味のある方、ゲームAI開発者、AI育成のためのサーバークライアントシステムに興味のある方々は、ぜひご一読ください。

 

目次

  • はじめに
  • AIネット対戦システムとは
  • AIネット対戦システムのサーバー
  • AIネット対戦システムのクライアント
  • AIネット対戦システムの実証実験
  • まとめと次回予告
  • コンタクト先

 

続きを読む

CEDEC2020 質疑応答

こんにちは、モリカトロンでプログラマをやっています。馬淵です。

先日発表させていただいたCEDEC2020ですが、講演時でのコメントやアンケートが届いたため、今回はそれらに寄せられた質疑応答を私が代表してここに書かせていただきます。

発表時のスライドは以下に投稿してあるので、適宜参照してください。講演時には紹介しきれなかった内容の追記もしてあります。また、講演後に補足という形でブログを投稿しているため、そちらも参照していただけるとより深く理解していただけるかと思います。

cedil.cesa.or.jp tech.morikatron.ai

続きを読む

【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
続きを読む