算法目标:
探寻让损失函数达到最小值的参数。通过不停的调整函数权值,改变各个神经元的权重,从而让损失函数下降的更快,进而找到损失函数的极小值。
算法核心思想:
梯度:表示从该点出发,函数值增长最为迅猛的方向!
通过一次一次的迭代,逐步找到函数的极小值。其中α为学习率,如果α过大,不容易收敛。梯度下降需要遍历样本的所有成员,因此求各个权值的梯度会很费资源。
算法的主要问题:
一 当数据量过大,收敛过程可能非常慢。
二 如果函数有多个局部极小值,容易局部收敛!
SGD随机梯度下降
SGD遵循“一样本,一迭代”。先随机挑选一个样本,然后根据单个样本的误差调整权值。这样简化带来了很大便利,对于一个具有数百万的训练集合,完成一次样本遍历就能对权值更新数百万次,而梯度下降要遍历数百万样本后,才能对权值更新一次!!!
SGD和梯度下降的折中:Batchsize
梯度下降是针对所有样本的,是并行的,它的时间复杂度要低一些,但是容易局部收敛!
SGD是一样本,一迭代,虽然能更好的找到最小值,但是时间复杂度比较大!
如下图: