Gradient Descent 梯度下降算法

Gradient Descent 梯度下降

对于更普遍的问题来说,gradient descent的厉害之处在于,只要是可微分的,gradient descent都可以拿来处理这个,找到表现比较好的parameters

单个参数的问题

以只带单个参数wLoss Function L(w)为例,首先保证是可微 我们的目标就是找到这个使Loss最小的,实际上就是寻找切线L斜率为0global minima最小值点(注意,存在一些local minima极小值点,其斜率也是0)

有一个暴力的方法是,穷举所有的w值,去找到使loss最小的,但是这样做是没有效率的;而gradient descent就是用来解决这个效率问题的

  • 首先随机选取一个初始的点 (当然也不一定要随机选取,如果有办法可以得到比较接近的表现得比较好的当初始点,可以有效地提高查找的效率)
  • 计算在的位置的微分,即,几何意义就是切线的斜率
  • 如果切线斜率是negative负的,那么就应该使w变大,即往右踏一步;如果切线斜率是positive正的,那么就应该使w变小,即往左踏一步,每一步的步长step size就是w的改变量

w的改变量step size的大小取决于两件事

    • 一是现在的微分值有多大,微分值越大代表现在在一个越陡峭的地方,那它要移动的距离就越大,反之就越小;
    • 二是一个常数项,被称为learning rate,即学习率,它决定了每次踏出的step size不只取决于现在的斜率,还取决于一个事先就定好的数值,如果learning rate比较大,那每踏出一步的时候,参数w更新的幅度就比较大,反之参数更新的幅度就比较小

如果learning rate设置的大一些,那机器学习的速度就会比较快;但是learning rate如果太大,可能就会跳过最合适的global minima的点

  • 因此每次参数更新的大小是 ,为了满足斜率为负时w变大,斜率为正时w变小,应当使原来的w减去更新的数值,即

此时对应的斜率为0,我们找到了一个极小值local minima,这就出现了一个问题,当微分为0的时候,参数就会一直卡在这个点上没有办法再更新了,因此通过gradient descent找出来的solution其实并不是最佳解global minima

但幸运的是,在linear regression上,是没有local minima的,因此可以使用这个方法

两个参数的问题

今天要解决的关于宝可梦的问题,是含有two parameters的问题,即

当然,它本质上处理单个参数的问题是一样的

  • 首先,也是随机选取两个初始值,和
  • 然后分别计算这个点上,L对w和b的偏微分,即 和
  • 更新参数,当迭代跳出时,对应着极小值点

实际上,L gradient就是微积分中的那个梯度的概念,即

可视化效果如下:(三维坐标显示在二维图像中,loss的值用颜色来表示)

横坐标是b,纵坐标是w,颜色代表loss的值,越偏蓝色表示loss越小,越偏红色表示loss越大

每次计算得到的梯度gradient,即由组成的vector向量,就是该等高线的法线方向(对应图中红色箭头的方向);而的作用就是让原先的朝着gradient的方向即等高线法线方向前进,其中η(learning rate)的作用是每次更新的跨度(对应图中红色箭头的长度);经过多次迭代,最终gradient达到极小值点

注:这里两个方向的η(learning rate)必须保持一致,这样每次更新坐标的step size是等比例缩放的,保证坐标前进的方向始终和梯度下降的方向一致;否则坐标前进的方向将会发生偏移

Gradient Descent的缺点

gradient descent有一个令人担心的地方,也就是我之前一直提到的,它每次迭代完毕,寻找到的梯度为0的点必然是极小值点,local minima;却不一定是最小值点,global minima

这会造成一个问题是说,如果loss function长得比较坑坑洼洼(极小值点比较多),而每次初始化的取值又是随机的,这会造成每次gradient descent停下来的位置都可能是不同的极小值点;而且当遇到梯度比较平缓(gradient≈0)的时候,gradient descent也可能会效率低下甚至可能会stuck卡住;也就是说通过这个方法得到的结果,是看人品的(滑稽

但是!在linear regression里,loss function实际上是convex的,是一个凸函数,是没有local optimal局部最优解的,他只有一个global minimavisualize出来的图像就是从里到外一圈一圈包围起来的椭圆形的等高线(就像前面的等高线图),因此随便选一个起始点,根据gradient descent最终找出来的,都会是同一组参数

参考:https://www.bilibili.com/video/BV1JE411g7XF?p=4仅作个人学习用,如需删除请联系本人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值