Loading...

基础优化算法

1.梯度下降

  • 选择一个初始估计 w0w_0

  • 重复迭代优化 t=1,2,3t=1,2,3

    wt=wt1ηLwt1w_t = w_{t-1} - \eta \frac{\partial \mathcal{L}}{\partial w_{t-1}}

  • 沿梯度方向减小损失函数以达到最小值

  • 学习率: 控制迭代步长


2.选择学习率


3.小批量梯度下降

  • 在整个训练集上算梯度成本
    • 一个梯度步骤涉及梯度计算的全部或部分样本
  • 我们可以随机选取 b 个样本i1,i2,...,ibi_1, i_2, ..., i_b 来近似计算

1biIbL(xi,yi,w)\frac{1}{b} \sum_{i \in I_b} \mathcal{L}(x_i, y_i, w)

  • b 是批量大小,又一个重要的超参数

4.选择批量大小

  • 不能太小:每次计算量太小,不适合并行来最大利用计算资源
  • 不能太大:内存消耗增加,浪费计算,例如如果所有样本都是相同的

5.总结

  • 梯度下降通过不断沿着反梯度方向更新参数求解
  • 小批量梯度下降是深度学习默认的求解算法
  • 两个重要的超参数是批量大小和学习率

6.QA

  • 为什么使用平方损失而不是绝对差值:绝对差值是不可导的,会导致不方便
  • 损失为什么要求平均:求平均是为了让梯度不至于过大;从统计上来说,就是用样本方差代替均值。
  • batchsize是否会影响最终模型结果
    bz越小对收敛越好,噪音会多,增加模型的泛化能力
  • 针对batchsize大小的数据集进行网络训练的时候,网络中每个参数更新时减去的梯度是batchsize中每个样本对应参数梯度求和后取得的平均值吗:是的,这种情况其实是普通的随机梯度下降
  • detach:所有的运算子会自动加入计算图求梯度,detach可以把不需要求梯度的运算分离开
  • yelid相比return的好处:每次只需要生成一个batch,而不是全部
  • np问题:多项式时间内可验证的问题