《Successor features for transfer in reinforcement learning》论文阅读,不完整
- 前言
- **结合算法实现来看第一个例子从而回答前言的两个问题**
- **结合算法实现来看第二个例子从而回答前言的两个问题**
前言
之前读了《Universal Value Function Approximators 》一直对于论文中提到的迁移耿耿于怀于两点:
第一,这个迁移是指什么?到底何种程度的迁移,真实像文章中 说的一样,训了10个点,然后将其扩展到没有训练的其它5个点上去吗(这不就是监督学习中的泛化吗?)
第二,如果不是泛化过程,而是迁移,那技术上如何实现,是把训练好的统一值函数保存下来吗?
围绕这两个问题,看了《Successor features for transfer in reinforcement learning》,这里面的Successor features 其实与Universal Value的概念是类似的,他在此基础上明确提到了迁移,并通过一个四个房间的表格到达问题以及一个
结合算法实现来看第一个例子从而回答前言的两个问题
文章中介绍了两个实验例子:
第一个是navigation tasks defined over a two-dimensional continuous space composed of four rooms:
他的规则是找到起始点到指定点的最优路径,但是起始点和指定点其实都是固定不变得,但是里面会有1,2,3类物品也是固定放置在地图中的,但是类物品在每个回合(任务,200个)(每个回合20000步探索,动作空间是上下左右,当下一步遇到墙壁,将不更新状态)中的奖励是会变的,所以也就有了最优路径的概念(从起始点到指定点尽量靠近吃到奖励高的物品)。
这个例子中的迁移原文的描述与《Universal Value Function Approximators 》依旧是迁移到不同的任务中,也就是地图和其实目标点都不变的情况下再sample一些回合(改变每类物体的奖励),这样我勉强认为已经不是监督学习中的泛化(很勉强,端到端上的训练估计可以做到这样的泛化),但是结合技术实现的细节来看
-
首先通过
update_reward
对应线性奖励模型(方程 (2))及其梯度下降学习关于奖励的权重 w
文中假设即时奖励可线性表示为
r ( s , a , s ′ ) = ϕ ( s , a , s ′ ) ⊤ w (2) r(s,a,s') \;=\;\phi(s,a,s')^\top w\tag{2} r(s,a,s′)=ϕ(s,a,s′)⊤w(2)
并指出“将 r ≈ ϕ ⊤ w ~ r\approx\phi^\top\tilde w r≈ϕ⊤w~看作一个监督学习问题”来学习 w ~ \tilde w w~(即文中在(2)之后的段落所述)。代码中r_fit = np.sum(phi * w) self.fit_w[task_index] = w + self.alpha_w * (r - r_fit) * phi
正是对目标函数 1 2 ( r − ϕ ⊤ w ) 2 \tfrac12(r-\phi^\top w)^2 21(r−ϕ⊤w)2做随机梯度下降:
w ← w + α w ( r − ϕ ⊤ w ) ϕ . w\leftarrow w+\alpha_w\,(r-\phi^\top w)\,\phi. w←w+αw(r−ϕ⊤w)ϕ. -
第二步
update_successor
将带有w重新计算的奖励 对应贝尔曼更新(方程 (4))
论文中给出了后继特征(successor features, SFs)的贝尔曼方程:
ψ π ( s , a ) = ϕ ( s , a , s ′ ) + γ E π [ ψ π ( s ′ , π ( s ′ ) ) ] (4) \psi^{\pi}(s,a) \;=\;\phi(s,a,s') \;+\;\gamma\,\mathbb{E}_{\pi}\big[\psi^{\pi}(s',\pi(s'))\big]\tag{4} ψπ(s,a)=ϕ(s,a,s′)+γEπ[ψπ(s′,π(s′))](4)
在代码中,targets = phi.flatten() + gamma * psi[next_state][next_action,:] errors = targets - psi[state][action,:] psi[state][action,:] += alpha * errors
就是这个方程的采样版更新:
ψ ( s , a ) ← ψ ( s , a ) + α ( ϕ ( s ) + γ ψ ( s ′ , a ′ ) − ψ ( s , a ) ) , \psi(s,a)\leftarrow\psi(s,a)+\alpha\bigl(\phi(s)\!+\!\gamma\,\psi(s',a')-\psi(s,a)\bigr), ψ(s,a)←ψ(s,a)+α(ϕ(s)+γψ(s′,a′)−ψ(s,a)),
其中 p h i ( s ) = ϕ ( s , a , s ′ ) phi(s)=\phi(s,a,s') phi(s)=ϕ(s,a,s′), a ′ = π ( s ′ ) a'=\pi(s') a′=π(s′)。
通过这步就相当于把Successor features 引入了强化学习(用论文的话就是形成了马尔科夫问题),迁移的关键来了:每次任务的切换它会把Q表(也就是智能体的参数清除,但是保留这里提到的这两步中生成相关奖励的参数),这也意味着每次的任务的经验都保留了一部分带到下一个网络中去使用,个人认为这里能体现迁移的的特征大于这个实验的任务本身。其实这个操作可能隐含了一个限制:通过该方法进行迁移的话,每个任务的场景必须是相似的(至少纬度是一样的),所需要完成的任务目标必须是一致的(纬度严格限定)比如是A场景学习一个动作a,迁移到A’场景无法学习动作b,应该也是a(总结来看就是场景可以微小变化,任务目标/动作需要基本一致。(可以试试动作不一致的效果)
结合算法实现来看第二个例子从而回答前言的两个问题
第二个例子是具有两个维度的连杆机器人,分别控制中心关节和第一根和第二根连接处关节的力矩(会有角度换算),其实说白了是在学习一个逆解,第一次看到这个例子的设置感觉在作弊(按训了10个点,然后将其扩展到没有训练的其它5个点上去)的思路理解,因为我都训练逆解了你再去测试训练/其它点那肯定可以的呀(这里其实就想成泛化测试了),但是从技术实现上看,它每个任务都清除了Q网络的参数,这就说的通了,说白了是在比较在相似的环境中基本一致的目标下的重新训练的速度。这么看的话,我能理解这方面的迁移,但是与想象的迁移目标还是差的多了。