3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AI入門】強化学習の基本概念とSarsaアルゴリズムを用いた迷路探索の実装

3
Last updated at Posted at 2026-03-22

はじめに

こんにちは、野村です。
学生をしながら静岡のHIBARI株式会社でAIを用いたプロダクト開発をしています。大学では情報通信分野で研究を行っています。

本記事は、強化学習とその学習手法について学んだ内容をまとめたものです。学習および実装にあたっては、次の書籍と公式リポジトリを参考にしています。

強化学習の位置づけ

venn-diagram.png

まず、「AI」、「機械学習」、「強化学習」という言葉の関係を示しておこうと思います。

「AI」という言葉の定義は研究者によって異なります。参考書籍では、

人間が知的だと感じるシステムや、そのようなシステムを搭載したロボット

と表現されています。

AIを実現する手法の一つが「機械学習」です。機械学習には、次の3つの手法があります。

  • 教師あり学習
  • 教師なし学習
  • 強化学習

教師あり学習とは、学習データに正解ラベルがあるものを指します。例えば、数字の文字認識が挙げられます。

教師なし学習とは、学習データに正解ラベルがないものを指します。例えば、クラスタリングが挙げられます。

強化学習とは、すべての場合に対して正解を与えず、特定の状態に対して報酬を付与する学習手法のことを指します。例えば、ロボットの歩行制御や、囲碁・将棋などが挙げられます。

強化学習では、すべての状態に対して最適な行動を考えることが困難なため、ロボットがうまく歩行できたりゲームで勝ったりした際に報酬を与えるという形でフィードバックを行います。本記事で紹介する強化学習は主に、時間変化を伴うシステムの制御に用いられます。

強化学習の構成要素

次に、強化学習を行う際に定める要素を紹介します。強化学習を行うためには、制御対象がどのような状態を取るか、それぞれの状態でどのような行動ができるか、を定義する必要があります。

要素 説明 詳細
エージェント 環境内で意思決定を行う学習主体 ロボット制御における操縦士、囲碁・将棋におけるプレイヤーのこと。
状態 $S$ エージェントが置かれている状況 ロボットの関節の角度や盤面のこと。
行動 $a$ エージェントが選択可能な操作 ロボットの関節の動かす方向や次に打つ手のこと。
方策 $\pi_\theta(S,a)$ エージェントの行動ルール ロボットの制御方法や、囲碁の手の打ち方を表したもの。各状態での行動確率として表現される。
パラメータ $\theta$ 方策の基になる 各状態のそれぞれの行動に対して重みを付けたもの。パラメータを行動確率に変換したものが方策である。

エージェントは方策を基に行動を決定します。そして、エージェントの行動によって状態が変化します。この繰り返しによって、ロボットの歩行や盤面が変化していきます。

state-transition.png

つまり、上に示した要素を定めることで、状態遷移のルールを定義することができます。

強化学習の迷路課題への適用

ここでは、強化学習を迷路課題に適用することを考え、上述した要素の具体例を見てみたいと思います。

maze.png

上の図に示すような迷路を考えます。橙丸がプレイヤーです。青の線は壁を表し、左上(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. 方策反復法
    方策反復法とは、ランダムに行動して速くゴールしたケースを重要視する手法です。各状態における行動確率を最適化します。

  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.報酬と価値

「報酬」と「価値」は価値反復法における重要な概念であり、次の表ようにまとめられます。

maze2.png

用語 説明
報酬 $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$ としました。

学習前にはランダムに与えられていた状態価値ですが、学習後にはスタートからゴールへの道筋ができていることがわかります。

study.png

価値反復法によって、迷路課題の最適経路を学習できました。

まとめ

  • 強化学習は時間変化を伴うシステムの制御に利用される学習手法

  • 状態、行動、方策、報酬を定義することで、制御対象のシステムを表現できる

  • 学習では価値反復法や方策反復法によって方策を最適化する

  • 強化学習を利用することで迷路課題などを解決可能


今回は、機械学習手法の一つである強化学習について解説しました。

私の専門領域である情報通信分野においても、強化学習は非常に重要な役割を担っています。例えば、刻々と状況が変わる衛星通信のリソース割り当てや、複雑なネットワークトラフィックの最適化など、次世代の通信インフラを支える技術として活用されています。

強化学習の理論やその応用先に興味を持たれた方は、ぜひ書籍を手に取ってみてください。

最後までお読みいただきありがとうございました!


この記事は株式会社Hibariのテックブログからの転載です。
元記事はこちら: 強化学習の基本概念とSarsaアルゴリズムを用いた迷路探索の実装

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?