价值函数与贝尔曼方程

一.价值函数

由于在面对不同的状态时,智能体需要选择最优的动作,到达更优的状态以得到更多的奖励.那么我们根据什么判别一个状态或动作的的好坏程度呢?我们引入价值函数。

价值函数的定义是:获得回报的期望

1.状态价值函数

对于状态来说,状态价值函数V_\pi (s)的定义就是:在状态S下智能体能够获得回报的期望值。利用q期望公式定义:V_\pi(s)=\mathbb{E}[G_t|S_t=s]。其中的角标\pi代表计算时按照的是策略\pi(不同的策略指导下,每个状态的状体价值函数不尽相同,大家可也思考下)。求这个期望的方式有很多种,例如动态规划法,蒙特卡洛法,时间差分法等等。

举个例子来说:当我们在状态s的时候,对于未来的动作选择一般呈树状,每个状态作为父节点连接可能的动作,动作又作为父节点连接做出动作之后可能到的状态。但我们之前定义的回报G_t只表示树中的一条通路折扣奖励加和,通路很多,计算这个回报可能很困难,在这里我们简化,去除每个“分支”,只保留主干,且省略动作。

假设只有如图几条通路,则我们根据期望的定义式,很容易理解t时刻的状态s,其状态价值函数V_\pi(s)就等于转移到每个通路上的概率(由策略决定)乘以每条路上得到的回报即

V_\pi(s)=\sum p_\pi G_i=0.1\times 100+0.4\times200+0.5\times300=240

 

2.动作-状态价值函数(动作价值函数)

类比于状态价值函数,动作-状态价值函数(简称做动作价值函数)Q_\pi(s,a),评判的是在某一状态下可选的几种动作的好坏。用期望的形式表示成Q_\pi(s,a)=\mathbb{E}[G_t|S_t=s,A_t=a],很容易理解。

3.Q-table

知道了状态价值函数与动作价值函数,我们就可以知道:当前状态的好坏,在当前状态下可选择的动作的好坏,我们就可以主动的选择好的动作,到达好的状态。所以我们可以提出一种查表方式的策略。可以定义一个表格(Q_table)来存储不同状态下不同动作的动作价值函数

Q-table
a1a2a3...an
S1Q_\pi(s1,a1)Q_\pi(s,a)Q_\pi(s,a)Q_\pi(s,a)
S2Q_\pi(s,a)Q_\pi(s,a)Q_\pi(s,a)Q_\pi(s,a)
S3Q_\pi(s,a)Q_\pi(s,a)Q_\pi(s,a)Q_\pi(s,a)
...
SnQ_\pi(s,a)Q_\pi(s,a)Q_\pi(s,a)Q_\pi(s,a)

  每当我们观测到当前的状态,就可以在表格中查找状态对应的行,选择动作价值函数最高的动作执行。所以这个输入一个状态,输出一个最佳动作的函数就是策略。更加优秀的做法就是用一个神经网络来拟合表格,我们之后会讲到。

二.贝尔曼方程

将状态-动作-状态的树画出来。我们之前将到过:状态下动作的选择是基于我们的船长——策略,动作执行过后转移到下一个状态的概率分布可以由转移函数描述。既然动作与状态,状态与动作之间存在比较紧密的关系,表征两种优劣程度的价值函数之间也应该有关系,我们分步来看。

1.价值函数之间的关系

 

 我认为,状态价值函数与其叶节点动作价值函数之间的关系很明显,就是一个加权累加,类似于全概率公式。

从数学公式上推导来说,先回顾两个价值函数的定义式:

V_\pi(s)=\mathbb{E}[G_t|S_t=s]

Q_\pi(s,a)=\mathbb{E}[G_t|S_t=s,A_t=a]

 又因为\mathbb{E}[G_t|s,a]=\sum_{a}^{} p_\pi(s,a)\mathbb{E}[G_t|s],将两个价值函数和策略的定义式分别代替期望式和概率,即得到了等式:

V_\pi(s)=\sum_{a}\pi(a|s)Q_\pi(s,a)

类似于上述,在进行动作价值函数与其叶节点的状态价值函数的计算就略显复杂,因为我们在进行完动作进入一个状态时会得到一个奖励,导致需要从回报的定义式出发进行推导,如下:

\mathbb{E}[G_t|s,a]=\mathbb{E}[R_t+ \gamma R_{t+1}+ \gamma^2 R_{t+2}+...+ \gamma^n R_{t+n}|s,a] =\mathbb{E}[R_t|s,a]+\mathbb{E}[\gamma^2R_{t+1}+...+\gamma^nR_{t+n}|s,a]

将这个期望的分为两个部分,第一部分是我们获得一步奖励的期望

\mathbb{E}[R_t|s,a]=\sum_{s}p(s'|s,a)\times r(a)

剩下的部分\mathbb{E}[\gamma^2R_{t+1}+...+\gamma^nR_{t+n}|s,a]中的累加项同时提出一个衰减系数:

\gamma R_{t+1}+...+\gamma^nR_{t+n}=\gamma(R_{t+1} + ...+ \gamma^{n-1}R_{t+n})=\gamma G_{t+1}

就是这么神奇,那剩下的部分就变成了\mathbb{E}[\gamma G_{t+1}|s,a]=\gamma \mathbb{E}[G_{t+1}|s,a]

期望式可以由下一时刻状态价值函数根据转移概率权值累加替代,剩下的部分就成为\sum_ap(s'|s,a)V_{\pi}(s')

将前后两部分相加得到:Q_{\pi}(s,a)=R^a_s+\gamma \sum_ap(s'|s,a)V_{\pi}(s')(这里用R^a_s代替

一步奖励期望\mathbb{E}[R_t|s,a]=\sum_{s}p(s'|s,a)\times r(a)更加简洁)

到此为止,我们就得到了父子节点价值函数的推导关系:

V_\pi(s)=\sum_{a}\pi(a|s)Q_\pi(s,a)

Q_{\pi}(s,a)=R^a_s+\gamma \sum_ap(s'|s,a)V_{\pi}(s')

若将这段关系进行一次递归处理,我们就可以得到贝尔曼期望方程。 

二.贝尔曼期望方程——套娃

刚才我们计算的都是两层之间的,不同种类价值函数之间的关系。如果我们扩展到三层,如下图

 那么是否可以求得新的价值函数间的关系?即:同一类价值函数之间的关系。

我们很熟悉前两层的关系:V_\pi(s)=\sum_{a}\pi(a|s)Q_\pi(s,a)

 我们也很熟悉后两层的关系:Q_{\pi}(s,a)=R^a_s+\gamma \sum_ap(s'|s,a)V_{\pi}(s')

那么,如果将第二层关于Q_{\pi}(s,a)的等式代入第一个,那么不就很自然的消除了动作价值函数。

得到后继状态S'的状态价值函数V_{\pi}(S')当前状态S的状态价值函数V_{\pi}(S)之间的关系:V_{\pi}(s)=\sum_{a}\pi(a|s) \left ( R^a_s+\gamma\sum_sp(s'|s,a)V_{\pi}(s')\right )

同样的操作,动作价值函数之间的关系:

Q_{\pi}(s,a)=R^a_s+\gamma\sum_sp(s'|s,a)\sum_a\pi(a'|s')Q_{\pi}(s',a')

  那么,上述两个等式,我们把他们称为——贝尔曼期望方程

所谓“期望”,说明可以化为期望的形式,就是将概率加权求和变为期望,这里省略步骤

V_{\pi}(s)=\mathbb{E}_{\pi}[R_{t+1}+\gamma V_{\pi}(S_t+1)|S_t=s]

Q_{\pi}(s,a)=\mathbb{E}_{\pi}[R_{t+1}+\gamma Q_{\pi}(S_{t+1},A_{t+1})|S_t=s,A_t=a]

这就是贝尔曼期望方程最优的定义式,在知道状态转移\mathcal{P}的情况下,可以化成具体的加权求和

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值