基础优化算法
1.梯度下降
-
选择一个初始估计
-
重复迭代优化
-
沿梯度方向减小损失函数以达到最小值
-
学习率: 控制迭代步长
2.选择学习率
3.小批量梯度下降
- 在整个训练集上算梯度成本
- 一个梯度步骤涉及梯度计算的全部或部分样本
- 我们可以随机选取 b 个样本 来近似计算
- b 是批量大小,又一个重要的超参数
4.选择批量大小
- 不能太小:每次计算量太小,不适合并行来最大利用计算资源
- 不能太大:内存消耗增加,浪费计算,例如如果所有样本都是相同的
5.总结
- 梯度下降通过不断沿着反梯度方向更新参数求解
- 小批量梯度下降是深度学习默认的求解算法
- 两个重要的超参数是批量大小和学习率
6.QA
- 为什么使用平方损失而不是绝对差值:绝对差值是不可导的,会导致不方便
- 损失为什么要求平均:求平均是为了让梯度不至于过大;从统计上来说,就是用样本方差代替均值。
- batchsize是否会影响最终模型结果:
bz越小对收敛越好,噪音会多,增加模型的泛化能力 - 针对batchsize大小的数据集进行网络训练的时候,网络中每个参数更新时减去的梯度是batchsize中每个样本对应参数梯度求和后取得的平均值吗:是的,这种情况其实是普通的随机梯度下降
- detach:所有的运算子会自动加入计算图求梯度,detach可以把不需要求梯度的运算分离开
- yelid相比return的好处:每次只需要生成一个batch,而不是全部
- np问题:多项式时间内可验证的问题