SGD
每次迭代只采样一个样本
优化 learn-rate,自适应学习率
- 自适应学习率的方法:对不同的参数使用不同的学习率,参数更新频率和更新步长负相关
- [[Annealing]],全局共享learn_rate 所有的参数以相同的幅度进行更新
- 随步衰减
- 指数衰减
- 1/t衰减
- [[AdaGrad]],参数独立 learn_rate 更新幅度取决于参数本身
- $\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{G_t+\epsilon}} \odot g_t$
- ((44833c3f-1ac4-4c1f-bccf-d9528e5fdb1b))
- ((e9782fc6-ab5e-4274-8d85-affdbcb17f01))
- 计算一个时间区间内的梯度值累积和 [[移动平均]]
- AdaDelta 分母滑动区间 + 单位矫正
- $E\left[g^2\right]t=\gamma E\left[g^2\right]{t-1}+(1-\gamma) g_t^2$
- $E\left[\Delta \theta^2\right]t=\gamma E\left[\Delta \theta^2\right]{t-1}+(1-\gamma) E\left[\Delta \theta^2\right]_t$
- $\Delta \theta_t=-\frac{R M S[\Delta \theta]_{t-1}}{R M S[g]_t} g_t$
- [[RMSProp]] 分子滑动区间
- ((a04c1703-9d8e-4d9b-aa26-98bd3e0ef945))
- ((b3f4d73a-faee-43d2-b8d0-1e38a3dc37f6))
- $E\left[g^2\right]t=0.9 E\left(g^2\right){t-1}+0.1 g_t^2$
- $\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{E\left[g^2\right]_t+\epsilon}}$
- [[Adam]] 分子动量版
- $v_t=\beta_2 v_{t-1}+\left(1-\beta_2\right) g_t^2$
- $m_t=\beta_1 m_{t-1}+\left(1-\beta_1\right) g_t$
- $\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{\hat{v}_t+\epsilon}} \hat{m}_t$
- [[AdamW]] 和 [[LazyAdam]]
- AdaDelta 分母滑动区间 + 单位矫正
优化梯度方向,减小震荡
- [[Momentum]]:强化相关方向的训练和弱化无关方向的震荡来加速 SGD 收敛
- $v_t=\gamma v_{t-1}+\eta \nabla_\theta J(\theta)$
- ((130072c3-546f-4fa6-a263-c679e1888b98))
- ((29ccc16a-2efd-494a-8334-d6f314e2643d))
- Nesterov 梯度加速法
- 预判前方地形
- $v_t=\gamma v_{t-1}+\eta \nabla_\theta J\left(\theta-\gamma v_{t-1}\right)$
梯度下降法 [[SGD]]
- 并行化,Scalable
- Downpour SGD
- Hogwild!