简单解释

Transform是在神经网络之后又发展的一个比较流行的深度模型,今天就给大家解释一下这个模型的原理。首先先抛出一个问题?神经网络有哪些缺点,或者是LSTM有什么不足之处,以至于让我们又发展了Transform这个深度模型?在这里我自己总结出了几点:

1、 难解释性,神经网络的一个通病,做出来的好坏都比较难解释,

2、 梯度消失和梯度爆炸的问题。

3、 LSTM只能串行计算,不能并行,因为它是一个时序类的模型。

4、 对于翻译这类生成模型计算起来比较复杂,耗时比较长而且效果也不是很好。

5、 由于梯度消失而导致的忽略了部分的特征提取。

等等还有其他原因导致我们在一些任务上处理的不是很好,但是神经网络还在发展阶段,我很看好它们后续的发展。

其实对于nlp常用的LSTM和GRU来说最大的问题还是在于梯度消失和不能并行计算,因此后来的科学家发展了另外一种特征提取的方式或者模型叫做Self-Attention,这也是transform最核心的部分,所以想要了解transform先要了解self-Attention的原理

self-Attention

self-attention的原理很简单,就是计算每个词与所有词之间的“关系”,举个例子:比如有这样的一句话:“今天天气很好天空特别蓝”分完词后:“今天”,“天气”,“很好”,“天空”,“特别蓝”,他们对应的词向量是V(今天),V(天气),V(很好),V(天空),V(特别蓝),self-attention处理过程如图:

由self-attention计算出“今天”与所有单词之间的关系(包括自己),比如与天气的关系是0.3、与很好的关系是0.2等等,然后利用关系加权求和形成新的词向量Z(今天)。这就是self-attention的计算流程。此时的Z(今天)包含了所有单词的信息,也就是上下文信息,如果我们对句子中的每个单词都进行这样的操作,更新每个单词的向量,这样所有词向量就都包含了上下文信息,


这样做的好处是什么呢?
1、 解决了梯度消失的问题,因为我们是计算了两两单词之间的关系,对于每个单词是公平的,所以没有忽略部分特征的提取。
2、 解决了LSTM的不能并行计算的问题,计算单词时并没有依赖的条件,所以完全可以同时计算,也就是并行计算。
3、 比神经网络更具有可解释性
那self-attention是怎么计算两两词之间的“关系”的呢?

self-attention核心计算

图(2)就是单词“Thinking”计算与单词“Machines”在self-attention中关系计算的流程图。

图(3)self-attention计算流程图

1, X1表示“Thinking”的词向量,X2表示“Machines”的词向量也就是模型的输入
2, 在X下面有三个向量“q”,“k”,“v”,他们的计算方式如图(4)

向量“q”,“k”,“v”,是输入向量X分别与模型的三个参数WQ,WK,W^V相乘得到的
3, 计算出了向量“q”,“k”,“v”,下面计算“Thinking”与其它词之间的关系,这里使用“q”“k”来计算,q1k1表示“Thinking”与“Thinking”之间的关系,q1*k2表示“Thinking”与“Machines”之间的关系结果为score。

4,由于这样计算出来的差异性可能比较大,因此将score除以√dk,dk表示的是维度,√64也就是8这里就是将sore除8

5,将所有score使用softmax进行分类,得出最终的关系概率比如这里“Thinking”与自己的关系是0.88与“Machines”的关系是0.22

6,最后将0.88V1+0.22V2得出计算后“Thinking”的词向量

总结为图(5)
 
以此类推我们可以计算出每个词的词向量。这样模型不断的进行反向传播,不断的优化WQ,WK,W^V。

Transform

Transform类似seq2seq模型。分为编码(Encode)和解码(Decoder)两个模块,如图(6),将句子输入到Encoder模型中不断计算,直到计算到最后一层,再映射到DECODER模型中进行解码最后输出结果

再看一下Encoder模块和Decoder模块是什么样子的如图(7),Encoder模块是由一个self-attention和一个Feed Forward组成的也就:
1、 句子输入到Encoder中使用Self—Attention进行运算,

2、 然后使用一个Feed Forward进行非线性的转化,得出每个单词的对应的词向量,

3、 将输入再转入到下一个Encoder中进行计算,以此类推直,到最后一层Encoder,

4、 Encoder中将最后一层的输出映射到在Decoder中解码。

5、 Encoder和Decoder中的计算核心就是Self-Attention,只是Decoder中多了一个Encoder-Decoder Attention。其实计算原理和Self-Attention是一样的,只是在Encoder-Decoder Attention中V的值是来自最后一层的Encoder

这样Transform的工作流程为图(8)先在Encoder中计算然后将最后一层的输出映射到在Decoder中解码,用到的核心技术就是Self-Attention

然后不断地进行正向传播和反向传媒优化三个参数WQ,WK,W^V,以至于最后达到一个比较优秀的模型。

Position Embedding(补)

由于Self-Attention有一个比较大的缺点就是没有考虑到词的顺序,也就是不能够像LSTM那样,考虑到了词的先后关系,因此在使用‘transform中在Embedding层我们加入了一个’Position Embedding,也就是词位置信息,这样我们就可以提取序列信息的。

transform 神经网络(1)相关推荐

  1. BERT大火却不懂Transformer?读这一篇就够了 原版 可视化机器学习 可视化神经网络 可视化深度学习...20201107

    20211016 调节因子 20211004 [NLP]Transformer模型原理详解 - 知乎 论文所用 20210703 GPT模型与Transformer进行对比_znevegiveup1的 ...

  2. ARM CPU自动调度神经网络

    ARM CPU自动调度神经网络 对特定设备和工作负载进行自动调度,对于获得最佳性能至关重要.通过RPC使用自动调度器为ARM CPU调度整个神经网络. 为了自动调度神经网络,将网络划分为小的子图,进行 ...

  3. ARM CPU神经网络自动调度

    ARM CPU神经网络自动调度 对特定设备和工作负载进行自动调整对于获得最佳性能至关重要.这是一个有关如何通过RPC使用自动调度器为ARM CPU调整整个神经网络的教程. 为了自动调整神经网络,将网络 ...

  4. NVIDIA GPU自动调度神经网络

    NVIDIA GPU自动调度神经网络 对特定设备和工作负载进行自动调整对于获得最佳性能至关重要.这是有关如何使用自动调度器为NVIDIA GPU调整整个神经网络. 为了自动调整神经网络,将网络划分为小 ...

  5. 为x86 CPU自动调度神经网络

    为x86 CPU自动调度神经网络 对特定设备和工作负载进行自动调试对于获得最佳性能至关重要.这是有关如何使用自动调度器为x86 CPU调试整个神经网络的文档. 为了自动调试神经网络,将网络划分为小的子 ...

  6. NVIDIA GPU的神经网络自动调度

    NVIDIA GPU的神经网络自动调度 针对特定设备和工作负载的自动调整对于获得最佳性能至关重要.这是一个关于如何使用自动调度器为NVIDIA GPU调整整个神经网络的资料. 为了自动调整一个神经网络 ...

  7. DL练习1:基于boston_house_prices的BP神经网络

    基于波士顿房价的预测的BP神经网络 在Pycharm上测试可以跑的通. # -*- coding: utf-8 -*- # Import libraries necessary for this pr ...

  8. 优达学城《DeepLearning》2-1:卷积神经网络

    本次由3部分组成: 可视化卷积神经网络. 设计和训练一个CNN来对MNIST手写数字分类. 设计并训练一个CNN来对CIFAR10数据集中的图像进行分类. 本次遇到的深度学习核心概念: SGD优化器: ...

  9. 深度神经网络中的Batch Normalization介绍及实现

    之前在经典网络DenseNet介绍_fengbingchun的博客-CSDN博客_densenet中介绍DenseNet时,网络中会有BN层,即Batch Normalization,在每个Dense ...

最新文章

  1. ubuntu16.04 安装jdk
  2. java自动猜测文件编码
  3. python爬boss网站_python之requests爬虫Boss数据
  4. gogs: 如何恢复repository
  5. 横向滑动视图HorizontalScrollView精炼详解
  6. Silvaco TCAD介绍
  7. python 3.8.2安装教程
  8. 手机word文档docx密码忘了怎么办,忘记word文档docx密码怎么办?
  9. linux中package什么文件夹,PACKAGE 文件扩展名: 它是什么以及如何打开它?
  10. c语言多个自我介绍编码,代码自我介绍.doc
  11. vue 引入 360度图片旋转插件 SpriteSpin.js
  12. 一道搜狗机试题的解答
  13. 欧氏距离,马氏距离(转载)
  14. pcb布线时爬电距离的总结与算法
  15. p720自带的磁带机备份aix系统
  16. ffmpeg 添加视频加文字水印--drawtext 滤镜详解
  17. IC design的初期阶段(floorplan和place初期)的检查清单checklist
  18. python实现人脸口罩检测(基于opencv和深度学习两种方法)
  19. 从Domino公式@DBLookup Web化谈如何实现通用函数
  20. 如何成为一个合格的数据架构师?

热门文章

  1. 机械装备行业MES解决方案
  2. 风行发布智能电视新品 百视通内容优势突出
  3. 瑞芯微RK3399主板开发,RK3399芯片设计参数分析
  4. DC/DC开关电源知识概述
  5. dr计算机操作,计算机里的“DR的接口”是什么?
  6. T3部署到云服务器,T6的服务器可以部署在云服务器上吗?
  7. 各端口抓肉鸡的几种方法
  8. linux mysql 卸载命令行,mysql卸载命令_Linux下卸载系统自带的MySQL数据库
  9. 1.3 应用视觉设计
  10. 临床基因组/外显组数据分析实战技术研讨会(2023.1)