online learning,batch learning&批量梯度下降,随机梯度下降

时间:2021-01-24 16:17:54

以上几个概念之前没有完全弄清其含义及区别,容易混淆概念,在本文浅析一下:

一、online learning vs batch learning

online learning强调的是学习是实时的,流式的,每次训练不用使用全部样本,而是以之前训练好的模型为基础,每来一个样本就更新一次模型,这种方法叫做OGD(online gradient descent)。这样做的目的是快速地进行模型的更新,提升模型时效性。

online learning其实细分又可以分为batch模式和delta模式。batch模式的时效性比delta模式要低一些。分析一下batch模式,比如昨天及昨天的数据训练成了模型M,那么今天的每一条训练数据在训练过程中都会更新一次模型M,从而生成今天的模型M1。

而batch learning或者叫offline learning强调的是每次训练都需要使用全量的样本,因而可能会面临数据量过大的问题。后面要讨论的批量梯度下降法(BGD)和随机梯度下降法(SGD)都属于batch learning或者offline learning的范畴。

batch learning一般进行多轮迭代来向最优解靠近。online learning没有多轮的概念,如果数据量不够或训练数据不够充分,通过copy多份同样的训练数据来模拟batch learning的多轮训练也是有效的方法。

二、批量梯度下降(BGD)vs 随机梯度下降(SGD)

首先明确BGD和SGD都属于batch learing,都需要全量训练数据进行训练,需要遍历所有样本。

BGD在每次更新模型的时候,都要使用全量样本来计算更新的梯度值。如果有m个样本,迭代n轮,那么需要是m*n的计算复杂度。

SGD在每次更新模型的时候,只要当前遍历到的样本来计算更新的梯度值就行了。如果迭代n轮,则只需要n的计算复杂度,因为每轮只计算一个样本。

以上就是BGD和SGD的区别,容易看出,BGD的优势在于计算的是全局最优解,效果较SGD会好一些,劣势在于计算开销大;SGD则相反,优势在于计算开销减小很多,劣势在于计算的是局部最优解,可能最终达不到全局最优解。在数据量大的时候,SGD是较好的折衷选择。