ML学习笔记:Why Deep Learning?

2019-10-31  本文已影响0人  answerLDA

Deeper is better?

毫无疑问,参越多,效果越好。



但是在比较两种不同的架构时,却不一样。



为什么参数增加了效果反而差?

Modularization

因为架构越深,相当于模块化越多。



考虑一个问题,笼统的解决方法:



但是把问题慢慢细分,解决效果会更好。
image.png

训练的时候共用一个Model,可以在少量数据得到好的结果。



层次性的模块化:使用前一层的输出作为本层的输入的模块来建立本层的分类器。因为我们的数据比较少,需要在每一层中好好利用上一层的数据,这样才能在少量数据的情况下得到好的结果。

模块化用于图像方面。

Modularization - Speech

每个人发音方式不同,所以要用不同的model去模拟不同的phoneme,又称tri-phone。



如何做语音辨识?
第一步:每隔一个时间点取一个window,获取其特征,判断它属于哪个state。然后用state转成phoneme.......


first step
如何判断window内容属于哪个state?传统方法是使用GMM来判断分类。

由于state过多,后面会导致tri-phone过多。所以某些state公用一个distribution,又称Tied-state。



这样做的效率是很低的。下图显示人类发音时的所有母音。母音只受三种因素影响:舌头前后位置,舌头上下位置,嘴型。例如,从a-e-i-u-o的发音顺序,嘴型是从low-high-front-back的改变。所以不同的phoneme之间是有关系的。

DeepLearning的做法:
所有的state都公用一个DNN,这样比较有效率。
image.png
为什么可以用DeepLearning效率比较高?下图可以看到降维显示输出,相同的发音是聚合在一起的,跟图示的位置大致一致。

在以前的理论中:任何模块都可以只用一层hidden layer,只要你的hidden layer够宽。但是可行性≠有效性。

Analogy

只要两层的逻辑电路,就可以表示任何的布尔函数。但是使用多层的电路会更加有效率,而且使用的参数更少。



例子:一个判断1的个数为奇数或者偶数的电路。使用多层结构,只需要三个逻辑门就可以解决。


More Analogy


More Analogy - Experiment

下面例子显示,更深的层,使用更少的数据时,效果相对更好。


End-to-end Learning

端对端学习,只说明输入和输出,不要求中间的做法。



传统的语音识别的方法:



使用DeepLearning的语音识别方法:

End-to-end Learning - Image Recognition


Complex Task …

很多东西看起来很像但是不一样;有的看起来很不一样但是他们是一样。这就是DeepLearning能解决的。



MFCC在分析语音识别时,不同的人说同一句话是很不一样的;但是在DNN里面,经过多层的训练,不同的人说同一句话可以很相似。




MNIST

To learn more …

http://research.microsoft.com/apps/video/default.aspx?id=
232373&r=1

胶片来自于台湾大学李宏毅教授的《机器学习课程》,侵删!

上一篇下一篇

猜你喜欢

热点阅读