首页 > 编程知识 正文

随机梯度下降与标准梯度下降,随机梯度下降最简单例子

时间:2023-05-05 09:20:47 阅读:12006 作者:3750

分治法——可能会错过取更好的值。 数据集和维度越大,成本也越大。

我们会找更好的算法。 一种梯度下降算法。

梯度:梯度,正文用g代替。

所以:

坡度下降总是朝着下降速度最快的方向。

如果都不在任意辅助线的上方或下方,则为非凸函数。 如果损失函数是上图的曲线,则容易被局部最有利的点钩住。 那么为什么深度学习最常见的是梯度下降算法,是因为非凸函数在真正的深度学习中很少见。 你想解决的最大问题是马鞍。

importnumpyasnpimportmatplotlib.pyplotaspltx _ data=[ 1.0,2.0,3.0 ] y _ data=[ 2.0,4.0,6.0 ] w=1.01 deta=0 ys ) : y_pred=forward(x ) x ) cost=(y_pred-y ) * * 2返回成本/len ) xs yinzip(xs, ys ) 3:grad=2*x* ) x*w-y ) returngrad/len ) xs ) print(predict ) beforetraining ) 360 ), 4前向(4) ) cost _ list=[ ] epoch _ list=[ ] forepochinrange (100 ) :cost_val=cost ) y_data,y_data

PLT.plot(Epoch_list,cost_list ) PLT.ylabel ) cost (PLT.xlabel ) epoch (PLT.show ) ) ) ) ) ) )

训练结果必须收敛,发散后训练失败,常见原因是学习率a过大,参加再训练。

这个时候还是没有解决鞍点问题

***引入随机坡度下降*** (结构梯度距离) SGD

cost所有样本的损失函数,loss是一个样本的损失函数,随机梯度的下降在样本中很快在一个样本中计算。

引入随机噪声有可能跨越马鞍,继续推动样品前进,这被证实是非常有效的方法。

importnumpyasnpimportmatplotlib.pyplotaspltx _ data=[ 1.0,2.0,3.0 ] y _ data=[ 2.0,4.0, 6.0]w=1.01deeta=0.01 y ) : y _ pred=前向(x ) Lossi=(y_pred-y ) * * 2返回lossi def sgradient (x ) x, y65:grad=2*x*(x*w-y ) returngradprint('predict ) beforetraining ) : ',4,forward(4) ) ) forepord y ) grad_val=sgradient(x,y ) w-=a*。。

坡度下降效率高。 我可能找不到最好的地方。

梯度下降运算性能过高,不能并行化,时间空间复杂度高。

在实际应用中,采用间歇式随机梯度下降(batch )作为折中方式,性能越高越好,时间复杂度越低越好。

将每个样本分组,用随机梯度下降法学习。

MiNi-Batch是主流。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。