Sample efficiency :Dropout Q-Functions for Doubly Efficient Reinforcement Learning

本文介绍了一种新的强化学习算法DropoutQ,它在REDQ的基础上引入随机dropout和层归一化,以提高算法的样本效率。DropoutQ通过减少集成Q模型的数量,同时保持计算效率,与REDQ相比有更高的性能优化。

ICLR2022
paper
code

Introduction

update-to-date(UTD)指智能体更新次数与环境交互次数的比值。高UTD能够在较少交互步数下多次更新Q价值,进而帮助提高算法的sample efficiency,例如MBPO的UTD在20-40。REDQ则是利用Q集成,实现在model-free下的高UTD。然而集成Q在SAC的计算效率(computational efficiency)较低,因此本文在REDQ基础提出Dropout Q、在一个较少数量的集成Q模型中,对价值网络添加随机dropout以及layer normalization,进一步提高算法的sample efficiency。

Method

在这里插入图片描述
在这里插入图片描述

算法维持M个 Q D r Q_{Dr} QDr网络,网络结构中包含Dropout以及Layer Normalization。
在REDQ中,对target Q的估计是从N个不带Dropout的Q函数中,随机sample出M个预测值,选取其最小值作为估计的target_Q。而DroQ则是直接设置M个 Q D r Q_{Dr} QDr

目前没有直接提供VSA(Learning Varied-Size Window Attention in Vision Transformers)论文的开源代码信息[^1]。建议关注相关作者的官方发布渠道或学术平台,例如arXiv或Google Scholar,以获取最新更新[^2]。此外,可以查阅GitHub上的Vision Transformer相关项目,尝试联系开发者或社区以获得帮助[^3]。 ### 代码示例(参考Swin Transformer实现风格) 以下是一个模拟的代码框架,可用于实现类似VSA中可变尺寸窗口注意力机制的部分逻辑: ```python import torch import torch.nn as nn class VariedSizeWindowAttention(nn.Module): def __init__(self, dim, window_sizes, num_heads, qkv_bias=True, attn_drop=0., proj_drop=0.): super().__init__() self.dim = dim self.window_sizes = window_sizes # 支持不同窗口尺寸的列表 self.num_heads = num_heads # 动态生成不同窗口大小的相对位置偏置 self.relative_position_biases = nn.ParameterList([ nn.Parameter(torch.zeros((2 * w - 1) * (2 * h - 1), num_heads)) for w, h in window_sizes ]) # 查询、键、值的线性变换 self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias) self.attn_drop = nn.Dropout(attn_drop) self.proj = nn.Linear(dim, dim) self.proj_drop = nn.Dropout(proj_drop) def forward(self, x, H, W): B, N, C = x.shape qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4) q, k, v = qkv[0], qkv[1], qkv[2] # 计算注意力矩阵 attn = (q @ k.transpose(-2, -1)) * (1.0 / (C // self.num_heads) ** 0.5) # 添加可学习的相对位置偏置 for i, (win_w, win_h) in enumerate(self.window_sizes): window_area = win_w * win_h relative_position_bias = self.relative_position_biases[i] # 假设此处通过索引将偏置添加到对应的窗口 # 实际实现需根据窗口划分逻辑调整 attn[:, :, :window_area, :window_area] += relative_position_bias attn = attn.softmax(dim=-1) attn = self.attn_drop(attn) x = (attn @ v).transpose(1, 2).reshape(B, N, C) x = self.proj(x) x = self.proj_drop(x) return x ``` 此代码框架旨在展示如何实现支持多种窗口尺寸的注意力机制,具体实现细节可能需要根据实际论文内容进行调整。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值