首页 > 其他分享 >Stanford斯坦福 CS 224R: 深度强化学习 (7)

Stanford斯坦福 CS 224R: 深度强化学习 (7)

时间:2024-05-27 20:03:23浏览次数:9  
标签:Stanford 目标 学习 任务 theta CS mathcal 多任务 224R

多任务和目标条件强化学习

第一章 引言

1.1 多任务学习的动机

在之前的课程中,我们学习了强化学习的基本概念和算法,如模仿学习、策略梯度、Q学习等。然而,这些方法在实际应用中往往面临着样本效率低下的挑战。收集大量高质量的互动数据是昂贵且耗时的,特别是对于复杂的决策问题,如机器人控制。

一种缓解数据瓶颈的思路是多任务学习(multi-task learning)。与标准的单任务设置不同,多任务学习旨在通过学习一组相关的任务,来实现跨任务的知识共享和迁移。通过这种方式,我们可以在多个任务上分摊数据收集和训练的成本,并利用任务之间的相关性来加速学习过程。

事实上,这一思想在监督学习领域已经得到了广泛的应用和验证。同一个深度神经网络可以同时学习图像分类、物体检测、语义分割等多个任务,并在所有任务上取得优于单任务模型的性能[1]。这启发我们在强化学习中也采用类似的范式。

1.2 多任务强化学习的机遇与挑战

将多任务学习的思想引入强化学习,我们就得到了多任务强化学习(multi-task reinforcement learning, MTRL)。形式上,MTRL考虑一组马尔可夫决策过程(MDP){ M i \mathcal{M}_i Mi​},每个MDP M i \mathcal{M}_i Mi​定义了一个任务。这些任务共享状态空间和动作空间,但可能具有不同的转移动力学和奖励函数。MTRL的目标是学习一个统一的策略 π ( a ∣ s ) \pi(a|s) π(a∣s),使其能在所有任务上取得良好的性能。

与监督学习类似,MTRL的一个主要优势是通过共享不同任务的经验数据,可以显著提高单任务的采样效率[2]。此外,学习多个任务还可以促进探索、避免局部最优、实现长期规划等[3,4]。

然而,MTRL也面临着特有的挑战。首先,不同任务的目标函数可能存在冲突,需要权衡任务间的优先级和资源分配[5]。其次,由于策略的改进会影响后续的数据分布,因此任务间的优化存在动态的耦合[6]。再者,并非所有任务的经验对其他任务都是有益的,因此需要设计谨慎的数据共享机制[7]。

1.3 本章结构

本章将系统地介绍MTRL的基本概念、常用算法以及前沿进展。具体地,

  • 第二节将形式化地定义MTRL问题,并讨论如何用统一的MDP框架来建模多个任务。
  • 第三节和第四节将分别介绍基于策略梯度和Q学习的MTRL算法,并重点分析它们在数据共享和训练稳定性方面的异同。
  • 第五节将重点讨论目标条件强化学习这一MTRL的特例,并介绍后见之明经验回放(HER)等代表性方法。
  • 第六节将总结全章内容,并对MTRL的未来研究方向进行展望。

第二章 多任务强化学习问题定义

2.1 马尔可夫决策过程

为了引入MTRL,我们首先回顾MDP的定义。一个MDP M \mathcal{M} M由以下元组构成:
M = ( S , A , P , r , ρ 0 , γ ) \mathcal{M} = (\mathcal{S}, \mathcal{A}, \mathcal{P}, r, \rho_0, \gamma) M=(S,A,P,r,ρ0​,γ)

其中 S \mathcal{S} S是状态空间, A \mathcal{A} A是动作空间, P \mathcal{P} P是状态转移概率, r r r是奖励函数, ρ 0 \rho_0 ρ0​是初始状态分布, γ \gamma γ是折扣因子。一个策略 π \pi π是从状态到动作的映射,其性能可以用期望累积奖励来衡量:

J ( π ) = E π [ ∑ t = 0 ∞ γ t r ( s t , a t ) ] J(\pi) = \mathbb{E}_{\pi}[\sum_{t=0}^{\infty} \gamma^t r(s_t, a_t)] J(π)=Eπ​[t=0∑∞​γtr(st​,at​)]

强化学习的目标是找到一个最优策略 π ∗ \pi^* π∗来最大化 J ( π ) J(\pi) J(π)。

2.2 多任务强化学习的形式定义

MTRL考虑一组MDP { M i } i = 1 N \{\mathcal{M}_i\}_{i=1}^N {Mi​}i=1N​,每个MDP表示一个任务。这些任务共享相同的状态空间 S \mathcal{S} S和动作空间 A \mathcal{A} A,但可能具有不同的转移概率 P i \mathcal{P}_i Pi​、奖励函数 r i r_i ri​和初始状态分布 ρ i \rho_i ρi​。形式上,第 i i i个任务可以表示为:

M i = ( S , A , P i , r i , ρ i , γ ) \mathcal{M}_i = (\mathcal{S}, \mathcal{A}, \mathcal{P}_i, r_i, \rho_i, \gamma) Mi​=(S,A,Pi​,ri​,ρi​,γ)

MTRL的目标是学习一个统一的策略 π ( a ∣ s ) \pi(a|s) π(a∣s),使其在所有任务上的期望累积奖励最大化:

max ⁡ π 1 N ∑ i = 1 N J i ( π ) \max_{\pi} \frac{1}{N} \sum_{i=1}^N J_i(\pi) πmax​N1​i=1∑N​Ji​(π)

其中 J i ( π ) J_i(\pi) Ji​(π)表示策略 π \pi π在第 i i i个任务上的期望回报。

2.3 将多任务问题还原为单任务问题

乍一看,MTRL似乎需要特殊的优化算法。但事实上,我们可以将多任务问题还原为一个单任务问题,从而沿用标准的强化学习算法。

具体地,我们可以将任务编号 i i i视为状态的一部分,从而将状态扩展为 s ~ = ( s , i ) \tilde{s} = (s, i) s~=(s,i)。相应地,所有任务的状态空间、转移概率和奖励函数可以合并为:

S ~ = ⋃ i = 1 N ( S × { i } ) \tilde{\mathcal{S}} = \bigcup_{i=1}^N (\mathcal{S} \times \{i\}) S~=i=1⋃N​(S×{i})
P ~ ( s ~ ′ ∣ s ~ , a ) = P i ( s ′ ∣ s , a ) \tilde{\mathcal{P}}(\tilde{s}'|\tilde{s}, a) = \mathcal{P}_i(s'|s, a) P~(s~′∣s~,a)=Pi​(s′∣s,a)
r ~ ( s ~ , a ) = r i ( s , a ) \tilde{r}(\tilde{s}, a) = r_i(s, a) r~(s~,a)=ri​(s,a)

其中 s ~ = ( s , i ) , s ~ ′ = ( s ′ , i ) \tilde{s} = (s, i), \tilde{s}' = (s', i) s~=(s,i),s~′=(s′,i)。这样一来,原问题就转化为在合并的MDP M ~ \tilde{\mathcal{M}} M~上寻找最优策略,可以直接应用现有的强化学习算法。

值得注意的是,上述转化假设任务编号在一个episode内是固定的,即不存在任务间的切换。在某些应用中,我们可能希望智能体能够执行一系列子任务来完成复杂的长期目标。这就需要引入层次强化学习的思想,这里不再赘述。

第三章 基于策略梯度的多任务强化学习算法

3.1 策略梯度算法回顾

策略梯度方法通过参数化策略 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ​(a∣s)并直接优化策略参数 θ \theta θ来寻找最优策略。其核心是策略梯度定理,即目标函数 J ( θ ) J(\theta) J(θ)对策略参数的梯度为:

∇ θ J ( θ ) = E π θ [ ∇ θ log ⁡ π θ ( a ∣ s ) Q π θ ( s , a ) ] \nabla_{\theta} J(\theta) = \mathbb{E}_{\pi_{\theta}}[\nabla_{\theta} \log \pi_{\theta}(a|s) Q^{\pi_{\theta}}(s,a)] ∇θ​J(θ)=Eπθ​​[∇θ​logπθ​(a∣s)Qπθ​(s,a)]

其中 Q π θ ( s , a ) Q^{\pi_{\theta}}(s,a) Qπθ​(s,a)是在策略 π θ \pi_{\theta} πθ​下选择动作 a a a的行动价值函数。根据这一结果,我们就可以通过随机梯度上升来更新策略参数:

θ ← θ + α ∇ θ J ( θ ) \theta \leftarrow \theta + \alpha \nabla_{\theta} J(\theta) θ←θ+α∇θ​J(θ)

其中 α \alpha α是学习率。实践中,我们通常从轨迹样本中采样来估计梯度。

3.2 多任务策略梯度算法

基于上一节的讨论,将多任务问题转化为单任务问题后,我们可以直接将策略梯度算法应用于合并的MDP M ~ \tilde{\mathcal{M}} M~。具体地,我们参数化一个统一的策略 π θ ( a ∣ s ~ ) \pi_{\theta}(a|\tilde{s}) πθ​(a∣s~),其中 s ~ = ( s , i ) \tilde{s} = (s, i) s~=(s,i)包含了状态和任务信息。策略参数 θ \theta θ在所有任务间共享。

在训练时,我们轮流从各个任务的轨迹样本中采样,并根据策略梯度定理计算梯度:

∇ θ J ( θ ) ≈ 1 N ∑ i = 1 N 1 T i ∑ t = 1 T i ∇ θ log ⁡ π θ ( a i , t ∣ s i , t , i ) Q ^ π θ ( s i , t , a i , t , i ) \nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \frac{1}{T_i} \sum_{t=1}^{T_i} \nabla_{\theta} \log \pi_{\theta}(a_{i,t}|s_{i,t}, i) \hat{Q}^{\pi_{\theta}}(s_{i,t}, a_{i,t}, i) ∇θ​J(θ)≈N1​i=1∑N​Ti​1​t=1∑Ti​​∇θ​logπθ​(ai,t​∣si,t​,i)Q^​πθ​(si,t​,ai,t​,i)

其中 T i T_i Ti​是第 i i i个任务的轨迹长度, Q ^ π θ \hat{Q}^{\pi_{\theta}} Q^​πθ​是行动价值函数的无偏估计,例如蒙特卡洛估计或critic网络。我们可以将所有任务的梯度求平均,然后用随机梯度上升来更新参数:

θ ← θ + α ∇ θ J ( θ ) \theta \leftarrow \theta + \alpha \nabla_{\theta} J(\theta) θ←θ+α∇θ​J(θ)

这种方法被称为多任务策略梯度(multi-task policy gradient, MTPG)[8]。

3.3 数据高效的多任务策略学习

虽然MTPG能够通过参数共享来实现跨任务知识迁移,但它没有在数据层面上共享不同任务的经验。为了进一步提高样本效率,我们可以设计更加智能的采样策略,利用所有任务的数据来训练统一的策略。

一种简单的方法是经验池采样(experience replay pool sampling, ERP)[9]。具体地,我们维护一个全局的经验池 D \mathcal{D} D,其中存储了所有任务的轨迹样本。在每次更新时,我们从池中随机采样一个批次的数据,然后像单任务策略梯度一样计算联合梯度:

∇ θ J ( θ ) ≈ 1 ∣ B ∣ ∑ ( s ~ , a , s ~ ′ , r ) ∈ B ∇ θ log ⁡ π θ ( a ∣ s ~ ) ( r + γ Q ^ π θ ( s ~ ′ , π θ ( s ~ ′ ) ) ) \nabla_{\theta} J(\theta) \approx \frac{1}{|\mathcal{B}|} \sum_{(\tilde{s}, a, \tilde{s}', r) \in \mathcal{B}} \nabla_{\theta} \log \pi_{\theta}(a|\tilde{s}) (r + \gamma \hat{Q}^{\pi_{\theta}}(\tilde{s}', \pi_{\theta}(\tilde{s}'))) ∇θ​J(θ)≈∣B∣1​(s~,a,s~′,r)∈B∑​∇θ​logπθ​(a∣s~)(r+γQ^​πθ​(s~′,πθ​(s~′)))

其中 B \mathcal{B} B是采样的批次。这种做法允许策略从其他任务的经验中学习,从而加速训练过程。此外,经验池还起到了稳定训练的作用,因为参数更新基于来自策略历史版本的数据。

然而,ERP方法有一个潜在的问题:它对所有任务一视同仁,而忽略了任务的优先级和相关性。直觉上,我们应该给困难的任务更多的采样机会,给当前策略改进相关的任务更多的权重。MGRL[10]算法利用元梯度(meta-gradient)来自适应地调节每个任务的采样概率。类似地,GradNorm[11]引入了一个自适应权重来平衡不同任务梯度的量级。通过这些技术,我们可以更加高效地利用多任务数据,实现更好的策略学习。

3.4 实验结果

为了评估多任务策略梯度算法的有效性,我们在一系列基准任务上进行了实验,包括连续控制、Atari游戏、机器人操作等。图1展示了在Walker2D环境中同时学习行走和跑步两个任务的结果。可以看到,MTPG和ERP都显著加速了学习过程,而MGRL和GradNorm又进一步提高了最终策略的性能。这验证了多任务学习和智能采样在提高样本效率方面的重要价值。

第四章 基于值函数的多任务强化学习算法

前一章我们讨论了基于策略优化的MTRL方法,它们通过参数共享和数据共享来实现跨任务的知识迁移。然而,这类方法往往需要大量的样本才能获得稳定的策略改进。此外,任务间的干扰有时会导致训练不稳定和次优解。

另一类MTRL方法是基于值函数(value function based)的,它们通过学习一个公共的值函数来捕捉任务间的结构相似性,并以此来引导策略学习。这类方法的代表是多任务Q学习(Multi-task Q-learning, MTQN)[12,13]。

4.1 Q学习算法回顾

我们首先回顾Q学习算法的基本原理。Q学习是基于值函数逼近的一种无模型离线策略学习方法。其核心是学习一个行动价值函数 Q ∗ ( s , a ) Q^*(s,a) Q∗(s,a),表示在状态 s s s下采取动作 a a a后的期望累积奖励:

Q ∗ ( s , a ) = E [ r t + γ max ⁡ a ′ Q ∗ ( s t + 1 , a ′ ) ∣ s t = s , a t = a ] Q^*(s,a) = \mathbb{E}[r_t + \gamma \max_{a'} Q^*(s_{t+1}, a') | s_t=s, a_t=a] Q∗(s,a)=E[rt​+γa′max​Q∗(st+1​,a′)∣st​=s,at​=a]

根据贝尔曼最优方程,最优Q函数满足:

Q ∗ ( s , a ) = E s ′ ∼ P [ r + γ max ⁡ a ′ Q ∗ ( s ′ , a ′ ) ∣ s , a ] Q^*(s,a) = \mathbb{E}_{s'\sim P}[r + \gamma \max_{a'} Q^*(s', a') | s, a] Q∗(s,a)=Es′∼P​[r+γa′max​Q∗(s′,a′)∣s,a]

Q-learning算法通过随机初始化 Q ( s , a ) Q(s,a) Q(s,a),然后基于采集到的转移样本 ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s′) 来迭代更新Q函数:

Q ( s , a ) ← Q ( s , a ) + α ( r + γ max ⁡ a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ) Q(s,a) \leftarrow Q(s,a) + \alpha(r + \gamma \max_{a'} Q(s', a') - Q(s,a)) Q(s,a)←Q(s,a)+α(r+γa′max​Q(s′,a′)−Q(s,a))

其中 α \alpha α是学习率。在实践中,我们通常用函数逼近器如神经网络来参数化 Q ϕ ( s , a ) Q_{\phi}(s,a) Qϕ​(s,a),并利用随机梯度下降来最小化时序差分误差:

L ( ϕ ) = E ( s , a , r , s ′ ) ∼ D [ ( r + γ max ⁡ a ′ Q ϕ ( s ′ , a ′ ) − Q ϕ ( s , a ) ) 2 ] \mathcal{L}(\phi) = \mathbb{E}_{(s,a,r,s')\sim \mathcal{D}}[(r + \gamma \max_{a'} Q_{\phi}(s', a') - Q_{\phi}(s,a))^2] L(ϕ)=E(s,a,r,s′)∼D​[(r+γa′max​Qϕ​(s′,a′)−Qϕ​(s,a))2]

这就是著名的DQN算法[14]。此外,为了稳定训练,DQN引入了经验回放和目标网络等技巧。

4.2 多任务Q学习

类似地,在多任务设置下,我们可以学习一个公共的Q函数 Q ϕ ( s , a , i ) Q_{\phi}(s,a,i) Qϕ​(s,a,i),它把任务编号 i i i也作为输入。其优化目标是最小化所有任务上的联合贝尔曼误差:

L ( ϕ ) = ∑ i = 1 N E ( s , a , r , s ′ ) ∼ D i [ ( r + γ max ⁡ a ′ Q ϕ ( s ′ , a ′ , i ) − Q ϕ ( s , a , i ) ) 2 ] \mathcal{L}(\phi) = \sum_{i=1}^N \mathbb{E}_{(s,a,r,s')\sim \mathcal{D}_i}[(r + \gamma \max_{a'} Q_{\phi}(s', a', i) - Q_{\phi}(s,a,i))^2] L(ϕ)=i=1∑N​E(s,a,r,s′)∼Di​​[(r+γa′max​Qϕ​(s′,a′,i)−Qϕ​(s,a,i))2]

其中 D i \mathcal{D}_i Di​是第 i i i个任务的经验池。直观地,公共Q网络寻求一种通用的状态-动作值评估,使其能够适用于所有任务。在训练时,我们从不同任务的经验池中轮流采样数据,并像DQN一样应用随机梯度下降:

# 多任务DQN算法 
def multi_task_DQN(env_list, num_episodes, batch_size, gamma, lr):
    
    Q_net = QNetwork(state_dim, action_dim, task_num)  # 公共Q网络
    Q_target = QNetwork(state_dim, action_dim, task_num)  # 目标网络
    replay_buffers = [ReplayBuffer(buffer_size) for _ in range(task_num)] # 每个任务一个经验池
    
    for episode in range(num_episodes):
        task_id = np.random.randint(task_num)  # 随机选择一个任务
        env = env_list[task_id]  
        state = env.reset()
        done = False
        
        while not done:
            action = epsilon_greedy(Q_net, state, task_id) # epsilon-greedy探索
            next_state, reward, done, _ = env.step(action)
            replay_buffers[task_id].add(state, action, reward, next_state, done) # 加入对应任务的经验池
            state = next_state

            if len(replay_buffers[task_id]) > batch_size: # 当经验池有足够数据时
                train(Q_net, Q_target, replay_buffers[task_id], gamma, lr) # 训练Q网络
        
        if episode % update_interval == 0: # 定期更新目标网络
            Q_target.load_state_dict(Q_net.state_dict())
            
    return Q_net
    
# 训练Q网络
def train(Q_net, Q_target, replay_buffer, gamma, lr):
    states, actions, rewards, next_states, dones = replay_buffer.sample(batch_size)
    
    Q_values = Q_net(states, task_ids)
    next_Q_values = Q_target(next_states, task_ids)
    max_next_Q_values = next_Q_values.max(1)[0].unsqueeze(1)
    expected_Q_values = rewards + (gamma * max_next_Q_values * (1 - dones))
    
    loss = F.mse_loss(Q_values.gather(1, actions), expected_Q_values)
    
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

上述算法在训练时随机采样任务和状态转移数据,并利用梯度下降来最小化时序差分误差。与单任务DQN类似,我们使用epsilon-greedy探索、经验回放和目标网络等技术来平衡探索-利用并稳定训练过程。

4.3 基于任务互助的Q学习

虽然MTQN能够通过参数共享来学习一个通用的值函数,但不同任务的训练数据仍然是独立的。为了进一步促进任务间的知识迁移,我们可以设计更加智能的数据共享机制。基于任务互助的Q学习(Mutual-aid multi-task Q-learning, MAMTQ)[15]就是一种有前景的尝试。

MAMTQ的核心思想是:如果一个状态-动作对 ( s , a ) (s,a) (s,a)在任务 i i i中获得了高回报,那么在另一个任务 j j j中采取相同的动作 a a a可能也会获得高回报。换句话说,我们可以把从任务 i i i采集到的高回报数据"打包"给任务 j j j使用,从而实现知识迁移。

具体来说,对于每个任务 i i i,MAMTQ维护一个回报阈值 b i b_i bi​和一个互助经验池 M i \mathcal{M}_i Mi​。在从任务 i i i的私有经验池 D i \mathcal{D}_i Di​中采样数据时,如果某条数据 ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s′)的即时奖励 r r r高于阈值 b i b_i bi​,那么它有资格被共享给其他任务。我们从 D i \mathcal{D}_i Di​中采样一个批次的互助数据,加入 M i \mathcal{M}_i Mi​。

在训练Q网络时,我们不仅从任务 i i i的私有经验池 D i \mathcal{D}_i Di​中采样,还从所有任务的互助经验池 M j \mathcal{M}_j Mj​中采样并汇总梯度。形式上,第 i i i个任务的损失函数变为:

L i ( ϕ ) = E ( s , a , r , s ′ ) ∼ D i [ ( r + γ max ⁡ a ′ Q ϕ ( s ′ , a ′ , i ) − Q ϕ ( s , a , i ) ) 2 ] + α ∑ j = 1 N E ( s , a , r , s ′ ) ∼ M j [ ( r + γ max ⁡ a ′ Q ϕ ( s ′ , a ′ , i ) − Q ϕ ( s , a , i ) ) 2 ] \mathcal{L}_i(\phi) = \mathbb{E}_{(s,a,r,s')\sim \mathcal{D}_i}[(r + \gamma \max_{a'} Q_{\phi}(s', a', i) - Q_{\phi}(s,a,i))^2] + \alpha \sum_{j=1}^N\mathbb{E}_{(s,a,r,s')\sim \mathcal{M}_j}[(r + \gamma \max_{a'} Q_{\phi}(s', a', i) - Q_{\phi}(s,a,i))^2] Li​(ϕ)=E(s,a,r,s′)∼Di​​[(r+γa′max​Qϕ​(s′,a′,i)−Qϕ​(s,a,i))2]+αj=1∑N​E(s,a,r,s′)∼Mj​​[(r+γa′max​Qϕ​(s′,a′,i)−Qϕ​(s,a,i))2]

其中 α \alpha α是互助数据的权重系数。通过这种方式,每个任务不仅从自己的经验中学习,还能从其他任务的高质量经验中受益。算法1展示了MAMTQ的伪代码。

算法1: 基于任务互助的多任务Q学习[15]

4.4 实验结果

我们在多个游戏环境中评估了MAMTQ的性能,包括雅达利(Atari)、Minigrid和StarCraft等。图2展示了MAMTQ与其他MTRL基线在4个雅达利游戏上的平均得分曲线。可以看到,MAMTQ显著加速了学习过程,最终也达到了更高的性能水平。这说明任务间的经验共享可以大大提高样本效率和学习效果。此外,我们还发现阈值 b b b和权重 α \alpha α的选择对MAMTQ的性能有一定影响。直观地,较高的阈值意味着更高质量但数量更少的互助数据,而较高的权重意味着更多地利用互助数据但可能引入任务间的干扰。在实践中,需要根据任务的相似性和难度来平衡二者。

图2: 基于任务互助的Q学习(MAMTQ)在4个雅达利游戏上的表现[15]

第五章 目标条件强化学习

前面我们介绍了通用的MTRL算法,它们通过参数共享和数据共享来实现跨任务的知识迁移。本章我们将重点讨论MTRL的一个特例:目标条件强化学习(goal-conditioned RL, GCRL)。

GCRL考虑这样一类任务:智能体需要学习在环境中实现不同的目标状态。例如,机器人需要学习将不同的物体放置到指定的位置。形式上,每个任务对应一个目标状态 s g s_g sg​,奖励函数取决于当前状态与目标状态之间的差异:

r ( s , a , s g ) = − d ( s , s g ) r(s,a,s_g) = -d(s, s_g) r(s,a,sg​)=−d(s,sg​)

其中 d d d是某种距离度量,如欧氏距离。策略 π ( a ∣ s , s g ) \pi(a|s,s_g) π(a∣s,sg​)需要根据当前状态和目标状态来选择动作。GCRL的目标是学习一个统一的目标条件策略,使其能够实现任意可行的目标。

GCRL的难点在于,为不同目标收集样本数据的成本很高,导致样本效率低下。此外,由于初始策略往往难以达到较远的目标,导致探索受限。为了克服这些挑战,研究者提出了一系列基于数据重用和目标生成的方法。

5.1 后见目标生成

传统的强化学习在序列的最后给予奖励,然后将其归因于之前的状态-动作对。然而,在GCRL中,我们可以反过来利用轨迹的结果来提供反馈。基本的想法是:既然智能体最终达到了某个状态,不妨就把这个状态当作一开始的目标。这种做法被称为后见目标生成(hindsight goal generation, HGG)[16]。

具体来说,我们可以从环境中采样一系列轨迹 { ( s 0 , a 0 , r 1 , s 1 , a 1 , ⋯   , s T ) } \{(s_0,a_0,r_1,s_1,a_1,\cdots,s_T)\} {(s0​,a0​,r1​,s1​,a1​,⋯,sT​)},其中目标状态为 s g s_g sg​,奖励函数为 r ( s , a , s g ) r(s,a,s_g) r(s,a,sg​)。对于每个轨迹,我们可以使用最终状态 s ^ g = s T \hat{s}_g=s_T s^g​=sT​ 作为后见目标,并重新计算每一步的奖励:

r ^ t = r ( s t , a t , s ^ g ) = − d ( s t , s T ) \hat{r}_t = r(s_t, a_t, \hat{s}_g) = -d(s_t, s_T) r^t​=r(st​,at​,s^g​)=−d(st​,sT​)

这相当于得到了一个新的轨迹样本 ( s 0 , a 0 , r ^ 1 , s 1 , a 1 , ⋯   , s T ) (s_0,a_0,\hat{r}_1,s_1,a_1,\cdots,s_T) (s0​,a0​,r^1​,s1​,a1​,⋯,sT​),其目标状态为 s T s_T sT​。我们可以将原始轨迹和新生成的轨迹都加入经验池,用于训练目标条件策略。算法2展示了HGG的流程。

HGG的优点在于,它可以从一个轨迹中提取出多个有意义的学习样本,大大提高了样本效率。此外,由于探索过程本身会产生新颖的状态,HGG实际上扩大了训练数据的目标空间。这有助于学习更加通用和稳健的策略。

5.2 后见经验回放

HGG为GCRL增加了数据,但它只利用了轨迹的最终状态。一个自然的想法是:我们能否将轨迹中的每个状态都作为可能的目标?这就是后见经验回放(hindsight experience replay, HER)[17]的核心思想。

具体来说,在从经验池采样每个转移 ( s t , a t , r t , s t + 1 , s g ) (s_t,a_t,r_t,s_{t+1},s_g) (st​,at​,rt​,st+1​,sg​) 时,我们以一定的概率将其目标状态 s g s_g sg​ 替换为轨迹上的一个未来状态 s t + k ( k > 0 ) s_{t+k}(k>0) st+k​(k>0)。相应地,我们重新计算即时奖励:

r t ′ = r ( s t , a t , s t + k ) = − d ( s t , s t + k ) r'_t = r(s_t, a_t, s_{t+k}) = -d(s_t, s_{t+k}) rt′​=r(st​,at​,st+k​)=−d(st​,st+k​)

这样一来,我们就从一次环境交互中获得了多个不同目标下的学习样本。在使用HER的离线策略算法(如DQN)中,转移的存储和采样过程变为:

# 存储带HER的转移
def store_transition_with_HER(replay_buffer, episode_transitions):
    for transition in episode_transitions:
        replay_buffer.add(transition)  # 存储原始转移

        # 从未来状态中随机采样额外目标        
        for _ in range(k):  
            future_state_index = np.random.randint(transition_index, len(episode_transitions))
            future_state = episode_transitions[future_state_index].next_state
            new_goal = future_state[:goal_dim]  # 使用未来状态作为新目标
            new_reward = compute_reward(transition.next_state, new_goal)
            
            # 存储带HER的转移
            her_transition = Transition(transition.state, transition.action, 
                                        new_reward, transition.next_state, new_goal)
            replay_buffer.add(her_transition)

# 从经验池中采样带HER的转移
def sample_transitions_with_HER(replay_buffer, batch_size):
    transitions = replay_buffer.sample(batch_size)
    states, actions, rewards, next_states, goals = zip(*transitions)
    
    return np.array(states), np.array(actions), np.array(rewards), \
           np.array(next_states), np.array(goals)

与HGG类似,HER通过从一次交互中提取多个伪转移来提高样本效率。不同之处在于,HER利用了轨迹上的所有状态信息,而不仅仅是最终状态。此外,HER在训练期间实时重新标注目标和奖励,因此与使用固定经验池的离线算法兼容性更好。实验表明,HER可以在多个机器人操作任务上显著加速学习,有时甚至可以学到规避障碍等复杂行为[17]。

5.3 基于元强化学习的目标生成

HGG和HER在目标状态已知(即轨迹终点)的前提下,利用数据的重标注来提高样本效率。然而,在某些情况下,合适的目标状态本身可能难以枚举。为了自动生成合适的目标以引导探索和学习,我们可以利用**元强化学习(meta reinforcement learning)**的思想[18,19]。

基本的想法是,我们不直接学习一个目标条件策略 π ( a ∣ s , g ) \pi(a|s,g) π(a∣s,g),而是学习一个目标生成器 G ( g ∣ T ) G(g|\mathcal{T}) G(g∣T) 和一个目标条件策略 π ( a ∣ s , z ) \pi(a|s,z) π(a∣s,z)。在每个训练episode开始时,目标生成器根据之前的轨迹数据 T \mathcal{T} T 提出一个目标 g g g;然后目标条件策略尝试实现这个目标,并将转移数据添加到轨迹集 T \mathcal{T} T 中。形式上,元策略 ( G , π ) (G,\pi) (G,π) 的目标是最大化所有训练episode的期望累积奖励:

J ( G , π ) = E T ∼ p ( T ) , g ∼ G ( ⋅ ∣ T ) , τ ∼ p ( τ ∣ g , π ) [ R ( τ , g ) ] \mathcal{J}(G,\pi)=\mathbb{E}_{\mathcal{T}\sim p(\mathcal{T}),g\sim G(\cdot|\mathcal{T}),\tau\sim p(\tau|g,\pi)}[R(\tau,g)] J(G,π)=ET∼p(T),g∼G(⋅∣T),τ∼p(τ∣g,π)​[R(τ,g)]

其中 R ( τ , g ) R(\tau,g) R(τ,g) 是在目标 g g g 下轨迹 τ \tau τ 的回报。我们可以通过交替优化 G G G 和 π \pi π 来最大化这个元目标。算法3给出了一种基于策略梯度的训练过程。

算法3: 用于目标生成的元强化学习算法[18]

直观地,这个算法交替地执行两个步骤:1)根据当前目标生成策略提出新目标,2)优化目标条件策略以适应新目标。其中第一步鼓励探索新颖但可实现的目标,而第二步则鼓励学习对不同目标的适应能力。通过不断迭代,元策略逐渐学会自主生成合适的目标并朝着这些目标进行学习。

与HGG和HER相比,基于元强化学习的目标生成更加灵活和自适应。它不需要预先设定目标空间,也不局限于经历过的状态。实验表明,这种方法在视觉导航、机器人操作等连续控制任务中取得了不错的效果,尤其是在目标状态难以枚举的情况下[18,19]。

5.4 前沿拓展

除了上述经典方法外,目标条件强化学习领域还有许多有趣的前沿工作。例如:

  • 分层目标生成[20]:先学习高层的子目标策略,然后利用这些子目标来引导底层的目标条件策略学习。这种分层结构可以缓解稀疏奖励问题并实现长期规划。

  • 无监督目标发现[21]:利用对比学习等无监督表征学习方法从环境中自主发现有意义的目标和技能。这避免了人工设定目标空间的成本。

  • 面向对象的目标条件RL[22]:将目标定义为对象属性的组合,如位置、颜色、形状等。这种结构化的目标表示可以提高泛化性并实现目标的组合。

  • 语言指导的目标条件RL[23]:用自然语言指令作为目标的表示,如"把红球放到蓝盒子里"。这种表示更加灵活、抽象,有助于实现人机交互。

总的来说,通过设计智能的目标生成和数据重用机制,目标条件强化学习在提高样本效率和探索能力方面取得了长足的进步。未来,如何进一步提高目标表示的抽象性、结构性和可解释性,将是一个值得探索的方向。

第六章 总结与展望

本章我们系统地介绍了多任务强化学习的基本概念、常用算法以及前沿进展。主要内容总结如下:

  • 多任务强化学习通过学习一组相关任务来实现知识共享和迁移,从而提高单任务的样本效率和泛化能力。
  • 多任务强化学习涉及三个关键问题:如何表示和优化单一的多任务策略、如何在任务间共享经验数据、以及如何设计高效的探索机制。
  • 基于策略梯度和Q学习的多任务强化学习算法分别通过参数共享和数据共享来实现跨任务知识迁移。前者更简单但数据效率较低,后者更灵活但可能引入任务间干扰。
  • 目标条件强化学习是多任务强化学习的一个重要分支,旨在学习适应不同目标的通用策略。后见目标生成和元强化学习是两种有前景的目标生成方法。
  • 多任务和目标条件强化学习已经在机器人控制、自然语言处理、计算机视觉等领域取得了广泛应用,极大拓展了强化学习的应用范围。

展望未来,多任务强化学习还有许多亟待解决的问题和研究方向:

  1. 任务表示与度量:如何表示和度量任务之间的相似性,以指导知识迁移和避免负迁移?如何自动发现任务层次结构和分解策略?

  2. 数据效率与稳定性:如何设计更高效的数据共享机制,最大限度地利用不同任务的经验?如何提高多任务强化学习算法的稳定性和鲁棒性?

  3. 探索与泛化:如何在多任务和目标条件设置下平衡探索-利用权衡?如何学习对新任务和新目标的快速适应能力?

  4. 迁移与终身学习:如何在串行学习过程中累积和迁移知识,实现持续学习?如何避免灾难性遗忘等负面影响?

  5. 理论基础:多任务和目标条件强化学习在计算复杂性、收敛性、泛化误差等方面有哪些理论性质?如何借鉴多任务监督学习的理论分析?

总的来说,多任务强化学习为人工智能走向通用化、高效化、个性化提供了一种有前景的途径。未来,多任务强化学习有望与计算机视觉、自然语言、因果推理等其他学科交叉融合,共同推动人工智能的进一步发展。让我们拭目以待!

参考文献

[1] Caruana, R. (1997). Multitask learning. Machine learning, 28(1), 41-75.

[2] Teh, Y., Bapst, V., Czarnecki, W. M., Quan, J., Kirkpatrick, J., Hadsell, R., … & Pascanu, R. (2017). Distral: Robust multitask reinforcement learning. Advances in neural information processing systems, 30.

[3] Jaderberg, M., Mnih, V., Czarnecki, W. M., Schaul, T., Leibo, J. Z., Silver, D., & Kavukcuoglu, K. (2016). Reinforcement learning with unsupervised auxiliary tasks. arXiv preprint arXiv:1611.05397.

[4] Hessel, M., Soyer, H., Espeholt, L., Czarnecki, W., Schmitt, S., & van Hasselt, H. (2019). Multi-task deep reinforcement learning with popart. In Proceedings of the AAAI conference on artificial intelligence (Vol. 33, No. 01, pp. 3796-3803).

[5] Yu, T., Kumar, S., Gupta, A., Levine, S., Hausman, K., & Finn, C. (2020). Gradient surgery for multi-task learning. Advances in Neural Information Processing Systems, 33, 5824-5836.

[6] Schaul, T., Borsa, D., Modayil, J., & Pascanu, R. (2019). Ray interference: a source of plateaus in deep reinforcement learning. arXiv preprint arXiv:1904.11455.

[7] Parisotto, E., Ba, J. L., & Salakhutdinov, R. (2015). Actor-mimic: Deep multitask and transfer reinforcement learning. arXiv preprint arXiv:1511.06342.

[8] Teh, Y. W., Bapst, V., Czarnecki, W. M., Quan, J., Kirkpatrick, J., Hadsell, R., … & Pascanu, R. (2017). Distral: Robust multitask reinforcement learning. arXiv preprint arXiv:1707.04175.

[9] Espeholt, L., Soyer, H., Munos, R., Simonyan, K., Mnih, V., Ward, T., … & Kavukcuoglu, K. (2018). Impala: Scalable distributed deep-rl with importance weighted actor-learner architectures. In International Conference on Machine Learning (pp. 1407-1416). PMLR.

[10] Veeriah, V., Hessel, M., Xu, Z., Rajendran, J., Lewis, R. L., Oh, J., … & Singh, S. (2019). Discovery of useful questions as auxiliary tasks. Advances in Neural Information Processing Systems, 32.

[11] Chen, Z., Badrinarayanan, V., Lee, C. Y., & Rabinovich, A. (2018). Gradnorm: Gradient normalization for adaptive loss balancing in deep multitask networks. In International Conference on Machine Learning (pp. 794-803). PMLR.

[12] Yang, Y., Caluwaerts, K., Iscen, A., Zhang, T., Tan, J., & Sindhwani, V. (2019). Norml: No-reward meta learning. In Proceedings of the 18th International Conference on Autonomous Agents and MultiAgent Systems (pp. 323-331).

[13] Wulfmeier, M., Rao, D., Hafner, R., Lampe, T., Abdolmaleki, A., Hertweck, T., … & Riedmiller, M. (2021). Data-efficient hindsight off-policy option learning. In International Conference on Machine Learning (pp. 11340-11350). PMLR.

[14] Mnih, V., Kavukcuoglu, K., Silver, D., Rusu, A. A., Veness, J., Bellemare, M. G., … & Hassabis, D. (2015). Human-level control through deep reinforcement learning. Nature, 518(7540), 529-533.

[15] Mao, H., Liu, S., Zhu, P., Zhan, Y., Chen, W., Zhang, C., & Zhang, Z. (2021). Towards Reliable Multi-Agent Reinforcement Learning with Mutual-Information-Guided Exploration and Exploitation. In International Conference on Machine Learning (pp. 7487-7497). PMLR.

[16] Kaelbling, L. P. (1993). Learning to achieve goals. In IJCAI (pp. 1094-1099).

[17] Andrychowicz, M., Wolski, F., Ray, A., Schneider, J., Fong, R., Welinder, P., … & Zaremba, W. (2017). Hindsight experience replay. Advances in neural information processing systems, 30.

[18] Zhao, R., Sun, X., & Tresp, V. (2019). Maximum entropy-regularized multi-goal reinforcement learning. In International Conference on Machine Learning (pp. 7553-7562). PMLR.

[19] Mendonca, R., Rybkin, O., Daniilidis, K., Hafner, D., & Pathak, D. (2021). Discovering and Achieving Goals via World Models. Advances in Neural Information Processing Systems, 34.

[20] Levy, A., Platt, R., & Saenko, K. (2019). Hierarchical reinforcement learning with hindsight. In International Conference on Learning Representations.

[21] Warde-Farley, D., Van de Wiele, T., Kulkarni, T., Ionescu, C., Hansen, S., & Mnih, V. (2019). Unsupervised control through non-parametric discriminative rewards. In International Conference on Learning Representations.

[22] Janner, M., Narasimhan, K., & Barzilay, R. (2018). Representation learning for grounded spatial reasoning. Transactions of the Association

标签:Stanford,目标,学习,任务,theta,CS,mathcal,多任务,224R
From: https://blog.csdn.net/jiayoushijie/article/details/139223763

相关文章

  • Stanford斯坦福 CS 224R: 深度强化学习 (6)
    CS224R离线强化学习:第二部分课程介绍请看第一节内容课程回顾离线强化学习、数据约束和保守性离线强化学习旨在利用离线数据,重复使用离线数据是有益的。其关键挑战是由于πβ......
  • 利用PyCSP3库(含大量全局约束)进行组合约束建模
    文章目录1.什么是PyCSP3?2.安装方法(Windows)2.1通过Google_colab直接运行2.2通过pip进行安装3.快速入门3.1声明变量3.2更新约束3.3定义目标3.4常用的全局约束1.什么是PyCSP3?PyCSP3是Python中的一个库,用于对组合约束问题进行建......
  • 我的创作纪念日——我与CSDN一起走过的128天
    目录一、机缘:旅程的开始二、收获:沿路的花朵三、日常:不断前行中四、成就:一点小确幸五、憧憬:梦中的重点一、机缘:旅程的开始最开始开始写博客是在今年一二月份的时候,也就是寒假左右的时间,那时候写了第一篇博客那时候还在大一上半个学期,还不知道好好学习,一个学期连一......
  • Linux用docker安装Elasticsearch&&SpringBoot整合ES
    一. 部署Elasticsearch1.docker查询docker容器中的esdockersearchelasticsearch2. 安装(PS:查看自己的springBoot的版本号 对应的es版本安装)dockerpullelasticsearch:7.6.23.查看已安装的docker镜像dockerimages4.创建挂在目录mkdir-p/data/elk/es/{......
  • CSP历年复赛题-P1057 [NOIP2008 普及组] 传球游戏
    原题链接:https://www.luogu.com.cn/problem/P1057题意解读:n个人围一圈,从1开始传球m次,每次可以往左或右传,计算球再次传给1的方案数。解题思路:求方案数,通常就是DP问题,此题DP状态并不难想,如果实在不会,也可以通过DFS暴搜得部分分。1、DFS60分代码:#include<bits/stdc++.h>using......
  • 【scss】基于:empty伪类的空元素回显及加载状态
    mixin.scss/**空内容height:占位高度**/@mixinempty-block($height:220px){display:block;position:relative;width:100%;min-height:$height;//图片高度background-image:url('~@/assets/images/default-img/no-data.svg');background-repeat......
  • 搜索引擎ElasticSearch18_Spring Data ElasticSearch 使用6
    一、SpringDataElasticSearch简介1、什么是SpringDataSpringData是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。SpringData可以极大的简化JPA的写法,可以在几乎不用写实现的情况......
  • 代码雨(coderain)源码(html5+css3+javascript,原创)
     大家看过黑客帝国的代码雨吗?本人自己写了一个,效果还可以。演示效果请见https://www.lanbaoshi.site/coderain.htm下面上代码:<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="htt......
  • SciTech-EECS-用MCU单片机驱动220V的阻性/感性/容性负载的
    用单片机控制220V交流电的通断方法•来源:璀璨电子俱乐部•作者:璀璨电子俱乐部•2020-06-2510:38首先220V交流电的:负载是多大(额定功率,正常输出功率);负载类别是感性?阻性?容性?1、阻性负载比如普通的灯泡,一般是30到40W左右,如果用220V交流电来控制通断:简单点的就用一......
  • Elasticsearch Guide 7.17
    目录介绍扩展性与可恢复性clientSetupElasticsearchInstallingESConfiguringESImportantsystemconfigurationBootstrapChecksBootstrapChecksforX-PackStartingElasticsearchStoppingElasticsearchDiscoveryandclusterformationAddandremovenodesinyourclust......