
Q学習(Qラーニング)
ある状態のときにとったある行動の価値を、Qテーブルと呼ばれるテーブルで管理し、行動する毎にQ値を更新していく手法です。学習時にはQテーブルを更新していくことで、学習済みモデルはQテーブルとなります。
単純な仕組みで動作しますが、連続的な「状態」、例えばロボットアームの動きのようななめらかなものを表現しようとすると、Qテーブルが膨大な量となるため、現実的に計算ができなくなるデメリットがあります。
DQN(Deep Q Network)
DQNとは、Deep Q Networkの略です。Q学習ではQ値を学習し、Qテーブルを完成させることに重きが置かれていましたが、DQNではQ学習にニューラルネットワークの考え方を含めています。
最適行動価値関数を、ニューラルネットを使った近似関数で求め、ある状態_ のときに、行動 ごとのQ値を推定できれば、一番いいQ値の行動=取るべき最善の行動がわかるという仕組みです。
深層強化学習をオセロゲームで実行してみます。
from players.brain import RandomBrain, ExpertBrain, UserBrain from players.qlearn import QBrain, DQNBrain #me = UserBrain() me = RandomBrain() enemy = ExpertBrain() from dn_reversi import start_game # Open reversi GUI Windown start_game(me, enemy, game_count=1000, tick=1) from players.network import create_model auto_player = RandomBrain() model = create_model() #enemy = QBrain() enemy = DQNBrain(model) from dn_reversi import start_game # user_tick: 割り込み後のゲームスピード # switch_count: この回数だけゲームが実行されたら、ユーザー割り込みする start_game([auto_player, me], enemy, game_count=1000, tick=0.01, user_tick=1.0, switch_count=200)
※ ソースコードは一部のみ 公開 (開発者:大阪大学の早石助教)

対戦を重ねる毎に勝率があがっているのが確認できます。
強化学習を導入するメリットとは
強化学習は行動を学習するため、人間が行えることを代替する分野での活用に期待が持たれています。しかし、現状ではビジネスシーンで完璧に活用されているところは実はほとんどありません。現状では、膨大な試行をすることで学習を行いますが、非常に多くの時間や調整が必要になるためです。ここでは、どのようなことに強化学習が活用できるかをまとめてみました。
ロボット制御ができる
ロボット制御と書きましたが、ロボットを始めとする動作の制御で活用できます。
例えば、様々なセンサーを搭載したような産業機械もそうですし、家電などのモーター制御で動作するものも、自ら最適な行動を探し出すという意味では強化学習が活用される部分になっています。
Fintech(フィンテック)で活用できる
Fintechと呼ばれる、金融サービスとITを結びつけた部分での活用も期待されています。
どのように行動すれば最善の行動か、ということを学習することができますので、今後金融業界のAI活用として期待がされています。






