AWS公式資料で挑むMLS認定(4)-強化学習(Reinforcement Learning)

##### [前回] [AWS公式資料で挑むMLS認定(3)-深層学習(ディープラーニング)](https://qiita.com/mingchun_zhao/items/2ebf4300d5b39be94eec)

## はじめに

今回は、強化学習を勉強します。

## 強化学習(RL: Reinforcement Learning)とは

- 強化学習とは
    - 機械学習手法の一つで、システム自身が試行錯誤しながら探索し続け、最適なシステム制御を実現する機械学習手法
        - 長期的な目標に向けた最適化を行いつつ、短期的な決定を下すこともできる
    - 行動に対するフィードバック(報酬/罰)をトレーニングデータとし、`報酬(スコア)`の最大化を目的に行動を学習
        - 犬のしつけで`お座り`命令で犬がお座りできたら報酬として餌をあげる
        - 何度も繰り返しトレーニングするうちに`お座り`を学習できる
    - 学習データの正解(ラベル付けされたトレーニングデータ)がない場合も、複雑な動作を学習可能
    - 教師あり/教師なしと並ぶ学習手法の一つである
    - 利用シーン
        - 将棋AI/囲碁AIなどゲームAIが打ち手を学習
        - 自動運転における状況判断の学習
        - 自律制御ロボット

## 強化学習の用語

- ロボット歩行制御の例
    - エージェントは、ロボット
    - 行動は、歩くこと
    - 環境は、道
    - 報酬は、`歩けた距離`
    - 状態は、位置や方向
    - ロボットは、歩行距離を最大化するため、自らさまざまな歩き方を試行錯誤
    - 探索を続けることで、歩行可能距離の長いアルゴリズムが構築される

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523098/e5389c15-3bdc-291c-9260-4d7adfe1aa75.png)

- 強化学習の3要素
    - 状態
        - 現在の環境がどうなっているか把握
        - エージェントが存在する仮想空間の情報であり、エージェントが行動する度に更新される
    - 行動
        - 現在の環境に対する行動
    - 報酬
        - 行動を起こした結果、どのくらいの報酬が得られるか
        - 行動へのフィードバックで、行動指針となる

- 用語と概念
    - エージェント
        - 学習プレイヤーで、ある条件下で行動する主体
        - 条件の例: ロボットが歩ける距離を伸ばす
    - 環境
        - エージェントが存在する仮想の空間
        - 環境の例: ロボットが歩く道

## 強化学習の流れ

- ポイント
    - 状態と行動を踏まえ、将来的に最大の報酬を実現できるような行動を選択していく
    - 目先の利益ではなく、未来を見据えたときの利益の最大化を目的とする

- 強化学習のフェーズ
    - 1\. `エージェント`が、`環境`に置かれ、環境に対し`行動`を起こす
    - 2\. 環境が、エージェントに、行動により更新された`状態`と`報酬`をフィードバック
    - 3\. 環境からのフィードバックを元に、`方策`(policy)を修正
        - エージェントは、自身の行動に対する環境からの`状態`と`報酬`のフィードバックを元に
        - 将来得られる`価値`を最大化する`方策`を導き出す
        - 方策の導出に用いられるのが`状態価値関数`と`行動価値関数`
            - 行動価値関数は、ある`行動`を取った場合と取らなかった場合の価値を比較
            - 状態価値関数は、ある`状態`において、ある`行動`を取る/取らない場合の価値を比較
        - `報酬`と`価値`の違い
            - `報酬`は、ランダムな行動のみに対してのフィードバックを指す(即時報酬)
            - `価値`は、強化学習により構築されたアルゴリズムが、長いスパンの行動から得られる最終アウトプット
    - 4\. 一連の行動により変化した環境に対し、エージェントが再び行動を起こす(1. に戻る、PDCAが回る)

- 強化学習の再定義
    - ある環境内のエージェントが、現在状態を観測し、取るべき行動を決定するような問題を扱う
    - エージェントは行動を選択することで環境から報酬を得る
    - 強化学習は一連の行動を通じて報酬が最も多く得られるような方策を学習
    - 環境はマルコフ決定過程として定式化される
        - 代表的な手法としてTD学習やQ学習がある

## 強化学習の主な手法

- 強化学習のアルゴリズム
    - Q学習
        - Q値とは、ある`状態`において、`行動`を取った際に得られる価値
            - `状態行動価値`とも呼ばれる
        - ある状態で取ることのできる行動の価値として数字を計算して評価
        - その中から最大の値を`次のQ値`とする
        - 試行錯誤を繰り返し、正しいQ値を学習していき、Q値の推定能力を高める
        - AlphaGoでは、深層学習を用いてQ学習を行わせる`Deep Q-Network(DQN)`というAIが採用された
    - Sarsa
        - Q学習と同じように最大のQ値を探索するアルゴリズム
        - 方法論が異なり、実際に行動した際の値をQ値として使用
            - Q学習では、見積もりを行った際の期待値で判断
        - 現在の`最大のQ値`を更新するには、実際に一回ずつ行動させる必要あり
    - モンテカルロ法
        - Q学習やSarsaのような`次の状態におけるQ値`を使った更新は行わない
        - 最初に試行錯誤を繰り返し、報酬を得られた段階で、状態と行動の組み合わせに対するQ値を更新

## 強化学習のユースケース

強化学習によって、`次に最も取るべき行動方針`のモデルが構築できる。

- 自動車の自動運転
    - 自動車が搭載するコンピュータにQ学習のアルゴリズムを実装
    - 周囲の道路状況や気温、天候などの状態と行動のデータを蓄積
    - 最終的に、人間の手を介さずに運転することを目標とする
- エレベーターの制御システム
    - 強化学習を実装した制御システムを導入し、エレベーターの待ち時間を減らす
    - 平均待ち時間を最適化するようにエレベーターの動きを制御
- 広告配信
    - 広告配信の最適化はマーケティングの大きな課題
    - 顧客の長期的な購買金額をQ値とし、これを最適化するような対象や場所、タイミングなどを推測
- ゲーム
    - 明確な勝負が存在するため、強化学習を導入しやすい
    - 囲碁、将棋、チェス、オセロなどボードゲーム
    - シューティングゲームやシミュレーションゲームなどビデオゲーム

## Amazon SageMakerの強化学習機能

強化学習を簡単に開始できるように、事前構築された強化学習ライブラリとアルゴリズムが含まれている。
Amazon SageMaker強化学習を使用し、さまざまなシミュレーション環境と簡単に統合できる
- AWS RoboMaker、Open AI Gym、オープンソース環境、強化学習モデルをトレーニングするためのカスタムビルド環境
- Open AI Gym、Intel Coach、Berkeley Ray RLLibを含むAmazon強化学習コンテナ(MXNet、TensorFlow)を使用可能

## おわりに

強化学習の基本を勉強しました。
次回は、AI/機械学習の各種手法を比較してみます、お楽しみに。

##### [次回] [AWS公式資料で挑むMLS認定(5)-機械学習手法のまとめと比較](https://qiita.com/mingchun_zhao/items/91cc59f69860f12e7638)