梯度下降参数不收敛_机器学习 第14集:如何判断随机梯度下降法收敛?( 含有笔记、代码、注释 )...

如何判断随机梯度下降法收敛?

① 我们确定随机梯度下降法已经收敛的一个标准方法是:画出最优化的代价函数关于迭代次数的变化。

d7d70177d97c21a0d0a1cd0803f0d045.png

② 为了检查随机梯度下降的收敛性,我们要做的是每1000次迭代运算中,计算出前一步中计算出的cost函数,并对算法处理的最后1000个样本的cost值求平均然后画出来。

注:通过观察这些画出来的图,我们就能检查出随机梯度下降是否在收敛。

③ 下面是几幅画出来的图的例子:

f76dead0cb2160b79dd489763f3f9a8f.png

④ 第一幅图:

666cb1cd6573ac3b23c3ae278b7879d3.png

注:假如你已经画出了最后1000组样本的cost函数的平均值,由于它们都只是1000组样本的平均值,因此它们看起来有一点嘈杂,因此cost的值不会在每一个迭代中都下降。

注:如果你得到像这样的图,那么你应该判断这个算法是在下降的,然后从蓝色箭头的点开始变得平缓, 说明你的学习算法已经收敛了。

注:如果你想试试更小的学习速率(红色曲线),那么你很有可能看到的是算法的学习变得更慢了,代价函数的下降也变慢了。

注:但是很有可能会让算法收敛到一个好一点的解。

注:随机梯度下降不是直接收敛到全局最小值,而是在局部最小附近反复振荡,所以使用一个更小的学习速率,最终的振荡就会更小。

⑤ 第二幅图:

4cc64a9050be58c01db58f8780df6f70.png

注:如果你把数 1000 (图中的蓝线)提高到5000(图中的红线)组样本,那么可能你会得到一条更平滑的曲线。

注:增大平均的训练样本数的缺点就是:现在每5000个样本才能得到一个数据点,因此你所得到的关于学习算法表现的反馈就显得有一些"延迟" ,因为每5000个样本才能得到图上的一个数据点,而不是每1000个样本就能得到。

⑥ 第三幅图:

f16a625b3a2737736518b757dfa87373.png

注:算法没有很好地学习,代价项并没有下降,但同样地,如果你对这种情况时也用更大量的样本进行平均,你很可能会观察到红线所示的情况。

注:能看得出,实际上代价函数是在下降的,只不过蓝线用来平均的样本数量太小了,并且蓝线太嘈杂,你看不出来代价函数的趋势确实是下降的。

注:所以可能用5000组样本来平均比用1000组样本来平均更能看出趋势。

注:即使是使用一个较大的样本数量,比如我们用5000个样本来平均,我用另一种颜色(图中紫色)来表示,即使如此,你还是可能会发现这条学习曲线是这样的,它还是比较平坦,即使你用更多的训练样本。

注:如果是这样的话,那可能就更肯定地说明不知道出于什么原因,算法确实没怎么学习好,那么你就需要调整学习速率或者改变特征变量或者改变其他的什么。

⑦ 第四幅图:

367f9c707cd0a1005641ee6d5b1b1c19.png

注:这是一个很明显的信号,告诉你算法正在发散,那么你要做的事就是用一个更小一点的学习速率α。

⑧ 当运行随机梯度下降时,算法会从某个点开始,然后曲折地逼近最小值。

注:它不会真的收敛,而是一直在最小值附近徘徊,因此你最终得到的参数实际上只是接近全局最小值,而不是真正的全局最小值 (学习速率α保持不变)。

注:如果你想让随机梯度下降确实收敛到全局最小值,你可以随时间的变化减小学习速率α的值。

1aad1d8625c9ac3ff634c689df7da44b.png

注:以上是一种典型的方法来设置α的值,但是这里增加了两个额外的参数,需要你花时间来确定常数1和常数2上,这让算法显得更繁琐,因此我们很少采用逐渐减小α的值的方法。

⑨ 在随机梯度下降中,你看到更多的还是让 α 的值为常数,虽然两种做法的人都有。

Python基础积累

指向不变

print

运行结果:

Hello World
Alex Li
My name is Alex Li Alex Li
My name is PaoChe Ge Alex Li
您好,我来了

注:print里面是变量,变量可以是被赋值了带引号的字符串。

注:print函数中逗号左右无论空多少格,两边的内容之间都被一个空格替代。

注:name2=name指的是name2与name一样指向Alex Li的内存地址,接下来name指向改了,但是name2不变。

"♥每天积累一点点♥"

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值