強化学習は機械学習の一種であり、
教師あり学習と教師なし学習の中間に位置する手法です。
強化学習では、試行錯誤を繰り返して最適な行動パターンを学習していきます。
下記の説明では具体的に強化学習について説明していきます。
強化学習とは
以下の図を使って説明してきます。
左のロボットが強化学習で学習するとします。
このロボットのように強化学習で学習する対象をエージェントや強化学習エージェントと呼びます。
エージェントは環境に対して何かしらの行動を行います。
その行動によって変化した状態と報酬を環境から受け取ります。
エージェントは受け取った状態と報酬を元に、累積報酬の最大化を目指して行動パターンを学習していきます。
強化学習では、エージェントに正解データではなく報酬を与えます。
報酬は正解や不正解といったものではなく、アクションの良さといったものになります。
なので、教師あり学習と教師なし学習の中間的な手法と呼ばれます。
具体的な学習例
では、簡単な例をつかってエージェントが強化学習によって学習する様子を見ていきます。
エージェントは行動の選択肢として、右斜め上(以下、上)、右斜め下(以下、下)といった二種類の行動の選択肢があるとします。
また、上を選んだら-10、下を選んだら+10の報酬が得られるとします。
エージェントの頭の中には上、下を選択したことによってどれだけの報酬が得られそうかといった数値が保存してあります。この数値をQ値や期待報酬値などと呼びます。
強化学習ではこのQ値を最適化することによって、最適な行動を選択できるように学習します。
学習手順
強化学習エージェントの具体的な学習手順を見ていきます。
まず、学習手順を箇条書きで示します。
- 行動選択と行動の実行
- 環境から状態と報酬を受け取る
- 得られた情報を元にQ値の更新
- ステップ1から3をQ値が収束するまで繰り返す
上記の手順によって学習していきます。
各ステップを具体的に説明していきます。
1.行動選択と行動の実行
まず、エージェントはQ値を元に行動を選択します。
行動の選択手法としてはε-greedy選択やsoftmax行動選択などがあります。
どの手法も基本的にはQ値が高い行動を優先的に行っていきます。
今回は下を選択したとします。
選択した実際に行動します。
2.環境から状態と報酬を受け取る
選択した行動によってエージェントは新しい状態と報酬を受け取ります。
下を選択したのでエージェントは報酬+10を受け取りました。
今回はシンプルな問題なので、状態は遷移させません。
そのため、受け取る情報は報酬だけとなります。
3.得られた情報を元にQ値の更新
受け取った報酬を元にQ値を更新します。
基本的には得られた報酬と今のQ値の誤差を小さくするように更新します。
最もシンプルな例として以下のように更新します。
上記の式の一番右にある\(r-Q(a)\)が実際の報酬\(r\)と推定値\(Q(a)\)との誤差でこの誤差分更新していきます。
\(\alpha\)は学習率と呼ばれ、Q値の更新幅を決定します。
\(\alpha\)は0から1の間の値です。1なら誤差をすべて反映、0ならまったく学習しないといった値になります。
今回の例では以下のように更新します。
4.ステップ1から3をQ値が収束するまで繰り返す
あとは手順1から3を繰り返していき、Q値を収束すれば学習を終えます。
最終的にはQ(下)>Q(上)といった値に収束します。エージェントは下を選択すれば良いことを理解します。
終わりに
今回は最もシンプルな強化学習について説明しました。
次の段階として、選択肢が複数あるような多腕バンディット問題やQ学習を学ぶと強化学習についての理解が深まると思います。
コメント
[…] https://www.tcom242242.net […]
[…] 強化学習とは […]