论文阅读:Attention is all you need

Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in neural information processing systems, 2017, 30.

引言

文章首先引入循环模型存在一个根本性的计算瓶颈,即循环模型通常沿输入和输出序列的符号位置进行计算,在计算时刻t,模型会根据前一时刻的隐藏状态ht-1和当前位置的输入生成新的隐藏状态ht,这种固有的顺序性导致无法在训练样本内部进行并行化计算,当序列长度增加时,由于内存限制限制了批处理(batching)的大小,这一问题变得尤为严重。

文章提出了Transformer模型架构,完全摒弃了循环和卷积,并通过完全依赖注意力机制来建立输入和输出之间的全局依赖关系,具有高度并行化和训练速度极快的特点。

模型架构

Transformer 模型摒弃了传统的循环或卷积结构,采用了基于注意力机制的编码器-解码器(Encoder-Decoder)架构。其中编码器由6个相同的层堆叠而成,每层包含两个子层:一个是多头自注意力机制,另一个是简单的基于位置的全连接前馈网络,每个子层周围都采用了残差连接随后进行层归一化;解码器由6个相同的层堆叠而成,除了编码器中的两个子层外,解码器插入了第三个子层,用于对编码器堆栈的输出执行多头注意力,解码器中的自注意力子层经过修改,引入了掩码(Masking)机制,这种掩码确保了对位置i的预测只能依赖于小于i的已知输出,从而保持了自回归属性。

对于注意力机制,缩放点积注意力输入包括查询、键和值,计算

Attention(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt{d_{k}}})V

,对于较大的dk值,点积结果的幅度会变大,导致 Softmax 函数进入梯度极小的区域,为了抵消这种影响,点积结果会除以

\sqrt{d_{k}}

进行缩放;多头注意力不再执行单一的注意力功能,而是将查询、键和值分别线性投影h次到隐藏维度,这些投影后的版本并行执行注意力功能,输出结果被拼接并再次投影,得到最终值,这种机制允许模型在不同位置关注来自不同表示子空间的信息。

除了注意力子层外,编码器和解码器的每一层都包含一个全连接的前馈网络,该网络分别且相同地应用于每个位置,由两个线性变换和中间的一个 ReLU 激活函数组成;对于嵌入层和softmax,模型使用学习到的嵌入将输入和输出token转换为dmodel的向量,在两个嵌入层和 Softmax 前的线性变换之间共享相同的权重矩阵,且在嵌入层中,权重会乘以

\sqrt{d_{model}}

由于模型不包含循环和卷积,为了利用序列的顺序信息,必须注入关于 Token 相对或绝对位置的信息【注意这里是否说明只有循环和卷积可以先天保持位置关系,即使是一维的】,位置编码被添加到编码器和解码器底部的输入嵌入中。具体而言,

PE_{(pos,2i)}=sin(pos/10000^{2i/d_{model}})

PE_{(pos,2i+1)}=cos(pos/10000^{2i/d_{model}})

。选择这种函数是因为它允许模型通过相对位置轻松学习关注,因为对于任何固定的偏移k,

PE_{pos+k}

都可以表示为

PE_{pos}

的线性函数。

为什么选择自注意力

自注意力机制连接所有位置的操作数是常数,相对的,RNN是O(N),卷积层需要

O(n/k)

O(log_k(n))

层才能连接所有对的输入输出位置。当序列长度n小于表示维度d时,自注意力层的计算速度快于循环层。此外,显而易见的是由于可以看见注意力分布,attention的可解释性是很好的。

结果

对于不同参数的作用进行了分析,对于注意力头数与维度,保持计算量不变,调整注意力头数和键/值维度,单头注意力/过多的头数都会导致质量下降;减小注意力键的维度会损害模型质量;必须使用dropout(0.0的时候性能显著下降);将正弦位置编码替换为学习到的位置嵌入,两者的结果几乎相同。作者最终选择正弦编码,是因为它可能允许模型推断出比训练期间遇到的序列更长的序列。


这里需要补充的内容:

1.关于inputs和outputs在不同任务中长什么样子

  • 考虑机器翻译任务,inputs始终是原始语言的完整句子,一次性并行处理整个句子,生成 Key 和 Value 矩阵供 Decoder 查询。decoder侧在训练时使用shifted right的标准答案句子,例如,标准翻译是 <sos> Ich liebe dich <eos>,Decoder 的输入就是 <sos> Ich liebe dich。模型预测的下一个 token。位置 0 的输入 <sos> 预测 Ich,位置1的输入 Ich 预测 liebe... 这些是并行计算的,因为使用了 Mask 机制防止看到未来(只能利用之前的信息);推理时使用自回归架构,Step 0的时候Encoder 输入 "I love you"。Decoder 输入 [<sos>]。Output 预测 Ich;Step 1:的时候Decoder 输入变成 [<sos>, Ich]。Output 预测 liebe......如此周而复始直到输出eos。
  • 上下文续写通常只使用decoder部分,但是如果坚持用encoder-decoder架构的话就把原始文本放到encoder侧,然后decoder不断生成新的东西

2.为什么token不知道自己的位置

卷积神经网络(CNN)知道位置是因为卷积核是滑动的;循环神经网络(RNN)知道位置是因为它是按时间步t依次递归计算的,但是自注意力层实际上并不清楚位置,如果不加位置编码,对于模型来说,"I eat apple" 和 "apple eat I" 在 Self-Attention层看来是完全一样的“词袋”(因为相当于只是计算上下文的东西然后更新自己的向量,前后无所谓的)。

3.为什么需要sin/cos交替

这实际上构成了一组不同频率的波。低维度的波长短变化快,高维度的波长长变化慢(导致整体出来的d_model维度的位置编码类似二进制数字),这种组合能为每个位置生成一个独一无二的编码纹理。此外,对于pos+k,其编码向量可以看作是位置pos的编码向量*一个与pos无关、只与k有关的线性变换矩阵,这意味着模型在计算 Attention时,能够很容易地学到相对位置信息(不是绝对位置100和105的关系,而是“相距5个单位之间的关系”),这使得模型具有更好的外推性,即在训练时只见过短句子,测试时遇到比训练集更长的句子,这种相对位置的规律依然成立。

4.添加位置编码不会搞脏语义特征吗

使用的是高维度的d_model,在高维空间中,向量分布是非常稀疏的。位置编码向量和词嵌入向量在数学上倾向于正交,这意味着它们占据了空间中不同的“子空间”。模型可以通过学习不同的权重矩阵将这两种信息轻易地剥离出来,此外除了残差连接,Embedding 层会将权重乘以

\sqrt{d_{model}}

,这意味着语义 Embedding 的数值量级被放大了,而位置编码 Sin/Cos 的值始终在[-1,1]之间,因此对原始语义特征的影响微乎其微。这里实际上是一种最简易的特征融合,类似相加,只不过加的东西是不可学习的罢了。


Read more

LLaMA-Factory安装教程(详细版)

LLaMA-Factory安装教程(详细版)

本机显卡双3090 使用wsl中ubuntu torch==2.6.0 conda==24.5.0 cuda==12.4 python==3.12.4(python安装不做赘述,有需要我会另开一篇文章) 一、准备工作 首先,在 https://developer.nvidia.com/cuda-gpus 查看您的 GPU 是否支持CUDA。 保证当前 Linux 版本支持CUDA. 在命令行中输入  uname -m && cat /etc/*release 输出如下,不一定完全一样,类似即可 检查是否安装了 gcc . 在命令行中输入 gcc --version

Stable Diffusion 3.5 FP8镜像商业授权说明

Stable Diffusion 3.5 FP8 镜像商业授权说明 在 AIGC 浪潮席卷全球的今天,图像生成模型早已不再是实验室里的“黑科技”,而是实实在在嵌入到电商、广告、游戏、影视等行业的生产力工具。但一个现实问题始终困扰着企业:如何在保证生成质量的前提下,把像 Stable Diffusion 3.5 这样的大模型,真正跑得快、用得起、扩得动? 答案正在浮现——FP8 量化技术 + 容器化镜像部署,正成为高性能文生图服务落地的“黄金组合”。 2024年,Stability AI 发布的新一代旗舰模型 SD3.5,凭借其强大的多模态扩散架构(MM-DiT)和卓越的排版理解能力,迅速成为行业焦点。然而,原生 FP16 版本动辄 12GB+ 的显存占用、接近秒级的推理延迟,让很多企业望而却步。

DeepSeek-R1-Distill-Llama-8B实操指南:Ollama模型HTTP API鉴权与访问控制配置

DeepSeek-R1-Distill-Llama-8B实操指南:Ollama模型HTTP API鉴权与访问控制配置 1. 模型背景与能力定位 DeepSeek-R1-Distill-Llama-8B 是 DeepSeek 推出的蒸馏系列模型之一,属于轻量级但高性价比的推理增强型文本生成模型。它并非原始大模型,而是基于 DeepSeek-R1(一个在数学、代码和复杂推理任务上表现接近 OpenAI-o1 的强推理模型)进行知识蒸馏后,适配 Llama 架构的产物。 简单来说,它把“老师模型”DeepSeek-R1 的推理能力,浓缩进了一个更小、更快、更容易部署的 8B 参数模型里。相比原始的 DeepSeek-R1-Zero(纯强化学习训练,存在重复、可读性差等问题),R1 版本通过引入冷启动监督数据,显著提升了输出稳定性与语言质量;而 Distill-Llama-8B 则进一步平衡了性能与资源消耗——它不需要 A100/H100 显卡,一台带 16GB 显存的消费级显卡或甚至高端笔记本就能流畅运行。 从公开评测数据看,

2025 嵌入式 AI IDE 全面对比:Trae、Copilot、Windsurf、Cursor 谁最值得个人开发者入手?

文章目录 * 2025 嵌入式 AI IDE 全面对比:Trae、Copilot、Windsurf、Cursor 谁最值得个人开发者入手? * 一、先给结论(个人开发者视角) * 二、2025 年 9 月最新价格与免费额度 * 三、横向体验对比(2025-11) * 1. 模型与响应 * 2. 项目理解力 * 3. 隐私与离线能力 * 四、怎么选?一句话总结 * 五、官方链接(清晰明了) * 六、结语:AI IDE 2025 的趋势 * 七、AI IDE 的底层工作原理:编辑器为什么突然变聪明了? * 1. 解析层:把你的项目拆得比你自己还清楚 * 2. 索引层: