CS224d lecture 14札记
欢迎转载,转载注明出处:
http://www.cnblogs.com/NeighborhoodGuo/p/4720985.html
这一课也是请得嘉宾讲得课,据说是standford的一位博士。讲得主题是Neural Networks in Speech Recognition
不过Speech Recognition可谓是博大精深啊,这一堂课就像讲师在课前的Overview里说的一样,只是做一个perspective
让大家对这个方面有一个简要的了解,具体如何操作,这个就没有详细讲了。。。课上讲得许多model还有推荐论文里讲得一些model部分我都不太熟悉,看得我真是痛苦呀。暂且记录下部分难点和自己不了解的地方,如果以后有机会做这方面的工作,再翻出来详细研究。
课前给了个overview,然后之后的整堂课都是按照这个outline进行的,脉络清晰明了。
Speech recognition systems overview
如图所示,Speech recognition主要分为三个部分。第一个部分是Noise Reduction这个在本课中没有涉及;第二个部分是Transcription,这个是这一课的内容;第三个部分是Understanding,之前讲得所有内容都是围绕第三个部分展开的。
最后讲师推荐了一个Speech Data的Dataset名字叫Switchboard
http://www.isip.piconepress.com/projects/switchboard/
我在网上找到这样一个corpus不知道和讲师说的那个一样不一样。
HMM-DNN(Hybrid) acoustic modeling
首先为了引入HMM-DNN先介绍了一个在Speech Recognition领域曾经风靡一时的HMM-GMMs
GMMs我在看CS229的时候学过,HMM在PGM课上也看过,可是这两玩意结合起来还是看不太明白。
上面一层是HMM;下面的是计算P(x|s),根据state求对应features的概率。这一点让我有点疑惑,我们的目的是求HMM中的Hidden state,首先s都是未知的,怎么能基于它呢;其次目的是求Hidden state求P(x|s)有啥意义
继而就介绍了HMM-DNN Hybrid Acoustic Models
和HMM-GMM相比只是把Acoustic Model替换成了DNN
这个模型据说有很长时间的历史了,但是为什么它在最近才崭露头角呢?
其中一个最重要的原因是我们的计算机的速度目前足够快了,足以支撑,运行如此大的模型,并且能够跑起来多个experiments,使得进行优化成为可能。
以前的model多为单层的NN,现在的是多层的model。还有一个重要的是使用的non-linear model比之前的要好很多。
在experiment中讲师使用了名为TIMIT的dataset作为测试。
模型的层数太少不行,不能很好的捕捉到features,但是太多了也很容易overfitting性能也会下降。
在选择non-linear function的时候,rectify function在BP的时候对error的损失比较小使得它在性能方面比tanh好
两种优化DNN的方法
第一种是把普通的DNN替换成CNN,这种CNN对于失真的声音里信息的提取很优越。
第二种是把普通的DNN替换成Recurrent NN
HMM-free RNN recognition
这里把传统的sub-phone的提取转换成了Collapsing function
在单词输出的时候不再以整一个单词作为一个单位,而将单词的部分fragment作为一个单位
对于语音之间的空隙不发音的时间段,以“_”占位。
使用RNN比普通的NN Error rate下降了很多
这种model还有一个好处,就是对于corpus里没有的词汇也可以造出来。
结论
HMM-DNN是目前最好的speech recognition model
讲师最后预测不久的将来我们的所有电子设备中的Speech recognition model都会换成HMM-DNN
链接:
Speech recognition model的开源project
两个dataset:
TIMIT
http://blog.163.com/gz_aaa/blog/static/37834532201471881923177/
http://www.fon.hum.uva.nl/david/ma_ssp/2007/TIMIT/
Switchboard