梯度下降法
梯度下降法
很烦 网上很多都不说人话 💢 线代高数睡过去了 这让我咋办嘛
于是我终于理解了大神们的想法 并代码化
梯度 : y=x 、 y=x2 诸如此类,仅有两个变量的,梯度其实就差不多可以理解是斜率,求微分(求导)嘛
y=x+z 、y=x2 +z2 这种多变量其实就是偏微分(把一个固定成常数,对另一个求微分)
看个单变量的梯度
多变量的
举些例子吧
单变量:
多变量
梯度其实最后就是个向量
例子说明
最后返回一个矩阵 ,也可以理解是<指明方向的矩阵>
象形解释
梯度下降法
大家都用上下山举例子,那就是你要找最陡的坡滑下去,这个坡的斜度就是你要找的梯度,咱们的世界是3D的,梯度也经常是3维的(x,y,z轴对应 水平 和 竖直)
所以我们一般找到的梯度在x,y,z轴都有分量 也就是(x_grad, y_grad, z_grad)
这个方法一般用于回归类问题,给一堆散点,让你拟合出一条接近他的函数,最后可以预测或者干啥的
这是找到了的,蓝色的线就是最终求出来的,而红色的散点们是 给你的 只有数据的 x,y的值
公式time
梯度的公式就是
懒得打了
引用吧
代码和公式 看这个
重要补充 关于梯度
为什么有些梯度是平面作切线,有些是平面法向量
CE266外教给的课件
可以看到,梯度被画成两个面的改变量(方向),更像是平面法向量的方向
这和很多梯度下降法中对平面作切线得到的貌似不同,但其实是一样的
红色箭头标出来的方向和位置(在边缘)其实更贴近于我们理解的’ <切线> ‘,这其实是对这原来的‘ <山形> ’梯度展示图作了很多个切片。
等值面
山的表面不是等值面,所以我们需要找等值面,而切片面就是等值面,不同等值面之间的变化方向就是梯度
等值面再解释
与其说是面,其实是线围成的环。
外教给的例题
这里一开始想了一会,为啥不能像 小山 一样找它的切线下来呢?而是貌似一直在找这个圆锥表面的法向量
哦! 原来圆锥整个表面就是一个等值面,满足x2 +y2 =z2 的点构成了这个等值面
理解公式
公式里的w=f(x,y,z)其实和z=f(x,y)是很像,是两种不同的表达
但在第一个公式里x,y,z都是自变量,他们三个去决定一个面的值,得到的梯度矩阵是关于(x,y,z)的
第二个式子z是因变量,通过x,y的改变 去改变z的值 (大多数’<小山>'就是这个式子),梯度下降或上升法也是找z变化最快的方向,得到的梯度矩阵也是关于(x,y)的
关于两个式子的区别
我理解是 z=f(x,y)是找一个面上通过x,y改变得到的梯度,就是像个空壳一样,找壳上的切线。切出来的都没有面,就只是线围出的环。这时候,我们不把这个‘<山面>’当等值面。z为面的值,一对x,y决定出的z才是一个面的值。所以这时的等值面是切出来x,y的平面(真的是平,就俩值不可能曲面)。
有一个固体,有体积的,就是无数个不同值的面叠在一起。这无数个面就是无数个w=f(x,y,z),值得注意的是w就是它的面的值。找等值面的值的话,理解为 w=f(x,y,z),就找w,它由x,y,z三个共同决定。这个等值面就是曲面了(由三个值决定)。
总结
关键:找等值面
梯度:一个等值面到另一个等值面变化的方向向量(矩阵)
两个面的值不同