| |
|
开发:
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、seq2seqseq2seq 是一个 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所做的处理如下:
将上述处理与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尽可能小。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 18:37:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |