はじめに
こんにちは、野村です。
学生をしながら静岡のHIBARI株式会社でAIを用いたプロダクト開発をしています。大学では情報通信分野で研究を行っています。
本記事は、強化学習とその学習手法について学んだ内容をまとめたものです。学習および実装にあたっては、次の書籍と公式リポジトリを参考にしています。
強化学習の位置づけ
まず、「AI」、「機械学習」、「強化学習」という言葉の関係を示しておこうと思います。
「AI」という言葉の定義は研究者によって異なります。参考書籍では、
人間が知的だと感じるシステムや、そのようなシステムを搭載したロボット
と表現されています。
AIを実現する手法の一つが「機械学習」です。機械学習には、次の3つの手法があります。
- 教師あり学習
- 教師なし学習
- 強化学習
教師あり学習とは、学習データに正解ラベルがあるものを指します。例えば、数字の文字認識が挙げられます。
教師なし学習とは、学習データに正解ラベルがないものを指します。例えば、クラスタリングが挙げられます。
強化学習とは、すべての場合に対して正解を与えず、特定の状態に対して報酬を付与する学習手法のことを指します。例えば、ロボットの歩行制御や、囲碁・将棋などが挙げられます。
強化学習では、すべての状態に対して最適な行動を考えることが困難なため、ロボットがうまく歩行できたりゲームで勝ったりした際に報酬を与えるという形でフィードバックを行います。本記事で紹介する強化学習は主に、時間変化を伴うシステムの制御に用いられます。
強化学習の構成要素
次に、強化学習を行う際に定める要素を紹介します。強化学習を行うためには、制御対象がどのような状態を取るか、それぞれの状態でどのような行動ができるか、を定義する必要があります。
| 要素 | 説明 | 詳細 |
|---|---|---|
| エージェント | 環境内で意思決定を行う学習主体 | ロボット制御における操縦士、囲碁・将棋におけるプレイヤーのこと。 |
| 状態 $S$ | エージェントが置かれている状況 | ロボットの関節の角度や盤面のこと。 |
| 行動 $a$ | エージェントが選択可能な操作 | ロボットの関節の動かす方向や次に打つ手のこと。 |
| 方策 $\pi_\theta(S,a)$ | エージェントの行動ルール | ロボットの制御方法や、囲碁の手の打ち方を表したもの。各状態での行動確率として表現される。 |
| パラメータ $\theta$ | 方策の基になる値 | 各状態のそれぞれの行動に対して重みを付けたもの。パラメータを行動確率に変換したものが方策である。 |
エージェントは方策を基に行動を決定します。そして、エージェントの行動によって状態が変化します。この繰り返しによって、ロボットの歩行や盤面が変化していきます。
つまり、上に示した要素を定めることで、状態遷移のルールを定義することができます。
強化学習の迷路課題への適用
ここでは、強化学習を迷路課題に適用することを考え、上述した要素の具体例を見てみたいと思います。
上の図に示すような迷路を考えます。橙丸がプレイヤーです。青の線は壁を表し、左上(S0)から右下(S8)に向かいます。このような問題では、強化学習の各要素は次のように定められます。
| 要素 | 説明・具体例 |
|---|---|
| エージェント | 迷路を探索するプレイヤー(橙丸) |
| 状態 $S$ | エージェントは9つのマスの状態を取り得る。 $S \in \{S0, S1, S2, \dots, S8\}$ |
| 行動 $a$ | エージェントは上下左右方向に移動できる。 $a \in \{\text{up}, \text{right}, \text{down}, \text{left}\}$ |
| 方策 $\pi_\theta(S,a)$ | 表形式表現で表される。 $\pi_\theta(S,a) = \begin{bmatrix} 0 & 0.5 & 0.5 & 0 \\ 0 & 0.5 & 0 & 0.5 \\ \vdots & \vdots & \vdots & \vdots \end{bmatrix}$ 例えば、1行目は状態 $S0$ のときの移動方向ごとの確率を表しており、右と下にそれぞれ $0.5$ の確率で行動する。 |
| パラメータ $\theta$ | 各状態で移動可能な方向を $1$ 、それ以外を $0$ で表している。 $\theta = \begin{bmatrix} 0 & 1 & 1 & 0 \\ 0 & 1 & 0 & 1 \\ \vdots & \vdots & \vdots & \vdots \end{bmatrix}$ パラメータを元にして方策が作られる。 |
強化学習の学習手法
強化学習の学習段階では、方策 $\pi_\theta(S,a)$ のパラメータ $\theta$ を更新し、行動確率を最適化します。ここでは、2つの学習手法を紹介します。
-
方策反復法
方策反復法とは、ランダムに行動して速くゴールしたケースを重要視する手法です。各状態における行動確率を最適化します。 -
価値反復法
価値反復法とは、すべての状態と行動に価値を定義し、その価値に従って行動を決定する手法です。各状態における行動価値を最適化します。
1.方策反復法
方策反復法の一つに、方策勾配法という手法があります。ここではその手法を説明します。名前の通り、深層学習の勾配降下法と似たアプローチをします。誤差の算出式とパラメータの更新式は次のように示されます。
- 更新式
$\theta_{S_i,a_j}\gets\theta_{S_i,a_j}+\eta\ast\Delta\theta_{S_i,a_j}$
$\Delta\theta_{S_i,a_j}=\left\{N\left(S_i,a_j\right)-P\left(S_i,a_j\right)\ N\left(S_i,a\right)\right\}/T$
ここで、各変数は次の通りです。
- $\eta$:学習率
- $T$:ゴールまでにかかった総ステップ数
- $N(S_i,a_j)$:状態 $S_i$ で行動 $a_j$ をした回数
- $P(S_i,a_j)$:状態 $S_i$ で行動 $a_j$ をする確率
- $N(S_i,a)$:状態 $S_i$ で行動をした回数
(行動回数の期待値と実際の行動回数との差を $\theta_{S_i,a_j}$ に反映します)
誤差 $\Delta\theta_{S_i,a_j}$ は、現在の行動確率と実際の行動回数を比較したときの差です。ゴールまでにかかった総ステップ数で除算することで、速くゴールした場合の誤差ほど重要視されます。
更新式では、誤差 $\Delta\theta_{S_i,a_j}$ に学習率 $\eta$ を乗算してから現在のパラメータに加えます。学習率は通常 $\eta\in{(0, 1)}$ の値を取り、急激な値の更新を防ぐ役割をします。
2.価値反復法
次に、2つ目の学習手法として挙げた価値反復法について説明します。価値反復法では「報酬」と「価値」を定義する必要があります。こちらの手法は、実際に学習を行った結果も示します。
2.1.報酬と価値
「報酬」と「価値」は価値反復法における重要な概念であり、次の表ようにまとめられます。
| 用語 | 説明 |
|---|---|
| 報酬 $R$ |
特定の状態で与えられるフィードバック ロボットが正しい動作をしたり、ゲームに勝ったりしたときに与えられる。迷路課題では、ゴールしたときに報酬 $R=1$ を設定。 |
| 報酬和 $G_t$ (割引報酬和) |
今後得られるであろう報酬の合計値 報酬の得られる時期が未来になるほど、割引率 $\gamma$ によって実際の値よりも小さな値が加算される。 $G_t=R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\ldots$ |
| 行動価値 $Q^\pi(S,a)$ |
エージェントの行動の価値 状態と行動を引数とする関数で与えられる。また、行動価値は割引報酬和の概念を用いて表される。例えば、 ・ S7 の状態で right に行動すれば、ゴールして報酬 $R=1$ がもらえるため、この行動価値は$Q^\pi(S7, \text{right}) = R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3} = 1$ ・ S7 の状態で up に行動すれば、最短2ステップでゴールできるため、割引報酬和の考えによって、この行動価値は$Q^\pi(S7, \text{up}) = R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3} = \gamma^2 \ast 1$ となる。 ※2つ目の例について、行動価値は指定した行動をした後は、最適な行動をする(最短でゴールに向かう)ものとして報酬和を考えます。 |
| 状態価値 $V^\pi(S)$ |
各状態の価値 その状態から方策 $\pi$ に従って行動し続けた場合に得られる、行動価値の期待値。 ※最適な方策を前提とした場合、各状態の行動価値の最大値に等しくなる。これを最適状態価値 $V^*$ と呼ぶ。 例えば、 ・ S7 の最適状態価値は right に行動した場合の行動価値の $1$・ S4 の最適状態価値は down に行動した場合の行動価値の $\gamma \ast 1$ |
2.2.価値反復法の学習手順
価値反復法の一つであるSarsaアルゴリズムを紹介します。
価値反復法では、行動価値を最適化するのでした。
-
行動価値 $Q(S_t,a_t)$ の初期値はランダムに設定します。
-
正しい行動価値が設定されている場合には、次の式を満たすはずです。
$Q\left(S_t,a_t\right)=R_{t+1}+\gamma\ast Q(S_{t+1},a_{t+1})$
※詳しくは「ベルマン方程式」参照 -
現在設定されている行動価値と、理論値との誤差を求めます。この誤差をTD誤差と呼びます。
TD誤差 $= R_{t+1} + \gamma \ast Q(S_{t+1},a_{t+1}) - Q(S_t,a_t)$ -
TD誤差を用いて行動価値を更新します。
$Q\left(S_t,a_t\right)\gets Q\left(S_t,a_t\right)+\eta\ast$ TD誤差 ($\eta$:学習率)
更新を繰り返すことで、行動価値を最適化します。
2.3.価値反復法の学習結果
価値反復法を迷路課題に適用した際の、学習前後の状態価値の比較を次の図に示します。本実装では割引率 $\gamma=0.9$ としました。
学習前にはランダムに与えられていた状態価値ですが、学習後にはスタートからゴールへの道筋ができていることがわかります。
価値反復法によって、迷路課題の最適経路を学習できました。
まとめ
-
強化学習は時間変化を伴うシステムの制御に利用される学習手法
-
状態、行動、方策、報酬を定義することで、制御対象のシステムを表現できる
-
学習では価値反復法や方策反復法によって方策を最適化する
-
強化学習を利用することで迷路課題などを解決可能
今回は、機械学習手法の一つである強化学習について解説しました。
私の専門領域である情報通信分野においても、強化学習は非常に重要な役割を担っています。例えば、刻々と状況が変わる衛星通信のリソース割り当てや、複雑なネットワークトラフィックの最適化など、次世代の通信インフラを支える技術として活用されています。
強化学習の理論やその応用先に興味を持たれた方は、ぜひ書籍を手に取ってみてください。
最後までお読みいただきありがとうございました!
この記事は株式会社Hibariのテックブログからの転載です。
元記事はこちら: 強化学習の基本概念とSarsaアルゴリズムを用いた迷路探索の実装




