学习最好的时间是十年前,其次就是现在。算法?好难啊,机器学习的,那来看看,啥,线性回归,没意思。所以我也不打算讲什么是目标: 找出
使得
最小。
后来在此基础上引入最小二乘、
与 真实值
尽可能接近。提一下逻辑回归的sigmoid函数把预测的值强行转换为[0,1]范围内大小的值,巧的是概率的值也是[0,1]的大小。
2.优化:解决目标的过程,目标是求最值,最值的问题怎么能少了求导。
,初中生用公式就算出来,咱先把它看成一个优化问题,找出最好的
,使得
最小。Gradient Descent(梯度下降法),Gradient Descent
、
(学习率|步长);
如果目标函数可收敛(如凸函数),就一定可以找到这个最优值。前辈们可不单单只满足于可以求出这个最优解,还需要快。为什么慢呢,大互联网之下样本的个数是很大的,GD全部样本喂进去可想而知有多慢。随机梯度下降SGD(stochastic Gradient Descent)作用就体现出来了,随机选取一个样本进行梯度下降,更新到最优输入下一个样本,不需要全部样本也可以得到很好的解,加快速度的同时也节约内存,最重要的效果还和GD差不多。mini-batch SGD:随机一些(20~50个样本)进行梯度下降,完了接着下一个batch。有点两者结合的感觉:GD+SGD=mini-batch SGD。按吴恩达老师所说的,梯度下降(Gradient Descent)就好比一个人想从高山上奔跑到山谷最低点,用最快的方式(步长)奔向最低的位置(minimum)。
有前辈们依旧不满足,深度学习的到来不得不要求更快,动量(Momentum)主要针对步长,惯性的增大
值。前后梯度变化很大时
增加的多,反之增加的少;
是一个超参数,回到上面更新过程,学习率为0.1,如果变更小,那
是算不出最优解的,还得多写几步;如果大,就自然加快了,但也很大可能过大导致解会在最优值附近来回震荡。RMSProp( Root Mean Square Prop)在上面的Momentum优化算法中,虽然初步解决了优化中摆动幅度大的问题。但并没有解决过大的问题。RMSProp算法对梯度计算了微分平方加权平均数,所以
变小。Adam(Adaptive Moment Estimation)是Momentum+RMSProp结合自然水到渠成。
小结下,GD慢,SGD上,但缺点是可能会在沟壑的两边持续震荡,在最小值附近波动。Adam(Adaptive Moment Estimation)的出现提出自适应学习的方法去解决了学习率过大过小的问题。虽然比SGD快,但极大或极小的学习率都会导致较差的收敛行为,也就是说泛化能力、稳定性相对而言还没有比他慢的SGD好。具体公式细节我就不展开了,感兴趣的看看这篇论文
3.
)为什么趋于正无穷大?知道它为啥趋于无穷大也就好理解为啥要加L1&L2正则去约束
的大小。标题是讲优化算法,我就也不去多说什么是Ridge回归(岭回归)
优化L2(Ridge回归)的方法就用我之前讲的那些SGD等就可以了,毕竟加的『惩罚』是可以求导的。
我想讲的重点是L1正则化(Lasso回归):
这里的优化SGD就不管用了,毕竟
不可导(图像不光滑)。这里就就得引入Coordinate Descent(坐标下降法),当然它不单单优化这个Lasso算法,和GD(梯度下降法)目的一样,都是为了找到最优解。
,D为所求
参数的维度,GD拿过来所有维度更新一遍,CD不是这样的,一次只更新一个维度,其它的当维度做常数处理。第一次我更新
,
,第二次我更新
,
,直到第D次更新
,
。可以看到更新其中一个维度,其他维度都不参与跟新,当然更新
可以是随机的,不一定
顺序。
对
展开:
,
为第i个样本的第j特征
,
这里就把j
D与j=D分开求导计算。
,别看它那么长,其实就一常数。
,
则是对D维度求导的那个,且
恒成立。
,简化到这里得对这个
分情况讨论了。
根据
导数情况分为(1)、(2)、(3),令(1)=0、(2)=0、(3)=0,再加上
这个条件,就可以求出最优的参数
的值(我就不给解的过程了~累)。到此我想要说的优化算法算是结束了,通过刚才的手推的结论,L1正则带来的稀疏性不难被发现,只要满足(3),统统给强行转为0。机器学习中数据的特征一般是特别多的,甚至有时候特征的维数都会大于样本的个数,Lasso是不是帮我解决了一大问题,让特征维数变稀疏,同时又不缺特征可解释行。
参考:
2、李航,统计学习方法,清华大学出版社,2012