码迷,mamicode.com
首页 > 其他好文 > 详细

20-深谋远虑与想到做到——两种梯度下降法

时间:2017-09-04 09:57:59      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:自己的   pytho   一个   icm   cos   代码   通过   模型   web   

生活中往往有两种人:一种喜欢谋定而后动,比较有全局观;另一种见机行事,根据外界环境不断调整自己的行为。命运给他们的馈赠也是不同的,前者可能大器晚成,后者容易惊喜不断,然而可能左右摇摆。不能说两种处事态度有什么优劣:思虑过多可能错失良机,贸然行动也可能事倍功半,总之“成功”这件事一半靠命运。顾城的诗中说:命运不是风,来回吹,命运是大地,走到哪你都在命运中。而我们能做的是发挥主观能动性,从而改变条件概率(指事件A在另外一个事件B已经发生条件下的发生概率。表示为:P(A|B),读作“在B条件下A的概率”)。

 

之前我们学习的梯度下降法都是批梯度下降法(Batch Gradient Descent),即当前点对于所有的样本所产生的Cost最陡的方向,而另一种随机梯度下降(Stochastic Gradient Descent)所找到的方向是当前点对于这一次所选取的样本所共同产生的Cost最陡的方向。小批量梯度下降法(Mini-batch Gradient Descent)是随机梯度方法的一种变种,用少量几个训练样本(通常是100-1000个,少是相对训练集大小而言的)一起计算梯度,更新模型参数。不能笼统的说随机梯度下降比梯度下降速度快,多数情况下,mini-batch会比sgd收敛要速度快。在训练样本多的情况下,sgd比gd的收敛速度快,一个原因是gd要通过所有样本计算梯度,而sgd通过一个样本计算一个近似的梯度,本身计算量就会小非常多。

 

batch gradient descent 一次更新需要计算一遍整个数据集:

 

技术分享

stochastic gradient descent 一次更新只需计算一个数据点:

技术分享

 

下面是随机梯度下降法的代码实现(还是鸢尾花数据集):

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

对比可以发现,本例中Stochastic gradient descent 的学习速率比 Batch gradient descnent 的高很多。

 

下周我们学习如何在Python中实现逻辑回归算法,敬请期待:)

20-深谋远虑与想到做到——两种梯度下降法

标签:自己的   pytho   一个   icm   cos   代码   通过   模型   web   

原文地址:http://www.cnblogs.com/turingbrain/p/7471986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!