随机梯度下降算法的Python代码实现。
与梯度下降算法不同的是随机梯度下降算法,随机梯度下降算法(SGD,Stochastic Gradient Descent)是从样本中每轮随机选一个。
这样做的好处是:
若在鞍点时,在梯度下降算法中,使用的是所有样本(可能带有噪声的)计算为0,必不可能向前推动。 而使用单个样本计算出来,不一定是每一个都会计算为0,有随机噪声会更好的推进向前。也就是如果取所有样本的话 ,是连续的;而随机取的话很大可能就会跳过鞍点。
使用SGD的另一个意义是:大样本学习时,采用所有样本的损失,计算量太大,训练太慢。
因此SGD的代码如下: