Attention Is All You Need 论文笔记

这篇博客详细解析了《Attention Is All You Need》论文,重点介绍了Transformer模型的构建,特别是Self-Attention和Multi-Head Attention机制。通过讲解Attention的计算过程,包括query、key、value的生成,以及position embedding的作用,帮助读者深入理解Transformer如何处理输入序列的全局依赖关系。

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

Attention Is All You Need 论文笔记


本文主要讲述Self-Attention机制+Transformer模型。自己看过论文与其他人文章的总结,不是对论文的完整翻译。

论文原文翻译可看这篇,翻译质量还可以。
关于Attention的讲解可以看这里:Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)
关于Transformer,这篇文章讲解很棒:The Illustrated Transformer
本文的markdown源码

背景

Attention机制允许对依赖关系进行建模,而不考虑其在输入输出中的距离。在多数情况下,Attention与循环神经网络一起使用。

Transformer模型提出的原因:循环神经网络模型无法并行计算

Tansformer模型简介

image

transformer模型

Transformer模型是纯attention模型,完全依赖attention机制来描述输入与输出的全局依赖。

在Transformer模型中,依赖关系的计算降低到固定次数(这里就是说计算速度快啦),尽管由于对用attention权重化的位置取平均降低了效果,但是我使用Multi-Head Attention进行抵消。

Self-attention,有时称为intra-attention,是一种attention机制,它关联单个序列的不同位置以计算序列的表示。

Attention & Self-Attetion
  • attention:每一步输出时,找到输入中最应该注意的部分。(对齐)
  • self-attention:在模型处理某个词时,self-attention允许模型查看其他位置,来寻找更好编码该词的线索。

论文细节

Attention

  1. 首先要计算出三个向量q,k,v。
    1. q是query,是当前要处理的词对应的向量;k是key,通过计算q与k的关系可以得到当前需要对其他词的关注度;v是value,表示的是其他单词。
    2. 这三个向量是通过训练出三个矩阵与词的embedding相乘得到。
    3. q,k,v维度一般小于embedding。(非必要,但是可以减小运算量)
    4. 在论文中,embedding维度512,q,k,v维度 d k d_k dk=64
  2. q,k相乘得到一个分数。 这里是相当于计算了一个相似度,找到当前词到其他词的相关关系。
  3. 该分数除以 d k \sqrt{d_k} dk 。这里是为了更稳定的梯度,否则做softmax容易导致一个1其他全是0。
  4. 对3中的值做softmax。softmax分数决定了在该位置其他词表达多少。显然本词自身占比会最高,但也会关注到相关的词。
  5. softmax乘以v。保留关注的词,丢弃不相关的。
  6. 对5产生的vectors求和,就产生了该位置的self-attention输出。
    A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V
### 关于 'Attention Is All You Need' 的解读 《Attention Is All You Need》是一篇由Google Brain团队发表的重要论文,首次提出了Transformer模型架构。该论文的核心贡献在于引入了一种全新的机制——自注意力(Self-Attention),它显著提高了自然语言处理任务的效果并降低了计算复杂度[^1]。 #### Transformer 架构的关键特点 Transformer摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),完全依赖于注意力机制来捕捉输入序列中的长期依赖关系。以下是其主要特性: - **多头注意力机制**:通过多个平行的注意力层捕获不同子空间的信息,增强了模型的表现力。 - **位置编码**:由于Transformer不具有像RNN那样的固有顺序结构,因此采用正弦函数形式的位置编码向量加入到词嵌入中以保留序列信息。 - **前馈神经网络**:每个位置独立地应用相同的线性变换和激活函数组成的两层全连接网络。 这些设计使得Transformer能够更高效地训练大规模数据集,并且在翻译质量上超越当时的最佳方法。 #### 可能存在的汇报PPT总结与解读资源方向 对于获取有关此论文的具体汇报材料或者深入浅出的解释文档,可以考虑以下几个途径: 1. 学术会议报告:原始作者通常会在顶级会议上展示他们的研究成果;查看NeurIPS 2017的相关演讲视频可能有所帮助. 2. 教育平台课程笔记:Coursera,Udacity等在线教育网站提供专门讲解NLP技术进展包括Transformers在内的专项课程. 3. 技术博客文章系列:Medium,Hacker Noon以及其他知名开发者社区经常发布高质量的技术分享帖文. 下面给出一段简单的Python代码用于加载预训练好的BERT模型(基于同样的原理构建),作为实际操作演示的一部分: ```python from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained("bert-base-uncased") text = "Replace me by any text you'd like." encoded_input = tokenizer(text, return_tensors='pt') output = model(**encoded_input) print(output.last_hidden_state) ``` 以上脚本展示了如何利用Hugging Face库快速实例化一个基础版别的BERT模型,并传入待分析字符串得到相应特征表示矩阵。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值