- #David Silver Reinforcement Lear
- #David Silver Reinforcement Lear
- #David Silver Reinforcement Lear
- #David Silver Reinforcement Lear
- Lecture 1: Introduction to Reinf
- Deep Reinforcement Learning简介
- Lecture 4: Model-Free Prediction
- [Microsoft/AI-System]微软AI系统Lab9
- Lecture 3: Planning by Dynamic P
- Lecture 2: Markov Decision Proce
这节课同样讲的一些基础概念,为之后的课程做铺垫。
马尔科夫过程(Markov Processes)
S是一个有限的状态集合
P是state之间的转移矩阵 Pss‘ = P [St+1 = s’ | St = s]
那么马尔科夫过程就是<S,P>
马尔科夫奖励过程(Markov Reward Process,MRP)
马尔科夫奖励过程就是在马尔科夫过程的基础上添加了奖励机制。
同样:
S是一个有限的状态集合
P是state之间的转移矩阵
R 是一个reward function, Rs = E [Rt+1 | St = s]
γ 是一个折扣因子,取值范围 [0,1]
马尔科夫奖励过程就是 <S,P,R,γ>
定义Return Gt:

当前时刻开始,到达到最终状态所得到的所有奖励之和。
那么折扣因子是什么?为什么需要折扣因子?
γ 通俗点解释,表示有多在乎未来的奖励。γ 越大表示越在意未来的奖励,γ 越小,越在乎当下的收益,比如一些金融的交易,更在乎当下能有多少收益。
需要折扣因子的原因是1.避免return无限大。2.数学上表示方便。3.我们对我们的模型没有足够的信心,我们并不完全相信我们之后的决定 。
值函数(Value Function)
我们如何评价我们的模型当前的选择是否好呢?
我们可以用值函数来评估奖励,通过奖励来评估选择的好坏,人们最终需要达到的是奖励最大的过程。从当前状态出发,有一个转移概率转移到下一个状态,那么哪条路比较好呢?用哪一条路来作为在当前状态到最终状态的奖励呢?答案是都不行。我们需要用一个定量来评估,而这个定量就是平均值,所有可能的路径之和,也就是期望 来作为评分函数。所以:

假如路径已经确定,那么不必考虑概率的问题,直接用Reward和折扣因子计算Return 就可以。
Bellman 方程

就是一个动态规划的问题,将元问题解释为子问题一步一步的迭代。
有了Bellman方程,值函数就可以用矩阵的形式进行计算。
v = R + γPv

加入方程很小的化,可以直接求出来v。v = Inverse(I − γP)R
马尔科夫决策过程(Markov Decision Process,MDP)
同理,马尔科夫决策过程是在马尔科夫奖励过程的基础上添加了action集
马尔科夫决策过程是<S,A,P,R, γ>

有了action,就有了策略policy。policy是状态s下action的分布。

其实action和state一样都可以看作是一个状态,policy π 就是一个状态转移矩阵
但是因为action被赋予了不同的物理意义,所以在通常状态下action和state是明显的两个概念。
值函数
那么有了新的规约,值函数的意义也发生变化,

表示从状态s开始,遵循π的情况下的值函数。
同样增加了action-value fnction。

同理,两者的 bellman 方程:

矩阵形式:

最后,有了状态值函数和动作值函数,那么最优的值函数就是分数最大的那个
最优的状态值函数就是 在所有的policy中 值最大的那个。
最优的动作值函数就是在所有的policy中值最大的那个。
知道了最优的值函数之后,MDP的问题就解决了。
网友评论