优化器的比较
几种常见优化器
SGD(Stochastic Gradient Descent)
SGD基本上已经被弃用了,因为其效果和其他优化器相比实在差太多了,不仅速度比较慢,而且还容易停止训练。今天用mmdetection训练retinanet的时候,一直导致loss梯度爆炸,困惑了好几天,config查了查发现优化器使用的是SGD。。。人都是傻得。然后看了前辈的config,发现用的是Adam,今天已经在跑了,效果很好。
言归正传,SGD的确在GD上开创了一个先河。SGD 每次更新时对每个样本进行梯度更新,对于很大的数据集来说,可能会有相似的样本,这样 BGD 在计算梯度时会出现冗余,而 SGD 一次只进行一次更新,就没有冗余,而且比较快,并且可以新增样本。
x t + 1 = x t + η t g t x_{t+1} = x_t + \eta_t g_t xt+1=xt+ηtgt
θ = θ − η ⋅ ∇ θ J ( θ ; x ( i ) ; y ( i ) ) \theta = \theta -\eta \cdot \nabla_{\theta}J(\theta; x^{(i)};y^{(i)}) θ=θ−η⋅∇θJ



被折叠的 条评论
为什么被折叠?



