新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

強化学習 - 強化学習とは、環境との相互作用を元に学習をすすめる手法である。

差分表示


強化学習とは、環境との相互作用を元に学習をすすめる手法である。

*概要

強化学習の学習主体となるモジュールの事をエージェントと呼び、このエージェントが環境内で様々な行動を試行し、得られる報酬を最大化する様に学習を行っていく。
エージェントはまず環境の状態を観測し、それを元に行動を選択する。行動を行うと環境の状態が変化すると共に、エージェントに報酬が与えられる。
この報酬は一見[[教師あり学習]]の教師信号と似ているが、報酬には遅れやノイズがある為、報酬の大小によって直前の行動の良し悪しが分かる訳では無い。
例えば、将棋やチェスであれば対局終了まで報酬が得られない(遅れがある)場合があり、序盤の手を指した直後の報酬を元にその手の良し悪しを判断する事は難しい。
また、中盤まで良い手を指していたにもかかわらず、終盤でミスがあり負けてしまうと、結果としてマイナスの報酬を得る事になる(ノイズがある)。
これらの事を考慮しつつ、何度も試行錯誤しつつ得られる報酬を最大化するように学習するのが、エージェントの目的である。

一般的に、エージェントが目的を達成出来たらプラスの報酬を与え、達成出来なかった場合はマイナスの報酬を与える。

学習器を使用する側から見た場合、[[教師あり学習]]は「どの様に行動して欲しいか」を指示し、強化学習は「何を目的として行動して欲しいか」を指示する事になる。
例えば大規模な工場の自動制御や災害救助用のロボット等、目的ははっきりしていてもその為の手段が明確でない場合に、教科学習が有効であると考えられている。
例えば大規模な工場の自動制御や災害救助用のロボット等、目的ははっきりしていてもその為の手段が明確でない場合に、強化学習が有効であると考えられている。

*強化学習の例

**迷路脱出

環境として迷路を与え、その中でエージェントが移動し、ゴールに辿り着く経路を探す問題を考える。
報酬として出口に辿り着いた場合は経過時間が短いほど大きなプラスの報酬を与え、一定時間経過後に脱出出来なかった場合はマイナスの報酬を与えるとする。
この場合、エージェントは状態を観測して現在位置を知り、それを元に移動していく事になる。
エージェントの目的は報酬の最大化なので、上手く学習が進めばゴールまでの最短経路を進む事が出来る様になる。
(なお、この報酬設定はマルコフ決定過程ではない為、幾つかの強化学習の手法では最短経路の学習は不可能な可能性がある。)

*コンピュータ将棋における応用例

**芝浦将棋

世界コンピュータ将棋選手権使用可能ライブラリに登録されている[[Bonanza]]をベースに、強化学習の一手法である[[TD(λ)]]を用いて学習を行う。
学習時のプログラムの構成としては、エージェントとして学習ルーチンを組み込んだ[[Bonanza]]を用い、学習無しの[[Bonanza]]と連続対戦を行い、評価関数パラメータの学習を行う(将棋盤及び[[Bonanza]]が環境に相当する)。
芝浦将棋は[[Bonanza]]相手に勝率6割程度まで強くなったとの事で、初出場の第20回[[世界コンピュータ将棋選手権]]では7位の成績を収め、新人賞を獲得している。

**ym将棋

[[TreeStrap(αβ)]]という手法を用いて評価関数のパラメータ調整を行っている。
また、それとは別に[[モンテカルロ木探索]]を行うルーチンも持っている。
第21回[[世界コンピュータ将棋選手権]]では一次予選13位。

**さわにゃんRL

[[RootStrap]]という手法を用いて評価関数のパラメータ調整を行うプログラム。
第21回[[世界コンピュータ将棋選手権]]では一次予選18位。

**GA将

[[TDLeaf(λ)]]という手法を用いて評価関数のパラメータ調整を行うプログラム。
第20回[[世界コンピュータ将棋選手権]]では2次予選20位。