在学习深度学习时遇到了个新名词:随机梯度下降--可以想象把一个篮球扔到群山之中,让它*滚动,直到滚动到最低点.找最低点的过程也是机器学习模型训练的过程.对于篮球来说在现实世界中有万有引力会牵引它走向最地点.在计算机的世界里谁来告诉迷茫的篮球该往何处呢?如果把山川地表看成是由函数绘制的,在地表上随机放一个篮球,然后让这个篮球不断的往低洼的方向运动,就有可能找到最低点是不是?那是不是传说中有种秘法可以算出函数中某个点的变化趋势.是的,微积分.但实在是想不起是高中学过还是大学学的了,一点印象都没有,只记得有这个名字.与其说复习倒不如说重学,也不用学的太深,可以理解深度学习的梯度下降就可以了.
比如现在的函数是:f(x)=2x^2 + 1. 求函数在某个点(x,f(x))的变化趋势,其实就是求函数上穿过点(x,f(x))和点(x+h,f(x+h))这条直线的斜率.h的值越趋近于0就越能表示函数在点(x,f(x))的变化趋势.
斜率也就是
(f(x+h)-f(x))/(x+h-x)
也就是
(f(x+h)-f(x))/h
可以记做f'(x),读作f prime x.把f(x)和f(x+h)替换为使用x表示.也就是
f'(x)=(2(x+h)^2+1 - (2x^2 + 1))/h
简化下就是:
f'(x)=(2x^2+2h^2+4hx+1-2x^2-1)/h
=2h+4x
当h趋近于0的时候,2h也就趋近于0,也就可以写作:
f'(x)=4x
如果我们把球扔在了函数上的点(5,51)上,穿过这一点的直线的斜率是4x也就是4*5=20.有了斜率m=20和直线上的一个点(5,51)代入公式y=mx+b不难求出b,最后直线可以表示为:
y=20x-49
画在图上应该更好理解:
可以看出我们只要沿着斜线y=20x-49下降就可以找到函数f(x)=2x^2+1的最低点了.这就是梯度下降.