独学でプログラミングとかやってみる 〜ITとかの勉強レポート〜

ボクが勉強したプログラミングやIT関連の情報を記事にしていきます。機械学習や深層学習なども取り扱います。

OpenAI Gymで強化学習をやってみる

FrozenLake-v0に挑戦!

 

フローズンレイクというToy Textゲームに挑戦することにしたよ。

どういうゲームかというのはOpenAIの公式リンクを貼っておくので見て欲しいと思う。

gym.openai.com

 

簡単にボクからも説明しておく。

まず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テーブルを更新する方法にベルマン方程式を使います。

次回はベルマン方程式や実装について書いて行こうと思う。

 

今回はここまで。

ここまで読んでくれた方、ありがとう!