个人参考记录,先记录大概,后面优化。
GD、BGD、SGD
GD 标准梯度下降法,常理解为在线学习,即batch为1。即根据每组数据得到损失的梯度来更新参数。也常写作:
优势:梯度随机性大,代表网络每次更新更具有探索性,理论上有利于泛化能力。更新频率快,局部最优处震荡,反而有可能跳出局部最优。
缺点:梯度随机性很大,往往参数更新方向并不是精准的梯度下降方向,更甚者导致多次梯度互相抵消,导致网络训练周期很长。由于更新频率较快,很容易导致loss震荡,很难达到收敛。
BGD 批量梯度下降法,常理解为全数据集学习,即batch为样本总数。参数每更新一次代表需要遍历一次数据集。
优势:利用全部的样本来计算梯度,可以保证下降方向的精准度。梯度下降方向准确,会是loss较为稳定,容易收敛。
缺点:参数的每次更新都代表着对数据集遍历一次,计算量之大可以想象。大型的数据集对于内存来说,这就是一场灾难。由于不同权重之间梯度差异性较大,很难挑选出一个适合全局的准确率。梯度更新慢,对于新加入数据敏感性低。
SGD 小批量随机梯度下降法,常理解为在数据集随机采样,计算梯度来更新权重。<