李宏毅老师课程:Why Deep
Deep
Shallow V.s. Deep
Deep Learning在很多问题上的表现都是比较好的,越deep的network一般都会有更好的performance
那为什么会这样呢?有一种解释是:
- 一个network的层数越多,参数就越多,这个model就越复杂,它的bias就越小,而使用大量的data可以降低这个model的variance,performance当然就会更好
如下图所示,随着layer层数从1到7,得到的error rate不断地降低,所以有人认为,deep learning的表现这么好,完全就是用大量的data去硬train一个非常复杂的model而得到的结果
但其实deep和shallow这两种结构的performance是会不一样的,下图是这两种结构的network的比较:
结果如下图所示:
在参数数量接近的情况下,只有1层的network,它的error rate是远大于好几层的network的;这里甚至测试了1x16k大小的shallow network,把它跟左侧也是只有一层,但是没有那么宽的network进行比较,由于参数比较多所以才略有优势;但是把1x16k大小的shallow network和参数远比它少的2x2k大小的deep network进行比较,结果是后者的表现更好
也就是说,只有1层的shallow network的performance甚至都比不过很多参数比它少但层数比它多的deep network
根据上面的对比可知,deep learning显然是在结构上存在着某种优势,不然无法解释它会比参数数量相同的shallow learning表现得更好这个现象
Modularization(模块化)
就像写程序一样,shallow network实际上就是把所有的程序都写在了同一个main函数中,所以它去检测不同的class使用的方法是相互独立的;而deep network则是把整个任务分为了一个个小任务,每个小任务又可以不断细分下去,以形成modularization,就像下图一样
example
这里举一个分类的例子,我们要把input的人物分为四类:长头发女生、长头发男生、短头发女生、短头发男生
如果按照shallow network的想法,我们分别独立地train四个classifier(其实就相当于训练四个独立的model),然后就可以解决这个分类的问题;但是这里有一个问题,长头发男生的data是比较少的,没有太多的training data,所以,你train出来的classifier就比较weak,去detect长头发男生的performance就比较差
但其实我们的input并不是没有关联的,长头发的男生和长头发的女生都有一个共同的特征,就是长头发,因此如果我们分别独立地训练四个model作为分类器,实际上就是忽视了这个共同特征,也就是没有高效地用到data提供的全部信息,这恰恰是shallow network的弊端
而利用modularization的思想,使用deep network的架构,我们可以训练一个model作为分类器就可以完成所有的任务,我们可以把整个任务分为两个子任务:
- Classifier1:检测是男生或女生
- Classifier2:检测是长头发或短头发
经过层层layer的任务分解,每一个Classifier要做的事情都是比较简单的,又因为这种分层的、模组化的方式充分利用了data,并提高了信息利用的效率,所以只要用比较少的training data就可以把结果train好
Speech
language basics
当你说what do you think的时候,这句话其实是由一串phoneme所组成的,
同样的phoneme也可能会有不太一样的发音,当你发d uw和y uw的时候,心里想要发的都是uw,但由于人类发音器官的限制,你的phoneme发音会受到前后的phoneme所影响;所以,为了表达这一件事情,我们会给同样的phoneme不同的model
process
首先要做的事情是把acoustic feature(声学特征)转成state,这是一个单纯的classification的problem
再建一个Classifier去识别acoustic feature属于哪个state,再把state转成phoneme,然后把phoneme转成文字,接下来你还要考虑同音异字的问题…
Analogy
Logic Circuit
逻辑电路其实可以拿来类比神经网络
剪窗花
关于逻辑回归的分类问题,可能会出现linear model根本就没有办法分类的问题,而当你加了hidden layer的时候,就相当于做了一个feature transformation,把原来的x1,x2转换到另外一个平面,变成x1’、x2’,这样做既可以解决某些情况下难以分类的问题,又能够以比较有效率的方式充分利用data(比如下面这个折纸,高维空间上的1个点等于二维空间上的5个点,相当于1笔data发挥出5笔data的作用)
End-to-end Learning
End-to-end learning,指的是只给model input和output,而不告诉它中间每一个function要怎么分工,让它自己去学会知道在生产线的每一站,自己应该要做什么事情;在DNN里,就是叠一个很深的neural network,每一层layer就是生产线上的一个站
Conclusion
deep learning的好处:
- 有时候非常像的input,它会有很不一样的output
- 有时候看起来很不一样的input,output其实是一样的
如果你的network只有一层的话,就只能做简单的transform,没有办法把一样的东西变得很不一样,把不一样的东西变得很像;如果要实现这些,就需要做很多层次的转换,就像前面那个剪窗花的例子,在二维、三维空间上看起来很难辨别,但是到了高维空间就完全有可能把它们给辨别出来
本文图片来自李宏毅老师课程PPT,文字是对李宏毅老师上课内容的笔记或者原话复述,在此感谢李宏毅老师的教导。