名词解释
| 名词 | 定义 |
|---|---|
| original-loss | 整个训练集上的loss |
| minibatch-loss | 在一个mini batch上的loss |
| BGD | 最原始的梯度下降算法,为了计算original-loss上的梯度,需要使用训练集全部数据 |
| SGD | (近似)计算original-loss梯度时,只使用一个mini batch,相当于用minibatch-loss上的梯度去近似original-loss梯度 |
| 奇点(只是为了方便说明而起的名字) | local minimal和saddle point |
SGD vs BGD
下面将通过BGD与SGD的对比,来对SGD进行深入理解。
效率方面
深度学习使用的训练集一般都比较大(几十万~几十亿)。而BGD算法,每走一步(更新模型参数),为了计算original-loss上的梯度,就需要遍历整个数据集,这显然是不现实的。而SGD算法,每次随机选择一个mini-batch去计算梯度,在minibatch-loss上的梯度显然是original-loss上的梯度的无偏估计,因此利用minibatch-loss上的梯度可以近似original-loss上的梯度,并且每走一步只需要遍历一个minibatch(一~几百)的数据。
优化方面
SGD优势
SGD劣势
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227925.html原文链接:https://javaforall.net
