Markov过程
Markov Propety
一个随机过程再给定现在状态及所有过去状态下,未来的状态条件概率仅依赖于当前状态。
X0,X1,...,Xt构成了随机过程,这些随机过程的可能取值的集合称之为状态空间
p(Xt+1=xt+1∣X0:t=x0:t)=p(Xt+1=xt+1∣Xt=xt)
->if一个过程满足马尔科夫性质,则未来的转移和过去的是独立的,只取决于现在.
马尔科夫链
p(st+1∣st)=p(st+1∣ht)
其中h(t)=s1,s2,...,st,离散时间的马尔可夫过程也可称之为马尔科夫链
状态转移矩阵:
P=p(s1∣s1)p(s1∣s2)⋮p(s1∣sN)p(s2∣s1)p(s2∣s2)⋮p(s2∣sN)⋯⋯⋱⋯p(sN∣s1)p(sN∣s2)⋮p(sN∣sN)
马尔可夫奖励过程
Markov reward process(MRP) 是马尔科夫链加上奖励函数。
回报与价值函数
Def:
horizon:一个回合的长度(每个回合最大的时间步数)
return:定义为奖励的累加
时间t后的奖励序列为rt+1,rt+2,rt+3则回报为:
Gt=rt+1+γ∗rt+2+γ2∗rt+3+γ3∗rt+4+⋯+γT−t−1rT
其中T是最终时刻,γ是折扣因子,越往后的奖励,折扣越多->我们更希望现在的奖励
对于Markov奖励过程,状态价值函数被定义为回报的期望:
Vt(s)=E[Gt∣st=s]=E[rt+1+γrt+2+γ2rt+3+⋯+γT−t−1rT∣st=s]
使用γ的原因:
- 有些马尔可夫过程是带环的,我们想要避免无穷的奖励
- 不能完全信任模型,由于这种不确定性,对未来的评估增加一个折扣
- 我们更希望立刻得到奖励
γ常常作为一个超参数来进行调整,通过调整折扣因子,可以得到不同的智能体
贝尔曼方程
从价值函数中推导的来贝尔曼方程:
V(s)=R(s)+γs′∈S∑p(s′∣s)V(s′)
其中R(s)是即时奖励,p(s′∣s)是指当前状态转移到未来状态的概率,V(s′)代表的是未来某一个状态的价值
后半部分可以看作未来奖励的这空综合(disscount sum of future reward)
全期望公式
law of total expectation:
E[V(st+1∣st)]=E[E[Gt+1∣st+1]∣st]=E[Gt+1∣st]
如果Ai是样本空间的有限的划分:
E[X]=i∑E[X∣Ai]p(Ai)
令s=st,g′=Gt+1,s′=st+1,根据期望的定义:
E[Gt+1∣st+1]=E[g′∣s′]=g′∑g′p(g′∣s′)
令st=s
对上市求期望有:
E[E[Gt+1∣st+1]∣st]=E[E(g′∣s′)∣s]=E[g′∑g′p(g′∣s′)∣s]=s′∑g′∑g′p(g′∣s′,s)p(s′∣s)=s′∑g′∑p(s)g′p(g′∣s′,s)p(s′∣s)p(s)=s′∑g′∑p(s)g′p(g′∣s′,s)p(s′,s)=g′∑s′∑p(s)g′p(g′,s′,s)=g′∑s′∑g′p(g′,s′∣s)=g′∑g′(g′∣s)=E[g′∣s]=E[Gt+1∣st]
贝尔曼方程推导
V(s)=E[Gt∣st=s]=E[rt+1+γrt+2+γ2rt+3+⋯∣st=s]=E[rt+1∣st=s]+γE[γrt+2+γ2rt+3+⋯∣st=s]=R(s)+γE[Gt+1∣st=s]=R(s)+γE[V(st+1)∣st=s]=R(s)+γs′∈S∑p(s′∣s)V(s′)
表示当前状态和未来状态的迭代过程->当前状态的Value可以由未来状态的Value决定和计算,也称之为动态规划过程
V(s)=R(s)+γs′∈S∑p(s′∣s)V(s′)
定义为矩阵的形式:
V(s1)V(s2)⋮V(sN)=R(s1)R(s2)⋮R(sN)+γp(s1∣s1)p(s1∣s2)⋮p(sN∣s1)p(s2∣s1)p(s2∣s2)⋮p(sN∣s2)⋯⋯⋱⋯p(sN∣s1)p(sN∣s2)⋮p(sN∣sN)V(s1)V(s2)⋮V(sN)
VIV(I−γP)VV=R+γPV=R+γPV=R=(I−γP)−1R
得到解析解
计算马尔可夫奖励的迭代算法
可以将迭代的方法应用于状态非常多的马尔可夫奖励过程(large MRP),时序差分学习(temporal-difference learning,TD learning)
什么是蒙特马利方法
______
.-" "-.
/ \
| |
|, .-. .-. ,|
| )(_o/ \o_)( |
|/ /\ \|
(@_ (_ ^^ _)
_) \__ \__|IIIIII|__/__
(_ \ \| |IIIIII| | \
/ / /| |IIIIII| | \
(@_ / / \ \ IIII / / \
\/ / \ \____/ / \
\_/ \________/ \
| | | \
| | | \
|________|______|_____________\
/| | | |\
/ | | | | \
/ |________|______|_____________| \
/_____________________________________\
| | | | | | | | |
|__|____|____|____|____|____|____|____|
先放一个骷髅占沙发
马尔可夫决策过程
马尔可夫决策过程满足:
p(st+1∣st,at)=p(st+1∣ht,at)
对于奖励函数而言,多了一个当前的动作:R(st=s,at=a)=E[rt=s,at=a]
马尔可夫决策过程中的策略:
定义了某一个状态应该采取的动作,知道当前状态后,可以把当前状态带入策略函数得到一个概率:
π(a∣s)=p(at=a∣st=s)
在马尔可夫决策过程中,状态转移函数P(s′∣s)基于当前的状态以及它当前的状态以及它当前的动作。
在已知在每一个状态中,可能采取的动作的概率,所以我们就可以直接把动作进行加和,去掉a:
Pπ(s′∣s)=∑a∈Aπ(a∣s)p(s′∣s,a)
对于奖励函数,同样也可以将动作去掉:
rπ(s)=a∈A∑π(a∣s)R(s,a)
马尔可夫决策过程和马尔可夫奖励过程的区别
多了一个对于动作的选择性
马尔可夫过程中的价值函数
马尔可夫决策过程中的价值函数Def:
Vπ(s)=Eπ[Gt∣st=s]
另外引入一个Q函数(Q-function),Q函数也被称之为动作价值函数(action-value function),定义的是在某一个状态采取一个动作,有可能得到的回报的一个期望:
Qπ(s,a)=Eπ[Gt∣st=s,at=a]
So woget:
Vπ(s)=a∈A∑π(a∣s)Qπ(s,a)
对Q函数的贝尔曼方程的推导:
Q(s,a)=E[Gt∣st=s,at=a]=E[rt+1+γrt+2+γ2rt+3+⋯∣st=s,at=a]=E[rt+1∣st=s,at=a]+γErt+2+γrt+3+⋯=R(s,a)+γE[Gt+1∣st=s,at=a]=R(s,a)+γE[Vs+1∣st=s,at=s]=R(s,a)+γs′∈S∑p(s′∣s,a)V(s′)
贝尔曼期望方程:
将状态价值函数和Q函数拆分成2个部分:
即使奖励和后续状态的折扣价值(discounted value of successor state)
Bellman expection equation:
Vπ(s)=Eπ[rt+1+γVπ(st+1)∣st=s]
对Q函数进行分解:
Qπ(s,a)=E[rt=1+γQπ(st+1,at+1)∣st=s,at=a]
进一步进行简单的分解:
Vπ(s)=a∈A∑π(a∣s)Qπ(s,a)
又有:
Qπ(s,a)=R(s,a)+γs′∈S∑p(s′∣s,a)Vπ(s′)
得:
Vπ(s)=a∈A∑π(a∣s)[R(s,a)+γs′∈S∑p(s′∣s,a)Vπ(s′)]
或者:
Qpi(s,a)=R(s,a)+γs′∈S∑p(s′∣s,a)a∈A∑π(a′∣s′)Qπ(s′,a′)
备份图
backup
…
策略评估:
已知马尔可夫决策过程以及要采取的策略π,计算价值函数Vπ(s)的过程就是策略评估
可以直接通过贝尔曼方程来得到价值函数:
Vπk(s)=r(s,π(s))+γs′∈S∑p(s′∣s,π(s))Vπk−1(s′)
通过NNNN次迭代,价值函数最终会收敛,收敛之后,价值函数的值就是每一个状态的价值:
如果折扣因子是γ=0.5
根据
Vπt(s)=a∑p(π(s)=a)(r(s,a)+γs′∈S∑p(s′∣s,a)Vπt−1(s′))
对V(s′)赋一个初值,接着将V(s′)代入贝尔曼期望方程里进行迭代,就可以得到状态价值
预测和控制
prediction & control是马尔可夫过程中的核心问题:
prediction:输入马尔可夫决策过程中的<S,A,P,R,γ>,输出是价值函数Vπ
control:输入是马尔科夫决策过程中<S,A,P,R,γ>,输出是最佳价值函数(optiomal value function)V∗和最佳策略(optimal policy)π∗
二者的区别:
prediction是给定一个policy,计算它的价值函数;而control是在没有policy的前提下,我们要确定最佳的价值函数和对应的策略方案
动态规划:
dynamic programming DP
最适合解决最优子结构(optimal substrance)和重叠子问题(overlapping subproblem)
贝尔曼方程中,我们将马尔可夫决策分解为了递归的结构,当我们把它分解为递归的结构时,动态规划应用于马尔可夫决策过程的规划问题而不是学习问题,必须对环境是完全已知的,才能做动态规划,也就是要知道状态转移概率和对应的奖励
马尔可夫决策过程中的策略评估
直接把 Bellman expection backup,变成迭代的过程,反复迭代直至收敛
我们可以把贝尔曼期望备份转换成动态规划的迭代:
当我们得到上一时刻的Vt的时候,就可以通过递推的关系推出下一时刻的值,反复迭代,最后V的值就是从V1、V2到最后收敛之后的值Vπ,Vπ就是当前给定的策略π对应的价值函数:
Vt+1(s)=a∈A∑π(a∣s)(R(s,a)+γs′∈S∑p(s′∣s,a)Vt(s′))
将上式NNNNN次狠狠的迭代,直至收敛
因为policy已知,将它简化为一个马尔可夫奖励过程的表达式:
Vt+1(s)=rπ(s)+γPπ(s′∣s)Vt(s′)
1个动态的例子:
https://cs.stanford.edu/people/karpathy/reinforcejs/gridworld_dp.html
🐱 🐱
🐱 🐱
🐱🐱🐱
🐱 👁️ 👁️ 🐱
🐱 👃 🐱
🐱 👄 🐱
🐱🐱🐱
脑吃VS古振兴
马尔可夫决策过程控制
最佳价值函数的定义:
V∗(s)=maxπVπ(s)
指的是搜索1中策略π让价值函数取得最大值,取得最佳价值函数之后,可以通过对Q函数进行最大化来得到最佳策略:
π∗(s)={1,a=argmaxa∈AQ∗(s,a)0,others
Q函数收敛后,由于是关于状态和动作的函数,所以如果能够在某个状态采取某个动作,就可以使得Q函数最大化,那么这个动作就是最佳的动作.
Q:怎样进行策略搜索:
- 穷举
- 寻找最佳策略的过程就是马尔可夫决策过程的控制过程:
π∗(s)=argmaxπVπ(s)
最佳策略不一定是唯一的,多种策略可能会得到同样的价值
策略迭代
策略迭代的组成:
- 策略评估
- 策略改进
策略评估:给定当前策略来估计状态价值函数V(s)
策略改进:得到状态价值函数之后,进一步推算出Q函数->对Q函数做最大化处理->贪心算法仅以改进策略
2个过程交替迭代进行,直至收敛;
对于策略改进而言:
Q(s,a)=R(s,a)+γs′∈S∑p(s′∣s,a)Vπi(s,a)
对每个状态曲致使它取得最大值的策略:
πi+1(s)=argmaxaQπi(s,a)
我们可以吧Q函数视作一个Q表格
这就是大名鼎鼎的Q-table:
横轴是它的所有状态,纵轴是它的可能的动作;
------Q-Table------
--->--State--->---- |
------------------- |
| | | | | | | | | | |
------------------- action
| | | | | | | | | | |
------------------- |
| | | | | | | | | | |
对于某一个状态,每一列中我们取最大值,最大值采取的动作就是现在应该采取的动作
贝尔曼最优方程:
我们一直采取argmax的策略,我们会得到1个单调的递增,通过采取这种贪心操作,我们就会得到更好的或者不变的策略,而不会使得价值函数V(s)变差。
当停止改进那一个刻:
Qπ(s,π′(s))=maxa∈AQπ(s,a)=Qπ(s,π(s))=Vπ(s)
从而得到贝尔曼最优方程(Bellman optimality equation)
Vπ(s)=maxa∈AQπ(s,a)
表明:最佳策略下的一个状态的价值必须等于在这个状态下采取最好行动得到的回报的期望
得到最佳的价值函数时,贝尔曼方程已达到最佳状态,满足了Bellman最优方程:
V∗(s)=maxs∈AQπ(s,a)
满足Bellman最优方程之后,我们可以采取最优化操作:
又有:
Q∗(s,a)=R(s,a)+γs′∈S∑p(s′∣a)V∗(s,a)
Soweget:
Q∗(s,a)=R(s,a)+γs′∈S∑p(s′∣a)maxs∈AQ∗(s,a)
带入上式:
V∗(s)=maxaQ∗(s,a)=maxa∈AE[Gt∣st=s,at=a]=maxaE[rt+1+γGt+1∣st=s,at=a]=maxaE[rt+1+γV∗(st+1)∣st=s,at=a]=maxaE[rt+1]+maxaE[γV∗(st+1)∣st=s,at=a]=maxaR(s,a)+maxaγs′∈S∑p(s′∣s,a)V∗(s′)=maxa(R(s,a)+γs′∈S∑p(s′∣s,a)V∗(s′))
从而得状态价值函数的转移
价值迭代
最优性原理
principle of optimality theorem:1个策略在π(a∣s)在状态s达到了最优价值,也就是Vπ(s)=V∗(s)成立,都已经达到了最佳价值;对于所有的s′,Vπ(s′)=V∗(s)恒成立;
确定性价值迭代:
我们已经确定了最优解V∗(s),就可以通过最优解迭代来得到最优的V∗(s)的解,价值迭代就是将Bellman方程当作一个确定的规则来执行:
价值迭代算法:
- 初始化:k=1,对于所有状态Vo(s)=0
- 对于k=1:H
- 对于所有状态s
Qk+1(s,a)Vk+1(s)=R(s,a)+γs′∈S∑p(s′∣s,a)Vk(s′)=maxaQk+1(s,a)
- k<-k+1
- 在迭代之后获得最佳策略:
π(s)=argmaxa[R(s,a)+γs′∈S∑p(s′∣a)VH+1(s′)]
价值迭代做的是1个类似于反向传播的作用,每次迭代做一次传播,中间过程的策略和价值函数是没有作用的
继续进行前面提到的格子实验:
来体会策略迭代和价值迭代的区别