TDNN时延神经网络---TDNN-F

2023-05-16

1.TDNN时延神经网络 【转载】

近来在了解卷积神经网络(CNN),后来查到CNN是受语音信号处理中时延神经网络(TDNN)影响而发明的。本篇的大部分内容都来自关于TDNN原始文献【1】的理解和整理。该文写与1989年,在识别"B", “D”, "G"三个浊音中得到98.5%的准确率,高于HMM的93.7%。是CNN的先驱。

普通神经网络识别音素

在讲TDNN之前先说说一般的神经网络的是怎样识别音素的吧。假设要识别三个辅音"B", “D”, “G”,那么我们可以设计这样的神经网络:
在这里插入图片描述
图1

其中输入0-12代表每一帧的特征向量(如13维MFCC特征)。那么有人可能会问了,即使在同一个因素"B"中,比如"B"包含20帧,那么第1帧与第15帧的MFCC特征也可能不一样。这个模型合理吗?事实上,"B"包含的20帧MFCC特征虽然有可能不一样,但变化不会太大,对于因素还是有一定区分度的,也就是说这个模型凑合凑合还能用,但效果不会非常好。GMM模型可以用这种模型来解释。【可能大家比较关心参数,比如输入(1 * 13),第二层输出是8,则参数是13 * 8】

时延神经网络(TDNN)

考虑到上述模型只用了一帧特征,那么如果我们考虑更多帧,那么效果会不会好呢?

好,那么我们设计一个包含多帧的神经网络,如图2我们考虑延时为2,则连续的3帧都会被考虑。其中隐含层起到特征抽取的作用,输入层每一个矩形内共有13个小黑点,代表该帧的13维MFCC特征。假设有10个隐含层,一个连接权重是(13 * 3)×1,那么输出是10,连接的权重总数目为(3 * 13)×1×10=390,输出对应的一个位置的参数量就计算出来了;

先接下来我们讨论一下与线性层相比参数量是否减少了?(先计算3帧)
根据图1,我们可以计算线性层一帧的参数是,首先输入(1 * 13),输出是(1 * 10),则参数是13×10;三帧就是130 * 3,好像可以看出与TDNN参数相比线性层参数稍微占优势,毕竟线性层是输出对应3个位置的参数量,但是这是错误的,因为TDNN是参数共享的,无论多少帧TDNN参数都是390,而当线性层层数超过3时候,参数量就会超过TDNN参数;

在这里插入图片描述
图2

为了结构紧凑显示,我们将其重绘如下图:
在这里插入图片描述
图3

图3与图2是等价的。其中每条彩色线代表13*10=130个权重值。三条彩色线为390个权重。也有资料称之为滤波器。

好,如果时间滚滚向前,我们不断地对语音帧使用滤波器,我们可以得到图4.
在这里插入图片描述
图4

这就是延时神经网络的精髓了!其中绿色的线权值相同,红色的线权值相同,蓝色的线权值相同。相当于把滤波器延时。输入与隐层共390个权值变量待确定。

每个隐层矩形内包含10个节点,那么每条棕色的线包含10个权值,假设输出层与隐层的延时为4,则接收5个隐层矩形内的数据,那么隐层与输出层合计权值为1053=150。权值非常少!所以便于训练。

下面就不难理解文献【1】上的图了。思想与上文一样,不过文章多用了一层隐层(多隐层有更强的特征提取和抽象能力)
在这里插入图片描述
介绍一下他的做法。Input Layer为语谱图,黑块为大值,灰块为小值。输入层纵向为经过mel滤波器的16个特征(没用MFCC),横向为帧。Input Layer 的延时为2,映射到Hidden Layer 1的关系为163 -> 8,权值个数为384。Hidden Layer 1 的延时为4,映射到Hidden Layer 2的关系为85 -> 3,权值个数为120。Hidden Layer 2 的延时为8,映射到输出层的关系为3*9 -> 3,权值个数为81。合计权值为384+120+81=585。输出的三个单元分别代表"B", “D”, "G"的得分。

训练方法

(1)和传统的反向传播算法一样。

(2)TDNN有快速算法,有兴趣的读者可以搜索。

总结TDNN的优点有以下: (其实TDNN就是1D CNN)

(1)网络是多层的,每层对特征有较强的抽象能力。

(2)有能力表达语音特征在时间上的关系。

(3)具有时间不变性。

(4)学习过程中不要求对所学的标记进行精确的时间定为。

(5)通过共享权值,方便学习。

TDNN(1d CNN)- F 转载 转载

在这里插入图片描述
Dan 在文献 “Semi-Orthogonal Low-Rank Matrix Factorization for Deep Neural Networks” 中介绍了一种把 TDNN (TDNN = 1d CNN)的参数分解,减少参数量的方法,可以成为一种半正交分解的方式,其中限定参数矩阵是半正交的。

TDNN-F:Factorized TDNN,顾名思义是在TDNN层基础上做的改进,将TDNN的参数矩阵M(M的行数小于列数,否则对其进行转置)通过SVD奇异值分解为两个小矩阵相乘的形式,从而有效减少层参数,以便在整体参数量相近的情况下,更好的利用网络深度带来的优势;此外,论文指出,直接采用上述形式,当网络参数随机初始化时,容易导致训练发散;于是,在Factorized TDNN更新层参数时,使得其中一个因子矩阵趋紧于α倍数的半正定化矩阵,以此来控制层参数的变化速度,使训练更稳定;

让M矩阵为半正交为什么会有好处呢?。
在这里插入图片描述

从TDNN角度看,Factorized TDNN相当于在两层前馈层之间引入一层瓶颈层(节点数少于隐藏层);
从上面TDNN的例子继续,应用到TDNN-F中:
比如原始TDNN参数矩阵M=(3 * 13)×10=390,将M转化为两个因子矩阵形式有:M=AB,其中A=39 * 5,B=5 * 10,那么瓶颈层的节点数即为5,参数总数为245,与原来的390缩减了一些,如果输出的越大,参数减少的越明显;

从1d-CNN角度看,Factorized TDNN相当于引入一个31700的半正定参数的卷积层,其中卷积核大小为3*1,输出通道数为700;

此外,在实践中,Factorized TDNN可以通过三种形式实现,
1)3 * 1(半正定)->1 * 1;
2) 2 * 1(半正定)->2 * 1;
3)2 * 1 (半正定)->2 * 1(半正定)->2 * 1;
并且提到,3)卷积形式因为多出一个卷积层,时域信息会更宽;

参考资料

【1】Waibel A, Hanazawa T, Hinton G, et al. Phoneme recognition using time-delay neural networks[J]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TDNN时延神经网络---TDNN-F 的相关文章

  • MacOS VsCode C++连接mysql

    使用Cmake 1 CmakeLists txt配置 cmake minimum required VERSION 3 18 project MYSQL include directories 34 usr local mysql 8 0
  • Linux系统MySQL8版本修改密码的方法

    MySQL8和MySQL5修改密码的sql差别很大 xff0c 用了MySQL5的修改方法还可能掉坑里面 xff0c 本文介绍8版本的修改方法 1 登录MySQL mysql uroot p密码 2 切换到user数据库 use mysql
  • 用warp给minio测压

    拉取Docker镜像 看到拉取的warp镜像已经跑起来了 这里的docker run minio warp v0 4 5 h 就是查看 help文档 xff0c 上面那条语句原型是docker run minio warp v0 4 5 w
  • SpringBoot中的service报空指针异常

    SpringBoot中的service报空指针异常 异常排查 xff1a 1 检查Service是否加了 64 Service注解 2 Controller中的属性service是否加了 64 Autowired注解 3 检查所写的对外接口
  • 本地上运行正常,但是部署到了服务器却一直验证码错误(Nginx反向代理导致的session丢失问题)

    最近做一个课程项目 xff0c 在本地开发完后部署到服务器上 xff0c 一切都比较顺利 但是在登录用户的时候却一直显示验证码错误 xff01 xff01 xff01 排错过程 1 代码检查2 参数检查3 外层检查4 直接访问5 通过Ngi
  • 如何在Golang中使用MongoDB的事务

    如何在Golang中使用MongoDB的事务 一 Mongo中的事务1 Mongo新特性2 基于会话的事务3 事务相关命令 二 搭建Mongo副本集1 安装MongoDB2 环境变量配置3 创建副本集目录3 1 创建主节点相关目录3 2 创
  • Golang中AK/SK认证的实现

    Golang实现AK SK认证 一 AK SK概述1 什么是AKSK2 AK SK认证过程 二 AK SK认证例子1 设计ak sk的请求参数2 数据库中保存sk3 客户端生成签名4 服务端校验签名 一 AK SK概述 1 什么是AKSK
  • BC20 AT指令测试

    1 准备工作 1 1 单片机型号 1 2 软件准备 下载链接 xff1a https pan baidu com s 1uLPwV2OuvxP6X6eq Eplow 提取码 xff1a rc77 1 3 程序下载 在网盘资料中下载名为dem
  • 模拟Docker为容器建立bridge网络

    模拟Docker为容器建立bridge网络 1 安装docker2 创建Nginx容器3 手动为容器设置网络4 验证网络 在阅读本文之前 xff0c 请先了解一下linux的namespace机制 1 安装docker Centos下安装
  • Golang服务端对接Google Play结算系统订阅

    Google订阅 公司产品需要需对Google订阅 xff0c 查了很多资料和相关文档 xff0c 最终总结出以下内容 如果本文中存在任何不准确的地方 xff0c 请不吝指出 xff0c 我会尽快改正 Google相关文档 xff1a 销售
  • (八) OAuth 2.0 认证成功,认证失败,退出成功

    认证成功 监听AuthenticationSuccessEvent xff0c 注意在刷新令牌 xff0c 校验令牌 xff0c 登录密码校验成功都会发布这个事件 xff0c 所以我们需要在监听器里面做一些排查判断 successHandl
  • 单片机组合实验二——定时器,数码管显示

    题目 xff1a 两个数码管 xff0c K1 K2两个按键 xff0c 完成K1启动计数 xff0c K2暂停计数 xff0c 每一秒钟数码管增加1 xff0c 60秒钟后 xff0c 蜂鸣器响一声 xff0c 数码管回归0 xff0c
  • 串口控制蜂鸣器

    题目 xff1a 通过串口助手发送1 xff0c 蜂鸣器以400ms频率发声 xff1b 发送2 xff0c 以200ms频率发声 xff1b 发送3 xff0c 以100ms频率发声 xff1b 发送4 xff0c 蜂鸣器不发声 span
  • 51单片机——简易时钟

    代码 span class token macro property span class token directive keyword include span span class token string 34 reg51 h 34
  • 51单片机—按键控制点阵显示

    名称 xff1a 按键控制 8X8LED 点阵屏显 示图形 说明 xff1a 每次按下 K1 时 xff0c 会使 8X8LED 点阵屏循环显示不同图形 本例同时使用外部中断和定 时中断 span class token macro pro
  • 手把手入门stm32f4 (1)

    GPIO 1 一共有7组IO xff0c 每组有16个口 即一共有16 7 61 112个口 2 每个口基本上都可以触发中断 xff08 区别于51 xff0c 51只有P3 2 P3 2 xff09 3 共有8中输入输出模式 xff08
  • STM32F103 配置Systick

    Systick系统滴答时钟 Systick h ifndef SYSTICK H define SYSTICK H include 34 stm32f10x h 34 void SysTick Init void void Delay ms
  • 手把手入门STM32 ——步进电机操作

    Uln2003驱动五线四向布进电机 xff08 按一次按键步进电机约旋转60 xff09 Uln2003 h span class token macro property span class token directive keywor
  • java后端CRUD功能实现

    1 springboot框架建立 框架建立可参考以下博客 xff0c 需要把补充部分也完成 https blog csdn net daniaoxp article details 119811741 内容稍有不同 xff0c 还要做以下改

随机推荐

  • 基于comsol软件弯曲单模光纤模拟仿真

    在本节中 xff0c 主要基于实验室实际光纤单模圆柱光纤进行模拟 xff0c 与comsol案例库文件在分析过程和建模有些差异 xff1a 模拟主要通过以下三个步骤进行 xff1a 模型的几何构建 物理场的添加研究 结构处理分析来进行 下面
  • 为什么使用hdf5存取文件,速度却比使用csv存取文件的速度还慢?

    数据集大小 xff1a xff08 200000 9 22 43 200000 10 11 xff09 36 43 xff08 250000 9 22 43 250000 10 11 xff09 3 个数值 最初是用csv存这些数的 xff
  • 倒水问题(bfs)

    倒水问题 题目 xff1a 两个容量不同且互质的杯子相互倒水 xff08 相互倒水时必须将其中一个杯子倒水或者倒空 xff0c 不存在倒半杯的情况 xff0c 要不然谁也不能确定倒了多少升水不是 xff09 xff0c 直到倒出C升的水 题
  • bfs之走地图(迷宫)

    题目 xff1a 东东找妹纸 东东手里有一张神奇的地图 xff0c 通过地图可以找到妹子 xff01 地图显示 xff0c 0表示可以走 xff0c 1表示不可以走 xff0c 左上角是入口 xff0c 右下角是妹纸 xff0c 这两个位置
  • week2 实验总结(分辨烷烃基、算分、打牌)

    A题 xff1a 大家一起学化学 题目 xff1a 这个题目一定要注意啊 xff0c 各个原子的编号是没有顺序的 xff01 xff08 我因为读题不认真 xff0c 结果 xff09 思路 xff1a 首先 xff0c 观察这一些奇形怪状
  • CSP201512-3 画图(C++实现)

    题目 样例输入1 4 2 3 1 0 0 B 0 1 0 2 0 1 0 0 A 样例输出1 AAAA A A 样例输入2 16 13 9 0 3 1 12 1 0 12 1 12 3 0 12 3 6 3 0 6 3 6 9 0 6 9
  • week12 csp-m3 T4-咕咕东学英语

    题目 样例输入 5 AABBB 样例输出 6 思路 刚拿到这个题目的感觉就是懵 xff0c 非常懵 题目很简单 xff0c 但是怎么做呢 我们来分析一下 xff0c 什么样的字串是满足条件的呢 xff1f 在一个字串中 xff1a 如果字母
  • csp 201809-3元素选择器 C++

    思路 其实题目很简单 xff0c 就是很麻烦 要构建一个树形结构 xff0c 使用结构体对每个节点进行存储 只有直系的父辈才算祖先 xff08 伯父不算祖先 xff09 xff0c 在后代选择器中 node xff1a struct nod
  • csp-m4(TT数鸭子、ZJM抵御宇宙射线、宇宙狗的危机)

    A TT数鸭子 题目 样例输入 6 5 123456789 9876543210 233 6661 114514 样例输出 4 题目 这道题最大的难点 xff0c 在于读懂题目 xff01 xff01 数位中不同的数字是 xff1f 比如1
  • SDU-考试模测 T3

    题目 青蛙去找瓜瓜 xff0c 青蛙在1号位置 xff0c 瓜瓜在n号位置 青蛙一次可以走 k 步 xff0c 走1 k 步耗费的体力不同 问青蛙找到瓜瓜耗费的最小体力是多少 xff1f 输入 第一行输入n k op xff0c op 61
  • 阿里云物联网平台搭建

    https www aliyun com 打开网址 xff0c 注册账号 按下图一步步操作 首先需要开通 公共实例 xff0c 我以前就开通过 xff0c 因此只需点击进入即可 在 产品 下 创建产品 按照 步骤操作 xff0c 其中 并不
  • 安装Cloud-Init工具

    操作场景 为了保证使用私有镜像创建的新云服务器可以自定义配置 xff08 例如修改云服务器密码 xff09 xff0c 请在创建私有镜像前安装Cloud Init工具 Linux操作系统安装Cloud Init工具时需要从官网下载并安装 x
  • ValueError: You are trying to load a weight file containing 16 layers into a model with 19 layers.出错

    ValueError You are trying to load a weight file containing 16 layers into a model with 19 layers 像这些提示出的问题 xff0c 其出错的真正原
  • Lstm输入参数详细解释

    Lstm输入参数详细解释 xff1a 比如建立双层lstm xff0c 以mnist数据集来进行叙述 xff1a 我们知道mnist数据集 xff0c 是28 28 xff1b 用lstm训练mnist数据集过程 xff1b def Dou
  • liner、dense、mlp、fc区别

    Linear 线性层 xff0c 最原始的称谓 xff0c 单层即无隐层 熟悉torch的同学都清楚torch nn Linear就是提供了一个in dim out dim的tensor layer而已 Dense xff1a 密集层 xf
  • 计算机工程与应用期刊投稿经验

    计算机工程与应用期刊投稿经验 直接上图 xff1a 经历了两个多月的时间终于录用了 xff0c 可能是因为十月一放假了 xff0c 拖了很长时间 主要经过了两次外审 xff0c 两次复审 其实论文没有太多进行修改 xff0c 外审专家询问的
  • 完美解释:wenet-流式与非流式语音识别统一模型

    Unified Streaming and Non streaming Two pass End to end Model for Speech Recognition 1 xff0c 本文以该篇论文为主线 xff0c 进行扩展 参考了很多
  • 解决报错/usr/bin/env: ‘python’: No such file or directory

    解决报错 usr bin env python No such file or directory 一 启动某个程序报错 usr bin env python No such file or directory 二 解决方法 1 查看pyt
  • 语音(一)| 语音识别基础(深度解析)

    1 声音特性 声音 xff08 sound 是由物体振动产生的声波 是通过介质传播并能被人或动物听觉器官所感知的波动现象 最初发出振动的物体叫声源 声音以波的形式振动传播 声音是声波通过任何介质传播形成的运动 频率 xff1a 是每秒经过一
  • TDNN时延神经网络---TDNN-F

    1 TDNN时延神经网络 转载 近来在了解卷积神经网络 xff08 CNN xff09 xff0c 后来查到CNN是受语音信号处理中时延神经网络 xff08 TDNN xff09 影响而发明的 本篇的大部分内容都来自关于TDNN原始文献 1