虽然我们的神经⽹络给出了令⼈印象深刻的表现,但这样的表现带有⼏分神秘
- ⽹络中的权重和偏置是被⾃动发现的。
- 这意味着我们不能⽴即解释⽹络怎么做的、做了什么。
- 我们能否找 到⼀些⽅法来理解我们的⽹络通过什么原理分类⼿写数字?
- 并且,在知道了这些原理后,我们 能做得更好吗?
因为有着⾃动学习得到的权重和偏置,这些是我 们⽆法理解的,这样的神经⽹络对我们来说是不透明的;
例子引入
假设我们要确定⼀幅图像是否显⽰有⼈脸
![]()
我们对该问题进行了如上的拆分,但是,它存在很多缺陷,也许我们仅仅能看到脸的部分,或者这张脸是有⻆度的,因此⼀些⾯部特征是模糊的。
不过这个 想法表明了如果我们能够使⽤神经⽹络来解决这些⼦问题,那么我们也许可以通过将这些解决 ⼦问题的⽹络结合起来,构成⼀个⼈脸检测的神经⽹络。
⼦⽹络也可以被继续分解,这看上去很合理。假设我们考虑这个问题:“左上⻆有⼀个眼睛 吗?”。这个问题可以被分解成这些⼦问题:“有⼀个眉⽑吗?”,“有睫⽑吗?”,“有虹膜吗?
这些⼦问题也同样可以继续被分解,并通过多个⽹络层传递得越来越远。最终,我们的⼦⽹ 络可以回答那些只包含若⼲个像素点的简单问题。
- 举例来说,这些简单的问题可能是询问图像中的⼏个像素是否构成⾮常简单的形状;
最终的结果是,我们设计出了⼀个⽹络,它将⼀个⾮常复杂的问题——这张图像是否有⼀张 ⼈脸——分解成在单像素层⾯上就可回答的⾮常简单的问题。它通过⼀系列多层结构来完成, 在前⾯的⽹络层,它回答关于输⼊图像⾮常简单明确的问题,在后⾯的⽹络层,它建⽴了⼀个更加复杂和抽象的层级结构。
包含这种多层结构——两层或更多隐藏层——的⽹络被称为深度神经⽹络。
- 深度⽹络能够构建起⼀个复杂的概念的层次结构;
- 这有点像传统编程语⾔使⽤模块化的设计和抽 象的思想来创建复杂的计算机程序。
- 将深度⽹络与浅层⽹络进⾏对⽐,有点像将⼀个能够进⾏ 函数调⽤的程序语⾔与⼀个不能进⾏函数调⽤的精简语⾔进⾏对⽐
学习算法的演进
⼿⼯设计⽹络中的权重和偏置⽆疑是不切实际的,取⽽代之的是,我们希望使⽤学习算法来让⽹络能够⾃动从训练数据中学习权重和偏差。
- 80年代和90年代的研究⼈员尝试了使⽤随机梯度下 降和反向传播来训练深度⽹络;
- 不幸的是,除了⼀些特殊的结构,他们并没有取得很好的效果;
- ⾃2006年以来,⼈们已经开发了⼀系列技术使深度神经⽹络能够学习;
- 现在训练⼀个有5到10层隐藏层的⽹络都是很常⻅的。