IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 自然语言处理中的Transformer -> 正文阅读

[人工智能]自然语言处理中的Transformer

1、seq2seq

seq2seq 是一个 Encoder–Decoder 结构的网络,它的输入是一个序列,输出也是一个序列, Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。

这个结构最重要的地方在于输入序列和输出序列的长度是可变的,可以用于翻译,聊天机器人,句法分析,文本摘要等。

seq2seq的结构如下:

在这里插入图片描述

当然,目前说到seq2seq,最为人所熟知的就是Transformer,Transformer的结构如下:

在这里插入图片描述

2、Encoder

我们先看一下Encoder部分,Encoder就是给一排向量然后输出一排向量,其实这个工作很多模型都可以做,比如self-attention,RNN,CNN,这里我们只关注seq2seq的Encoder和Transformer中的Encoder:

在这里插入图片描述

我们将Encoder部分拆开看一下,如下图。图中每个Block不只是一层layer,可能是多层layer,一串向量进入Block,经过一系列转换然后输出一串向量,经过多个Block处理后得到最终的输出。

在这里插入图片描述

上图只是做个简单的演示,实际上Encoder部分做的事情要更复杂一些,如下:

在这里插入图片描述

Encoder所做的处理如下:

  • 输入向量b经过self-attention处理后得到向量a,a并没有直接作为output,而是与输入向量b加起来得到新的output,这样的网络架构就是residual connection;
  • 接下来的output要经过Normalization,不过这里的Norm不是Batch Norm,而是Layer Norm;
  • Norm后的输出经过FC network处理后,与输入向量再做residual;
  • 上一步residual后的结果还要再做一次norm,得到的输出才是Encoder中一个Block的输出。

将上述处理与Transformer的Encoder部分做个比较,我们会发现Transformer中的Add&Norm就是上述处理中的Residual+Layer norm,现在最常用的BERT也使用了和Transformer Encoder相同的网络架构。

在这里插入图片描述

3、Decoder

以语音辨识为例,当我们给定一个开始标志,Decoder的输出结果经过softmax,会得到字典中所有字的概率分布,我们选择概率最大的一个字作为输出。

在这里插入图片描述

然后将这个字作为第二个Input给到Decoder,选择输出概率最大的字,这样依次下去就可以得到所有的输出结果:

在这里插入图片描述

我们先忽略encoder的输入部分,看一下decoder的结构,如下:

在这里插入图片描述

下面我们比较一下encoder和decoder的结构,我们会发现,如果将decoder的中间部分遮起来,encoder和decoder并没有多大差别,只是decoder的Multi-Head Attention部分多了个masked。

在这里插入图片描述

masked是什么含义呢?

对于self-attention,每一排输出向量都要看过完整的输入之后才做决定,当我们把self-attention转为Masked self-attention之后,那么我们就不能再看右边的部分了,比如产生 b 1 b^1 b1的时候,我们只能考虑 a 1 a^1 a1的信息,不能再考虑 a 2 , a 3 , a 4 a^2,a^3,a^4 a2,a3,a4

在这里插入图片描述

更具体一点,当我们要产生 b 2 b^2 b2的时候,我们只拿第二个位置的query去跟第一个位置的key和第二个位置的key去计算attention,第三个位置和第四个位置就不用管。为什么我们要去做masked呢?这是因为在Decoder的时候,我们是没有后面的信息的,所以我们只能考虑左边输入的信息。

在这里插入图片描述

接下来,还有一个非常关键的问题,Decoder必须自己决定输出的Sequence的长度,实际我们没有办法知道输出的Sequence的长度,如果按照之前的处理,这个Decoder的过程会一直持续下去,没有办法停止。

在这里插入图片描述

因此,我们需要在字典中加入一个特殊的符号,作为“结束”符:
在这里插入图片描述

这样的话,在Decoder接收“机器学习”四个输入后,会输出一个结束符,标志着语音识别结束。

在这里插入图片描述

4、Encoder-Decoder

下面我们来研究encoder和decoder连接的部分cross attention:

在这里插入图片描述

cross attention的处理如下,其实decoder就是凭借着产生一个q,去encoder那边抽取信息出来,当做接下来decoder的FC network的input。

在这里插入图片描述

5、train

在训练的时候,我们希望每一个输入的预测结果与实际结果之间的cross entropy越小越好,其实就是分类问题,使预测结果与实际结果的cross entropy尽可能小。
在这里插入图片描述
在这里插入图片描述
以上为李宏毅老师讲解Transformer的过程,比较通俗易懂,并且这篇英文博客对Transformer介绍得非常详细,配合食用更佳。

  人工智能 最新文章
Neo4j 实战篇(一)基于Py2Neo构建电影知识
消息传递神经网络(MPNN)内容及代码实践
OpenCV+百度云人脸识别项目及源码
实验5 卷积神经网络实验中
论文详解:Attention-based Extraction of
Tensorflow进阶
科技时代,如何保护个人隐私?
【元宇宙系列】游戏与元宇宙(下)——拉动
pytorch学习13:实现LetNet和学习nn.Module
LSTM的本质理解-正向传播
上一篇文章      下一篇文章      查看所有文章
加:2021-07-07 00:00:15  更:2021-07-07 00:00:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
360图书馆 购物 三丰科技 阅读网 日历 万年历 2022年5日历 -2022/5/24 5:56:36-
图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码