普遍性定理

过去有一个理论告诉我们说,任何continuous function,它都可以用一层neural network来完成(只要那一层只要够宽的话)。这是90年代,很多人放弃做deep learning的原因,只要一层hidden layer就可以完成所有的function(一层hidden layer就可以做所有的function),那做deep learning的意义何在呢?,所以很多人说做deep是很没有必要的,我们只要一个hidden layer就好了。

但是这个理论没有告诉我们的是,它只告诉我们可能性,但是它没有告诉我们说要做到这件事情到底有多有效率。没错,你只要有够多的参数,hidden layer够宽,你就可以描述任何的function。但是这个理论没有告诉我们的是,当我们用这一件事(我们只用一个hidde layer来描述function的时候)它其实是没有效率的。当你有more layer(high structure)你用这种方式来描述你的function的时候,它是比较有效率的。

举例

使用逻辑电路举例

Analogy(当你刚才模组化的事情没有听明白的话,这时候举个例子)

逻辑电路(logistic circuits)跟neural network可以类比。在逻辑电路里面是有一堆逻辑闸所构成的在neural network里面,neural是有一堆神经元所构成的。若你有修过逻辑电路的话,你会说其实只要两层逻辑闸你就可以表示任何的Boolean function,那有一个hidden layer的neural network(一个neural network其实是两层,input,output)可以表示任何的continue function。

虽然我们用两层逻辑闸就描述任何的Boolean function,但实际上你在做电路设计的时候,你根本不可能会这样做。当你不是用两层逻辑闸而是用很多层的时候,你拿来设计的电路是比较有效率的(虽然两层逻辑闸可以做到同样的事情,但是这样是没有效率的)。若如果类比到neural network的话,其实是一样的,你用一个hidden layer可以做到任何事情,但是用多个hidden layer是比较有效率的。你用多层的neural network,你就可以用比较少的neural就完成同样的function,所以你就会需要比较少的参数,比较少的参数意味着不容易overfitting或者你其实是需要比较少的data,完成你现在要train的任务。(很多人的认知是deep learning就是很多data硬碾压过去,其实不是这样子的,当我们用deep learning的时候,其实我们可以用比较时少的data就可以达到同样的任务)

那我们再从逻辑闸举一个实际的例子,假设我们要做parity check(奇偶性校验检查)(你希望input一串数字,若如果里面出现1的数字是偶数的话,它的output就是1;如果是奇数的话,output就是0).假设你input sequence的长度总共有d个bits,用两层逻辑闸,理论可以保证你要 O ( 2 d ) O(2^d) O(2d)次方的gates才能描述这样的电路。但是你用多层次的架构的话,你就可以需要比较少的逻辑闸就可以做到parity check这件事情,

举例来说,你可以把好几个XNOR接在一起(input和output真值表在右上角)做parity check这件事。当你用多层次的架构时,你只需要 O ( d ) O(d) O(d)gates你就可以完成你现在要做的这个任务,对neural network来说也是一样的,可以用比较的neural就能描述同样的function。

使用剪窗花举例

一个日常生活中的例子,这个例子是剪窗花(折起来才去剪,而不是真的去把这个形状的花样去剪出来,这样就太麻烦了),这个跟deep learning有什么关系呢?

这个跟deep learning 有什么关系呢,我们用之前讲的例子来做比喻,假设我们现在input的点有四个(红色的点是一类,蓝色的点是一类)。我们之前说,如果你没有hidden layer的话,如果你是linear model,你怎么做都没有办法把蓝色的点和红色的点分来开,当你加上hidden layer会发生怎样的事呢?当你加hidde layeer的时候,你就做了features transformation。你把原来的 x 1 x_1 x1​, x 2 x_2 x2​转换到另外一个平面 x 1 x_1 x1​plane, x 2 x_2 x2​plane(蓝色的两个点是重合在一起的,如右图所示),当你从左下角的图通过hidden layer变到右下角图的时候,其实你就好像把原来这个平面对折了一样,所以两个蓝色的点重合在了一起。这就好像是说剪窗花的时候对折一样,如果你在图上戳一个洞,那么当你展开的时候,它在这些地方都会有一些洞(看你对折几叠)。如果你把剪窗花的事情想成training。你把这件事想成是根据我们的training data,training data告诉我们说有画斜线的部分是positive,没画斜线的部分是negative。假设我们已经把这个已经折起来的时候,这时候training data只要告诉我们说,在这个范围之内(有斜线)是positive,在这个区间(无斜线)展开之后就是复杂的图样。training data告诉我们比较简单的东西,但是现在有因为对折的关系,展开以后你就可以有复杂的图案(或者说你在这上面戳个洞,在就等同于在其他地方戳了个洞)。

所以从这个例子来看,一笔data,就可以发挥五笔data效果。所以,你在做deep learning的时候,你其实是在用比较有效率的方式来使用你的data。你可能很想说真的是这样子吗?我在文件上没有太好的例子。所以我做了一个来展示这个例子。

使用二位坐标举例

我们有一个function,它的input是二维 R 2 R^2 R2(坐标),它的output是{0,1},这个function是一个地毯形式的function(红色菱形的output就要是1,蓝色菱形output就要是0)。那现在我们要考虑如果我们用了不同量的training example在1个hidden layer跟3个hidden layer的时候。我们看到了什么的情形,这边要注意的是,我们要特别调整一个hidden layer和3个hidden layer的参数,所以并不是说当我是3个hidden layer的时候,是一个hidden layer的network。(这1个neural network是一个很胖的neural network,3个hidden layer是一个很瘦的neural network,他们的参数是要调整到接近的)

那现在这边是要有10万笔data的时候,这两个neural都可以learn出这样的train data(从这个train data sample 10万笔data然后去给它学,它学出来就是右边这样的)

那现在我们减小参数的量,减少到只用2万笔来做train,这时候你会发现说,你用一个hidden lyaer的时候你的结果的就崩掉了,但如果是3个hidden layer的时候,你的结果变得只是比较差(比train data多的时候要差),但是你会发现说你用3个hidden layer的时候是有次序的崩坏。这个结果(最右下角)就像是你今天要剪窗花的时候,折起来最后剪坏了,展开以后成这个样子。你会发现说在使用比较少的train data的时候,你有比较多的hidden layer最后得到的结果其实是比较好的。

端到端的学习

当我们用deep learning的时候,另外的一个好处是我们可以做End-to-end learning。

所谓的End-to-end learning的意思是这样,有时候我们要处理的问题是非常的复杂,比如说语音辨识就是一个非常复杂的问题。那么说我们要解一个machine problem我们要做的事情就是,先把一个Hypothesis funuctions(也就是找一个model),当你要处理1的问题是很复杂的时候,你这个model里面它会是需要是一个生产线(由许多简单的function串接在一起)。比如说,你要做语音辨识,你要把语音送进来再到通过一层一层的转化,最后变成文字。当你多End-to-end learning的时候,意思就是说你只给你的model input跟output,你不告诉它说中间每一个function要咋样分工(只给input跟output,让它自己去学),让它自己去学中间每一个function(生产线的每一个点)应该要做什么事情。

那在deep learning里面要做这件事的时候,你就是叠一个很深的neural network,每一层就是生产线的每一个点(每一层就会学到说自己要做什么样的事情)

语音识别

比如说,在语音辨识里面。还没有用deep learning的时候,我们怎么来做语音辨识呢,我们可能是这样做的。

先有一段声音讯号(要把声音对应成文字),你要先做DF,你不知道这是什么也没有关系,反正就是一个function,变成spectogram,这个spectogram通过filter bank(不知道filter bank是什么,没有关系,就是生产线的另外一个点),最后得到output,然后再去log(取log是非常有道理的),然后做DCT得到MFCC,把MFCC丢到GMM里面,最后你得到语音辨识的结果。

只有最后蓝色的这个bank是用训练数据学出来的,前面这些绿色的这些都是人手定(研究人的生理定出了这些function)。但是后来有了deep learning以后,这些东西可以用neural network把它取代掉。你就把你的deep network多加几层就可以把DCT拿掉。现在你可以从spectogram开始做,你这这些都拿掉,通通都拿deep neural network取代掉,也可以得到更好的结果。deep learning它要做的事情,你会发现他会自动学到要做filter bank(模拟人类听觉器官所制定的filter)这件事情

接下来就有人挑战说我们可不可以叠一个很深很深的neural network,直接input就是target main声音讯号,output直接就是文字,中间完全就不用做,那就不需要学信号与系统

Google 有一篇paper是这样子,它最后的结果是这样子的,它拼死去learn了一个很大neural network,input就是声音讯号,完全不做其它的任何事情,它最后可以做到跟有Fourier transform的事情打平,也仅次于打平而已。我目前还没看到input一个声音讯号,比Fourier transform结果比这要好的。

图像识别

刚刚都是讲语音的例子,影像也是差不多的。大家也都知道,我们就跳过去(过去影像也是叠很多很多的graph在最后一层用比较简单的classifier)

那现在用一个很深的neural,input直接是piexel,output里面是影像是什么

更复杂的任务

那deep learning还有什么好处呢。通常我们在意的task是非常复杂的,在这非常复杂的task里面,有非常像的input,会有很不同的output。举例来说,在做影视辨识的时候,白色的狗跟北极熊看起来很像,但是你的machine左边要outp dog,右边要output bear。有时候很不一样的东西,其实是一样的,横着看火车和侧面看火车,他们其实是不一样,但是output告诉我说一样的。

今天的neural只有一层的话(简单的transform),你没有办法把一样的东西变成很不一样,把不一样的东西变的很像,原来input很像的东西结果看起来很不像,你要做很多层次的转换。

举例来说,看这个例子(这个是语言的例子)。在这个图上,把MFCC投影到二维上,不同颜色代表的是不同的人说的话。在语音上你会发现说,同样的句子,不同人的说,它的声音讯号,看起来是不一样的(这个红色看起来跟蓝色看起来没关系,蓝色跟绿色没有关系)。有人看这个图,语音辨识不能做呀。不同的人说话太不一样了。

如果你今天learn 一个neural network,如果你只要第一层的hidden layer的output,你会发现说,不同的人讲的同样的句子还是很不一样的。

但是你看第8个hidden layer output的时候, 你会发现说,不同的人说着同样的句子,它自动的被line在一起了,也就是说这个DNN在经过很多hidden layer转换的时候,它把本来看起来很不像的东西,它知道应该是一样的(map在一起了)。在右边的这个图上,你会看到一条一条的线,在这些线中你会看到不同颜色的声音讯号。也就是说不同的人说着同样的话经过8个hidden layer的转换以后,对neural network来说,它就变得很像。

手写数字辨识的例子,input feature是左上角这张图(28*28 pixel,把28 *28pixel project到二维平面的话就是左上角的图),在这张图上,4跟9几乎是叠在一起的(4跟9很像,几乎没有办法把它分开)。但是我们看hidden layer的output,这时候4跟9还是很像(离的很近),我们看第2个hidden layer的output(4,7,9)逐渐被分开了,到第三个hidden layer,他们会被分的更开。所以你今天要原来很像的input 最后要分的很开,那你就需要好多hidden layer才能办到这件事情

李宏毅机器学习【深度学习】(12)【深度学习强力的解释2】相关推荐

  1. 【李宏毅机器学习2021】Task04 深度学习介绍和反向传播机制

    [李宏毅机器学习2021]本系列是针对datawhale<李宏毅机器学习-2022 10月>的学习笔记.本次是对深度学习介绍和反向传播机制的学习总结.本节针对上节课内容,对batch.梯度 ...

  2. 【李宏毅机器学习课程笔记】深度强化学习(五)—— Sparse Reward

    文章目录 Introduction Reward Shaping Curiosity Curriculum Learning Hierarchical Reinforcement Learning I ...

  3. 【李宏毅机器学习笔记】 17、迁移学习(Transfer Learning)

    [李宏毅机器学习笔记]1.回归问题(Regression) [李宏毅机器学习笔记]2.error产生自哪里? [李宏毅机器学习笔记]3.gradient descent [李宏毅机器学习笔记]4.Cl ...

  4. 李宏毅svm_【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)...

    [李宏毅机器学习笔记]1.回归问题(Regression) [李宏毅机器学习笔记]2.error产生自哪里? [李宏毅机器学习笔记]3.gradient descent [李宏毅机器学习笔记]4.Cl ...

  5. 【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN)

    [李宏毅机器学习笔记]1.回归问题(Regression) [李宏毅机器学习笔记]2.error产生自哪里? [李宏毅机器学习笔记]3.gradient descent [李宏毅机器学习笔记]4.Cl ...

  6. 喜大普奔:Datawhale开源项目《李宏毅机器学习完整笔记》发布了!

    开源地址 https://github.com/datawhalechina/leeml-notes [导读]关于机器学习的学习资料从经典书籍.免费公开课到开源项目应有尽有,可谓是太丰富啦,给学习者提 ...

  7. 视频+笔记+能够跑通的代码,《李宏毅机器学习完整笔记》发布!

    点击我爱计算机视觉标星,更快获取CVML新技术 [导读]关于机器学习的学习资料从经典书籍.免费公开课到开源项目应有尽有,可谓是太丰富啦,给学习者提供了极大的便利.但网上比比皆是的学习资料大部分都是英文 ...

  8. 【组队学习】【35期】李宏毅机器学习(含深度学习)

    李宏毅机器学习(含深度学习) 航路开辟者:王茂霖.陈安东,刘峥嵘,李玲 领航员:梁家晖 航海士:程浩伟.周小要.吴昌广 基本信息 开源内容:https://linklearner.com/datawh ...

  9. 【组队学习】【33期】3. 李宏毅机器学习(含深度学习)

    李宏毅机器学习(含深度学习) 航路开辟者:王茂霖.陈安东,刘峥嵘,李玲 领航员:宋泽山 航海士:汪健麟.叶梁 基本信息 开源内容:https://github.com/datawhalechina/l ...

  10. 【组队学习】【32期】李宏毅机器学习(含深度学习)

    李宏毅机器学习(含深度学习) 航路开辟者:王茂霖.陈安东,刘峥嵘,李玲 领航员:郭棉昇 航海士:汪超.赵美 基本信息 开源内容:https://github.com/datawhalechina/le ...

最新文章

  1. coco格式的数据集进行训练
  2. 在职计算机答辩没有通过,在职研究生论文答辩没通过可以重新申请吗?
  3. [转] 前后端分离之JWT用户认证
  4. 地...地...地震了
  5. android 重置画布,android-自定义视图:重按视图画布
  6. python 处理xml pandas_Python数据处理分析,解决pandas中所有的Excel疑难杂症(上)
  7. CSS中提升优先级属性!important的用法总结
  8. java中this.value_java中关键字this的用法
  9. WDCP管理面板安装启动EXIF、bcmath完整步骤
  10. c# XML和实体类之间相互转换(序列化和反序列化)
  11. Oracle Spatial 创建空间表、添加空间原表信息、添加删除空间索引
  12. 新浪微博api接口java_Java调用新浪微博API【转】
  13. Windows实现内外网同时使用
  14. uniapp push推送服务使用指南
  15. 游戏开发工程师岗位要求
  16. CSS3的clac 没有效果,警告提示“invalid property value”
  17. matlab中fix函数是啥,fix函数(函数fix是什么意思)
  18. Vue学习笔记-Vue数据绑定
  19. 基于matlab的网络通信RSRP切换仿真
  20. 抖音举起兴趣电商屠龙刀

热门文章

  1. 星际特攻队java_星际特攻队阵容推荐
  2. JavaWeb监听器简单介绍及一个登陆监听案例
  3. H5应用开发大赛落幕 Amaze UI作品榜上有名
  4. IMU预积分模型分析
  5. 计算机指令系统代码设计,指令系统
  6. 双卡双待支持双电池 夏新N808深度评测_夏新手机评测-泡泡网
  7. java 获取scheduler_Spring Scheduler定时任务 + Quartz
  8. 戴尔便携式计算机右键,dell鼠标怎么右键点的话没反应
  9. 前端框架Svelte放弃TypeScript,JS赢!
  10. 湖波荡漾、烟雾蒸腾……这些动态场景竟都是AI「脑补」出的