いものやま。

雑多な知識の寄せ集め

強化学習について学んでみた。(その3)

昨日は強化学習の「強化」とは何なのかについて説明した。

今日は、強化学習で考える具体的な状況や、そこで使われる用語について。

エージェントと環境

強化学習では、学習したり行動を決定する主体(つまりAI自身)のことを、エージェントと呼ぶ。
そして、エージェントが行動した結果、状態を変えたり、あるいは報酬/罰を与えるもののことを、環境と呼ぶ。

例えば、昨日の猿の例で言えば、エージェントは「猿」で、環境は「檻の中」だ。

環境は、いくつかの状態を持つ。
環境の可能な状態の集合を \mathcal{S} と書くことにする。

例えば、猿の例だと、

 {
\begin{align}
  \mathcal{S} = \{ & \mbox{"初期状態"}, \\
  & \mbox{"猿が小さな箱を選んでいる"}, \\
  & \mbox{"猿が大きな箱を選んでいる"}, \\
  & \mbox{"猿が小さな箱を開けている"}, \\
  & \mbox{"猿が大きな箱を開けている"}, \\
  & \mbox{"猿が箱を開けるのに失敗している"} \}
\end{align}
}

となる。

さて、環境の状態はエージェントが行動を行っていくと、変化していく。
そこで、時間ステップ(これはエージェントが行動を行うと進んでいく)を t = 0, 1, 2, \cdotsとしたときに、それぞれの状態を s_t (\in \mathcal{S})で表すことにする。

例えば、猿の例だと、

 s_0 = \mbox{"初期状態"}

で、猿が小さな箱を選ぶという行動を行えば、

 s_1 = \mbox{"猿が小さな箱を選んでいる"}

となるし、大きな箱を選ぶという行動を行えば、

 s_1 = \mbox{"猿が大きな箱を選んでいる"}

という状態になる。

ところで、環境の状態が s_tであるとき、エージェントが選択することが可能な行動というのは、限られている。
そこで、状態が s_tのときにエージェントが選択可能な行動の集合を \mathcal{A}(s_t)と書くことにする。

例えば、猿の例だと、

 {
\begin{align}
  \mathcal{A}(\mbox{"初期状態"}) = \{ & \mbox{"小さな箱を選ぶ"}, \\
  & \mbox{"大きな箱を選ぶ"} \}
\end{align}
}

だし、

 {
\begin{align}
  \mathcal{A}(\mbox{"猿が小さな箱を選んでいる"}) = \{ & \mbox{"青のボタンを押す"}, \\
  & \mbox{"黄色のボタンを押す"}, \\
  & \mbox{"赤のボタンを押す"} \}
\end{align}
}

となる。

エージェントが状態 s_tで行った行動を a_t (\in \mathcal{A}(s_t))とすると、次の状態 s_{t+1}が定まり、そして、報酬 r_{t+1} (\in \mathbb{R})を受け取ることになる。
(もちろん、報酬は0の場合もあるし、マイナスならそれは罰を意味する)

例えば、猿の例であれば、 s_0 = \mbox{"初期状態"}であるとき、

 {
s_1 = \left\{
\begin{array}{ll}
\mbox{"猿が小さな箱を選んでいる"} & (a_0 = \mbox{"小さな箱を選ぶ"}) \\
\mbox{"猿が大きな箱を選んでいる"} & (a_0 = \mbox{"大きな箱を選ぶ"})
\end{array}
\right.
}
 {
r_1 = 0
}

そして、例えば s_1 = \mbox{"猿が小さな箱を選んでいる"}であるとき、

 {
s_2 = \left\{
\begin{array}{ll}
\mbox{"猿が小さな箱を開けている"} & (a_1 = \mbox{"青のボタンを押す"}, \mbox{"黄色のボタンを押す"}) \\
\mbox{"猿が箱を開けるのに失敗している"} & (a_1 = \mbox{"赤のボタンを押す"})
\end{array}
\right.
}
 {
r_2 = \left\{
\begin{array}{ll}
1 & (a_1 = \mbox{"青のボタンを押す"}, \mbox{"黄色のボタンを押す"}) \\
-1 & (a_1 = \mbox{"赤のボタンを押す"})
\end{array}
\right.
}

となる。

気をつけなければならないのは、「小さな箱を選ぶ」とか「大きな箱を選ぶ」では、報酬も罰も与えられないということ。
「評価を与える」という表現だと、「小さい箱を選ぶ」よりも「大きな箱を選ぶ」方がより正解に近いので、ついつい「大きな箱を選ぶ」という行動に評価を与えてしまいそうになるけれど、そうではない。
「報酬や罰」というのは、環境からエージェントに対して与えられるものであって、それ以外の知識などから与えられるものではないということに注意しなければならない。
(これが強化学習について学んでみた。(その1) - いものやま。で“本当は「評価」ではなく「報酬」が与えられる”と書いた理由)

まとめると、次のような繰り返しが行われることになる。

  1. エージェントに環境の状態 s_t \in \mathcal{S} \: (t = 0, 1, 2, \cdots)が与えられる。
  2. エージェントはその状態で選択可能な行動の集合 \mathcal{A}(s_t)から行動を一つ選択する。
    この行動を a_tとする。
  3. エージェントの選択した行動 a_tにより、環境の状態は s_{t+1} \in \mathcal{S}になり、報酬 r_{t+1} \in \mathbb{R}が与えられる。
  4. 状態 s_{t+1}を次にエージェントに与えられる状態として、1.に戻る。

図に表すと、次のような感じ。

f:id:yamaimo0625:20150818014050p:plain

方策と価値関数

ところで、状態 s_tで行動 a_tを選択したときの次の状態 s_{t+1}と報酬 r_{t+1}は環境によって決められるので、エージェントの学習で変化していくようなものではない。
では、エージェントが学習することで変わっていくものはなんなのかというと、それは「エージェントの行動の選び方」を表す確率である、方策(ポリシー)が更新されていくことになる。
時間ステップ tにおける方策は \pi_{t}: \mathcal{S} \times \mathcal{A}(s) \rightarrow [0, 1]という写像で、例えば \pi_t(s, a) \in [0, 1]というのは、状態 sのときにエージェントが行動 aを選ぶ確率を表すことになる。

じゃあ、どうやってこの方策をどうやって改善していくのかというと、エージェントは内部的に「行動(や状態)の価値」を表現する価値関数というものを持っていて、得られた報酬を使ってこの価値関数を更新していくことで、方策を改善していくことになる。
「やった行動」と「それによって得られた報酬」とを結びつけることで、「行動(や状態)の価値」の推定、改善していくわけで、これがまさに(心理学の用語の)「強化」になる、というわけだ。

今日はここまで!

強化学習

強化学習

  • 作者: Richard S.Sutton,Andrew G.Barto,三上貞芳,皆川雅章
  • 出版社/メーカー: 森北出版
  • 発売日: 2000/12/01
  • メディア: 単行本(ソフトカバー)
  • 購入: 5人 クリック: 76回
  • この商品を含むブログ (29件) を見る