深度越深越好?
深度学习适用于很多场景,越深的网络一般来说表现越好。
网络的层数越多,参数就越多,这个模型就越复杂,它的bias就越小,而使用大量的数据可以降低模型的variance,所以模型表现就会更好。
如下图所示,随着层数1-7,得到的错误率逐渐下降。为什么要用深度学习
如果仅是因为大量的数据加上足够多参数的模型就可以表现较好,那为什么要用深度神经网络,可以用神经元数目足够多的网络替代吗?
深度和宽度?
深度和宽度两种结构的表现是不同的“:
为什么要用深度学习
右侧表示的是deep network的情况,左侧表示的是shallow network的情况,为了保证两种情况下参数的数量是比较接近的,因此设置了右侧13772和14634这两种size大小,它们分别对应比较左侧52k和72k这两种情况下的network(注意参数数目和neuron的数目并不是等价的)。
为什么要用深度学习
如图可知,在参数相近的情况下,只有1层的网络错误率远大于有好几层网络的错误率。
模块化
DNN网络具有模块化(modularization),它用的是结构化的架构。
shallow network实际上就是把所有的程序都写在了同一个main函数中,所以它去检测不同的class使用的方法是相互独立的;而deep network则是把整个任务分为了一个个小任务,每个小任务又可以不断细分下去,以形成modularization,就像下图一样:
为什么要用深度学习
在DNN的架构中,实际上每一层layer里的neuron都像是在解决同一个级别的任务,它们的output作为下一层layer处理更高级别任务的数据来源,低层layer里的neuron做的是对不同小特征的检测,高层layer里的neuron则根据需要挑选低层neuron所抽取出来的不同小特征,去检测一个范围更大的特征;neuron就像是一个个classifier ,后面的classifier共享前面classifier的参数。

这样做的好处是,低层的neuron输出的信息可以被高层不同的neuron重复使用,而并不需要像shallow network一样,每次在用到的时候都要重新去检测一遍,因此大大降低了程序的复杂度。
举例:
我们要把input的人物分为四类:长头发女生、长头发男生、短头发女生、短头发男生

如果按照shallow network的想法,我们分别独立地train四个classifier(其实就相当于训练四个独立的model),然后就可以解决这个分类的问题;但是这里有一个问题,假如长头发男生的data是比较少的,没有太多的training data,所以,你train出来的classifier就比较弱,去检测长头发男生的表现就比较差。
为什么要用深度学习
但其实我们的输入并不是没有关联的,长头发的男生和长头发的女生都有一个共同的特征,就是长头发,因此如果我们分别独立地训练四个model作为分类器,实际上就是忽视了这个共同特征,也就是没有高效地用到data提供的全部信息,这恰恰是shallow network的弊端。

而利用modularization的思想,使用deep network的架构,我们可以训练一个model作为分类器就可以完成所有的任务,我们可以把整个任务分为两个子任务:
Classifier1:检测是男生或女生
Classifier2:检测是长头发或短头发
虽然长头发的男生data很少,但长头发的人的data就很多,经过前面几层layer的特征抽取,就可以头发的data全部都丢给Classifier2,把男生或女生的data全部都丢给Classifier1,这样就真正做到了充分、高效地利用数据,最终的Classifier再根据Classifier1和Classifier2提供的信息给出四类人的分类结果
为什么要用深度学习
利用这种方式,可以看出,层层的任务分解使得分类器的分类简单,且充分的利用了数据,提高了信息利用率。
深度和模块化
做模块化的好处是把原来比较复杂的问题变得简单且所有的分类器都用同一组参数检测子特征,提高参数使用效率。
因为深度学习采用模块化,所以他需要的训练数据反而较少,深度学习其实是为了解决数据量少的问题提出的.
每一个神经元其实就是一个基本的分类器:
1、第一层的神经元,他是一个最基本的分类器,检测的是颜色、线条这样的小特征。
2、第二层的神经元是比较复杂的分类器,他用第一层基本分类器的输出当作输入,也就是把第一层的分类器当作模块,利用第一层得到的小特征分类出不同样式的花纹。
3、第三层的神经元又把第二层的神经元当作它的模块,利用第二层得到的特征分类出不同人,轮胎等如下图。
为什么要用深度学习
传统的机器学习算法,是人为地根据domain knowledge指定特征来进行提取,这种指定的提取方式,甚至是提取到的特征,也许并不是实际最优的,所以它的识别成功率并没有那么高;但是深度学习做模块化是机器自动学习得,检测的特征这些都不是认为指定。
深度学习总结:
1、考虑input之间的内在关联,所有的class用同一个model来做分类
2、modularization思想,复杂问题简单化,把检测复杂特征的大任务分割成检测简单特征的小任务
3、所有的classifier使用同一组参数的子特征检测器,共享检测到的子特征
4、不同的classifier会share部分的参数和data,效率高
5、多层hidden layer对complex问题的处理上比较有优势

相关文章:

  • 2021-07-10
  • 2021-04-19
  • 2021-07-31
  • 2021-08-23
  • 2021-08-25
  • 2021-07-15
  • 2021-09-09
  • 2021-05-29
猜你喜欢
  • 2021-09-15
  • 2021-12-16
  • 2021-04-29
  • 2021-11-13
  • 2021-12-29
  • 2022-12-23
相关资源
相似解决方案