stochastic gradient descent tricks

abstract:(SGD的S有可能不仅是指从训练集中随机生成minibatch,而是整体的优化思路改变了,不是GD那种选个初始点一条到走到黑的方式,“随机”有其他含义)bp只是专门针对神经网络的求导方法,sbp是SGD的神经网络版本。本文主要说明training set大的时候用SGD好。

(训练测试的逻辑问题,在训练集上训练,找到最接近训练集分布的模型,那么输入训练集样本,模型的输出很接近结果,99%都能正确预测,换到测试集以后,毕竟不是那些数据本身,分布并不集中在模型附近,出现误差,同一摄像机还相对接近,换camera后,差得更远。那么如何提高泛化能力?还不是我现在要思考的问题)

2.1GD

拿到训练样本,一旦选定初始点,开始反复迭代直到最优化。

最基本的GD,lr足够小的话(定值),会实现线性收敛,误差在-log p~t(???????????)

升级版1:变速学习,lr取一个正定矩阵,是hessian矩阵的inverse(???????)

升级版2:2GD,是牛顿算法变种,实现二次收敛,误差在-log log  p~t(?????????)

2.2SGD

(无论采用什么收敛方式,衡量收敛结果的唯一标准就是基于全体样本的-------不不不,衡量最终模型效果的不是全体训练样本集,训练目的不是要得出一个全力拟合训练样本的模型,而是对于所有数据好用的模型,但是当然,如果拟合越接近训练样本那么泛化效果越好,那么把基于全体样本的理想最优模型作为衡量标准也是一样,所以说,原理大概知道就行了,实验才是王道,理论也是基于实验提出来的,谁也不知道会怎么样)

(极有可能的情况是,对一个mini-batch训练到收敛,每次随机用一张图产生梯度。大概的道理在于,基于全体的均值梯度和随机产生的个体梯度可以近似,而梯度是基于w,这就是跳坑的意思,但是不是SGD引起的,即使是BGD,一开始lr大的时候也是跳坑,lr小了以后就在一个坑里面收敛。)

 

posted @ 2016-03-12 21:49  糯米甜酒  阅读(438)  评论(0)    收藏  举报