李宏毅学习笔记10.Why Deep(上)

前言

本节课老师从深度学习的学习效率与深度的关系开始展开,谈到了魔主化,并给出了老师的研究方向中的应用:语音识别中为什么DNN可以work better的原因。
公式输入请参考:在线Latex公式

深度学习是不是越深越好?

先给出实验结果
在这里插入图片描述
从图中直观的感觉是越深越好,但是如果考虑一下原因,就知道,越深的神经网络,其参数越多,模型也就越复杂,当然能够拟合更为复杂的函数。如果要考虑合理的实验,可以按照下面的方式进行设计:
在这里插入图片描述
原则就是要参数的数目要一样多!得到的结果长这样:
在这里插入图片描述
看来单单增加参数的数量,不增加神经网络的层数是没有办法提高准确率的,这是为什么呢?

魔主化(Modularization)

就是在编程序的时候,我们常常会把常用的功能从main函数中拿出来,单独写成子函数,便于其他地方调用,或者从面向对象编程的思想来考虑机器学习,例如,我们需要用图像识别方式分类四种人:
在这里插入图片描述
其中长发男生比较少,所以training data少导致第二个分类器会比较弱。如果用魔主化的概念来解决这个问题:
在这里插入图片描述
把刚才的问题换成上图所示基本分类,这样都有足够的数据来训练基本分类器。然后再用基本分类器作为输出,进行再次分类:
在这里插入图片描述
由于第二个分类器需要做的工作比较简单,这个时候虽然数据比较少,但是由于前面复杂的工作已经由基本分类器做完了,这个时候少量数据也能把第二个分类器训练好。回到神经网络的一般形式:
在这里插入图片描述
这里和刚才的例子不同的地方在于,在神经网络里面,魔主化是自动完成的,不需要我们人为决定第一层检测什么特征,第二层检测什么特征。这样每一次要干的事情变得简单后按刚才魔主化的思想,这个时候需要的training data会比较少。这里老师提出的观点是神经网络不一定需要big data才能训练好。原因还比较有意思:极端一点,如果我们已经拥有世界上万物的图片和标记,这个时候就不需要机器学习了,直接做查询就可以了,机器学习就是要通过模型来举一反三,进行预测,所以这个时候并不是需要很多数据。(当然我觉得太少的数据也不行,欠拟合?)

Reference: Zeiler, M. D., & Fergus, R. (2014). Visualizing and understanding convolutional networks. In Computer Vision–ECCV 2014 (pp. 818-833)这个是一篇关于CNN每一层模型可视化的文章,当然后面也有讲CNN的可视化:
在这里插入图片描述

魔主化在语音识别的应用

貌似老师的研究方向就是这个-。-

人类语言的架构

先上图:
在这里插入图片描述
图中表示人说这么一句话:What do you think
可以拆分为Phoneme(音素,可以理解为音标),但是每个音素在前后音素的影响下,相同音素发音会有所不一样,例如do中的/uw/和you中的/uw/发音是不一样的,因此会给这些不同位置的相同音素结合前后的音素表示为Tri-phone。每个音素可以拆分为几个State。

语音识别的第一步

整个语音识别比较复杂,课程里面只讲第一个步骤
在这里插入图片描述
在语音的时序图中以一定大小的window(如:250毫秒,上图中绿色框框)取出数据,然后用acousitc feature表示。一段声音就表示成为acousitc feature sequence。语音识别的第一步就是要决定acousitc feature属于哪个state,相当于一个分类问题。也就是要构建一个classifier,把acousitc feature分类,决定是哪个state,后续还要把state转化成音素,然后组合成word,然后考虑多义字等。

传统做法

在没有使用神经网络之前,计算state是使用GMM(高斯混合模型Gaussian Mixture Model)来计算某个acousitc feature是属于哪个state,结果往往不太好,因为tri-phone的数目太多,例如中文有30多个音素,每个音素随着前后的音素不同,排列组合起来2万7千多个tri-phone,每个tri-phone又有三个state,总的state会有上万个,每个state用一个高斯分布来描述,参数过多。
在这里插入图片描述
传统语音识别解决问题的方法就是tied-state,意思就是有些state会共用一个高斯分布(就好比编程里面的不同指针指向的是相同地址),至于如何决定哪些state会共用一个高斯分布,则需要domain knowledge来决定。
在这里插入图片描述
这里老师提到了在DNN之前,使用的是HMM-GMM方法(隐马尔可夫模型-高斯混合模型)来解决语音识别问题,思路如下:建立一个高斯分布的池,池中每个高斯分布都有自己的key,然后让state对应到多个高斯分布上,如:state1对应1,3,5;state2对应2,4,5,可以发现state1和state2在某些时候可以share高斯分布,有的时候又可以独立分布。但是这样效率不高,因为人类语言发音是有一定关系的,它受三个因素影响:
1、舌头前后的位置;
2、舌头上下的位置;
3、嘴型。
在这里插入图片描述
上图是母音发音与舌头位置关系(front、back、low、high)图。

DNN的做法

其实就和图像识别一样,看做是一个分类问题:
在这里插入图片描述
关键的地方就是:所有的state都共用同一个DNN。
在这里插入图片描述
这一点厉害在什么地方??
传统做法中可以需要64个GMM来完成语音识别,这里只有一个DNN,是不是DNN参数比传统方法多所以效果好呢,和本节课开头所说的一一个道理,不是!老师有做过实验,DNN相当一个很大的model,GMM相当于很多很小的model,二者使用的参数数量其实差不多的。
有一个研究将DNN的一个隐藏层提取出来,把它的输出设置为2个dimension,然后输入一些acousitc feature输入后得到如下的输出:
在这里插入图片描述
这里的颜色对应上面的母音发音与舌头位置关系图中几个重要元音的发音(蓝色是i,红色是o,黑色是a,黄色是u),注意观察它们的位置也是相对应的,也就是说在DNN做语音识别的时候,他的隐藏层没有马上去判断acousitc feature属于哪个音素或哪个state,而是判断这个声音人类是如何发出来的(舌头位置),接下来的layer再根据这个结果来判断acousitc feature属于哪个音素或哪个state,这就是为什么这么多cousitc feature可以用同一个DNN来进行识别的原因。这里对应了前面的男女长短头发的魔主化的示例。

通用原理小结 Universality Theorem

在这里插入图片描述
任何连续的函数都可以用单层神经网络来表示(给定足够多的神经元),这个已经有证明,见花书第四章
但是这个结论并没有说明的是:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值