之前在机器学习基本功(二) --- Regression中有简单提到梯度下降法(Gradient Descent),为了要到最好的funciton,也就是要解一个最佳化的问题,式子会列成 ,我们的目标是要找一组参数 来让Loss越小越好。
今天开始要教大家一些小技巧,接下来我会详细说明怎麽把梯度下降法做得更好,我们先来复习之前讲的梯度下降法的步骤,首先先随机选取一组参数,接着去计算每个参数对Loss的偏微分,算完乘以learning rate ,再用原本的参数减去该数值来得到新的参数。
从图中我们可以看到,当你Learning rate比较小,你的Loss就会下降的很慢,但如果Learning rate比较大,你的Loss就有可能会卡住而到不了最低点,而如果Learning rate太大,你的Loss就甚至可能会变大。因此我们在做梯度下降法的时候应该把参数变化对Loss变化的图画出来,根据前几次update参数的情况来确定你的Loss是稳定下降的。
通常Learning rate会随着参数更新而越来越小,因为刚开始的起点通常离最低点是比较远的,所以你的步伐要踏大步一点,才会比较快走到接近最低点的地方,经过几次的参数更新以後,已经比较接近最低点了,就应该减少你的Learning rate让他可以收敛在最低点的地方。因此最好的状况是,每一个不同的参数都给它不同的Learning rate,而我觉得最简单、最容易实作的应该是Adagrad。
经过推导後可以看到 可以写成图中的式子。
最後得出更新参数的式子。
有一个矛盾的地方是分母 表示Gradient越大,踏的步伐就越大,但分子 表示Gradient越大,踏的步伐就越小。
那会这样写,比较直观的解释是要去看它跟前面几次的Gradient比起来是不是有反差出现。
只考虑一个参数的时候,如果算出来的微分越大,就会离原点越远,而我踏出去的步伐是跟微分的大小成正比,那它可能就是最好的步伐。
那考虑很多参数的时候我们就必须要考虑二次微分,最好的步伐就会不只是要正比於一次微分,它还同时要和二次微分的大小成反比。
从图中可以看到 a 跟 c 如果只考虑微分值是不够的,必须也要考虑 a 的一次微分值除掉二次微分,以及 c 的一次微分值除掉二次微分,才能真正显示这些点跟最低点的距离。
回到Adagrad的式子,可以发现它是用过去所有微分值的平方和开根号来去代表二次微分,节省做二次微分的运算时间,可以想像成是在一次微分里面做sampling,再把它的平方和开根号得出结果。
>>: 你怎麽看登录档清理这回事--用WiseRegCleaner解释给你看
在网路防护方面,Proxmox VE 提供了相当良好的防火墙管理功能,并且可以适用於节点实体机、客...
本来想除了管理功能外全部都在Line介面里面解决,但做了一阵子觉得越想越不对劲,重新考量了一下思路,...
尚气与十环传奇在线观看 漫威影业荣誉出品史诗冒险《尚气与十环传奇》,结合前所未见的震撼性动作、令人惊...
功能测试时很常需要删掉坏掉的资料库纪录,这时就需要重置测资,但每次都开管理工具来做太麻烦了,写个小工...
那我们要开始着手处理我们的资料集了,今天会先做资料前处理的部分,其实不管是机器学习或是深度学习,只要...