pythonによる強化学習、ゲームAIの実装を目指して【プログラムあり】

python活用 python

強化学習は、何ができるのでしょうか?

このような疑問にお答えします。

強化学習(きょうかがくしゅう、英: reinforcement learning)とは、ある環境内におけるエージェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学習の一種。エージェントは行動を選択することで環境から報酬を得る。強化学習は一連の行動を通じて報酬が最も多く得られるような方策(policy)を学習する。(wikipediaより抜粋)

上記を整理すると、以下の手順で方策を学習することになります。

  1. エージェントが時刻tにて状態stを観測
  2. 観測した状態stから行動atを選択
  3. エージェントが行動実行
  4. 行動atの実行に伴い、状態がst+1に遷移
  5. 遷移に応じた報酬rt+1を獲得
  6. 状態、行動、報酬のパラメータに基づき学習実施
  7. 1.から再度繰り返す

強化学習は、このような性質を利用して、ロボット制御、オセロ等のゲームに応用されています。

強化学習の問題を解くための方法として、モンテカルロ木探索法があります。この方法では、何らかの報酬が得られるまで行動を試みて、その報酬値を獲得してから、一連の状態と行動に対して、報酬を分配し、行動に対する価値基準を更新することができます。この手法では、数手先の未来を見てから一気に価値の更新を実施するため、数手先の行動の報酬も初期段階で把握することができる特徴を持ちます。

実際にリバーシに対してモンテカルロ木探索法を適用することを考えてみます。状態sは、ゲームの盤面、行動aは、ゲームの盤面に対して、可能な選択肢となります。

モンテカルロ探索木の適用イメージは以下のようになります。

  1. エージェント(プレイヤー)が時刻tに状態st(ゲーム盤の配置)を観測
  2. 観測した状態stから行動at(可能な選択肢)を選択
  3. エージェント(プレイヤー)が行動実行
  4. 行動atの実行に伴い、状態(ゲーム盤)がst+1に遷移
  5. ゲームの勝敗が決まるまで行動と状態遷移を繰り返す
  6. 遷移に応じた報酬rt+1(勝敗)を獲得
  7. 状態、行動、報酬のパラメータに基づき価値(勝率)の高い行動をプレイヤーが選択する
  8. 1.から再度繰り返す

以下、ソースコードを記載します。

このプログラムでは、可能な選択肢からランダムにゲームを行うAIと
勝率の高い選択肢を算出しゲームを行うAIを対戦させています。

最後に、強化学習を様々なタスクに手軽に導入することができるツールが近年では多く提供されています。強化学習の世界を楽しんでみませんか。

タイトルとURLをコピーしました