GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

評価関数にバッチ更新モード実装

 評価関数*1の更新にはオンラインとバッチ*2の二種類があります。

 オンラインはTD誤差やλ収益を計算するたびに(=ある状態の価値の目標値を計算するたびに)更新する方法。バッチは修正量を累積していって、最後に一エピソード*3分を全部まとめて更新する方法です。

 んで、今までは実装が簡単なのでオンラインでやっていましたが、バッチで更新するモードを追加しました。

 理由はいくつかあって

  1. 数日間開発していなかったのでリハビリ
  2. 多少はパラメータの変化を把握しやすくなる
  3. ひょっとしてバッチモードで上手く行ったら嬉しいなぁ

って感じです。

 それから、バッチモードだと評価関数のメモリ占有量が増えるのですが、現状だと1MBにも満たないので無視出来ますし、とりあえず実装してみました。

 あと、λ*4を0.7で固定していたのですが*5、一時的に0にしてみました。これで、評価値更新は通常のTD法に近くなります。

 こっちはひょっとしたらλが大きすぎるのかもしれないと思い、0にして上手く行けばもうけもの、程度の考えです。

 って、今日の修正内容ってなんかこんなのばっかですね。

*1:強化学習的に言うなら事後状態価値関数

*2:オフラインとも言う

*3:私の場合は一局

*4:先の局面の評価値が学習対象の局面の評価値に与える影響の大きさ

*5:たしかTDLeaf(λ)の論文に載っていた値