逆強化学習をC言語で実装してみた
(1) 逆強化学習をC言語で実装してみた
計算機どうしが互いに強化するモデル(敵対モデル)を構成するには、単独での初期学習が充実していないと実現しないのは、アルファー碁やbonanzaの示す所と考えています。
そこで敵対モデルを一般的に拡張した場合での初期学習としては、熟練者の行動ログより仮想報酬を計算する逆強化学習が考えられます。
逆強化学習法で最も実績がある最大Entrophy法をC言語で実装しました。
実験対象は下記のゲームの強化学習の結果を熟練者として読込み、逆強化学習で報酬を計算しました。
・対象はopen-aiの4*4セル(左上と右下がゴール)のグリッドワードゲームの
強化学習したゴールまでの経路データ(99経路)をログに落とし、これを熟練者の行動履歴としました。
・この99経路のログを読み最大Entophy法で仮想報酬を計算する。
・逆強化学習は特徴ベクトルの設定が成否を握りますが、
この問題は簡単なので16*16の対角ベクトルを使用しています。
(2) 結果
ゴールに近いセルほど仮想報酬が高く計算されていることが分ります。
全く対称とならないのは、Open-AIの経路データのサンプリングの歪みが反映されています。