首页 > 其他分享 >Attention is all you need 论文阅读笔记

Attention is all you need 论文阅读笔记

时间:2024-09-18 12:19:51浏览次数:14  
标签:... Layer RNN Attention 笔记 Encoder Decoder need

Attention is all you need

Transformer only based on attention mechanisms, dispensing CNN, RNN

Introduction and Background

  • RNN 必须将前一步生成的 h t − 1 h_{t - 1} ht−1​ 作为下一次 h t h_t ht​ 的输入,导致不能并行运行计算,效率低。

  • CNN 允许在输入输出位置上并行计算,提高效率,但是在不同位置之间的信号传递需要的 Number of operations 不同,会随着位置之间的距离增长而增长,复杂度高,对较长的序列难以建模。

  • Transformer 减少操作数到 constant ,但是由于平均处理注意力权重位置,会损失细节和局部特征的辨别能力,所以引入 多头注意力(Multi-Head Attention)

    看作模拟 CNN 效果

  • Transformer 不需要序列对齐,又一个优势,处理长距离依赖关系更高效。

    [!note]

    长距离依赖

    • 自然语言中距离长,时间序列中距离长
    • RNN难捕捉,会梯度消失

Model Architecture

请添加图片描述

Encoder-Decoder stacks

  • encoder 将原始输入 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1​,x2​,...,xn​) 映射成机器可以理解的向量 ( z 1 , z 2 , . . . , z n ) (z_1,z_2,...,z_n) (z1​,z2​,...,zn​) ,decoder 拿到 encoder 的输入,生成一个长为 m 的序列 ( y 1 , y 2 , . . . , y m ) (y_1,y_2,...,y_m) (y1​,y2​,...,ym​)
  • decoder 类似 RNN ,是 auto-regressive,把前一次输出当作输入
Encoder

每个 Encoder 有 N 个 Layer,每个 Layer 有 2 个 sub-layers

  • multi-head self-attention
  • simple, position-wise fully connected feed-forward network
  • sub-layer 之后都要 Add & norm ,即为一次残差连接和 Layer Norm
Decoder

每个 Decoder 有 N 个 Layer,每个 Layer 有 3 个 sub-layers,与 Encoder 有所不同

  • 有一个 sub-layer 变成 Masked Multi-Head Attention ,遮蔽后面的信息。
  • Inserts a third sub-layer,接收 encoder 的输出

Attention

Scaled Dot-Product Attention

简单的注意力机制,只计算点积。

  • 为什么 ➗ d k \sqrt{d_k} dk​ ​ ?

    当 d k d_k dk​ 很大时,向量的长度较长,点积的值会比较大或比较小。比较大时,相对的差距大,最大值的 softmax 值接近 1,其他接近 0,计算梯度时梯度较小,造成梯度消失

Multi-Head Attention

将 queries,keys,values 线性投影 h 次,每次得到不同的投影维度,在合并起来做 Concat 得到结果

使模型可以关注来自不同子空间的信息,解决了平均化操作的抑制效果

Applications of Attention in Model

  1. 在 Encoder 中有一个 self-attention,key,query,value 来自同一个输入,完全一样。是一个 self-attention
  2. 在 Encoder-Decoder 层,queries 来自 Decoder 的输出,keys 和 values 来自 Encoder 层,这样可以提取我们想要的信息
  3. 在 Decoder 层,有一个 Masked Attention ,遮蔽后面的信息(把 weights 设置为 0 )

Position-wise Feed-Forward Networks

理解为一个 MLP,每次进行 Attention 操作得到输出之后再放入一个 MLP 中(每一个词都做一次),此时已经得到想要的信息,并且是可以并行处理的。

而使用 RNN 就必须要上一次的输出,不能并行,效率低了

Embedding and Softmax

Embedding

把输入和输出的 tokens 转换成维度为 d m o d e l d_{model} dmodel​ 的 vector

Softmax

转换 decoder 的输出,预测下一个 token 的概率

Positional Encoding

Why?

Attention 中没有时序信息,output 是 value 的加权和,与序列信息无关。如果把一句话打乱,经过 Attention 之后结果一万一样,所以需要位置编码

How?

How:RNN 把上一时刻的输出 作为下一个时刻的输入,来传递时序信息。

How:attention 在输入里面加入时序信息 --> add positional encoding to the input embeddings at the bottoms of the encoder and decoder stacks

Questions

  1. softmax 层 为什么乘 d m o d e l \sqrt{d_{model}} dmodel​

  2. Why Layer Norm instead of Batch Norm

标签:...,Layer,RNN,Attention,笔记,Encoder,Decoder,need
From: https://blog.csdn.net/wwj619wwj/article/details/142321026

相关文章

  • 【笔记】网络流量异常检测概览
    异常流量监控和拒绝服务方法研究对于保障路由器通信安全至关重要。传统的网络安全技术(例如系统入侵检测、防病毒软件、防火墙之类的)对于DDos类的攻击无法很好地防范。网络层安全研究的是什么?跟之前的声光电磁层不同,声光电磁实质上是物理层信息传输的介质,而网络层安全主要关注的......
  • 菜鸟笔记之PWN入门(1.0.0)前言
    什么是PWN?PWN是黑客术语中的俚语,是指攻破设备或者系统。它的发音类似于“砰”,当然也有师傅把它叫作“胖”。PWN的目标是获取系统的控制权或执行未经授权的操作。如何入门PWN前置知识C语言学习内容:程序结构和基础语法数据类型、分支语句(如 if、switch)和循环(如 fo......
  • SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared
    错误信息 SQLSTATE[HY000]:Generalerror:1615Preparedstatementneedstobere-prepared 表明预编译语句(preparedstatement)在执行过程中遇到了问题,需要重新准备。这种问题通常发生在以下几种情况:参数类型变化:预编译语句中的参数类型发生了变化。连接参数变化:数据库连......
  • Json笔记(狂神 1h)
    Ajax和Json(前端)需要掌握的知识SpringMVCControllerspringmvx配置文件web.xmlJavaScript引入javaScript,<script>函数选择器标签选择器类选择器id选择器#jQuery公式${选择器}.事件(参数)$(select).action(…)Web1.0时代登录,如果失败,需要刷新页......
  • CL260 学习笔记(一)
    RHCA课程须知Ceph原理及架构......
  • Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
    0前言在页面中,要实现数据更新的视图实时显示,纯JavaScrip需要手动编写代码来处理数据和视图之间的更新。而Vue提供了数据绑定的能力,使得数据和视图保持同步。我们通过一个实例来体验两者的差别。我们设计一个页面,在页面里提供一个文本框,用户可以在文本框输入内容,然后我们在文本框下......
  • 系统架构设计师教程 第5章 5.7 软件项目管理 笔记
    5.7软件项目管理★★☆☆☆5.7.1项目管理概述软件项目管理的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、硬件/软件)、要实现的任务、经历的里程碑、花费工作量......
  • Mybatis学习笔记
    1.什么是MybatisMybatis是一款优秀的持久层框架,用于简化JDBC的开发。 2.MyBatis入门2.1快速入门使用Mybatis查询所有用户数据1.准备工作(创建springboot工程、数据库表user、实体类user)2.引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)3.编写SQL语句(注......
  • opencv-python学习笔记10-图像形态学处理
    目录一、基本概念: (1)结构元素(StructuringElement):(2)膨胀(Dilation):(3)腐蚀(Erosion):(4)开运算(Opening)(5)闭运算(Closing)(6)形态学梯度(MorphologicalGradient)(7)顶帽(Top-hat)和黑帽(Black-hat)转换(8)应用领域 二、膨胀:(1)基本概念:(2)原理:(3)方法:(4)OpenCV中的膨胀函数:(5)代码示例:(6)应用领域:(7......
  • 嵌入式学习笔记
    #杂项#......