強化学習#

強化学習(reinforcement learning)はエージェント(行動する主体)が環境と相互作用し、報酬というフィードバックを受けて試行錯誤しながら学習していく学習方法。

バンディット問題#

バンディット問題(bandit problem)は、複数のスロットマシン(bandit)が存在していてどのスロットマシンが最も多い平均的なリターンをもたらすのかがわからない中で、最適なスロットマシンを選んで合計のリターンを最大化する問題。

各スロットマシンのリターンを推測するためにレバーを引いていく「探索(exploration)」と、リターンが多いスロットマシンのレバーを引く「活用(exploitation)」の2つの行動をとることができるが、探索ばかりをしていてもリターンの最大化ができず、かといって活用ばかりをしていてもよりよいスロットマシンの存在を見逃すリスクがあるというトレードオフが存在する。

強化学習の枠組みでは、スロットマシンは環境(environment)、問題に取り組むプレイヤーはエージェント(agent)と呼ばれ、得られるリターンのことは報酬(reward)と呼ばれる。

#

報酬が\([0, 1]\)の一様分布\(U(0, 1)\)に従うスロットマシン(環境)\(a\)と、報酬が平均\(0.7\)、分散\(0.1\)の正規分布\(N(0.7, 0.1)\)に従うスロットマシン\(b\)があるとする。

Hide code cell source

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import japanize_matplotlib

np.random.seed(0)
x = np.linspace(0, 1, 100)
a = stats.uniform.pdf(x, 0, 1)
b = stats.norm.pdf(x, loc=0.7, scale=0.1)

fig, ax = plt.subplots(ncols=2, figsize=[6, 2])
ax[0].plot(x, a)
ax[1].plot(x, b)
[<matplotlib.lines.Line2D at 0x7f88fd6e5390>]
../_images/92987434f5a120d7ec08a125d968f72d6c3b3340050ee1ea7f6f5a5cb2e0328a.png

マルコフ決定過程#

1時点前の状態にのみ依存することをマルコフ性といい、

マルコフ決定過程(Markov Decision Process: MDP)

参考#