1. 随机搜索
随机搜索,求取一定次数内的loss的最小值,以这一次的weight作为搜索的结果。
2. 梯度下降
求解局部的梯度,沿着下降最快的方向更新参数
数值求解方法:
针对每个weight,新增很小的值,求解结果,然后求解相对精度。weight增加,计算量太大,而且不精确。
公式计算:
理论推导,直接得到梯度的计算公式。loss太复杂,很难推导。
实际是通过反向梯度传递计算。
3. 训练的参数:
1. 参数初始化
2. 迭代次数
3. 学习率
4. batch大小
5. 数据采样顺序
梯度下降,是在小的batch上进行的,没法计算所有的数据,然后进行一次完整的反向传播。
4. 梯度更新方法
4.1 vanillar GD
观察到的现象:
不会直接朝最小的方向去更新;
开始的时候比较快,越到后面越慢;
存在的问题:
搜集所有样本的loss,然后进行一次梯度下降,非常慢。
4.2 SGD,随机梯度下降法
好处:
mini batch,计算loss,更新梯度。更可行
问题:
1. 不同方向梯度差的较多 2. local minum
3. 随机性,minibatch无法代表整体
4.3 SGD+Momentum
Momentum记录过去的梯度,抑制随机噪音,超越局部最优点。
Nesterov Momentum
AdaGrad
用于解决不同方向梯度差异较大,导致振荡。以历史的梯度作为一个权重。
RMSRrop
解决时间过久,历史梯度值太大的问题,加了一个decay权重。
Adam: SGD+ RMSProp+ Momentum
Adam: SGD+ bias + RMSProp + Momentum
在初始时刻,加上bias,避免梯度太大。