时延神经网络(TDNN)原理及其TensorFlow实现

2017 年 5 月 19 日 深度学习每日摘要 DLdigest

时延神经网络(TDNN)原理及其TensorFlow实现

本文参考文献

Waibel A, Hanazawa T, Hinton G, et al. Phoneme recognition using time-delay neural networks[J]. IEEE transactions on acoustics, speech, and signal processing, 1989, 37(3): 328-339.

引用次数:2362

TDNN原理

今天要介绍的是卷积神经网络的前身:Time-Delay Neural Network,它被Hinton组于1989年提出,初衷是为了解决语音识别中传统方法HMM无法适应语音信号中的动态时域变化,并且该结构参数较少,进行语音识别不需要预先将音标与音频在时间线上进行对齐,实验证明TDNN相比HMM表现更好。

TDNN的两个明显的特征是动态适应时域特征变化和参数较少,传统的深度神经网络的输入层与隐含层一一连接,TDNN在这里做了一点改变,即隐含层的特征不仅与当前时刻的输入有关,而且还与未来时刻的输入有关。

文中提出了一个三层的TDNN用于字母”B”, “D”, “G”的语音识别任务,如上图所示。图中的输入是15帧音频的特征,每一帧特征是长度为16的梅尔系数,这里设定的时延值为2,即上面一层网络的输入由下面一层连续三个时刻组成,可以看到,Hidden Layer 1的神经元个数为8,由于TDNN中应用了权重共享,即相同的时延位置的权重是共享的(如下图所示,相同颜色的箭头代表的权重相同),于是,在输入层与Hidden Layer 1之间有48个权重。在Hidden Layer 2中,设定了时延值为4,该层神经元个数为3,设置较大的时延值可以让网络看到更大的时域范围特征。最后,将Hidden Layer 2经过一个MLP即可得到三个字母的输出概率分布。

TDNN原理现在看起来似乎非常简单,但是在1989年那个时候,已经是一个非常大的突破了,并且受此影响,后来就有了卷积神经网络的诞生。TDNN原理就介绍这么多,接下来我们动手基于TensorFlow来实现论文中的TDNN模型结构。

import tensorflow as tf
import numpy as np

tf.set_random_seed(922) np.random.seed(0)

def tdnn(inp, n_class):    h1_kernel_size = 3    h1_filters = 8    h1 = tf.layers.conv1d(inp, h1_filters, h1_kernel_size)    h2_kernel_size = 5    h2_filters = n_class    h2 = tf.layers.conv1d(h1, h2_filters, h2_kernel_size)    h2 = tf.transpose(h2, [0, 2, 1])    output = tf.squeeze(tf.layers.dense(h2, 1, tf.sigmoid))
   return output if __name__ == '__main__':    bs = 1    n_frame = 15    n_feature = 16    n_class = 3    inp=tf.placeholder(tf.float32, shape=[bs, n_frame, n_feature])    output = tdnn(inp, n_class)
   with tf.Session() as sess:        i = np.random.normal(size=(bs, n_frame, n_feature))        sess.run(tf.global_variables_initializer())        o = sess.run(output, feed_dict={inp: i})
       print np.array(o).shape  # (3,)        print np.array(o) # [ 0.64834243  0.91836888  0.50499392]

之前看到有人说Lecun提出的卷积神经网络是受视觉启发,不过由于Hinton的这篇TDNN论文比Lecun的卷积神经网络要早一年发表,也许Lecun是受Hinton的TDNN启发的。有趣的是,虽然TDNN在30年前就已经被Hinton提出来了,近几年,语音识别的成功还是主要受益于RNN/LSTM+CTC,而深度卷积神经网络在语音识别中的应用才刚刚开始不久。


题图:黄淑珍《暖》


点击阅读原文可以查看最任性的清华学霸/大学教授/私募投资达人,同时又是富有温度的自媒体写手的精彩文章,看看财务自由的他,整天都在思考些啥。小编力荐!

你可能会感兴趣的文章有:

ConvLSTM原理及其TensorFlow实现

Network-in-Network原理及其TensorFlow实现

如何基于TensorFlow实现ResNet和HighwayNet

常见的两种注意力机制

深度残差学习框架(Deep Residual Learning)

深度残差学习框架(续)

语音识别领域三十年来重要论文合集及其下载地址

推荐阅读 | 如何让TensorFlow模型运行提速36.8%

推荐阅读 | 如何让TensorFlow模型运行提速36.8%(续)

深度学习每日摘要|坚持技术,追求原创

微信ID:deeplearningdigest
长按二维码关注我
登录查看更多
56

相关内容

深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【教程】自然语言处理中的迁移学习原理,41 页PPT
专知会员服务
94+阅读 · 2020年2月8日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
115+阅读 · 2019年12月31日
初学者的 Keras:实现卷积神经网络
Python程序员
24+阅读 · 2019年9月8日
ICLR 2019论文解读:量化神经网络
机器之心
9+阅读 · 2019年6月13日
CNN图像风格迁移的原理及TensorFlow实现
数据挖掘入门与实战
5+阅读 · 2018年4月18日
基于Numpy实现神经网络:反向传播
论智
5+阅读 · 2018年3月21日
基础 | GRU神经网络
黑龙江大学自然语言处理实验室
27+阅读 · 2018年3月5日
干货 | 深度学习之CNN反向传播算法详解
机器学习算法与Python学习
17+阅读 · 2017年11月21日
TensorFlow seq2seq中的Attention机制(续)
深度学习每日摘要
15+阅读 · 2017年11月16日
人工神经网络算法及其简易R实现
R语言中文社区
18+阅读 · 2017年8月5日
Layer Normalization原理及其TensorFlow实现
深度学习每日摘要
32+阅读 · 2017年6月17日
Arxiv
3+阅读 · 2018年10月25日
Relational recurrent neural networks
Arxiv
8+阅读 · 2018年6月28日
Arxiv
14+阅读 · 2018年5月15日
Arxiv
4+阅读 · 2018年3月30日
VIP会员
相关资讯
初学者的 Keras:实现卷积神经网络
Python程序员
24+阅读 · 2019年9月8日
ICLR 2019论文解读:量化神经网络
机器之心
9+阅读 · 2019年6月13日
CNN图像风格迁移的原理及TensorFlow实现
数据挖掘入门与实战
5+阅读 · 2018年4月18日
基于Numpy实现神经网络:反向传播
论智
5+阅读 · 2018年3月21日
基础 | GRU神经网络
黑龙江大学自然语言处理实验室
27+阅读 · 2018年3月5日
干货 | 深度学习之CNN反向传播算法详解
机器学习算法与Python学习
17+阅读 · 2017年11月21日
TensorFlow seq2seq中的Attention机制(续)
深度学习每日摘要
15+阅读 · 2017年11月16日
人工神经网络算法及其简易R实现
R语言中文社区
18+阅读 · 2017年8月5日
Layer Normalization原理及其TensorFlow实现
深度学习每日摘要
32+阅读 · 2017年6月17日
相关论文
Top
微信扫码咨询专知VIP会员