对象抽取:马里奥、金币、板栗仔(蘑菇怪)
智能体循环该过程:根据状态s,采取策略,执行动作a,获得奖励r,状态变化。
例:设在某个时刻 t t t, π \pi π的概率密度
结论:马里奥更可能跳
强化学习目标:学习 π \pi π函数
人为设定(超参数)
赢得游戏的奖励较大,能够激励学到的 π \pi π倾向于赢得游戏而不是吃金币
假设:
分析1:
马里奥是否跳由 π \pi π决定,但蘑菇怪往左或往右由环境自己决定,玩家并不知道,因此统一归因于上一状态。
结论1:时刻 t t t的奖励 R t R_t Rt取决于 S t S_t St和 A t A_t At
状态转移(状态变化):不同状态间的跳转
根据分析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 = 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已知
结论:对于智能体, 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
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有关
定义: 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)]
其数值意义:当前局势如何(与采取的动作无关)
State-value function
结论:
问题:马里奥如何执行动作?
答案:两种方法
【后续内容,持续学习更新中~】
黄色表示超参数
正式:本文描述中省略了大量笔者认为不利于理解的部分,替换为简易表达,具体概念必然存在不完善的部分,但不影响基础入门理解
吐槽:找了很多博客,但是概念过多,或过于啰嗦,越看越困,感觉不易于理解,索性自己写个简易版的,加入了一些自己的解读,未必准确,但是方便理解,也算是给自己挖个坑吧~
简化前原文