一般地,在只给定原始输入观察和奖赏值的情况下,通过基于模型(model-based)或者模型无关 (model-free)的DRL算法可以学习到鲁棒的值函数。
后续状态表示法 (Successor Representation, SR)
为学习值函数提供了第 3 种选择。
model-based 和 model-free
(图片来自论文:The successor representation in human reinforcement learning)
MB: Agent 学习环境模型,利用这个模型,我们就可以进行动态规划。如果状态和动作空间巨大,对计算力就会有很大的要求。
MF: Agent 不需要对环境进行建模,将长期动作值直接存储起来,一个经典的例子就是Q-Learning ,对动作值函数 Q 存储起来。因缓存了值函数,所以计算就很高效。
SR: 结合了 MF 的高效性和 MB 的灵活性。对突出奖赏(distal reward)的变化十分敏感。有能力分解出更有价值的子目标。
Successor Representation
SR 将值函数分 解为两个部分:
- 后续状态映射图(successor map)
- 奖赏预测(reward predictor)
后续状态映射图表示在给定当前状态下到达未来某一状态占有率的期望。奖赏预测表示从状态到奖赏 值的映射。在 SR 中,这两个部分以内积的形式构成值函数.
$$ Q^\pi(s,a) = \mathbb{E}[\sum^{\infty}_{t=0}\gamma^tR(s_t)|s_0 = a,a_0 =a]$$
$$ M(s,s’,a)=\mathbb{E}[\sum^{\infty}_{t=0}\gamma^t1[s_t=s’]|s_0=s,a_0=a]$$ 其中 $1[.]$当参数为true时=1
$$ Q^{\pi} = \sum_{s’ \in S} M(s,s’,a)R(s’) $$
我们可以看到,Q 值的计算是每个时间step下带有折扣因子$\gamma$的reward之和。而SR的计算方式是先计算一个状态在未来占有率的期望,乘上 $R(s)$ 就得了该状态在未来的reward,然后将所有状态的 reward 累加起来。
Deep Successor Reinforcement Learning
理解了SR , 我们就希望能够将 SR 和深度学习模型结合起来。
很自然的想法,我们可以构造 $M(s,s’,a)$ 网络,输入是 s 和 s‘,输出是各个动作的 M 值(假设动作空间是离散的)。同样的,$R(s)$ 网络的输入是 s ,输出是该状态 s 下的 reward。
问题就是大部分环境下,状态是连续的,很明显,遍历所有状态的 M和 R 值然后计算 Q 值是不现实的。
本文作者设计的结构如下:
第一部分,状态 $s_t$ 通过卷积层(参数为 $\theta$ ),得到高阶特征,然后平铺成 512 维度特征 $\phi(s_t)$。然后使用一个简单的线性回归得到奖赏预测 $R(s_t) \approx \phi(s_t) \cdot w$ 。w 表示权值向量。
第二部分 ,基于 $\phi(s_t)$ 使用一个参数为 $\alpha$ 的深度神经网络 $u_\alpha $ 来近似表示 $m(s_t,a) \approx u_\alpha(\phi(s_t,),a)$。
为了更好的理解图中的 $m_{s,a}$,
$Q^{\pi} = \sum_{s’ \in S} M(s,s’,a)R(s’)$
$Q^{\pi} = \sum_{s’ \in S} M(s,s’,a)\phi(s’) * w$
因为 w 一旦训练好之后就是固定的,所以
$Q^{\pi} = (\sum_{s’ \in S} M(s,s’,a)\phi(s’)) * w$
我们只要构造一个网络 $m(s,a) \approx \sum_{s’ \in S} M(s,s’,a)\phi(s’)$
$Q^{\pi} = m(s,a) \cdot w$
这样就可以免去对所有状态的遍历!
因为参数 $\theta$ 训练后用来获取 $\phi(s)$, $\phi(s_t)$ 同时是第一部分和第二部分的输入,这就要求$\phi(s)$ :
1)能够准确预测 状态 s 的 reward
2)能够区分不同的状态
第一点只要最小化损失函数 $L^r_t(w,\theta) = (R(s_t)-\phi_{s_t}w)^2$,第二点我们需要使用一个深度卷积自动编码器(反卷基)重建图像,定义一个L2损失函数:$L^a_t(\theta’,\theta) = (g_{\tilde{\theta}}(\phi_{s_t})-s_t)^2$
因为
$Q(s_t,a) = R(s_t) + \gamma max_{a’}Q(s_{t+1,a’})$
$m_{s_t,a}\cdot w = \phi_{s_t} \cdot w + \gamma m_{s_{t+1,a’}}\cdot w$
$m_{s_t,a} = \phi_{s_t} + \gamma m_{s_{t+1,a’}}$
其中 $a’ = argmax_am_{s_{t+1},a} \cdot w$
所以
successor map 部分的 Loss 为:
$L^m_t(w,\theta) = \mathbb{E}[(\phi_{s_t}+\gamma u_{\alpha_{prev}}(\phi_{s_t+1},a’) - u_{\alpha}(\phi_{s_t},a))^2]$
我们先最小化 $L^r_t(w,\theta)+L^a_t(\theta’,\theta)$ 得到最优的参数$(\theta^{opt} ,w^{opt} )$,然后固定这两个参数我们最小化$L^m_t(w,\theta)$,得到最优的 $\alpha^{opt} $。
算法
这部分类似SARSA的过程。
自动子目标提取
给定一个随机策略,训练 DSR 直到收敛,我们可以获得大量的序列 $\tau = {m_{s_1,a_1},m_{s_2,a_2}…,m{s_n,a_n}}$。通过归一化割(Nomalized cut)算法 得到一些 subgoal。
这种方法的一个固有局限性是,由于随机策略,子目标候选常常非常嘈杂。此外,子目标提取算法应该是非参数的而且处理灵活数量的子目标。
实验
在两个游戏环境和DQN的比较:
为了证明SR对突出奖赏(distal reward)的变化十分敏感。
总结
第一篇将SR和深度学习模型结合。
DSR可以自动提取子目标,这就可以与分层强化学习相结合。
REF: Kulkarni T D, Saeedi A, Gautam S, et al. Deep Successor Reinforcement Learning[J]. 2016.