- 总结
- 回顾 - 困境: ∣ H ∣ |mathcal H| ∣H∣ 选大选小都不合适
- 是否可选择出一个好的 H mathcal H H?- 可以,深度学习, H mathcal H H小而精
- 回顾:为什么需要隐藏层?- Piecewise Linear 近似任意函数
- 神经网络如何得到任意曲线函数?- Piecewise Linear 近似
- 如何用 Piecewise Linear 近似得到任意函数?- 阶梯函数叠加
- 如何表示阶梯函数?- Sigmoid or ReLU 近似
- 一层隐藏层就可近似任意函数,为何还需要Deeper?- 大模型大数据集低错误率
- 既然是为了增大 H mathcal H H,为什么不能是fatter而是deeper?- 相同参数量deeper错误率更低
- 为什么deeper比fatter错误率低?- 表示同一function,deeper参数更少
- 为什么表示同一function deeper参数更少?- 类比说明&详细分析
- 类比说明 - deeper参数更少
- 详细分析 - deeper参数更少
- 目标函数复杂程度多大时Deep效果更好? - 另外的课程有讲解
- 结论
① 隐藏层作用:使用 Piecewise Linear 近似任意函数。
② 相同参数量,deeper比fatter准确率更低。
③ 表示同一function,deeper比fatter参数更少。
④ 深度学习,可以在比较小的 H mathcal H H情况下,得到更低的损失值。
回顾 - 困境: ∣ H ∣ |mathcal H| ∣H∣ 选大选小都不合适想要理想与现实接近,需要满足两个条件:① Larger N 大样本集;② smaller ∣ H ∣ |mathcal H| ∣H∣ 参数可选值少。
∣
H
∣
|mathcal H|
∣H∣很小时,理想的损失值大,理想与现实的损失值差距小。
∣
H
∣
|mathcal H|
∣H∣很大时,理想的损失值小,理想与现实的损失值差距大。
好的
H
mathcal H
H标准:
∣
H
∣
|mathcal H|
∣H∣小但是精,可以从少数参数可能值中选出使得模型损失很小的最优参数值。
可以通过一个Hidden Layer就可以制造出所有可能的Function。如下图所示,现在要用Network找一个Function(黑色)。将图中的线分成几等分,然后将端点连接起来得到Piecewise Linear。只要绿色的线段足够多,就可以让绿色的线和黑色的线越来越接近。
绿色的线 = 常数项 + 一堆蓝色的Function。
piecewise linear function 可以逼近任何function,所以任何function都可以使用neural network训练得到。
如何表示阶梯函数?- Sigmoid or ReLU 近似可以使用Sigmoid Function近似地表示蓝色阶梯形的线(Hard Sigmoid)。
每个neuron都可以制造出一条蓝色阶梯形的线,然后把它们加起来,再加上常数项,就可以产生Piecewise Linear,进而近似任意函数。
使用Sigmoid近似。
使用ReLU近似。
下图是对语音辨识性能的研究。可以发现Network越深,错误率越低。
Network越深, H mathcal H H 就会越来越大,理想的Loss会越来越低,在此情况下,若有足够多的资料量,理想与现实损失差距不会太大。
深度学习不仅需要大模型,也需要大量的训练资料。如果没有大量的训练资料,就会出现overfitting。
既然是为了增大 H mathcal H H,为什么不能是fatter而是deeper?- 相同参数量deeper错误率更低既然是为了增大 H mathcal H H,也可以让模型横向发展,就是把模型变胖,这样也可以制造很大的模型。现在让Shallow Network和Deep Network有一样的参数,研究结果如下所示。
结论:当参数量相同时,Deep Network比Shallow Network的表现更好,错误率更低。
为什么deeper比fatter错误率低?- 表示同一function,deeper参数更少表示同一个Function时,Deep使用的参数比Shallow使用的参数少。所以,deeper更不容易过拟合,deeper需要的训练数据更少。
输入是由01组成的串,如果这个串中1出现的次数是奇数,就输出0;反之,就输出1。
把XNOR排成Deep结构时,当输入的数字相同时,就输出1;反之,就输出0。(效果更好)
模块化编程的设计思想是把程序要实现的功能分模块,分别写成函数,这样就可以增加复用性,提高开发效率。
在剪窗花过程中,把纸对折多次后剪比不对折纸剪要更快、更有效率。
详细分析 - deeper参数更少如下图所示,一层结构,两层神经元,激活函数用ReLU,输出a1后,得到x与a1的关系。
如下图所示,两层结构,因为第二层的Hidden Layer与第一层的Hidden Layer结构一样,所以a2与a1的关系跟a1与x的关系一样。因此得到a2与x的关系。
如下图所示,三层结构,与上面情况相似,因此可以得到a3与x的关系。
如下图所示,通过上述结果可以得到,假如想要得到 2 k 2^k 2k个折线段的函数,只需要Deep Network有k层,每层有2个神经元;但Shallow Network只有1层,想要得到 2 k 2^k 2k个折线段的函数就需要 2 k 2^k 2k个神经元。
因此,Deep Network参数量比较小,模型比较简单;Shallow Network参数量比较大,模型比较复杂,然而复杂的模型容易overfitting,所以,相比Deep而言Shallow需要更多更大量的训练资料。
结论:如果目标函数复杂且有规律,Deep networks 比 Shallow networks 效果更好。
目标函数复杂程度多大时Deep效果更好? - 另外的课程有讲解即使是在函数是y=x^2的情况下,Shallow 都需要指数级的参数量,Deep Network也比Shallow Network表现得更好。
深度学习,可以在比较小的
H
mathcal H
H情况下,得到更低的损失值。



