哇,写了好多……反向传播才是神经网络的精华啊,一边写一边学……若是有萌新跟我一样在这条路上慢吞吞爬行的,欢迎找我一起交流啊,✿✿ヽ(°▽°)ノ✿
放只蛋,激励一下同在这条路上奋斗的童鞋们,O(∩_∩)O哈哈~
2.0 RMSProp算法
emmmmmm……怎么说,这个算法跟我前面发的Adadelta几乎相同。它的更新规则:
所以,看看就好,╮(╯▽╰)╭,它的算法可以直接参考上上个博客的Adadelta算法。
2.1 Adam 算法
可以看做是动量算法+RMSProp(Adadelta)的算法
adam可以较快地得到一个预估结果,对于内存的需求量小;适用于打数据集和高维空间。
2.1.1次导数
在介绍下列算法的时候需要介绍一下,次导数的概念。
参考:https://blog.csdn.net/bitcarmanlee/article/details/51896348
次导数(subderivative)、次微分(subdifferential)、次切线(subtangent lines)和次梯度(subgradient)的概念出现在凸分析,也就是凸函数的研究中。
凸函数不一定处处可导,即不一定是平滑的凸函数。次导数就是对于这种情况,用土话说,‘强行搞一个导数出来’。
凸函数f:I→R在点x0的次导数,是实数c使得:
对于所有I内的x。我们可以证明,在点x0的次导数的集合是一个非空闭区间[a, b],其中a和b是单侧极限 :
它们一定存在&#xff0c;且满足a<&#61;b&#xff1b;所有次导数的集合[a,b]&#xff0c;称为函数f在x0的次微分。
2.1 FOBOS算法
非光滑全局优化算法。
参考&#xff1a;https://zr9558.com/2016/01/12/forward-backward-splitting-fobos/
Forward-Backward Splitting 算法,把正则化的梯度下降问题分成一个经验损失梯度下降迭代和一个最优化问题。
首先&#xff0c;权重的更新分为&#xff1a;
第一个步骤标准的SGD&#xff0c;第二个步骤是对于第一个步骤的结果进行局部调整。反正&#xff0c;经过一系列的推导&#xff0c;ORZ我真的看不明白&#xff0c;想明白的大神可以点击上面的网址&#xff0c;看推导&#xff0c;我这里就直接写结论了。
权重更新的式子可以写成另外一种形式&#xff1a;&#xff0c;有次可以得知&#xff0c;不仅与有关&#xff0c;还与有关。
在 L1 正则化下&#xff0c;FOBOS 的特征权重的各个维度的更新公式是&#xff1a;
for all
即&#xff1a;在时&#xff0c;w&#61;0;
在时&#xff0c;&#xff1b;
2.2 RDA算法
参考&#xff1a;https://zr9558.com/2016/01/12/regularized-dual-averaging-algorithm-rda/
Regularized Dual Averaging 算法的权重更新公式为&#xff1a;
该算法相较于SGD类算法&#xff0c;提高了特征矩阵的稀疏性&#xff0c;是Simple Dual Averaging Scheme 的一个扩展。
其中&#xff1a;表示梯度对W的内积&#xff0c;为正则项&#xff0c;为严格的凸函数&#xff0c;是一个非负递增序列。
ps:内积&#xff0c;又名点积&#xff1a;
两个向量a &#61; [a1, a2,…, an]和b &#61; [b1, b2,…, bn]的点积定义为&#xff1a;
a·b&#61;a1b1&#43;a2b2&#43;……&#43;anbn。
L1-RDA写作&#xff1a;
通过推导可得&#xff1a;
otherwise
与L1-FOBOS对比&#xff1a;RDA更容易产生稀疏性&#xff0c;同时由于截断条件是考虑梯度的累加平均值&#xff0c;可以避免因为某些维度训练不足而导致截断的问题。通过调节参数可以在精度和稀疏性上进行权衡。
2.3 FTRL算法
参考&#xff1a;https://www.cnblogs.com/EE-NovRain/p/3810737.html
https://zr9558.com/2016/05/16/ftrl/
该算法综合考虑了FOBOS和RDA算法。三者关系&#xff1a;
其权重更新矩阵为&#xff1a;
经过推到可以得到
其中&#xff1a;
在FTRL中&#xff0c;维度i的学习率为&#xff1a;
其算法为&#xff1a;
2.3.1 在线学习和离线学习
参考paper&#xff1a;《Online Learning versus Offline Learning 》 Sally Goldman
在线学习模型与离线学习模型&#xff1a;
即&#xff0c;在线学习模型的例子都是别人挑的&#xff0c;例子展示也是一个一个来的&#xff1b;转换成机器学习中&#xff0c;就是&#xff0c;训练是一个一个标签的样本训练的&#xff0c;而且其训练样本是无法挑选的。
离线学习的样本时自己挑选的例子&#xff0c;而且能够观察所有样本的标签&#xff1b;即&#xff0c;机器学习中训练是训练一个批次的样本&#xff0c;然后再更新权重的。
在线学习的不确定性&#xff1a;1、不确定样例是什么。目标函数仅仅根据给的数据来确定&#xff0c;由于给的例子可能并没有覆盖全部的可能性&#xff0c;所以得到的目标函数会是不确定的。2、不确定目标函数是什么。由于分类都是概念类&#xff0c;即不知道标签是什么&#xff0c;不知道分成几类&#xff0c;目标函数完全是根据所给的数据来确定的。
所以&#xff0c;在线学习对于数据的要求更宽松&#xff0c;而且难度更大。
参考&#xff1a;http://www.cs.huji.ac.il/~shais/papers/OLsurvey.pdf
其中&#xff1a;online gradient descent,FTRL,Dual averaging,adagrad都是在线学习
好了&#xff0c;所有算法都结束了&#xff0c;再次感谢网络上一些讲解的大神们&#xff0c;下面提贴一些参考到的paper,原谅我只贴名称了╮(╯▽╰)╭。
[1].《Online Learning versus Offline Learning 》
[2].《ADADELTA: AN ADAPTIVE LEARNING RATE METHOD 》
[3].《Efficient Online and Batch Learning Using Forward Backward Splitting 》