3.2 动作价值函数

之前介绍的Bellman方程实际上是状态价值函数, V ( s ) V(s) V(s)。除此之外我们还可以定义动作价值函数 Q ( s , a ) Q(s, a) Q(s,a),即在状态s执行动作a所获得的总奖励, Q ( s , a ) Q(s, a) Q(s,a)可以通过 V ( s ) V(s) V(s)来定义,同时也是Q-learning的基础。我们的主要目标是获得每对state和action的Q值。
Q ( s , a ) = E s ′ ∼ S [ r ( s , a ) + γ V ( s ′ ) ] = ∑ s ′ ∈ S p a , s → s ′ ( r ( s , a ) + γ V ( s ′ ) ) Q\left( s,a \right) =\mathbb{E}_{s'\sim S}\left[ r\left( s,a \right) +\gamma V\left( s' \right) \right] =\sum_{s'\in S}{p_{a,s\rightarrow s'}\left( r\left( s,a \right) +\gamma V\left( s' \right) \right)} Q(s,a)=EsS[r(s,a)+γV(s)]=sSpa,ss(r(s,a)+γV(s))
根据状态价值函数的定义我们可以用 Q ( s , a ) Q(s, a) Q(s,a)表示 V ( s ) V(s) V(s)
V ( s ) = max ⁡ a ∈ A Q ( s , a ) V(s)=\max_{a\in A}Q(s,a) V(s)=aAmaxQ(s,a)
同时我们也可得到 Q ( s , a ) Q(s, a) Q(s,a)的递推式,在DQN中有用
Q ( s , a ) = r ( s , a ) + γ max ⁡ a ′ ∈ A Q ( s ′ , a ′ ) Q(s,a)=r(s,a)+\gamma\max_{a'\in A}Q(s',a') Q(s,a)=r(s,a)+γaAmaxQ(s,a)
( s , a ) (s,a) (s,a) ( s ′ , a ′ ) (s',a') (s,a)从形式上来看是一样的,但表达的含义不同,前者表示的是已经发生的事情,即在状态 s s s采取动作 a a a,而后者表示的是还未发生的事情,即,为了到状态 s ′ s' s而采取动作 a ′ a' a,二者在具体实现上也有较大区别。

下面举一个类似于FrozenLake的网格地图例子。初始状态 s 0 s_0 s0,上下左右分别为四个目标状态 s 1 , s 2 , s 3 , s 4 s_1,s_2,s_3,s_4 s1,s2,s3,s4,并带有不同的奖励。
在这里插入图片描述
这个环境是非确定性环境,即作出一个动作后有33%的概率动作成功执行,33%的概率向指定动作左边的动作移动,33%的概率向指定动作右边的动作移动。为了简单起见,取折扣因子为 γ = 1 \gamma=1 γ=1
在这里插入图片描述
先计算动作价值。假设末状态 s 1 , s 2 , s 3 , s 4 s_1,s_2,s_3,s_4 s1,s2,s3,s4没有后续状态,所以这些状态的Q值都是0。因此 V 1 = 1 , V 2 = 2 , V 3 = 3 , V 4 = 4 V_1 = 1, V_2 = 2, V_3 = 3, V_4 = 4 V1=1,V2=2,V3=3,V4=4
Q ( s 0 , 向 上 ) = 0.33 ⋅ V 1 + 0.33 ⋅ V 2 + 0.33 ⋅ V 4 = 0.33 ⋅ 1 + 0.33 ⋅ 2 + 0.33 ⋅ 4 = 2.31 Q(s_0,向上)=0.33\cdot V_1+0.33\cdot V_2+0.33 \cdot V_4 = 0.33\cdot 1+0.33 \cdot 2 + 0.33 \cdot 4=2.31 Q(s0,)=0.33V1+0.33V2+0.33V4=0.331+0.332+0.334=2.31
Q ( s 0 , 向 左 ) = 0.33 ⋅ V 1 + 0.33 ⋅ V 2 + 0.33 ⋅ V 3 = 0.33 ⋅ 1 + 0.33 ⋅ 2 + 0.33 ⋅ 3 = 1.98 Q(s_0,向左)=0.33\cdot V_1+0.33\cdot V_2+0.33 \cdot V_3 = 0.33\cdot 1+0.33 \cdot 2 + 0.33 \cdot 3=1.98 Q(s0,)=0.33V1+0.33V2+0.33V3=0.331+0.332+0.333=1.98
Q ( s 0 , 向 右 ) = 0.33 ⋅ V 4 + 0.33 ⋅ V 1 + 0.33 ⋅ V 3 = 0.33 ⋅ 4 + 0.33 ⋅ 1 + 0.33 ⋅ 3 = 2.64 Q(s_0,向右)=0.33\cdot V_4+0.33\cdot V_1+0.33 \cdot V_3 = 0.33\cdot 4+0.33 \cdot 1 + 0.33 \cdot 3=2.64 Q(s0,)=0.33V4+0.33V1+0.33V3=0.334+0.331+0.333=2.64
Q ( s 0 , 向 下 ) = 0.33 ⋅ V 3 + 0.33 ⋅ V 2 + 0.33 ⋅ V 4 = 0.33 ⋅ 3 + 0.33 ⋅ 2 + 0.33 ⋅ 4 = 2.97 Q(s_0,向下)=0.33\cdot V_3+0.33\cdot V_2+0.33 \cdot V_4 = 0.33\cdot 3+0.33 \cdot 2 + 0.33 \cdot 4=2.97 Q(s0,)=0.33V3+0.33V2+0.33V4=0.333+0.332+0.334=2.97
状态 s 0 s_0 s0的价值是这些动作价值的最大值,即 2.97 2.97 2.97

Q值非常实用,对于agent来说,基于Q做出行动决定要比基于V简单得多。在Q的情况下,根据状态选择行动,agent只需要计算当前状态下所有可用动作的Q值,并选择Q值最大的动作。如果使用V值做同样的操作,agent不仅需要知道价值,还需要知道转移的概率,而我们很少有这方面的先验知识,agent需要估计每个动作和状态对的转移概率。说是说的简单,我们仍然缺少一个重要的东西:计算V和Q的一般方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值