猫史档案馆


【梯度下降】利用二阶导数调整学习速率

用户:四九圣尊四九圣尊查看:1 回复:6 评论:1 创建时间:2018-10-27T13:08:25


二阶导数其实就是一阶导数的导数。y=x²中的二阶导数就是y=2x的导数y=2x,所以就是y=4x。

一阶导数表示的是函数一个点的斜率,二阶导数则表示的是函数的凹凸性,二阶导数得出的值越小,函数越凹,反之越凸。

 

 

在y=x²中,达到红点时center_image二阶导数为0,函数处在最凹的状态。我们可以根据二阶导数的值确定梯度下降的进度,从而动态的调整学习率。

def function(a,devi=False,step=1):
if devi:
if step == 1:
return 2*a
else:
return abs(2*a*2)
else:

return a ** 2
在迭代中加入权重更新:
lr = function(th,True,2)*0.1
效果:
center_image可以看出速度比之前:center_image
快了不少!


回复

上一页1 页 / 共 1下一页
四九圣尊四九圣尊

第一期:https://www.codemao.cn/community/166722

点赞0


评论


四九圣尊四九圣尊

导数介越高,反应的信息越复杂。

点赞0


评论


威猛的恐龙524威猛的恐龙524

厉。。。厉害。。。

不过函数用这样的图示表达,真是太清晰了,而且看上去挺有趣的

点赞0


评论


风少年风少年

y=x²中的二阶导数不是y=2吗?

点赞0


评论


四九圣尊四九圣尊

对,写错了,二阶导数是2。这种凹函数可以直接用一阶导数来表达凹凸性,所以就不用求2阶了。

点赞0


评论


Rougemare初染聊高数Rougemare初染聊高数

转载的还是自己写的?

点赞0


评论