要判断Stochastic Gradient Descent是否收敛,可以像Batch Gradient Descent一样打印出iteration的次数和Cost的函数关系图,然后判断曲线是否呈现下降且区域某一个下限值的状态。由于训练样本m值很大,而对于每个样本,都会更新一次θ向量(权重向量),因此可以在每次更新θ向量前,计算当时状况下的cost值,然后每1000次迭代后,计算一次average cost的值。然后打印出iteration和cost之间的关系。

1、不同曲线图代表的含义及应对策略

可能会看到的曲线图有如下几种:

情况1

这样的曲线说明算法已经收敛。

如果我们使用小一点的学习率α,那么可能最终会训练到比较好的θ向量(红色线)

但是小的学习率也意味着更长的训练时间。

情况2

如果我们不是1000次迭代计算并打印一次,而是5000次迭代后才计算并打印一次。那么曲线可能会更加平滑一些(绿色线)。

情况3

如果我们得到的曲线(1000次迭代并打印)是波动很剧烈,并且没有显示任何下降趋势,如下图:

那么有两种可能,一噪声太剧烈而无法看出算法收敛的趋势;二算法没有收敛。

这种情况下,我们可以调整打印的步长(比如5000次迭代才计算并打印一次),那么可能会得到两种不同的曲线(如下两幅图所示)。

如果得到得是类似这条红色的曲线,那么说明算法已经收敛或已经表现出收敛的趋势了。如果得到的是如下图所示的绿色的线,说明算法没有收敛。

情况4

还有一种情况,就是曲线不但没有呈现下降的趋势,反而出现了上升的趋势,如下图:

这说明学习率α设置得过大,需要调小学习率。

2、学习率的设置

当学习率比较小的时候,可以训练出更优的权重向量。但是较小的学习率也意味着更长的训练时间,而且如果是非凸问题则还有可能会陷入局部解中。那么,如果使用动态递减的学习率(即在学习开始之初,学习率较大,然后根据迭代次数的增加,学习率逐渐减小)也许会好一些。这样我们可以用一个式子来按照迭代次数调整学习率,例如:

常量1和常量2的目的是为了保证学习率在一个正常的范围内(不至于当循环次数很高或很低时,学习率会变得过大或过小)。

通过调整学习率(手工或如上式自动调整),就可以控制算法收敛的速度。

Reference:

Andrew Ng Stochastic Gradient Descent Convergence (12 min)

Stochastic Gradient Descent收敛判断及收敛速度的控制的更多相关文章

  1. Stochastic Gradient Descent

    一.从Multinomial Logistic模型说起 1.Multinomial Logistic 令为维输入向量; 为输出label;(一共k类); 为模型参数向量: Multinomial Lo ...

  2. Stochastic Gradient Descent 随机梯度下降法-R实现

    随机梯度下降法  [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. 批量梯度下降法在权值更新前对所有样本汇总 ...

  3. 几种梯度下降方法对比(Batch gradient descent、Mini-batch gradient descent 和 stochastic gradient descent)

    https://blog.csdn.net/u012328159/article/details/80252012 我们在训练神经网络模型时,最常用的就是梯度下降,这篇博客主要介绍下几种梯度下降的变种 ...

  4. FITTING A MODEL VIA CLOSED-FORM EQUATIONS VS. GRADIENT DESCENT VS STOCHASTIC GRADIENT DESCENT VS MINI-BATCH LEARNING. WHAT IS THE DIFFERENCE?

    FITTING A MODEL VIA CLOSED-FORM EQUATIONS VS. GRADIENT DESCENT VS STOCHASTIC GRADIENT DESCENT VS MIN ...

  5. 机器学习-随机梯度下降(Stochastic gradient descent)

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  6. 基于baseline、svd和stochastic gradient descent的个性化推荐系统

    文章主要介绍的是koren 08年发的论文[1],  2.3部分内容(其余部分会陆续补充上来).koren论文中用到netflix 数据集, 过于大, 在普通的pc机上运行时间很长很长.考虑到写文章目 ...

  7. 基于baseline和stochastic gradient descent的个性化推荐系统

    文章主要介绍的是koren 08年发的论文[1],  2.1 部分内容(其余部分会陆续补充上来). koren论文中用到netflix 数据集, 过于大, 在普通的pc机上运行时间很长很长.考虑到写文 ...

  8. Gradient Descent 和 Stochastic Gradient Descent(随机梯度下降法)

    Gradient Descent(Batch Gradient)也就是梯度下降法是一种常用的的寻找局域最小值的方法.其主要思想就是计算当前位置的梯度,取梯度反方向并结合合适步长使其向最小值移动.通过柯 ...

  9. 随机梯度下降法(Stochastic gradient descent, SGD)

    BGD(Batch gradient descent)批量梯度下降法:每次迭代使用所有的样本(样本量小)    Mold 一直在更新 SGD(Stochastic gradientdescent)随机 ...

随机推荐

  1. java 第一个java程序

    public class Test16{ public static void main( String args[] ) { System.out.println ("welcome to ...

  2. Spark的MLlib和ML库的区别

    机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库.其目标是使实际的机器学习可扩展和容易.在高层次上,它提供了如下工具: ML算法:通用学习算法,如分类,回归,聚类和协同过滤 特 ...

  3. 在Java中使用Kafka

    Producer部分 Producer在实例化后, 对外提供send方法, 用于将数据送到指定的topic和partition; 以及在退出时需要的destroy方法. 接口 KafkaProduce ...

  4. OpenGL实现通用GPU计算概述

    可能比較早一点做GPU计算的开发者会对OpenGL做通用GPU计算,随着GPU计算技术的兴起,越来越多的技术出现,比方OpenCL.CUDA.OpenAcc等,这些都是专门用来做并行计算的标准或者说接 ...

  5. Ubuntu下安装软件、卸载

    Ubuntu下安装软件.卸载 一般的安装程序有三种: .deb和.rpm这2中安装文件 .boudle这是二进制安装文件 .tar.gz文件是压缩包,与.rar和.zip压缩包一样,安装此类文件需要先 ...

  6. ASP.NET WebForm Form表单如何实现MVC那种“自动装配”效果呢?

    我们知道ASP.NET MVC有个强大的地方就是Form表单提交到action的时候,可以直接将Form的参数直接装配到action的参数实体对象中 比如 action方法 Register(User ...

  7. JDBC连接方式有哪几种

    2011-05-10 目前比较常见的JDBC驱动程序可分为以下四个种类:  (1)JDBC-ODBC桥加ODBC驱动程序  JavaSoft桥产品利用ODBC驱动程序提供JDBC访问.注意,必须将OD ...

  8. Scribes:小型文本编辑器,支持远程编辑

    Scribes是一款简洁的文本编辑器.现在给大家介绍下.     功能列表,  Python插件扩展  支持远程编辑(如ftp, sftp, ssh, samba, webdav, webdavs)  ...

  9. Android百度地图相关内容汇总

    Android百度地图知识讲解 1.百度地图开发环境搭建    http://www.apkbus.com/android-116050-1-1.html 2.Android百度地图系列教程    h ...

  10. iphone 恢复出厂设置方法

    1.下载安装并打开itunes. 2.让手机进入恢复模式: 一.先长按住电源键,出现关机选项时,请滑动关机: 二.随后再按电源键开机,屏幕会出现苹果标志,不要松开电源键: 三.接着再按住主屏 Home ...