• [李宏毅] self attention 个人笔记


    https://www.bilibili.com/video/BV1JA411c7VT?p=11&spm_id_from=333.880.my_history.page.click&vd_source=14d17a501a1dad78c613f1ba7f8f947c

    输入输出

    传统神经网络的输入是一个向量。

    self attention

    • 输入:一组向量,且长度可以不固定。比如
      • NLP:一个句子由一些词组成,每个词是一个向量,长度固定;但一个句子由多少词是不确定的。
      • 一段声音信号,每个窗口用一个向量表示
      • 一个graph:each node as a vector
    • 输出:三种情况
      • 每个vector都有一个输出(sequence labeling)
        • NLP:词性标注 POS taggin
        • 声音信号:每一个frame的元音?
        • graph:每个人会不会买这个商品
      • 整个sequence有一个输出
        • NLP: sentiment analysis: 这段话是消极还是积极
        • 声音信号:这是谁说的
        • graph:这个分子是否亲水
      • 不知道多少个输出label,机器自己决定 (seq2seq)
        • NLP : 语言翻译
        • 声音信号:语音识别

    过程:

    scalar角度:如何从a求b (single head, w.o. PE)

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    矩阵乘法角度:如何从a求b (single head, w.o. PE)

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    multi head

    就是使用多组qkv,得到多组b,这些b拼接起来乘W得到最终的b.
    在这里插入图片描述

    PE

    实际上还需要把position encoding和a相加再操作。
    在这里插入图片描述

    应用

    主要是NLP,如bert。

    如果是speech这种数据,长度太长,可以截断:
    在这里插入图片描述
    如果把image看做一排向量,也可以用transformer:
    在这里插入图片描述

    self attention V.S. CNN

    CNN 类似于,只对领域求α的self attentin。
    在这里插入图片描述
    可以看这篇论文
    在这里插入图片描述
    相当于self attention加上一些限制,就是CNN。所以在样本少的时候cnn更好,样本多时相反。
    在这里插入图片描述

    self attention V.S. RNN

    也有相似之处。
    但self attention可以并行计算,而且离得很远的东西也可以很好的用到(RNN容易遗忘)。因此现在基本self attention可以代替RNN。
    在这里插入图片描述

    for graph

    只需算有边的点的alpha,没边的直接置0
    在这里插入图片描述

  • 相关阅读:
    OpenXlab应用部署踩坑记录
    redis深度历险 千帆竞发 —— 分布式锁
    Mybatis开启日志
    有什么好玩的网页小游戏网站推荐么?
    【Linux】进程状态(含僵尸进程,孤儿进程)
    学习虚幻C++开发日志——基础案例(持续更新中)
    corn表达式
    解决pyspark环境下GraphFrames报错问题
    【ES6知识】简介、语法变化、解构赋值
    深入理解Spring Boot Controller层的作用与搭建过程
  • 原文地址:https://blog.csdn.net/qq_34342853/article/details/126189649