深度学习剖根问底:SGD算法的优化和变种

  闲来无事,我也来回顾一下考研时的高数:

       一个函数的拐点可能是二阶导数为0的点,也有可能是二阶不可导点.至于为什么拐点处二阶导数为0,是这样的,一阶导数描述函数的变化,二阶导数描述一阶导数的变化,也就是斜率的变化情况,拐点处斜率大小由递增变为递减,或者由递减变为递增, 这样自然二阶导数为0了!

      adagrad相比于sgd和momentum更加稳定,即不需要怎么调参。而精调的sgd和momentum系列方法无论是收敛速度还是precision都比adagrad要好一些。在精调参数下,一般Nesterov优于momentum优于sgd。而adagrad一方面不用怎么调参,另一方面其性能稳定优于其他方法

SGD的梯度优化算法理解:

1:批梯度下降法:

普通的梯度下降,也称批量梯度下降,利用所有的训练数据计算目标函数的梯度。

                                                                                             

由于我们每进行一次参数更新需要计算整体训练数据的梯度,批量梯度下降会变得很慢并且一遇到内存吃不下数据就挂了。同时批量梯度下降也无法支持模型的在线更新,例如,新的样本不停的到来。


代码中,批量梯度下降大概长这样:

[plain]  view plain  copy
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值