为什么Deeper更好,我们神经网络层数多,因为参数多,当然也表现得更好
我们比较胖短型和深瘦型,哪个有优势呢,我们需要在相同的参数量下进行比较
我们比较2种形状,当高瘦型是5*2K个神经元时,矮胖相同的参数量要1*3772个神经元,其准确率比左侧低,下一行类似,我们甚至可以把矮胖型的神经元增加到1*16K个,但是准确率还不如2*2K的左侧,所以我们增加参数时要把参数尽可能的增加到深度上而不是广度上。
我们可以把深度学习类比成模组化过程,比如我们建立函数并不需要重复写函数内容,可以通过层级,让高层函数调用底层函数结果
假设我们要分类实现判断是不是长发,是否是男女,的4种情况分类,我们的长发男样本数量比较小,所以矮胖的第二个判断长发男的分类器就比较弱
我们就可以先训练比较强的分类器,长发和短发数据都比较多,容易分类,男性和女性的数据也比较多,也可以实现分类
于是我们就可以根据基本分类器的输出组合实现细分类器,就可以使用较少的数据实现分类
所以我们就能把神经网络的每一层想象成一个分类器,下一层依据上一层分类的模组进行进一步细分,具体怎么实现模组化,是程序不断迭代学习到的。课上老师解释道,往往很多人认为AI就是DeepData,就要大数据,事实上用DeepLearning却是在减少使用训练数据的,如果我们有全世界所有样本的数据,那么我们还做什么深度学习呢,正是因为我们手里的数据量不够,所以才进行DeepLearning
我们都知道深度学习可以做语言识别,具体是怎么做呢,我们先将声音分成不同的phoneme(音标),比如u的音在不同位置发音效果就不一样,我们就用到了tri-phone,将其前后的音联合起来
我们将一段对话按时间单元拆分成若干组,每组根据不同时间点的频率形成一组向量,根据向量我们可以决定他的状态,根据状态再决定其发音,根据发音决定是否有同音异意等等。
我们传统的语音识别时根据GMM,分辨每段属于哪个Phoneme,如果一共30个Phoneme,3个分叉就需要30**3=27000个,参数就太多了
我们的不同的phoneme可能经过相同的属性处理,但是在经典非深度学习的过程中是假设他们是独立的
但实际上,这些发音往往是有联系的,以舌头的不同位置和不同口型,我们把各种母音列出如下关系,有舌头距离嘴的远近和口型的大小
我们用深度学习DNN就可以将每一个Phoneme属于不同state打的几率算出来,而且所有的state只用同一个DNN就能训练出来,不用不同state训练不同的网络
我们将语音识别的隐层输出投影到2维上,就可以大致发现原因分布的位置大致和舌头相关分布位置一致
有人说过如果神经元足够多,我们使用一层隐层就可以实现任何分类功能,的确似乎是这样,但是这种方法是相当没有效率的
有EE背景的同学,可以把逻辑电路和神经网络联系起来,我们都知道用2层逻辑层理论上可以实现任何逻辑功能,但是用更多层逻辑门往往能使函数简化,神经网络也是一样,相同功能需要更少的神经元,也可以使用更少的数据来完成功能
我们以下图为例,为了识别图中红色和蓝色区域,我们使用1个隐层和3个隐层,为了参数量一致,我们控制了神经元个数,当我们使用100000个样本时,1层隐层的也有一定的效果,但我们使用20000个数据时,1层的崩坏的就比较严重了,而3层的还比右侧有些崩坏,类似于逐级的,总体效果比1层好
我们可以用DNN做End-to-end Learning,就是比较复杂的学习过程,例如语言识别,我们建立模型就相当于建立一条生产线,每层做固定的事情,当我们确定好模型,函数就应该自己学好
我们经典的语音识别是将声音-DFT-spectrogram-Filter bank-log-DCT-MFCC-GMM-输出,而经过深度学习,我们完全可以模拟GMM的功能(GMM是信号处理函数计算的近乎顶点),甚至从DCT开始都加入到深度学习去实现,到现在已经有从Filter bank来实现,我们发现定制足够的深度,计算机自己就能实现每个单元的功能。
图像识别过去也有比较经典的算法,得出分类识别结果,但是现在我们已经可以通过深度学习实现
对于复杂的任务,比如比较像的狗和熊,我们要正确分类,而2个看上去不一样的都是火车,如果神经网络层数不够,可能不会识别出来
还是语音识别的例子,我们录了不同人的不同声音,相同颜色是同一个人说的话,左下即这个输入,我们投影到2维,看上去好像很没有规律,在第一层隐层,我们看上去也没有得到比较明显的分别
我们再观察第8层隐层的时候就会发现,不同人说的相同的话就会比较重叠的放置在一起了,经过了8层打的转换,不同人的相同的话就会被识别出来
我们类比手写数字,输入4,9是比较重叠的,经过几层的隐层,分开的就越明显
我们可以读下这个哥们的文章,深度学习到底需要用深层吗,文章举例了他用一层隐层模拟三层的功能,当标签设置不直接设置目标标签时,可以使训练结果好,但是如果用目标标签训练就是不行,不过他最后的结果还是需要深层神经网络= =