大白话5分钟带你走进人工智能-第十二节梯度降低之背后的原理之泰勒公式(7)app
咱们接下来给你们深化一下,梯度降低背后究竟是什么原理?谈到这个,咱们要谈到一个叫泰勒展开的这么一个数学定理,泰勒发现任何一个函数不用管它有多复杂,无论它什么样,千奇百怪的任何一个函数,均可以写成关于N阶导数的一个多项式。即函数
解释下,在A点附近,好比说A为1,那么在1附近,那么f(x)=f(1),你有个解析式,f(1)总能算出来,把1丢进去算出来,那么泰勒展开即:学习
是二阶导数,什么叫二阶导数?导函数再求一下导。这么一直这么往下加,加到余项为零的时候就加完了。假如余项始终不为零,它就一直无限这么加下去,加的项越多,这个函数越像原始的函数。优化
泰勒公式实际上用多项式函数去逼近一个光滑函数,什么叫逼近?由于它是把一个原始的函数拆成好多项了,那么拆项越多,这个加出来的结果就越像原函数。那好好的一个普通的函数,你为何非得要给它拆成好多项呢? 一个X2+1,就两项很简单的,你为何要给它变成N项?实际上不是全部的函数都是能这么写,好比sin X,在计算机里,实际上计算sin X背后的本质是它他先进行完了泰勒展开,展开成200 多项,而后把这200多项算出来,获得sin X究竟是多少。这个是交给计算机计算的这么一种方式。再好比,此时我令a=0,就至关于在零点附近给它展开。若是按照刚才展开式来说的话,零阶展开就是n等于0,
,X轴是x=1,你发现0阶展开,若是把余项抛弃了的话,就是一条直线,这条直线像原函数吗?看起来不像。但在x=0这一点上的这条直线跟这个原函数很像。假如阶数增高的话,如图:人工智能
能够看到,随着阶数的升高,甚至仅仅到达十阶展开的时候,在咱们肉眼可及的地方,它跟原函数已经很是接近了。零阶展开,若是就光说零附近的话,即便是零阶展开,在极小的区域里它也是比较像的,对吧?随着阶数愈来愈多,是否是离零越远的地方也越跟原函数很像了?这就是泰勒展开的本质。它实际上就是经过在某一点附近用一个多项式去逼近原来的原函数,你能够理解为它是一个原函数的近似取值。 spa
回到咱们梯度降低来讲,咱们梯度降低其实就是对原函数展开一个一阶泰勒近似。 假如对泰勒展开式在x0进行一阶泰勒展开,只获得两项。第一项就是f(x0),第二项就是(x-x0)f`(x0)。这个式子里谁是未知数?谁是已知数?能够发现只有x是未知数,剩下这些数虽然写的是字母,但实际上你带到真实的场景里,就能算出来是具体的数。假如此时的f是损失函数的话,在x0的值是可求的,x0点的导数也可求。这x0天然也是知道的,因此它的一阶泰勒的近似公式就是已经知道的了。3d
咱们看梯度降低是怎么来的? 回到函数最优化问题上,若是我初始出来一组W0了,你想让W0加上λd这个东西以后带回到损失函数里,但愿损失函数越小越好。也就是咱们想要找到一个 λd 使上一代的 w+λd后 损失函数降低得最多,即 min 𝐸 𝑤0 + 𝜆𝑑 。λ是学习率,d应该等于什么值?按照以前经验,d应该等于负的梯度才对。为何d等于负梯度?咱们来一步步推导。咱们对E在w0附近进行一阶泰勒展开:code
若是把𝑤0 + 𝜆𝘦入到上面的展开式里面也就是:blog
咱们进行完一阶泰勒展开以后,我想要让损失函数:element
越小越好。看第一项E(𝑤0)能改变大小吗?它已是一个既成事实了,λ是你人为定的,因此只有让d.g(𝑤0)越小越好。咱们先回顾下向量点乘的几何含义:
也就是两个向量长度乘积再乘一个向量之间的夹角cosθ。因此。怎么让这结果最小,咱们假设d向量长度变小一点,这样能让d*g(𝑤0)这项更小,可是你仔细想,d若是太大小了的话,一阶泰勒展开的不等号还能成立吗?由于咱们只展开了一阶,阶数越高,越接近原函数,当d过小的时候,展开的函数是否是就远离原来的W0点了?远离W0点的时候,不等号是否是就不成立了?至关于去求一个跟损失函数不同的函数的最小值,这是没有意义的。假设向量长度不变的话,那么怎么让它们相乘的结果越小越好?天然而然想到,让cosθ=-1的时候,结果就最小。那何时cosθ=-1?也就是θ等于180度的时候,也就是d向量应该跟原来的梯度向量成180度夹角,即当d向量等于负的梯度向量的时候,此时的夹角θ能使cosθ=-1,因此咱们一般利用当d=-g(w0),此时的d向量和g(w0)之间的夹角为180度,这时d*g(𝑤0)就是最小的。这也就是为何梯度降低每一步的迭代,加的那个东西就恰好是负梯度这么巧,是从一阶泰勒展开,一步步推导出来的。
总结下,梯度降低的本质是什么?对损失函数进行了一阶泰勒展开的近似,而后对这个近似出来的函数求最小值,把最小值看成下一步用来迭代的值。 这就是梯度降低背后的数学原理。
欢迎关注个人公众号LhWorld,不只为你推荐最新的博文,还有更多惊喜和资源在等着你!一块儿学习共同进步!