迷路問題アプレット
を書いた。今度は迷路をもっと大きくしてみた。やってることは前と同じ。迷路が大きいので学習が収束するまで見ていると日が暮れる。そこで、アニメーションを表示しないで学習だけ行えるようにした。収束した後、アニメーションで見てみると最短経路を獲得していることが分かる。
迷路を抜けるもっと高速なアルゴリズムはあるが、これは何がすごいかと言うと、そういう迷路特有のアルゴリズムを使わずにゴールに報酬を置いておくだけで勝手に最短経路を探してくれるところ。ゴール(目標)に報酬を置いておいて、その過程を機械自身に学習させるというのは強化学習の大きな特徴である(と思う)。
前のソースコードはかなりまずかった。強化学習の中心はエージェントと環境なのにエージェントのクラスがなかったし、状態は環境側にあるのにエージェントが持っているような書き方をしてしまった。今回はちゃんとエージェントクラスを作り、環境が状態を持っているように書いた。前よりましだと思うが、まだ汎用性に欠けている感じがする。GUI部分はJBuilder7を使った。
計算量が結構多いので、遅いコンピュータを使っていると最初の方でかなり時間がかかると思う。