• 【论文阅读】attention is all you need


    1.论文链接

    Attention Is All You Need

    2.论文主要为了解决什么问题?

    1. 传统的RNN不能并行处理,如果想要有 h i h_{i} hi,必须要有 h i − 1 h_{i-1} hi1作为输出
    2. 传统的CNN的跨度太大
    3. 以上两个不是很好的能够捕捉到很久之前的信息

    3.模型流程

    在这里插入图片描述
    由于这个模型的过程比较多,因此只选择了部分有代表性的来说明

    layer normalization

    首先常见的有batch normalization,就是对于特定特征 f e a fea fea,将其每一个样本 f e a i fea_i feai构成的集合,调整为均值为0,方差为1的序列。那我们为什么不这么选呢?首先我们会在没有数据的地方放置0,因此如果出现了一个特别长的序列,我们整个样本的值和可信度就会收到影响,因此我们选择layer normalization

    layer normalization:对于一个单个样本 i i i,将其所有特征组成的集合调整为均值为0,方差为1的序列。

    Scaled Dot-Product Attention

    在这里插入图片描述
    此处是用来计算QK的相似度的,除以 d k \sqrt{d_k} dk 是因为经过softmax之后有的会很接近0,防止训练的时候梯度消失。

    MASK操作

    在这里插入图片描述

    首先我们知道,transformer这个模型如果不去看postional encode的话是没有时序信息的。在encode的时候没有问题,我们能够看到完整的输入。但是在decode的时候就有问题了,他只能看到之前位置的输出结果。所以在decode的时候,将对应位置直接设置成一个非常小的数字,比如 1 e − 10 1e^{-10} 1e10,这样经过softmax之后概率就是0.

    Positional Encoding

    在这里插入图片描述

    因为我们没有位置信息,所以我们要编码一个位置信息放进去。

    4.论文创新点

    1. 直接放弃了传统的RNN和CNN的结构,全文用的都是attention机制,追求并行度。
    2. 虽然直接放弃了RNN结构,但是由于位置信息是非常重要的,他又加入了Positional Encoding保留位置信息
    3. 用点积作为相似度
    4. 没用batchnorm而用的是layernorm

    5.本文可能潜在改进的地方

    觉得算相似度可以直接用余弦值来计算(一个猜测)

    6.本论文收到了哪些论文启发?

    传统的RNN CNN
    seq with attention

    7.参考链接

    别人的博客

    李沐 transformer解读

  • 相关阅读:
    任务调度线程池
    从猿六年---C++笔试\面试的不成熟小建议来啦
    百度强推并发编程笔记我爱了,原来这才叫并发
    【ES6】阮一峰ES6学习(五)Set和Map联系及区别
    C#WPF框架MvvMLight应用实例
    这几个方法,直接让你的API接口飞起来
    CSDN编程竞赛-第六期(下)
    Windows中使用GCC介绍
    C++学习一--从C到C++
    Java中对date数据做加减时间运算——Calendar类
  • 原文地址:https://blog.csdn.net/capsnever/article/details/127100742