优化算法
类型 | 公式 |
---|---|
梯度下降(Gradient descent) | ggt←∇fBt(xxt−1)=1∣B∣∑i∈Bt∇fi(xxt−1), xxt←xxt−1−ηtggt, ∣B∣=∣Bt∣=n. |
随机梯度下降(Stochastic gradient descent, SGD) | xx←xx−η∇fi(xx), i=randomrandom{1,…,n} |
小批量随机梯度下降(Mini-batch stochastic gradient descent) | ggt←∇fBt(xxt−1)=1∣B∣∑i∈Bt∇fi(xxt−1), xxt←xxt−1−ηtggt, ∣B∣=∣Bt∣<n. |
以上三个注意看小批量随机梯度下降的代码实现 | 会发现三者代码编写一样,区别仅仅在于批量大小值,这与前面已经随机获取∣B∣批量数据有关!!! |
动量法(Momentum) | vvt←γvvt−1+ηtggt=γvvt−1+(1−γ)(ηtggt1−γ), xxt←xxt−1−vvt,1≤γ<1. |
AdaGrad算法 | sst←sst−1+ggt⨀ggt, xxt←xxt−1−η√sst+ϵ⨀ggt. |
RMSProp算法 | sst←γsst−1+(1−γ)ggt⨀ggt, xxt←xxt−1−η√sst+ϵ⨀ggt, 0≤γ<1. |
AdaDelta算法 | sst←ρsst−1+(1−ρ)ggt⨀ggt, gg′t←√Δxxt−1+ϵsst+ϵ⨀ggt, xxt←xxt−1−gg′t, Δxxt←Δxxt−1+(1−ρ)gg′t⨀gg′t, 0≤ρ<1. |
Adam算法 | vtvtt←β1vvt−1+(1−β1)ggt, ss←β2sst−1+(1−β2)ggt⨀ggt, ^vvt←vvt1−βt1, ^sst←sst1−βt2, gg′t←η^vvt√^sst+ϵ, xxt←xxt−1−gg′t, 0≤β1,β2<1(recommend:β1=0.9,β2=0.999). |
优化与深度学习
1 | from mpl_toolkits import mplot3d |
梯度下降和随机梯度下降
一维梯度下降
1 | from mpl_toolkits import mplot3d |
1 | Ouputs: |
多维梯度下降
1 | from mpl_toolkits import mplot3d |
1 | Outputs: |
随机梯度下降
1 | from mpl_toolkits import mplot3d |
1 | epoch 1, x1 -4.063163, x2 -1.156916 |
小批量随机梯度下降
原生实现
1 | from mxnet import autograd, gluon, init, nd |
1 | Outputs: |
简洁实现
1 | from mxnet import autograd, gluon, init, nd |
1 | Outputs: |
动量法
梯度下降的问题
1 | from mxnet import nd |
1 | Outputs: |
测试
1 | from mxnet import nd |
1 | training: |
线性回归原生实现(动量法)
1 | from mxnet import nd, autograd |
1 | training: |
线性回归简洁实现(动量法)
1 | from mxnet import nd, autograd, init, gluon |
1 | training: |
Adagrad算法
测试
1 | from mxnet import nd |
1 | training: |
线性回归原生实现(Adagrad算法)
1 | from mxnet import nd, autograd |
1 | training: |
线性回归简洁实现(Adagrad算法)
1 | from mxnet import nd, autograd, init, gluon |
1 | training: |
RMSProp算法
测试
1 | from mxnet import nd |
1 | training: |
线性回归原生实现(RMSProp算法)
1 | from mxnet import nd, autograd |
1 | training: |
线性回归简洁实现(RMSProp算法)
1 | from mxnet import nd, autograd, init, gluon |
1 | training: |
AdaDelta算法
线性回归原生实现(AdaDelta算法)
1 | from mxnet import nd, autograd |
1 | training: |
线性回归简洁实现(AdaDelta算法)
1 | from mxnet import nd, autograd, init, gluon |
1 | training: |
Adam算法
线性回归原生实现(Adam算法)
1 | from mxnet import nd, autograd |
1 | training: |
线性回归简洁实现(Adam算法)
1 | from mxnet import nd, autograd, init, gluon |
1 | training: |