简单理解TransFormer

背景:听了李宏毅老师关于transformer的讲解,觉得有必要记录一下,里面的PPT都是李宏毅老师的内容(不喜勿喷)

1.self-attention

在介绍transformer之前,必须先了解self-attention

(1) 先将X输入Embedding(a = Wx), 然后a乘相关的权重,生成QKV

简单理解TransFormer_第1张图片

(2) q1*k1、q1*k2...,将q1*k1、q1*k2...通过soft-max,然后将通过soft-max的数值与V相乘,最后将相乘的结果相加生成b1、b2...

简单理解TransFormer_第2张图片

(3) 根据(1)和(2)就是self-attention的操作(这样说还是挺清楚的,公式也不复杂)

简单理解TransFormer_第3张图片

2.并行计算

(1) 矩阵的计算还是挺清楚的(QKV的计算)

简单理解TransFormer_第4张图片

(2) 计算b(softmax(K*Q)*V最后相加)

简单理解TransFormer_第5张图片

(3) 简化的就是这样,大块的清清楚楚!!!

简单理解TransFormer_第6张图片

3.多头注意力机制

(1) 多个QKV

简单理解TransFormer_第7张图片

4.TransFormer

简单理解TransFormer_第8张图片

5.注意点

关于这个图,理解的理解,不理解的还是不理解

  1. 从vit的onnx结构图来看transformer的输入

简单理解TransFormer_第9张图片
  1. 3*224*224经过768个16*16的卷积,输出768*14*14

  1. 将输出flatten,768*196(14*14)

  1. 调整通道196*768

  1. 添加class_num(分类信息)1*768,拼接196*768成197*768

  1. 添加位置信息pos,add(shape还是197*768)

简单理解TransFormer_第10张图片
  1. 关于outputs的解释

简单理解TransFormer_第11张图片

我的理解就是encoder的输出,如下图所示

  1. encoder从BOS(一个特殊的字符)开始,输出潮水

  1. decoder从BOS+潮水作为encoder的outputs,但是是decoder的inputs

  1. 重复几遍,知道潮水退了结束

简单理解TransFormer_第12张图片

3.VIT的onnx结构图

看看里面的结构,都是一些block的堆叠,也没有新的OP,我的感觉是transformer还是做的和CNN的工作是类似的,但是transformer的并行效果更好,同时这些计算密集型的OP,后续的性能优化也是一个方向(量化)

你可能感兴趣的:(TransFormer应用,transformer,深度学习,人工智能)