闲来无事,我也来回顾一下考研时的高数:
一个函数的拐点可能是二阶导数为0的点,也有可能是二阶不可导点.至于为什么拐点处二阶导数为0,是这样的,一阶导数描述函数的变化,二阶导数描述一阶导数的变化,也就是斜率的变化情况,拐点处斜率大小由递增变为递减,或者由递减变为递增, 这样自然二阶导数为0了!
adagrad相比于sgd和momentum更加稳定,即不需要怎么调参。而精调的sgd和momentum系列方法无论是收敛速度还是precision都比adagrad要好一些。在精调参数下,一般Nesterov优于momentum优于sgd。而adagrad一方面不用怎么调参,另一方面其性能稳定优于其他方法。
SGD的梯度优化算法理解:
1:批梯度下降法:
普通的梯度下降,也称批量梯度下降,利用所有的训练数据计算目标函数的梯度。
由于我们每进行一次参数更新需要计算整体训练数据的梯度,批量梯度下降会变得很慢并且一遇到内存吃不下数据就挂了。同时批量梯度下降也无法支持模型的在线更新,例如,新的样本不停的到来。
代码中,批量梯度下降大概长这样: