强化学习入门—超级马里奥
对象抽取:马里奥、金币、板栗仔(蘑菇怪)
术语
- 智能体-Agent:马里奥
- 状态(S或s)-State:当前游戏画面
- 动作(A或a)-Action:智能体(马里奥)的,左、右、跳(简化)
- 策略-Policy:根据状态,决定该采取的动作
- 奖励(R或r)-Reward:执行动作后,游戏给予奖励,例如吃金币加分
- 轨迹-Trajectory:包括每一步的状态、动作、奖励。
智能体循环该过程:根据状态s,采取策略,执行动作a,获得奖励r,状态变化。
策略-Policy
- Policy:记为
π
\pi
π函数(概率密度函数)
π ( a ∣ s ) = P ( A = a ∣ S = s ) \pi(a|s)=P(A=a|S=s) π(a∣s)=P(A=a∣S=s)
例:设在某个时刻 t t t, π \pi π的概率密度
- π ( 左 ∣ s t ) = 0.2 \pi(左|s_t)=0.2 π(左∣st)=0.2
- π ( 右 ∣ s t ) = 0.1 \pi(右|s_t)=0.1 π(右∣st)=0.1
- π ( 跳 ∣ s t ) = 0.7 \pi(跳|s_t)=0.7 π(跳∣st)=0.7
结论:马里奥更可能跳
强化学习目标:学习 π \pi π函数
奖励-Reward
人为设定(超参数)
- 吃一个金币:R=+1
- 到达终点:R=+10000
- 死亡(比如:碰到怪):R=-10000
- 其他(无事发生):R=0
赢得游戏的奖励较大,能够激励学到的 π \pi π倾向于赢得游戏而不是吃金币
假设:
- 如果马里奥向右走,碰到怪(假设怪向左走),R=-10000
- 如果马里奥跳,碰到金币,R=1
分析1:
- 对于马里奥: 执 行 动 作 → 状 态 变 化 → 获 得 奖 励 执行动作\rightarrow 状态变化 \rightarrow 获得奖励 执行动作→状态变化→获得奖励
- 对于蘑菇怪:向左走,也导致状态变化,进而影响奖励(蘑菇怪并非智能体,而是游戏本身设定导致状态变化的因素)
马里奥是否跳由 π \pi π决定,但蘑菇怪往左或往右由环境自己决定,玩家并不知道,因此统一归因于上一状态。
结论1:时刻 t t t的奖励 R t R_t Rt取决于 S t S_t St和 A t A_t At
状态转移-State transition
状态转移(状态变化):不同状态间的跳转
根据分析1得:下一状态
s
′
s'
s′取决于状态
s
s
s和动作
a
a
a
则
s
′
s'
s′可能的概率分布:
p
(
s
′
∣
s
,
a
)
=
P
(
S
′
=
s
′
∣
S
=
s
,
A
=
a
)
p(s'|s,a)=P(S'=s'|S=s,A=a)
p(s′∣s,a)=P(S′=s′∣S=s,A=a)
概念
回报- U t U_t Ut:从时刻 t t t到游戏结束的累积奖励
回报- U t U_t Ut
U t = R t + R t + 1 + R t + 2 + R t + 3 + ⋯ U_t=R_t+R_{t+1}+R_{t+2}+R_{t+3}+\cdots Ut=Rt+Rt+1+Rt+2+Rt+3+⋯
提问:马里奥吃金币的顺序应该如何设计?
答案:优先吃距离最近的,再吃距离远的
结论2:越近的奖励越优先考虑,即权重更高,相对地,越远的奖励权重越低
即:
权
重
(
R
t
)
>
权
重
(
R
t
+
1
)
权重(R_{t})>权重(R_{t+1})
权重(Rt)>权重(Rt+1)
不妨假设:
γ
∈
(
0
,
1
)
\gamma\in(0,1)
γ∈(0,1)
得:
U
t
=
R
t
+
γ
R
t
+
1
+
γ
2
R
t
+
2
+
γ
3
R
t
+
3
+
⋯
U_t=R_t+\gamma R_{t+1}+\gamma^2 R_{t+2}+\gamma^3 R_{t+3}+\cdots
Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+⋯
(满足结论2)
γ
\gamma
γ:折扣率(超参数)
Agent的目标是使 U t U_t Ut尽可能大
扩展结论1得:
U
t
U_t
Ut取决于从
t
t
t时刻开始未来所有的状态与动作
所以,
U
t
U_t
Ut是一个随机变量
提问:如何评估当前
U
t
U_t
Ut的高低?
答案:求期望(大概过程是对未来所有的
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)和
p
(
s
′
∣
s
,
a
)
p(s'|s,a)
p(s′∣s,a)求积分)
分析:在时刻 t t t,若当前状态 s t s_t st和当前动作 a t a_t at已知
- 根据 p p p,下一状态 s t + 1 s_{t+1} st+1取决于 s t s_t st和 a t a_t at, p p p取决于环境
- 根据 π \pi π,下一步采取的动作 a t + 1 a_{t+1} at+1取决于 s t + 1 s_{t+1} st+1, π \pi π取决于智能体
结论:对于智能体, U t U_t Ut与 π \pi π有关,而与 p p p无关
因此: E ( U t ) = Q π E(U_t)=Q_\pi E(Ut)=Qπ
智能体面对状态 s t s_t st时采取的动作定义为 a t a_t at
动作价值函数- Q π Q_\pi Qπ
Action-value Function
E
(
U
t
)
=
Q
π
E(U_t)=Q_\pi
E(Ut)=Qπ,
Q
π
Q_\pi
Qπ取决于
π
\pi
π
因此,智能体的目标:寻找最佳的
π
\pi
π使
Q
π
Q_\pi
Qπ最大
即:
Q
∗
=
max
π
Q
π
Q^*=\max_\pi Q_\pi
Q∗=πmaxQπ
进一步,若
s
t
s_t
st与
a
t
a_t
at未知,则得到公式2
Q
π
(
s
t
,
a
t
)
=
E
(
U
t
∣
S
t
=
s
t
,
A
t
=
a
t
)
Q_\pi(s_t,a_t)=E(U_t|S_t=s_t,A_t=a_t)
Qπ(st,at)=E(Ut∣St=st,At=at)
结论:若已知
π
\pi
π函数,则可以对当前状态的所有动作进行评分,判断不同动作的好坏
推论:智能体根据
Q
∗
Q^*
Q∗对动作的评价作出决策
分析: Q π ( s t , a t ) Q_\pi(s_t,a_t) Qπ(st,at)与 π \pi π、 s t s_t st、 a t a_t at有关
- a t a_t at可能是:左、右、跳,其中之一,也是一个随机变量
- 把 a t a_t at视为随机变量 A A A,再对 Q π Q_\pi Qπ求期望,则 E A [ Q π ( s t , A ) ] E_A[Q_\pi(s_t,A)] EA[Qπ(st,A)]只与 s t s_t st和 π \pi π有关
定义:
V
π
(
s
t
)
=
E
A
[
Q
π
(
s
t
,
A
)
]
V_\pi(s_t)=E_A[Q_\pi(s_t,A)]
Vπ(st)=EA[Qπ(st,A)]
其数值意义:当前局势如何(与采取的动作无关)
状态价值函数- V π V_\pi Vπ
State-value function
结论:
- 当 π \pi π固定时, V π V_\pi Vπ越大,表示可能快赢了,越小表示可能快输了
- V π V_\pi Vπ的平均值越大,表示 π \pi π越好
运行
问题:马里奥如何执行动作?
答案:两种方法
- 将 s t s_t st输入到 π ( a ∣ s ) \pi(a|s) π(a∣s)中,得到动作的概率分布,随机取样选择动作 a t a_t at
- 输入 s t s_t st,计算得到 a t = arg max a Q ∗ ( s t , a ) a_t=\argmax_a Q^*(s_t,a) at=aargmaxQ∗(st,a)
【后续内容,持续学习更新中~】
P.S.
黄色表示超参数
笔者语
正式:本文描述中省略了大量笔者认为不利于理解的部分,替换为简易表达,具体概念必然存在不完善的部分,但不影响基础入门理解
吐槽:找了很多博客,但是概念过多,或过于啰嗦,越看越困,感觉不易于理解,索性自己写个简易版的,加入了一些自己的解读,未必准确,但是方便理解,也算是给自己挖个坑吧~
简化前原文