OpenAI Gymで強化学習をやってみる
FrozenLake-v0に挑戦!
フローズンレイクというToy Textゲームに挑戦することにしたよ。
どういうゲームかというのはOpenAIの公式リンクを貼っておくので見て欲しいと思う。
簡単にボクからも説明しておく。
まず4×4マスのフィールドをスタート地点からゴール地点まで、
穴に落ちて死なないように移動するゲームです。
テキストで表示されているアルファベットがマスごとのステータスを表しています。
S:スタート地点
F:氷の上で移動できるマス
H:穴。このマスに来ると落ちて死ぬ
G:ゴール地点
解き方を考えるのにQラーニングという手法を使ってみようと思う。
まず作るのはQテーブルと呼ばれるものを作ることにした。
Qテーブルはこのゲームでは16行4列の表を使います。
行はゲームフィールドの位置。
列は上下左右への移動する選択。
もう少しわかりやすく書くと、
0行〜15行はこのゲームの移動できる全てのマスをそれぞれ対応させたもの。
上段左上なら0行、上段真ん中なら1行、上段右上なら2行・・・という感じ。
列はわかりやすいと思う。
ゲームのコントローラーの十字キーをイメージして欲しい。
キーの入力する向きが4パターンなので4列用意するよ。
この上下左右に移動する列を方策と呼びます。
一度まとめ
Qテーブルとは?
移動できるマスを表す行と、
上下左右に移動するアクション(方策)からできる表。
表の中にはQ値(価値)を格納する。
この表のことをQテーブルと呼びます。
Qテーブルをどう使うの?
AIがゲームを進めていってうまく行ったら報酬をあげて、
その報酬の累積和を記録していきます!
なんどもAIにゲームをプレイさせて、
Qテーブルを更新して行きます。
AIにゲームを繰り返しプレイさせることで
AIをゲームへたっぴから玄人プレイヤーにさせること目指します!
Qテーブルを更新する方法にベルマン方程式を使います。
次回はベルマン方程式や実装について書いて行こうと思う。
今回はここまで。
ここまで読んでくれた方、ありがとう!