Chapter1-3_Speech_Recognition(CTC, RNN-T and more)

文章目录

    • 1 CTC
    • 2 RNN-T
    • 3 Neural Transducer
    • 4 Monotonic Chunkwise Attention
    • 5 小结

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

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

文章索引:

上篇 - 1-2 LAS

下篇 - 1-4 HMM

总目录

1 CTC

CTC源于论文Connectionist Temporal Classification: Labelling Unsegmented
Sequence Data with Recurrent Neural Networks,是用来训练RNN的一种方法,它被广泛应用于一些标签未与输入对齐的任务中,如语音识别、图像文本识别等等。说简单点,就比如我们今天有一段语音"Hello",然后我们的标签一般来说只会是"Hello"这样几个字符,从标签中,我们无法知道语音的哪几秒对应了"H",哪几秒对应了"e"。所以当我们的Encoder输出一个长度和输入相等为TTT的序列时,我们没法和标签对齐,也就没法去算这个loss。当然,我们可以再加一个RNN的decoder来解决问题,但我们也可以减小一些模型的大小,直接利用CTC来处理Encoder的输出。

没错,利用CTC来计算loss的话,我们只需要Encoder就可以了。不过这个时候,我们每个time step的输出要比vocabulary的size大1,这多出来的一个就是CTC需要的间隔符,这里记作ϕ\phiϕ
ch1-3-1
这个ϕ\phiϕ是我们人为加进去的,出现在模型输出的结果中,但不应该出现在最终得到的结果当中,因为vacabulary里是没有这个ϕ\phiϕ的。所以,在解析模型输出结果的时候,我们定义了如下两条规则:

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

哦,对了,还有一条规则,这个是在构建模型和数据集的时候需要注意的:

  • label的长度必须不大于模型输出的长度

实际情况下,label的长度最好是远小于模型输出的长度,因为label中有重复字符的话,模型的输出就必须加入额外的ϕ\phiϕ才可能解析出和label一样的结果。

如下是几个转化的例子:
ch1-3-2
从上面的例子也不难推断出,模型不同的输出也可以得到相同的结果,比如下图左边的三种输出都可以解析得到相同的文字。CTC在训练的时候会去穷举所有可能的对齐方式。
ch1-3-3
也正是因为CTC的这些特性,模型classifier(第一张图☝️)的每一个time step的最终输出结果是独立的,在面对有很多重复的输入时,CTC很容易坏掉。

为了解决这个问题,有人提出了一种叫做RNA(Recurrent Neural Aligner)的方法。它就是把CTC独立的classifier换成了一个RNN就结束了。这样模型在输出token的时候,就可以参考前面的输出了。
ch1-3-4
不过,这样还有一个问题,就是面对一个输入,需要有多个输出的时候,该怎么办?比如“th”的发音只有一个音节,但是输出却有两个字母。这个时候就轮到RNN-T出场了。

2 RNN-T

RNN-T出自论文Sequence Transduction with Recurrent Neural Networks。它在RNA的基础上做了改进,解决了上述一对多的问题。它的改进在于,每个time step产生输出的时候,一直要等到模型输出了ϕ\phiϕ,才会继续去看下一个time step的内容,如下图所示。
ch1-3-5
所以,RNN-T的运算流程是长这个样子的。输入sequence的长度有多长,那么就会产生多少个ϕ\phiϕ
ch1-3-6
而实际的RNN-T,还会再多做一步,就是它会以输出的token为输入,加了一个RNN的模型去影响输出的token,如下图所示。不过,这个RNN会无视ϕ\phiϕ
ch1-3-7
这里多加入的RNN模型可以看成一个language model,可以先单独train好再拿进来。

3 Neural Transducer

Neural Transducer又继续做了优化,就是每次不是只看一个time step的hidden state来进行输出,而是看一个长度为www的窗口内的hidden states来做attention,之后再塞进RNN里去得到token,输出ϕ\phiϕ后再看下一个窗口。这个有些细节我也没去细看,李老师也只是略讲了一下,这里就当了解一下吧。
ch1-3-8

4 Monotonic Chunkwise Attention

MoCha(Monotonic Chunkwise Attention)也是略讲了一下,它就是一个窗口可以自由选择移动的Neural Transducer,这里我也偷下懒不说了。

5 小结

结合上篇所讲的LAS,现在一共讲了6个模型。

  • LAS:就是seq2seq的标准模型
  • CTC:decoder是linear classifier的seq2seq模型
  • RNA:输入一个东西就要输出一个东西的seq2seq模型
  • RNN-T:输入一个东西,可以输出多个东西的seq2seq模型
  • Neural Transducer:每次输入一个window的RNN-T
  • MoCha:window移动伸缩自如的Neural Transducer

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

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

相关文章

java商城_基于Java,jfinal web框架开发出微信商城,微信分销商城源码分享

项目简介:专门针对微信服务号开发的一套微信商城,微信分销商城,支持商品多规格,支持按地区设置邮费,支持限时打折,订单返现,满减送,满包邮,支持订单打印,订单…

Express 路由模块化以及 Express 应用程序生成器

一、 Express 路由模块化 https://expressjs.com/en/guide/routing.html Express 中允许我们通过 express.Router 创建模块化的、可挂载的路由处理程序。 1、新建一个 user.js 配置如下代码 var express require(express) var router express.Router() router.get(/, fun…

qscrollarea 设置滚动位置_爱剪辑:影视剧滚动字幕片尾,效果竟然如此高端精美...

大家好今天教大家制作滚动字幕片尾这种效果经常在影视剧和自媒体中看到不仅好看精美,而且还高大上快来学习吧~视频教程:爱剪辑:影视剧滚动字幕片尾教程https://www.zhihu.com/video/1174030334688632832移动视频的位置导入视频后&…

iOS 测试三方 KIF 的那些事

一: KIF 三方库的配置 今天的广州天气还不错,原本想试试UI测试的,前几天也了解到很多公司都在用 KIF 这这三方框架!!今天也就试着做做,可就跪在了这个安装上,我用cocopods 导入了 KIF&#xf…

Chapter1-4_Speech_Recognition(HMM)

文章目录1 HMM用在哪里2 HMM的state3 改造成DNN3.1 Tandem3.2 DNN-HMM Hybrid本文为李弘毅老师【Speech Recognition - HMM (optional)】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。其中也涉及到了部分李琳山老师关于HMM的详解&#…

Express 结合 multer 上传图片

一、 Multer 模块介绍 Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用 于上传文件。 它是写在 busboy 之上非常高效。 注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据。 https://www.npmjs.com…

ad19pcb设置恢复默认_条码打印机-斑马产品常用恢复出厂设置

当我们手上拿到条码打印机,遇到一下无法挽回的时候,我们可以选择恢复下出厂设置,这样使打印机还原到出厂,或许是很好的选择,接下来我们看下斑马条码打印机操作方法如下:Zebra 条码打印机恢复出厂1、有面板的…

请求头和响应头

1 HTTP Request Header 请求头2 Header 解释 示例 3 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html 4 Accept-Charset 浏览器可以接受的字符编码集。 Accept-Charset: iso-8859-5 5 Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。…

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

文章目录1 为什么需要Alignment2 穷举所有的alignment2.1 HMM的对齐2.2 CTC的对齐2.3 RNN-T的对齐3 小结本文为李弘毅老师【Speech Recognition - Alignment of HMM, CTC and RNN-T (optional)】的课程笔记,课程视频youtube地址,点这里👈(需翻…

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

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

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

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

rename

批量去掉字母b: [rootbogon ~]# ls a_b_1.txt a_b_2.txt a_b_3.txt a_b_4.txt a_b_5.txt a_b_6.txt [rootbogon ~]# rename "b" "" *.txt [rootbogon ~]# ls a__1.txt a__2.txt a__3.txt a__4.txt a__5.txt a__6.txt 转载于:https://…

Chapter1-6_Speech_Recognition(RNN-T Training)

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

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

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

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

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

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

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

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】的课程笔记,课程视频youtube地址,…

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

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

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

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

php 系列

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