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

CS 224R 离线强化学习:第二部分

课程介绍请看第一节内容

课程回顾

离线强化学习、数据约束和保守性

离线强化学习旨在利用离线数据,重复使用离线数据是有益的。其关键挑战是由于 π β \pi_\beta πβ π θ \pi_\theta πθ 之间的偏移导致对Q值的高估。

有两种方法来约束数据:

  1. 通过显式建模 π β \pi_\beta πβ 来约束数据
    • 直观,但在实践中通常过于保守
  2. 通过惩罚Q值来隐式约束数据
    • 简单,实践中效果良好,但需要调整 α \alpha α 参数

轨迹拼接允许离线强化学习方法改进模仿学习的效果。

为什么要使用离线强化学习而不是模仿学习?

离线数据可能并不是最优的。离线强化学习可以利用奖励信息来超越行为策略的表现。好的离线强化学习方法可以拼接良好的行为。(回顾:模仿方法无法超越专家。)

离线强化学习方法可以学习从 s 1 s_1 s1 s 9 s_9 s9 的策略。

再探模仿学习在离线强化学习中的应用

加权模仿学习

如果我们有奖励标签:是否只模仿好的轨迹?

过滤行为克隆(Filtered Behavior Cloning):

  1. 按回报对轨迹排序
  2. 过滤数据集以包含前 k % k\% k% 的数据
  3. 模仿过滤后的数据集:

r ( τ ) = ∑ ( s t , a t ) ∈ τ r ( s t , a t ) D ~ : { τ ∣ r ( τ ) > η } max ⁡ π ∑ ( s , a ) ∈ D ~ log ⁡ π ( a ∣ s ) \begin{aligned} r(\tau) &= \sum_{(s_t,a_t)\in\tau} r(s_t, a_t) \\ \tilde{D} &: \{\tau \mid r(\tau) > \eta\} \\ \max_\pi &\sum_{(s,a)\in \tilde{D}} \log \pi(a \mid s) \end{aligned} r(τ)D~πmax=(st,at)τr(st,at):{τr(τ)>η}(s,a)D~logπ(as)

这是一种非常原始的利用奖励信息的方法,因此是一个很好的测试基准。

更好的加权模仿学习方法是什么?我们能否根据动作的优劣来加权每个转移?

如何衡量一个动作的优劣?回想一下优势函数 A A A

θ ← arg ⁡ max ⁡ θ E s , a ∼ D [ log ⁡ π θ ( a ∣ s ) exp ⁡ ( A ( s , a ) ) ] \theta \leftarrow \arg\max_\theta \mathbb{E}_{s,a\sim D} [\log \pi_\theta(a \mid s)\exp(A(s, a))] θargθmaxEs,aD[logπθ(as)exp(A(s,a))]

关键问题:如何估计优势函数?

优势加权回归(Advantage-Weighted Regression, AWR)

AWR算法如下:

  1. 拟合价值函数:

V ^ π β ( s ) ← arg ⁡ min ⁡ V E ( s , a ) ∼ D [ ( R s , a − V ( s ) ) 2 ] \hat{V}_{\pi_\beta}(s) \leftarrow \arg\min_V \mathbb{E}_{(s,a)\sim D} \left[ \left(R_{s,a} - V(s)\right)^2 \right] V^πβ(s)argVminE(s,a)D[(Rs,aV(s))2]

  1. 训练策略:

π ^ ← arg ⁡ max ⁡ π E s , a ∼ D [ log ⁡ π ( a ∣ s ) exp ⁡ ( 1 α ( R s , a − V ^ π β ( s ) ) ) ] \hat{\pi} \leftarrow \arg\max_\pi \mathbb{E}_{s,a\sim D} \left[ \log \pi(a \mid s)\exp \left(\frac{1}{\alpha} \left(R_{s,a} - \hat{V}_{\pi_\beta}(s)\right)\right) \right] π^argπmaxEs,aD[logπ(as)exp(α1(Rs,aV^πβ(s)))]

其中 α \alpha α 是超参数。

优点:

  • 避免查询或训练任何分布外(OOD)的动作
  • 简单

缺点:

  • 蒙特卡洛估计有噪声
  • 假设策略弱于 A ^ π β \hat{A}_{\pi_\beta} A^πβ

参考文献:

  • Peng, Kumar, Zhang, Levine. Advantage-Weighted Regression. ArXiv’19.

是否可以使用时间差分(TD)更新而不是蒙特卡洛来估计优势函数?

  1. 估计Q函数:

min ⁡ Q E ( s , a , s ′ ) ∼ D [ ( Q ( s , a ) − ( r + γ E a ′ ∼ π ( ⋅ ∣ s ) [ Q ( s ′ , a ′ ) ] ) ) 2 ] \min_Q \mathbb{E}_{(s,a,s')\sim D} \left[ \left(Q(s, a) - \left(r + \gamma\mathbb{E}_{a'\sim\pi(\cdot|s)}[Q(s', a')]\right)\right)^2 \right] QminE(s,a,s)D[(Q(s,a)(r+γEaπ(s)[Q(s,a)]))2]

  1. 估计优势函数:

A ^ π ( s , a ) = Q ^ π ( s , a ) − E a ˉ ∼ π ( ⋅ ∣ s ) [ Q ^ π ( s , a ˉ ) ] \hat{A}_\pi(s, a) = \hat{Q}_\pi(s, a) - \mathbb{E}_{\bar{a}\sim\pi(\cdot|s)}[\hat{Q}_\pi(s, \bar{a})] A^π(s,a)=Q^π(s,a)Eaˉπ(s)[Q^π(s,aˉ)]

这被称为"优势加权行动者-评论家"(Advantage Weighted Actor Critic)。

  1. 像之前一样更新策略:

π ^ ← arg ⁡ max ⁡ π E s , a ∼ D [ log ⁡ π ( a ∣ s ) exp ⁡ ( 1 α A ^ π ( s , a ) ) ] \hat{\pi} \leftarrow \arg\max_\pi \mathbb{E}_{s,a\sim D} \left[ \log \pi(a \mid s)\exp \left(\frac{1}{\alpha}\hat{A}_\pi(s, a)\right) \right] π^argπmaxEs,aD[logπ(as)exp(α1A^π(s,a))]

可能出现的问题:

  • 可能会查询OOD动作
  • 策略仍然只在数据中的动作上训练

参考文献:

  • Nair, Gupta, Dalal, Levine. AWAC. ArXiv’20.
  • Wang et al. Critic Regularized Regression. NeurIPS’20.
隐式Q学习(Implicit Q-Learning, IQL)

我们想使用TD更新来估计优势函数,而不查询OOD动作。

SARSA更新:

Q ^ π β ← arg ⁡ min ⁡ Q E ( s , a , s ′ , a ′ ) ∼ D [ ( Q ( s , a ) − ( r + γ Q ( s ′ , a ′ ) ) ) 2 ] \hat{Q}_{\pi_\beta} \leftarrow \arg\min_Q \mathbb{E}_{(s,a,s',a')\sim D} \left[ \left(Q(s, a) - \left(r + \gamma Q(s', a')\right)\right)^2 \right] Q^πβargQminE(s,a,s,a)D[(Q(s,a)(r+γQ(s,a)))2]

这给出了 V π β ( s ′ ) V_{\pi_\beta}(s') Vπβ(s) 的样本。

我们能否估计一个比 π β \pi_\beta πβ 更好的策略的Q函数?

IQL算法如下:

  1. 用expectile损失拟合Q函数:

Q ^ ( s , a ) ← arg ⁡ min ⁡ Q E ( s , a , s ′ ) ∼ D [ ( Q ( s , a ) − ( r + γ V ^ ( s ′ ) ) ) 2 ] \hat{Q}(s, a) \leftarrow \arg\min_Q \mathbb{E}_{(s,a,s')\sim D} \left[ \left(Q(s, a) - \left(r + \gamma \hat{V}(s')\right)\right)^2 \right] Q^(s,a)argQminE(s,a,s)D[(Q(s,a)(r+γV^(s)))2]

  1. 用expectile损失拟合V函数:

V ^ ( s ) ← arg ⁡ min ⁡ V E ( s , a ) ∼ D [ ℓ τ 2 ( V ( s ) − Q ^ ( s , a ) ) ] \hat{V}(s) \leftarrow \arg\min_V \mathbb{E}_{(s,a)\sim D} \left[ \ell_\tau^2 \left(V(s) - \hat{Q}(s, a)\right) \right] V^(s)argVminE(s,a)D[τ2(V(s)Q^(s,a))]

其中 ℓ τ 2 \ell_\tau^2 τ2 是assymetric MSE损失, τ < 0.5 \tau < 0.5 τ<0.5

  1. 用AWR提取策略:

π ^ ← arg ⁡ max ⁡ π E s , a ∼ D [ log ⁡ π ( a ∣ s ) exp ⁡ ( 1 α ( Q ^ ( s , a ) − V ^ ( s ) ) ) ] \hat{\pi} \leftarrow \arg\max_\pi \mathbb{E}_{s,a\sim D} \left[ \log \pi(a \mid s)\exp \left(\frac{1}{\alpha} \left(\hat{Q}(s, a) - \hat{V}(s)\right)\right) \right] π^argπmaxEs,aD[logπ(as)exp(α1(Q^(s,a)V^(s)))]

优点:

  • 无需查询OOD动作
  • 解耦行动者和评论家训练,计算速度快
  • 策略(仍然)只在数据中的动作上训练

参考文献:

  • Kostrikov, Nair, Levine. Implicit Q-Learning. ICLR’22.

条件模仿学习

回顾过滤行为克隆(Filtered Behavior Cloning):如果我们有奖励标签,是否只模仿好的轨迹?

对于某些数据集,过滤的行为克隆实际上可以很好地工作。但如果我们觉得丢弃数据不好怎么办?

回报条件策略(Return-Conditioned Policies)

也称为:倒置强化学习(Upside-Down RL)、奖励条件策略(Reward-Conditioned Policies)、决策变换器(Decision Transformers)。

  1. 模仿整个数据集:

max ⁡ π ∑ ( s , a ) ∈ D log ⁡ π ( a ∣ s , R s , a ) \max_\pi \sum_{(s,a)\in D} \log \pi(a \mid s, R_{s,a}) πmax(s,a)Dlogπ(as,Rs,a)

将策略以经验回报为条件。

优点:

  • 在测试时传入高回报
  • 可以使用序列模型

缺点:

  • 策略将学会模仿好的和差的行为(以及介于两者之间的所有行为)

问题:这种方法可以进行数据拼接吗?
问题:什么时候序列模型会有帮助?

参考文献:

  • Kumar et al. Reward-Conditioned Policies. ArXiv’19.
  • Srivastava et al. Upside-Down RL. ArXiv’19.
  • Chen*, Lu* et al. Decision Transformer. ArXiv’21.

离线评估和超参数调整

使用离线数据集 D D D 训练策略 π θ \pi_\theta πθ。策略 π θ \pi_\theta πθ 有多好?

真实目标:

max ⁡ θ ∑ t E s t ∼ d π θ ( ⋅ ) , a t ∼ π θ ( ⋅ ∣ s t ) [ r ( s t , a t ) ] \max_\theta \sum_t \mathbb{E}_{s_t\sim d_{\pi_\theta}(\cdot),a_t\sim\pi_\theta(\cdot|s_t)} [r(s_t, a_t)] θmaxtEstdπθ(),atπθ(st)[r(st,at)]

这被称为"离线策略评估"(Offline Policy Evaluation)。

策略 π θ 1 \pi_{\theta_1} πθ1 是否比策略 π θ 2 \pi_{\theta_2} πθ2 更好?

遗憾的是,没有通用、可靠的离线评估方法。这对模仿学习也是如此。

策略:

  1. 在真实世界中执行策略
    • 准确,但可能代价高昂、有风险
    • 不再是纯粹的离线(考虑使用在线数据)
  2. 在高保真模拟器或模型中评估
    • 可能足以比较策略
    • 开发模拟器很困难
  3. 有时可以使用启发式方法
    • 容易且便宜
    • 不可靠,不通用

例如,对CQL使用启发式方法进行早停:观察Q值平均峰值下降之前的情况。

参考文献:

  • Kumar*, Singh*, Tian, Finn, Levine. A Workflow for Offline Model-Free Robotic Reinforcement Learning. CoRL’21.

应用案例

案例1:在LinkedIn上优化发送通知给用户的策略

目标:最大化每周活跃用户(WAU)和点击率(CTR),同时最小化通知量。

参考文献:

  • Prabhakar, Yuan, Yang, Sun, Muralidharan. Multi-Objective Optimization of Notifications Using Offline RL. ArXiv’22.

案例2:Annie Chen, Alex Nam, Suraj Nair开发了一种可扩展收集机器人数据的算法。

参考文献:

  • Chen*, Nam*, Nair*, Finn. Batch Exploration with Examples for Scalable Robotic RL, ICRA/RA-L’21.

Rafael Rafailov重用相同的数据集,用新的离线强化学习方法训练策略:

  1. 将200张图像标记为抽屉打开或关闭
  2. 训练分类器(用于奖励信号)
  3. 用LOMPO(COMBO的前身)进行离线强化学习

参考文献:

  • Rafailov*, Yu*, Rajeswaran, Finn. Offline RL from Images with Latent Space Models, L4DC’21.

使用LOMPO,成功率为76%;不使用LOMPO,成功率较低。

使用哪种离线强化学习算法?

如果你只想进行离线训练:

  • 过滤行为克隆:很好的第一种利用离线数据的方法
  • 保守Q学习:只有一个超参数
  • 隐式Q学习:可以拼接数据,并显式约束到数据支持

如果你想进行离线预训练+在线微调:

  • 隐式Q学习:似乎表现最好

如果你有一个好的动力学模型训练方法:

  • COMBO:与CQL类似,但受益于学习到的模型

注意:这仍然是一个活跃的研究领域!

课程提醒

  • 家庭作业2今晚截止
  • 家庭作业3今天发布
  • 项目提案反馈即将发布
  • Dilip和Ansh的两个Office Hour从线下改为线上线下混合

本节课的关键学习目标:

  • 两种离线强化学习方法(以及它们何时有效和无效)
  • 调整离线强化学习方法的重要考虑因素

这些内容将在家庭作业3中涉及!

优势加权回归(Advantage-Weighted Regression, AWR)

AWR算法的示例代码如下:

import numpy as np

# 拟合价值函数
def fit_value_function(data):
    states, actions, rewards = data
    
    # 最小化平方损失
    def loss(V):
        return np.mean((rewards - V[states])**2)
    
    # 随机初始化价值函数
    V = np.random.rand(num_states)
    
    # 使用梯度下降优化
    for _ in range(num_iterations):
        V -= learning_rate * grad(loss)(V)
        
    return V

# 训练AWR策略
def train_awr_policy(data, value_function, alpha):
    states, actions, rewards = data
    
    # 计算优势
    advantages = rewards - value_function[states]
    
    # 最大化加权对数似然
    def loss(policy_params):
        log_probs = policy.log_prob(policy_params, states, actions)
        return -np.mean(log_probs * np.exp(advantages / alpha))
    
    # 随机初始化策略参数
    policy_params = np.random.rand(num_policy_params)
    
    # 使用梯度下降优化
    for _ in range(num_iterations):
        policy_params -= learning_rate * grad(loss)(policy_params)
        
    return policy_params

在这个示例中,我们首先从离线数据中拟合一个价值函数,使用平方损失和梯度下降。然后,我们计算每个状态-动作对的优势,并使用这些优势来加权策略的对数似然损失。最后,我们再次使用梯度下降来优化策略参数。

alpha是一个重要的超参数,控制着策略对优势的敏感度。alpha越小,策略就越倾向于选择具有高优势的动作。

AWR的一个优点是它避免了对任何分布外(OOD)动作进行查询或训练。这是因为在训练过程中,策略只在数据集中观察到的状态-动作对上进行更新。然而,AWR使用蒙特卡洛估计来计算优势,这可能会引入较高的方差。此外,AWR隐含地假设学习到的策略不会比数据收集策略好太多。

隐式Q学习(Implicit Q-Learning, IQL)

为了解决AWR的一些局限性,我们可以使用隐式Q学习(IQL)算法。IQL使用时序差分(TD)学习来估计Q值,避免了蒙特卡洛估计的高方差问题。此外,IQL使用一个特殊的非对称损失函数来拟合状态值函数,允许学习到的策略超越数据收集策略。

IQL算法的示例代码如下:

import numpy as np

# 拟合Q函数
def fit_q_function(data):
    states, actions, rewards, next_states = data
    
    # 最小化TD误差
    def loss(Q):
        targets = rewards + gamma * np.max(Q[next_states], axis=1)
        return np.mean((Q[states, actions] - targets)**2)
    
    # 随机初始化Q函数
    Q = np.random.rand(num_states, num_actions)
    
    # 使用梯度下降优化
    for _ in range(num_iterations):
        Q -= learning_rate * grad(loss)(Q)
        
    return Q

# 拟合状态值函数
def fit_value_function(data, q_function, tau):
    states, actions, _ = data
    
    # 最小化非对称MSE损失
    def loss(V):
        q_values = q_function[states, actions]
        return np.mean(np.where(V[states] > q_values,
                                tau * (V[states] - q_values)**2,
                                (1 - tau) * (V[states] - q_values)**2))
    
    # 随机初始化状态值函数
    V = np.random.rand(num_states)
    
    # 使用梯度下降优化
    for _ in range(num_iterations):
        V -= learning_rate * grad(loss)(V)
        
    return V

# 训练IQL策略
def train_iql_policy(data, q_function, value_function, alpha):
    states, actions, _ = data
    
    # 计算优势
    advantages = q_function[states, actions] - value_function[states]
    
    # 最大化加权对数似然
    def loss(policy_params):
        log_probs = policy.log_prob(policy_params, states, actions)
        return -np.mean(log_probs * np.exp(advantages / alpha))
    
    # 随机初始化策略参数
    policy_params = np.random.rand(num_policy_params)
    
    # 使用梯度下降优化  
    for _ in range(num_iterations):
        policy_params -= learning_rate * grad(loss)(policy_params)
        
    return policy_params

IQL首先从离线数据中拟合一个Q函数,使用标准的TD损失。然后,它使用一个特殊的非对称MSE损失来拟合状态值函数。这个损失函数对于高估值(即V(s) > Q(s,a))给予更大的惩罚,从而鼓励学习一个下限值函数。tau是控制这个非对称性的超参数,通常设置为一个较小的值(例如0.1)。

在拟合完值函数后,IQL像AWR一样计算优势并训练一个策略来最大化加权对数似然。因为IQL使用一个下限值函数,所学习到的策略可以安全地超越数据收集策略,而不会出现过度乐观估计的问题。

IQL的一个主要优点是它完全避免了对OOD动作的查询和训练。策略训练只使用数据集中观察到的状态-动作对。此外,通过使用TD学习和非对称值损失,IQL可以更有效地利用离线数据,并学习出更好的策略。

总结

AWR和IQL都是有前景的离线强化学习算法,可以从固定的离线数据集中学习策略,而无需与环境进行交互。它们通过对数据中的动作进行加权来约束学习到的策略,使其更接近数据收集策略。

AWR使用蒙特卡洛优势估计和标准对数似然目标,而IQL使用TD学习、非对称值损失和加权对数似然。IQL通常在性能上优于AWR,因为它避免了蒙特卡洛估计的高方差问题,并允许学习到的策略超越数据收集策略。

在实践中,离线RL算法通常很难调整和评估。超参数(如AWR中的alpha和IQL中的tau)可以显著影响性能,需要仔细调整。离线策略评估也是一个开放的研究问题,没有一个通用的可靠方法。常见的策略包括在实际环境中执行策略(昂贵且有风险)、在准确的模拟器中评估策略(需要大量工程)或使用启发式方法(不可靠)。

尽管存在这些挑战,离线RL在许多现实世界的应用中都很有前景,如医疗保健、教育、机器人等领域,在这些领域获得在线交互数据通常是困难的、昂贵的或有风险的。随着更多算法的发展和基准测试的进行,离线RL有望在未来得到更广泛的应用。

Offline learning 具体案例

案例:使用离线强化学习优化LinkedIn的通知发送策略

问题描述:
LinkedIn希望优化其通知发送策略,以最大化用户参与度和满意度。具体来说,他们希望学习一个策略,在给定用户状态的情况下,决定是否向该用户发送特定类型的通知。然而,在实际系统中进行在线探索和学习可能会损害用户体验并带来业务风险。因此,LinkedIn决定使用离线强化学习方法,利用历史用户交互日志作为离线数据集来学习最优策略。

解决方案:
LinkedIn的研究团队采用了多目标优势加权回归(MO-AWR)算法来解决这个问题。MO-AWR是对标准AWR算法的扩展,可以处理多个可能冲突的目标(如最大化用户参与度和最小化通知数量)。

算法流程如下:

  1. 从历史用户交互日志中构建离线数据集,其中每个数据点包括用户状态特征、通知发送决策和相应的奖励(如用户参与度指标)。

  2. 对于每个目标,使用离线数据拟合一个Q函数,估计在给定状态下采取特定动作的期望累积奖励。这里使用了时序差分(TD)学习来更新Q函数。

  3. 使用拟合的Q函数计算每个状态-动作对的多目标优势值。优势值衡量了一个动作相对于平均策略的好坏程度。

  4. 训练一个策略网络来最大化加权的多目标优势值之和。权重参数控制不同目标之间的权衡。

  5. 评估学习到的策略在离线数据上的性能,并使用启发式方法进行超参数调优(如调整目标权重)。

  6. 将学习到的策略部署到实际系统中,并持续监控其在线性能。如果需要,可以使用新收集的数据重新训练策略。

示例代码:
以下是使用PyTorch实现MO-AWR算法的简化示例代码:

import torch
import torch.nn as nn
import torch.optim as optim

class QNetwork(nn.Module):
    # Q函数网络
    def __init__(self, state_dim, action_dim):
        super(QNetwork, self).__init__()
        self.fc1 = nn.Linear(state_dim, 128)
        self.fc2 = nn.Linear(128, 128)
        self.fc3 = nn.Linear(128, action_dim)
        
    def forward(self, state):
        x = torch.relu(self.fc1(state))
        x = torch.relu(self.fc2(x))
        q_values = self.fc3(x)
        return q_values
    
class PolicyNetwork(nn.Module):
    # 策略网络
    def __init__(self, state_dim, action_dim):
        super(PolicyNetwork, self).__init__()
        self.fc1 = nn.Linear(state_dim, 128)
        self.fc2 = nn.Linear(128, 128)
        self.fc3 = nn.Linear(128, action_dim)
        
    def forward(self, state):
        x = torch.relu(self.fc1(state))
        x = torch.relu(self.fc2(x))
        action_probs = torch.softmax(self.fc3(x), dim=-1)
        return action_probs
    
def train_moawr(offline_dataset, num_objectives, weights, num_iterations):
    state_dim = offline_dataset[0][0].shape[0]  # 状态维度
    action_dim = len(offline_dataset[0][1])  # 动作维度
    
    # 初始化Q函数和策略网络
    q_networks = [QNetwork(state_dim, action_dim) for _ in range(num_objectives)]
    policy_network = PolicyNetwork(state_dim, action_dim)
    
    # 定义优化器
    q_optimizers = [optim.Adam(q_net.parameters(), lr=1e-3) for q_net in q_networks] 
    policy_optimizer = optim.Adam(policy_network.parameters(), lr=1e-3)
    
    # 训练循环
    for i in range(num_iterations):
        # 从离线数据集中采样一个批次的数据
        batch_states, batch_actions, batch_rewards = sample_batch(offline_dataset)
        
        # 计算Q值和优势值
        q_values_list = [q_net(batch_states) for q_net in q_networks]
        advantages_list = [q_values[range(len(batch_actions)), batch_actions] - torch.mean(q_values, dim=1) 
                           for q_values in q_values_list]
        
        # 计算加权的多目标优势值
        weighted_advantages = torch.sum(torch.stack([adv * w for adv, w in zip(advantages_list, weights)]), dim=0)
        
        # 更新Q函数
        for j in range(num_objectives):
            q_targets = batch_rewards[:, j] + gamma * torch.max(q_networks[j](batch_next_states), dim=1)[0]
            q_loss = nn.MSELoss()(q_values_list[j][range(len(batch_actions)), batch_actions], q_targets)
            q_optimizers[j].zero_grad()
            q_loss.backward()
            q_optimizers[j].step()
        
        # 更新策略网络
        policy_log_probs = torch.log(policy_network(batch_states)[range(len(batch_actions)), batch_actions])
        policy_loss = -torch.mean(policy_log_probs * torch.exp(weighted_advantages / alpha))
        policy_optimizer.zero_grad()
        policy_loss.backward()
        policy_optimizer.step()

在这个示例中,我们首先定义了Q函数网络和策略网络的架构。然后,我们实现了MO-AWR算法的训练循环。在每个迭代中,我们从离线数据集中采样一个批次的数据,计算每个目标的Q值和优势值,并根据给定的权重计算加权的多目标优势值。接下来,我们使用TD误差更新每个目标的Q函数,并使用加权优势值更新策略网络以最大化加权对数似然。

通过调整目标权重,我们可以控制学习到的策略在不同目标之间的权衡。例如,如果我们希望更重视用户参与度而不是最小化通知数量,我们可以为参与度目标分配更高的权重。

这个案例展示了如何使用离线强化学习来优化LinkedIn的通知发送策略。通过利用历史用户交互数据并应用MO-AWR算法,LinkedIn能够学习到一个在多个目标之间权衡的最优策略,而无需在实际系统中进行探索。这种离线学习方法减少了在线试错的风险,提高了策略更新的效率和安全性。同时,通过持续监控和重训练,离线学习到的策略也可以适应用户行为的变化和系统的演进。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值