Chapter1-5_Speech_Recognition(Alignment of HMM, CTC and RNN-T)

文章目录

    • 1 为什么需要Alignment
    • 2 穷举所有的alignment
      • 2.1 HMM的对齐
      • 2.2 CTC的对齐
      • 2.3 RNN-T的对齐
    • 3 小结

本文为李弘毅老师【Speech Recognition - Alignment of HMM, CTC and RNN-T (optional)】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。

下文中用到的图片均来自于李宏毅老师的PPT,若有侵权,必定删除。

文章索引:

上篇 - 1-4 HMM

下篇 - 1-6 RNN-T Training

总目录

1 为什么需要Alignment

现在所有的seq2seq的模型forward的过程,从宏观上来讲,就是我们输入一个序列XXX,可以输出产生任意序列YYY的概率。
ch1-5-1

然后decode的时候,我们就是要找到一个序列YYY,使得P(Y∣X)P(Y|X)P(YX)最大。在找这个序列的时候,一般不会穷举,而是通过Beam Search去做。

Decoding:Y∗=argmax⏟YlogP(Y∣X)Decoding:Y^*= \underbrace{argmax}_Y logP(Y|X) Decoding:Y=YargmaxlogP(YX)

像LAS这样的的输出中没有额外的符号的模型,其结果就直接是P(Y∣X)P(Y|X)P(YX)了。比如上图要计算输出序列ababab的概率就是

P(Y∣X)=P(a∣X)P(b∣a,X)P(<EOS>∣ab,X)P(Y|X)=P(a|X)P(b|a,X)P(<EOS>|ab,X) P(YX)=P(aX)P(ba,X)P(<EOS>ab,X)

如果有点忘了LAS的decoder是长什么样的话,可以看下面这幅图。
ch1-5-2
在训练的时候,我们就希望训练出一组模型参数θ\thetaθ下,使得模型在decode的时候,得到标签Y^\hat{Y}Y^的概率是最大的。

Training:argmax⏟θlogPθ(Y^∣X)Training: \underbrace{argmax}_{\theta}logP_{\theta}(\hat{Y}|X) Training:θargmaxlogPθ(Y^X)

以上的是模型输出符号都是字典里的字符的情况,但是,当用CTC或者RNN-T这样的模型时,我们的结果中是会出现ϕ\phiϕ这样的占位符的,那么就不能简单地直接计算P(Y∣X)P(Y|X)P(YX)了。而HMM这样的模型,会需要去掉重复的字符,故也不能直接计算。
ch1-5-3
这个时候,我们需要计算的是所有能够通过相应的对齐规则对齐到YYY的输出序列hhh概率之和。

P(Y∣X)=∑h∈align(Y)P(h∣X)P(Y|X) = \sum_{h \in align(Y)}P(h|X) P(YX)=halign(Y)P(hX)

这就是我们要讲alignment的原因。

下文会讲到的如何穷举所有可能的alignment。也就是上面公式中h∈align(Y)h \in align(Y)halign(Y)这个集合是怎么来的。

2 穷举所有的alignment

为了方便说明,我们假设现在输入的sequence长度为6,输出的sequence为"cat"。由于HMM,CTC和RNN-T对齐的规则有所不同,故他们在找h∈align(Y)h \in align(Y)halign(Y)这个集合的时候,也会有些不同。
ch1-5-4

2.1 HMM的对齐

HMM的对齐规则为:

  • 去掉所有的相邻重复字符

所以,HMM在找h∈align(Y)h \in align(Y)halign(Y)的时候,就是在"cat"的基础上,加入重复的字符,使得序列的长度等于T=6T=6T=6。写成演算法的话,就是下图中灰色方框里这样。比如我们的目标是"cat",那么N=3N=3N=3,然后我们从"c"开始选择重复一次或者多次,接着再去重复"a"和"t",我们需要保证所有的字符都至少出现一次,且它们出现的次数之和为输入序列的长度TTT
ch1-5-5

HMM要找的所有alignment都可以画在一个表格当中。这个表格的起点为左上角的橘黄色的点,终点为右下角蓝色的点。往右下方走,表示选择下一个token,往正右方走,表示重复一个token。我们要在保证每次只能往右下或者正右的情况下,从橘点走到蓝点。每一种走法的路径,就是一个alignment。

2.2 CTC的对齐

CTC的对齐规则为:

  • 首先合并所有的相邻重复字符
  • 然后去除掉所有的ϕ\phiϕ

所以,CTC在找h∈align(Y)h \in align(Y)halign(Y)的时候,就是在"cat"的基础上,加入重复的字符和ϕ\phiϕ,使得序列的长度等于T=6T=6T=6。写成演算法的话,就是下图中灰色方框里这样。比如我们的目标是"cat",那么N=3N=3N=3,然后我们从"c"或者“ϕ\phiϕ”开始选择重复一次或者多次,接着再去重复"a","ϕ\phiϕ“和"t”,"ϕ\phiϕ",我们需要保证所有的字符都至少出现一次,"ϕ\phiϕ“可以出现也可不出现,且字符和”ϕ\phiϕ"出现的次数之和为输入序列的长度TTT

ch1-5-6
CTC要找的所有alignment同样也可以画在一个表格当中。这个表格的起点为左上角的橘黄色的点,终点有两个,为右下角蓝色的点。

第一步,我们可以选择字符或者“ϕ\phiϕ”;如果选择了字符"c",那么接下来可以有3种选择,分别是往正右重复,往右下对角插入一个"ϕ\phiϕ",往右下走马步插入字符"a"。
ch1-5-7
如果我们选择的是"ϕ\phiϕ",那么我们就只有2种选择,分别是往正右重复"ϕ\phiϕ“或者往右下对角插入字符"c”。这个时候,是不能走右下马步重复ϕ\phiϕ的。
ch1-5-8
总结一下,就是在"ϕ\phiϕ"行的时候,有正右或者右下对角2种选择,在字符行的时候,有正右或者右下对角或者右下马步3种选择。
ch1-5-9
还有一种特殊情况需要注意的是,如果走右下角马步得到的字符和当前字符是相同的时候,不同走右下角马步。
ch1-5-11
基于以上的这些规则,从橘点走到右下脚两个蓝点中的任意一个所经过的路径都是一个合理的alignment。
ch1-5-10

2.3 RNN-T的对齐

RNN-T的对齐规则为:

  • 去除掉所有的ϕ\phiϕ

所以,RNN-T在找h∈align(Y)h \in align(Y)halign(Y)的时候,就是在"cat"的基础上,加入T=6T=6T=6ϕ\phiϕ。写成演算法的话,就是下图中灰色方框里这样。我们在每个字符之间都可以插入数量不等的"ϕ\phiϕ",但是末尾至少要有1个"ϕ\phiϕ",然后所有"ϕ\phiϕ“的个数之和为T=6T=6T=6
ch1-5-12
RNN-T要找的所有alignment同样也可以画在一个表格当中,不过这个表格和之前的有所不同。这个表格的起点为左上角的蓝色的点,终点为右下角蓝色的点。每往正右走一步就是插入一个”ϕ\phiϕ",每往正下走一步就是插入一个字符,直到走到右下角的蓝点,所经过的路径都是一个合理的alignment。
ch1-5-13

3 小结

HMM、CTC和RNN-T都可以用如下图所示的HMM专用的状态转移图来表示。其实也就是上文所述的东西,我觉得就算不看下面这个图也无所谓,所以这里就不讲了。
ch1-5-14

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mongoose 入门以及 mongoose 实现数据 的增、删、改、查

一、mongoose 介绍 Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具。Mongoose 是 NodeJS 的驱动&#xff0c;不能作为其他语言的驱动。 Mongoose 有两个特点 &#xff1a; 1、通过关系型数据库的思想来设计非关系型数据库 2、基于 mongodb 驱动&…

64位处理器_电脑操作系统的32位和64位有什么区别

想买个新电脑&#xff0c;不知道买 64 位还是 32 位&#xff1f;买了一套视频剪辑软件&#xff0c;发现电脑根本安装不了&#xff1f;这些到底是为什么&#xff1f;对于 Windows7 及以上版本&#xff0c;我们能够很明显知道自己电脑操作系统是 64 位还是 32 位。如果你还不知道…

Chapter1-6_Speech_Recognition(RNN-T Training)

文章目录1 一个alignment概率的计算2 所有alignments概率的计算3 Training4 Inference5 小结本文为李弘毅老师【Speech Recognition - RNN-T Training (optional)】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;点这里&#x1f448;(需翻墙)。 下文中用到的图片均来…

Mongoose 预定义模式修饰符 Getters 与 Setters 自定义修饰符

一、mongoose 预定义模式修饰符 lowercase、uppercase 、trim mongoose 提供的预定义模式修饰符&#xff0c;可以对我们增加的数据进行一些格式化。 var UserSchemamongoose.Schema({ name:{ type:String, trim:true }, age:Number, status:{ type:Number, default:1 } })二…

微信可以远程控制电脑吗_用微信就能远程控制电脑,这款神器有些厉害

「本期内容标签」安卓 iOS 电脑 小程序 网站 游戏 教程微信确实一步步改变生活&#xff0c;尤其是微信小程序面世以来&#xff0c;可谓是神器一个接一个的出现&#xff0c;很多功能已经和手机app旗鼓相当了。那么&#xff0c;今天说的这款刚推出的微信小程序&#xff0c;实现远…

开源的excel读取库libxls在windows下的编译,且支持中文,全网首发

转载请注明出处&#xff1a;http://www.cnblogs.com/superbi/p/5482516.html 到目前为止&#xff0c;网络和官网上并没有关于libxls在windows下支持中文的教程&#xff0c;也没有现成的二进制文件。 想直接得到结果的请直接拉到最后获取成果&#xff0c;想自己以后遇到类似问题…

Chapter1-7_Speech_Recognition(Language Modeling)

文章目录1 为什么需要Language Model2 N-gram3 Continuous LM3 NN-based LM4 RNN-based LM5 合并LAS和LM5.1 shallow fusion5.2 deep fusion5.3 cold fusion本文为李弘毅老师【Speech Recognition - Language Modeling】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;…

Mongoose 索引、Mongoose 内置 CURD 方 法、扩展 Mongoose Model 的静态方法和 实例方法

一、Mongoose 索引 索引是对数据库表中一列或多列的值进行排序的一种结构&#xff0c;可以让我们查询数据库变得更 快。MongoDB 的索引几乎与传统的关系型数据库一模一样&#xff0c;这其中也包括一些基本的查询 优化技巧。 mongoose 中除了以前创建索引的方式&#xff0c;我们…

winre drv分区干嘛用的_都2020年了,还在给硬盘分区?看完你就知道有没有必要了...

电脑硬盘&#xff0c;到底该不该分区&#xff1f;很多人买了新电脑或者在电脑中安装了SSD硬盘之后&#xff0c;第一个步骤就是&#xff1a;开机-给硬盘分区。但是&#xff0c;大家有没有考虑过&#xff0c;硬盘是否真的需要分区呢&#xff1f;这不最近有人就在程序员社区V2EX上…

php 系列

1.给 跑在windows 环境下的php&#xff0c; 安装redis 拓展。&#xff08;installing Redis & Redis extension in PHP on XAMPP on windows.&#xff09; step 1: 安装redis server&#xff08;windows&#xff09; http://fellowtuts.com/php/install-redis-redis-extens…

搞懂RNN

文章目录1 什么是RNN2 LSTM3 Training3.1 Learning Target3.2 为什么难train4 应用举例4.1 Many To One4.2 Many To Many4.3 其他本文为李弘毅老师【Recurrent Neural Network(Part I)】和【Recurrent Neural Network(Part II)】的课程笔记&#xff0c;课程视频来源于youtube(需…

bp神经网络预测_股指期货价格变动趋势往往反映的是股票价格的走势,因此BP神经网络对股指期货价格的准确预测就是对股票价格的准确预测。...

一只猫の生活态度对于投资者而言&#xff0c;利用BP神经网络模型对股指期货价格进行准确预测&#xff0c;可以帮助投资者构建较佳的投资组合&#xff0c;从而获取较好的投资收益&#xff0c;规避系统风险&#xff1b;对于国家而言&#xff0c;准确预测股指期货价格走势&#xf…

Mongoose aggregate 多表关联查询

1. 查询每个order订单中的所有orderItem&#xff08;多表关联查询&#xff09; order.js: var mongoose require(./db.js)var OrderSchema mongoose.Schema({order_id: String,uid: Number,trade_no: String,all_price: Number,all_num: Number })var OrderModel mongoose…

搞懂Transformer

文章目录1 内容简述2 seq2seq的常用模块3 Self-attention4 Multi-head Self-attention5 Positional Encoding6 Transformer参考资料文为李弘毅老师【Transformer】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;点这里&#x1f448;(需翻墙)。 下文中用到的图片均来自…

excel计算二元线性回归_怎么看懂Excel线性回归参数

虽然之前用python做线性回归的时候看上去好像很简单&#xff0c;但是直到我在excel上实践了线性回归&#xff0c;发现有很多指标值得去参考&#xff0c;对于在python上实现有指导作用。打开excel2016&#xff0c;先找个数据我们这里直接选择做线性回归&#xff0c;在菜单栏选择…

冲刺阶段 day 6

项目进展&#xff1a;学生管理这部分已经进展的差不多了&#xff0c;调试了几遍,改了几个小Bug之后就没有什么问题了,基本完成&#xff0c;如若后续还有一些新的功能到时候再自行加入。明天开始教师部分。 存在问题&#xff1a;我觉得我们的项目还是比较课堂&#xff0c;比较中…

Chapter2-1_Voice Conversion(Feature Disentangle)

文章目录1 什么是Voice Conversion2 实际实现中的细节3 根据数据集分类4 Feature disentangle5 训练技巧本文为李弘毅老师【Voice Conversion - Feature Disentangle】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;点这里&#x1f448;(需翻墙)。 下文中用到的图片均…

1 0.99999的悖论_无限小数与芝诺悖论

问题昨天晚上&#xff0c;小学6年级的外甥女从数学课外辅导班补习回来&#xff0c;兴冲冲的对家里人说&#xff0c;哎&#xff0c;我发现了一个数学的大bug啊。你说1/3不是一个无限循环小数0.33333...&#xff0c;那么三个1/3加起来&#xff0c;不就是0.99999...吗&#xff1f;…

Mongoose 中使用 populate 实现关联查询

一、Mongoose populate 官方文档 https://mongoosejs.com/docs/populate.html 二、Mongoose populate 关联查询 1、定义 ref var ArticleSchema new Schema({ title:{type: String, unique: true},cid : {type: Schema.Types.ObjectId, ref:ArticleCate //model 的名称 }, …

FPGA开发全攻略——概念篇

原文链接&#xff1a; FPGA开发全攻略连载之一&#xff1a;FPGA为什么这么热&#xff1f; FPGA开发全攻略连载之二&#xff1a;为什么工程师要掌握FPGA开发知识&#xff1f; FPGA开发全攻略连载之三&#xff1a;FPGA基本知识与发展趋势&#xff08;part1&#xff09; FPGA开发全…