深度学习优化
Additional knowledge
1. L2,L1,L(max)范式
可选得optimization function
SGD的缺陷在于,并不是每一次的参数调整,都指向全局最优。
导致在调整的过程中呈现“之”字型,造成效率低下
Momentum
Momentum方法给人的感觉就像是小球在地面上滚动。
Adagrad
自动调整learning rate,先大后小
Adam
Adagrad + Momentum,比较常用
Summary
总体来说,这四种optimization都有各自的适用情景,但是相对而言Adam使用的比较频繁
初始权重的赋值
权重初始值赋值不正确会出现的问题:
- 梯度消失
- 激活函数表现力受限,每一层的激活函数输出的几乎都是相同分布的值
对于Sigmoid和tanH
比较适合给权重赋值Xavier
对于ReLu
比较适合赋值He
Xavier初始值是以激活函数是线性函数为前提而推导出来的。因为sigmoid函数和tanh函数左右对称,且中央附近可以视作线性函数,所以适合使用Xavier初始值。但当激活函数使用ReLU时,一般推荐使用ReLU专用的初始值,也就是Kaiming He等人推荐的初始值,也称为“He初始值”
Batch Normalization
优点:
- 可以使学习快速进行(可以增大学习率)。
- 不那么依赖初始值(对于初始值不用那么神经质)。
- 抑制过拟合(降低Dropout等的必要性)。
正则化(Regularization)
weight-decay(抑制over-fitting)
实现方法之一:损失函数加上权重的平方范数(L2范数)
权值衰减是一直以来经常被使用的一种抑制过拟合的方法。该方法通过在学习的过程中对大的权重进行惩罚,来抑制过拟合。很多过拟合原本就是因为权重参数取值过大才发生的。
weight-decay系数越大,对于大的权重的惩罚力度越大
注:吴恩达的课程里面说是用来惩罚hypothesis function中多余的多项式,以此来达到抑制over-fitting
Droupout
原理:forward的过程中,随机删除掉一些neural units,不让其参与计算;并保存是删掉的哪些neural units。backward的过程中,操作和ReLu一致,直接返回droupout_rate * x
随机抽样优化hyper-parameters
训练数据用于参数(权重和偏置)的学习,验证数据用于超参数的性能评估。为了确认泛化能力,要在最后使用(比较理想的是只用一次)测试数据。
gridSearch的方法,对于性能消耗比较严重。
而随机抽样(更科学的可以采用贝叶斯随机抽样)来进行参数调优效率会更高一些。
杂记
- 众所周知,用作激活函数的函数最好具有关于原点对称的性质。
- 梯度指示的方向是各点处的函数值减小最多的方向 A。这是一个非常重要的性质,请一定
牢记! - 在进行神经网络的学习时,不能将识别精度作为指标。因为如果以识别精度为指标,则参数的导数在绝大多数地方都会变为0。
- 出现over-fitting的一般原因主要有两个:模型拥有大量参数、表现力强;训练数据少。