• self-attention 李宏毅


    Self Attention 李宏毅

    一般用于输入一个序列,经过模型输出一个序列的
    20221110194049

    20221110194202

    如上如图所示,在翻译句子词性的时候,要考虑句子上下文的关系?如何将上下文考虑进去?

    采用self attention机制,将输入的向量,经过变化输出一个考虑上下文的新的向量

    20221110205753

    也可以进行多次self attention
    20221110205806

    self attention 过程

    对于其中一个输入向量,要靠考虑与其他向量的相关性,变换后输出新的向量

    20221110205948

    如何考虑向量之间的相关性?

    20221110210020

    将一个向量与 W q W^q Wq相乘得到 q向量,同理也能得到 k 向量,两个向量进行点积,输出他们的相关性,也可以采用右侧的更复杂的模型计算相关性。 不过dot-product比较常用。

    20221110210319

    我们使用一个输入的 q 向量,和其他所有输入的 k 向量进行 dot-product,将得到的分数进行归一化 (比如 soft-max),得到的 α 1 , 1 ′ α 1 , 2 ′ α'_{1,1} α'_{1,2} α1,1α1,2等,都可以看作生成新向量的权重。

    20221110210826

    然后让 α 1 , 1 ′ α 1 , 2 ′ α'_{1,1} α'_{1,2} α1,1α1,2等分别和对应的 v 向量相乘,得到新的输出 b 1 b^1 b1

    20221110210946

    我们可以考虑将 self attention 过程进行并化处理。

    self attention 矩阵计算过程

    计算 q k v 矩阵
    20221110211152

    20221110211204

    计算相关性得分

    20221110211330

    计算输出

    20221110211501

    20221110211533

    multi-head self-attention

    输入的数据可能有多种类型的相关性。

    在得到 q k v的基础上,同一个输入计算多个 q k v 向量。
    20221110211735

    20221110211803

    20221110211835

    Positional Encoding

    在使用 self attention的时候,完全没有考虑位置关心。
    比如 q1 与 k1 k2 k3… 之间的计算,并没有什么区别,“天涯若比邻”

    向我们的计算过程中添加位置因素:
    设置位置向量 e,每一个 position对应一个位置向量 e i e^i ei,位置向量两个来源:

    • 手动设置
    • 从数据中学习到

    20221110212220

    self-attention v.s. CNN

    20221110212300

    可以将CNN看作是一种超级简化版的self-attention

    • CNN 计算一个位置的信息的时候,只考虑一个卷积核范围内的数据
    • self-attention 计算一个位置的信息时,考虑整个数据,并自动设置关系,所有更加复杂。

    20221110212544

    self-attention v.s. RNN

    20221110212645

    • RNN 要按照 time step进行计算,前后每一步之间并不能实现并行化计算
    • self-attention 可以设计并行化的实现。
  • 相关阅读:
    【Oracle】使用 SQL Developer 连接 Oracle 数据库
    JVM学习(宋红康)之运行时数据区之方法区
    falsk框架中安装flask-mysqldb报错解决方案
    Window function 优化速记
    基于Java和IntelliJ IDEA的人事管理系统
    [附源码]SSM计算机毕业设计线上图书销售管理系统JAVA
    【Leetcode刷题Python】852. 山脉数组的峰顶索引
    1024程序员节主题征文 | 35种语言输出1024
    跨境电商独立站App
    什么是多态?java 中实现多态的机制是什么?
  • 原文地址:https://blog.csdn.net/greatcoder/article/details/127796856