论文笔记《Gated-Attention Readers for Text Comprehension》

论文《Gated-Attention Readers for Text Comprehension》提出GA Reader模型,使用GRU并引入新的注意力机制。模型通过双向GRU处理query和doc,然后通过K层网络进行对位相乘的element-wise运算,其中每个层的输入都与上一层的输出和queryEmb进行element-wise运算。注意力机制由queryEmb与docEmb的hadamard product得到,并通过softmax处理。当K=1时,GA Reader类似于AS Reader。该模型的主要创新在于其attention机制,区别于传统的加权平均方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源1606.01549

这篇论文提出的模型叫做GA Reader,用的是GRU,GRU中的两个门及候选状态的推理公式如下:这里写图片描述


GA Reader的实现思路为:
1,对于query首先也是用双向GRU处理,然后分别获取最后的状态concate一起。
2,对于doc也是用双向GRU处理,但是是输出每个时刻的Hidden,最后concate在一起。
3,然后用一个K层网络来处理,网络第一层是1,2步处理的query_emb和doc_emb对位相乘,也就是element-wise运算,假设得到的是temp_doc,然后这个temp_doc会输出到第二层,第二层完成的运算仍然是temp_doc和query_emb的对位相乘。如此循环下去。也就是说,K层会接收从K-1层来的temp_doc,然后仍然和query_doc进行element-wise运算。
4,其实与doc进行element-wise的并不是最初输出的query_doc,而是经过了一些处理的,如下面截图中3.1.2中红圈圈出来的部分,先用query_emb和doc_emb进行乘积后,再用siftmax处理获得attention,然后把这个attention与query_doc成绩后得到的query_temp,最后在用这个query_temp与doc_emb进行element-wise运算
5,K层模型的最后一层,获取到query_emb和doc_e

### Gated Axial-Attention 方法在医学图像分割中的应用 #### 背景介绍 近年来,深度卷积神经网络 (CNNs) 已经成为医学图像分割的主要工具之一,在多个应用场景下表现出色。然而,由于其固有的局限性——难以捕捉长距离依赖关系,这限制了 CNN 的表现潜力[^3]。 #### Transformer 架构的优势 相比之下,Transformer 模型通过自注意力机制能够有效地处理序列数据间的远距离交互问题,从而提供更加丰富的特征表示能力。这种特性对于需要理解复杂空间模式的任务特别有用,比如医学影像分析[^4]。 #### MedT 中的 Gated Axial-Attention 设计理念 针对医学图像特有的挑战,即有限的数据量以及高分辨率需求等问题,研究人员提出了 Medical Transformer (MedT),它引入了一种新颖的设计——门控轴向注意力建模方式(Gated Axial-Attention)[^1]。该设计旨在解决标准 Transformers 需要大量标注样本才能良好工作的难题,并适应医疗领域内小型化且高质量的要求。 具体来说: - **门控机制**:为了增强模型的学习效率并减少过拟合风险,MedT 在传统的 Self-Attention 层之上加入了门控单元。这些门允许网络动态调整哪些部分应该被重点关注或忽略掉,进而提高了对输入信号的选择性和鲁棒性。 - **轴向注意力**:不同于常规全连接式的多头自我关注层,这里采用了分片策略来降低计算成本的同时保持足够的感受野覆盖范围。这意味着每个像素只与其所在行/列上的其他位置建立联系,而不是整个图片平面内的每一个点都相互作用。这种方法不仅简化了架构而且有助于更好地提取局部上下文信息。 ```python class GatedAxialAttention(nn.Module): def __init__(self, dim, num_heads=8, qkv_bias=False, attn_drop=0., proj_drop=0.): super().__init__() self.num_heads = num_heads head_dim = dim // num_heads self.scale = head_dim ** -0.5 # 定义查询、键和值线性变换矩阵 self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias) # 初始化门控参数 self.gate = nn.Parameter(torch.ones(num_heads)) def forward(self, x): B, H, W, C = x.shape qkv = self.qkv(x).reshape(B, H*W, 3, self.num_heads, C//self.num_heads).permute(2, 0, 3, 1, 4) q, k, v = qkv.unbind(0) # 计算注意力权重 attn = (q @ k.transpose(-2, -1)) * self.scale attn = F.softmax(attn, dim=-1) attn = self.attn_drop(attn) # 应用门控操作 gated_attn = torch.sigmoid(self.gate.view(1,-1,1,1)) * attn # 更新后的加权求和过程 x = (gated_attn @ v).transpose(1, 2).reshape(B,H,W,C) return x ``` 上述代码片段展示了如何实现一个简单的带有门控功能的轴向注意力模块。其中 `gate` 参数用来控制各个头部的重要性程度;而实际运算过程中则是通过对原始 Attention Map 施加 Sigmoid 函数得到的概率值来进行调节[^2]。 #### LoGo 策略概述 除了改进核心组件外,研究者们还开发了一套名为 “Learning from Global and Local Patches” 或简称 LoGo 的训练方案。此方法鼓励模型同时考虑整体布局与细节差异两方面因素,进一步提升了最终预测精度。具体做法是在每次迭代期间交替呈现整幅图像及其随机裁剪的小区域给定网络学习,以此促进更全面的理解能力和泛化性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值