目录

1. Encoder-Decoder

2. 引入Attention的Encoder-Decoder(AED)

3. LAS

3.1 listen

3.2 Attention

3.3 spell

4. LAS训练

5.总结


1. Encoder-Decoder

在传统的机器翻译中,我们做的是把一种语言的句子翻译成另一个语言的句子的任务。

       ?

: 今天天气怎么样?

神经机器翻译是通过单个神经网络实现机器翻译的方法,这种神经网络框架称作 或者 , 其包含俩个.

注:是一种模型框架。编码器将(文字、图片、语音)编码输出向量接收向量,一一预测输出结果。而可以看作是针对某一类任务的模型框架。

强调的是模型设计,强调的是任务类型(序列到序列的问题).

部分每个单词是这么生成的:

其中是解码器的非线性变换函数, 可以看出来,在生成目标句子的单词时,无论生成哪一个单词,它们使用的输入句子与语义编码都是一样的,没有任何区别。

而语义编码是由句子的每个单词经过编码产生的,这意味着不论是生成哪个单词,句子中任意单词对某个目标单词的影响力都是相同的,就像是人类的眼中没有注意力焦点一样。

假设输入的英文句子为:   ,  输出中文单词:“汤姆” “追逐” “杰瑞”。在翻译”杰瑞“这个单词的时候,模型里面每个英文单词对于翻译目标单词”杰瑞“的贡献程度是相同的,这很显然是不合道理的。显然”Jerry“对于翻译成”杰瑞“更为重要。

那么它会存在什么问题呢?类似RNN无法捕捉长序列的道理,没有引入Attention机制在输入句子较短时影响不大,但是如果输入句子比较长,此时所有语义通过一个中间语义向量表示,单词自身的信息避免不了会消失,也就是会丢失很多细节信息,这也是为何引入Attention机制的原因。

2. 引入Attention的Encoder-Decoder(AED)

我们希望,在翻译“杰瑞”的时候,会体现出每个英文单词对输出当前中文单词的不同影响程度。现假设这三个英文单词对翻译出“杰瑞”的影响程度是:

其中,0.3、0.2、0.5就表示对于生成“杰瑞”,注意力分配给不同英文单词的权重大小,这对正确翻译目标单词有着积极作用。

目标句子中的每个单词都应该学会其对应的源语句子中单词的注意力分配概率信息。这意味着在生成每个单词  的时候,原先都是相同的中间语义表示C会被替换成根据当前生成单词而不断变化的理解Attention模型的关键就是这里,即由固定的中间语义表示C换成了根据当前输出单词来调整成加入注意力模型的变化的增加了注意力模型的Encoder-Decoder框架理解起来如下图所示:

即生成目标句子单词的过程成了下面的形式:

而每个可能对应着不同的source单词的注意力分配概率分布,比如对应上面的翻译来说,其对应的信息可能如下:

汤姆 = 

追逐 = 

杰瑞 = 

其中, 代表对输入英文单词的某种变换函数,如果是的话,就对应输出隐层

代表根据单词的中间表示合成整个句子中间语义表示的变换函数。一般做法就是进行weighted sum即加权和:

就代表输入句子source的长度,表示隐层输出。表示输出句子第个词,就是输入句子每个词对输出第个单词的注意力分配概率。

在上面的例子当中,对于“杰瑞”,输入句子有三个英文单词,即。h1=f(“Tom”),h2=f(“Chase”), h3=f(“Jerry”)分别是输入句子每个单词的隐层输出,对应的注意力模型权值则分别是0.3,0.2,0.5,即表示对生成“杰瑞”的影响程度。

总结:

Query关键字,对应上面的输出单词“杰瑞”。这里的四个value,对应上面的输入source英文单词 。这里key和value等价,是一个东西。

第一步:关键字Query和每个value进行相关性计算,即,得到注意力得分s1 s2 s3 s4

第二步:对注意力得分softmax进行归一化处理,得到合为1的概率分布a1 a2 a3 a4

第三步: 计算语义向量

补充:第一步计算相关性的方式有很多种。

1. 向量点积,

2.求两者的余弦相似度, 

3.引入一个额外的神经网络来求值,

3. LAS

的简称。listener是以fbank为输入的pyramidal RNN decoder, speller是基于attention 的RNN decoder,建模单元为字符。

此模型所需的所有组件的训练是jointly的,不再像CTC模型里那样输出字符independent。

3.1 listen

的作用是输入一段语音信号,输出一段向量,去掉语音中的杂序,只保留和语音相关的部分。

输入特征:

listener: 

输出隐层: 

对于T帧的语音,经过RNN之后就会产生T个隐层。实际中会有成千上百帧,这会导致listen收敛缓慢,可能需要几个月的训练时间。这是因为很难从大量的time step中提取到相关信息。我们通过使用一个类似金字塔型的RNN来规避这个问题。将3个pBLSTMs堆叠在底部BLSTM层的顶部,以减少时间分辨率8倍。从而,让之后的attention model能够从更小的time step中提取更多的相关信息。

down sampling:

3.2 Attention

这里的就是上文说到的关键字,在这里指的是decode的隐层。 一般来说,初始化的 是语音中的初始字符<sos>。为了计算机注意力分配概率,我们首先需要拿和source的四个隐层作相关性计算。分别得到, 表示四个隐层对产生的相关性大小。

那么这个相关性大小怎么计算呢?我们在上面提到了点积法和余弦计算法。

点积法(dot-product attention):

h和z分别乘上一个linear的transform,得到新的vector,再进行向量点乘。

Addictive attention:

h和z经过transform之后相加,通过一个tanh,最后再乘上一个linear的transform。

那么整个attention的过程就是 :

1. decorder的隐层与输入source的四个隐层作相关性计算

2.  对得到的进行softmax归一化输出,得到[0.5 0.5 0 0]

3. 计算上下文向量

3.3 spell

对于第一个时刻的隐层,输入前一个初始化的隐层和上一个上下文向量,输出probability distribution,对应生成每一个字符的概率。比如生成“c”的概率最大为0.6,那么这个时候就输出“c”

t1时刻完成之后,重复上述流程,用再和 四个隐层作相关性计算, 并softmax。计算上下文向量

那么t2时刻,将上一个的hidden state 、上一个上下文向量、上一个预测输出("c")送入decode,进一步预测t2时刻的输出结果“a”。

从而,一直到最后一个结束符<EOS>,每次都是将前一个hidden state、前一个上下文向量和前一个预测送入RNN进行预测。

4. LAS训练

按照上面的思路,在每个时刻我们得到对应每个字符的probability distribution,将每个时刻的标签进行one-hot编码,很明显就可以用crossentropy来计算损失了。

但是有一个注意的问题,每个时刻的预测输出都会受到上一时刻预测输出的影响。如果第一时刻就预测错了,比如本来应该是“c”,错成了“b”,在第二时刻,模型本该学到的是:你来一个c我倾向输出a,却变成了 你来一个b我倾向输出a。如果前面错了的话,后面无论怎么训练都很难达到好的训练效果。因此在训练的时候,加一个teacher forcing,直接将上一时刻的标签(即正确结果)作为下一时刻的输入。

总结:

1. encoder:通过循环神经网络把输入特征序列转为隐藏层向量序列,这部分相当于声学模型。

2.decoder:计算输出符号基于前一个预测标签和输入特征分布的概率分布。这一部分相当于语言模型。

3. Attention:从encoder输出所有向量序列,计算注意力权重,并基于注意力分配概率来构建decoder网络的上下文向量, 进而建立输出序列和输入序列之间的对齐关系。

Attention模型通过接收encoder传递过来的高层特征表示,学习输入特征和模型输出之间的对齐信息,并指导decoder的输出。

Decoder经softmax的输出序列Y由X生成的概率为:

其中,表示真实标签,表示预测标签。从式子中可以看出,每个时刻都是基于所有输入特征(这也是LAS不能online的原因)和前一刻标签

Decoder一般采用RNN,在每个输出标签u位置,RNN基于上一个输出、上一个隐层、上一个上下文向量,产生当前的隐层:

上下文向量由注意力机制得到:

其中,表示之间的注意力权重:

其中,表示注意力得分(原始分数),经过softmax之后得到

5.总结

Attention based ASR 是对整个句子进行建模,在encoder层需要输入整个特征序列,而每一个输出标签是基于整句来预测得到的。按照我们的想法,在attention的过程中,应该是从左到右,注意力慢慢转移到最后。但是在实际运算中,注意力可能是随便乱跳的。因此attention模型的输出序列和输入序列不一定按顺序严格对齐。Attention比CTC具有更强的上下文建模能力,因此运用更加广泛。

Attention based ASR(LAS)相关推荐

  1. attention机制中的注意力图怎么画_注意力机制 | 图卷积多跳注意力机制 | Direct multihop Attention based GNN...

    导读:目前GNNs通过利用self-attention机制已经取得较好的效果.但目前的注意力机制都只是考虑到相连的节点,却不能利用到能提供图结构上下文信息的多跳邻居(multi-hop neighbo ...

  2. 论文阅读:Semantic Aware Attention Based Deep Object Co-segmentation(ACCV2018)

    协同分割论文:Semantic Aware Attention Based Deep Object Co-segmentation(ACCV2018) 论文原文     code 目录 1.简介 2. ...

  3. 【论文阅读】Attention Based Spatial-Temporal GCN...Traffic Flow Forecasting[基于注意力的时空图卷积网络交通流预测](1)

    [论文阅读]Attention Based Spatial-Temporal Graph Convolutional Networks for Traffic Flow Forecasting[基于注 ...

  4. ATT-CNN(attention based CNN)

    ATT-CNN文本分类,论文解读(Attention-based Convolutional Neural Networks for Sentence Classification) Attentio ...

  5. Gated Mechanism for Attention Based Multi Modal Sentiment Analysis 阅读笔记

    GATED MECHANISM FOR ATTENTION BASED MULTIMODAL SENTIMENT ANALYSIS 阅读笔记 最近在跟进多模态的情感分析发现多模态榜一又被刷下来了,这篇 ...

  6. 【ACNET2019】:ATTENTION BASED NETWORK TO EXPLOIT COMPLEMENTARY FEATURES FOR RGBD SEMANTIC SEGMENTATION

    ACNET: ATTENTION BASED NETWORK TO EXPLOIT COMPLEMENTARY FEATURES FOR RGBD SEMANTIC SEGMENTATION ACNE ...

  7. 21.Selective Attention Based Graph Convolutional Networks for Aspect-Level Sentiment Classification阅

    21.Selective Attention Based Graph Convolutional Networks for Aspect-Level Sentiment Classification阅 ...

  8. Complex Spectral Mapping With Attention Based Convolution Recurrent Neural Network(省略)---论文翻译

    基于注意力的卷积递归神经网络的复杂频谱映射,用于语音增强 Liming Zhou1, Yongyu Gao1,Ziluo Wang1,Jiwei Li1,Wenbin Zhang11CloudWalk ...

  9. 交通预测论文笔记《Attention Based Spatial-Temporal Graph Convolutional Networks for Traffic Flow Forecasting》

    AAAI2019 0 摘要 交通流数据通常有很高的非线性和很复杂的特征.目前很多交通预测的方法缺乏对交通数据时空相关性的动态建模. 本文提出了一种基于注意力的时空图卷积神经网络(ASTGCN)来解决交 ...

最新文章

  1. oracle顺序读等待,Oracle Study之--Oracle等待事件(4)
  2. java拼接sql保留两位小数_SQL 保留两位小数的实现方式
  3. android程序db文件用什么编辑器,在 Android Studio 上调试数据库 ( SQLite )
  4. Ext.form.TextArea文本区
  5. 华为p4用鸿蒙系统吗_华为正式发布鸿蒙OS Beta版,网友:荣耀还能用上鸿蒙吗
  6. .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中
  7. javaweb实现验证码功能
  8. swift中文文档_Flutter 中文文档:使用 Packages
  9. HDOJ 1251 HDU 1251 统计难题 ACM 1251 IN HDU
  10. - 麦田守望者 -读后感
  11. 创意云渲染农场与《熊出没》
  12. 创业之初你不可不知的融资知识
  13. RGBA、YUV色彩格式及libyuv的使用
  14. 计算机excel界面,2017《职称计算机》知识点:Excel用户界面
  15. 视频流PS打包方式详解
  16. IIS发布 部署 ASP网站
  17. VMware15安装
  18. linux关闭wps画布进程,在Deepin系统下安装WPS后一直出现一个无响应的wpsoffice进程...
  19. Tello SDK 开发避坑指南(持续更新)
  20. 推荐一个在线编程学习网站“泡面吧”

热门文章

  1. php数据类型转换分为哪两种,PHP数据类型转换方法有哪些
  2. linuxnbsp;内核大事记
  3. c语言答辩题目及答案,c语言if语句的练习题答案.doc
  4. Firefly RK3399 PC pro Android 10下载验证
  5. 于博士Cadence
  6. 2019年广州Java开发面试总结
  7. 【项目】新冠肺炎疫情期间网民情绪识别——Python文本分类
  8. 常微分方程王高雄第三版--第一章绪论--Julia实现
  9. SAP供应商主数据的维护-印度TDS
  10. Android消息提示框