机器学习-03-梯度降维法_第1页
机器学习-03-梯度降维法_第2页
机器学习-03-梯度降维法_第3页
机器学习-03-梯度降维法_第4页
机器学习-03-梯度降维法_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、梯度降维法回归分析1梯度降维法解决什么问题假设y的值与n个因素有关,他们分别是x1、x2、x3.xn,且经过调研,我们已经掌握了m组实际值我们可以将他们的关系用函数y=a0+a1*x1+a2*x2+a3*x3.+anxn进行拟合根据之前的结论,代价函数J(a0,a1,a2.an)=1/2m*( f(xi) - yi )那么我们就需要根据已知的m组值,找出一组(a0,a1,a2.an),让代价函数的值最小上面所说的梯度降维法,就是专门求解minJ(a0,a1,a2.an)问题的一种有效方法为了更直观地看到梯度降维法是如何工作的,我们接下来只看两个因素的问题,即J(a0,a1)问题2梯度降维法工作

2、原理思考:你可以把代价函数的图像,想想为群山而你在这群山中的任意一点你需要下到更低的地方,你会怎么做?3梯度降维法工作原理思路:假设,我在点A,我会环顾一下四周看看哪个方向的高度比我所在点更低然后朝那个方向前进一小步,到点B到了B点以后,继续刚才的操作,一步一步,慢慢的,我会发现我到了某个点,这个点四周的高度都比现在的高度要高,这个时候就可以停止了这就是梯度降维法的基本思路AB4梯度降维法实现在这里,我要先给出结论,梯度降维法的实现方式如下(伪代码)针对代价函数J(a0,a1),我们要找到一个任意的初始点(a0,a1)设置两个变量temp0=0;temp1=0;这两个变量我们接下来会用到然后循

3、环下面这一段temp0=temp1=a0 = temp0a1 = temp1用新的a0和a1计算一下代价函数值直到代价函数值不再变化或是变化很小,可以忽略不计的时候,就说明我们已经找到了需要的a0和a1注意:有一点很容易出错,a0和a1一定要同时更新,否则,如果先更新a0,再对a1求偏导的时候,此时的a0是已经更新过的,偏导求的就不对了,所以一定要同时更新,切记。5梯度降维法实现看到上面的结论,是不是有点晕?没关系,我们慢慢来,上面的一大串结论里面,对于没有学习过高等数学的人来说,最麻烦的也许就是那个求偏导,完全搞不懂是什么,没关系,那个值我之后会给出,会求偏导的,可以自己算一下。下面,我就介

4、绍一下那个结论中的几个概念学习速率(下山的步子有多大)方向(朝什么方向走)刚才的例子中,不断的循环过程,就是在不断的寻找下一步往哪走,而这“下一步”就是由方向和步子大小决定的,学习速率就好比下山时的步子大小,而那个偏导就是我们下山的方向,就这样,我们会一步一步走到最低点。这是你可能会问,为什么方向会是两个?一个对a0求偏导,一个对a1求偏导。下面我们来说说导数的含义6导数的含义我们先把代价函数简化一下,看看一个变量的代价函数图像。在上一节中我们知道了,J(a1)的函数图像如下a1J(a1)假设我们的初始点在A我们利用梯度降维法,就需要做下面这件事来找到点B我们可以看到,新的a1实际上是原来的值

5、减去一个值减去的这个值由学习速率和一个导数组成这个导数的意义,实际上是点A的斜率我们沿着斜率的方向,就可以保证下一步的值肯定比这一步要小,我们可以看到,我们沿着斜率前进了,得到了一个新的a1,从而得到了新的点,这个点离我们的最低点更近了这个时候你可能会想明明是减去一个值,为什么a1会向右跑了呢?别忘了斜率的含义,你看看这条直线的方向,此时的斜率是负数,减去一个负数,所以值增加了。AB7导数的含义我们再来看看,如果我的上一个点不在最低点的左边,而在最低点的右边,会是什么情况呢?a1J(a1)假设上一个点在A我们利用梯度降维法,就需要做下面这件事来找到点B这种情况下,A的斜率变为了负值,我们新的点

6、依然会朝着最小点的方向前进,这就是导数(斜率)的神奇之处。它保障了我们的算法永远向着目标前进到目前为止,我们看到了斜率可以在方向上保证我们永远向着最低点前进,下面,我们看看这个斜率对我们步子的大小有什么作用。AB8导数的含义实际上,随着我们的计算越来越接近最低点,斜率可以保证我们的步子越来越小,尽量不越过最低点a1J(a1)假设我们从A点出发,到了B点,经过几轮循环以后,我们的数值已经到达了C点C点的斜率已经明显发生了变化,我们可以看到,C点切线的斜率与之前相比,已经变得更小了,这时,对于相同的学习速率来说,每次的变化都更小了所以,越接近最低点,步子的变化会越来越小,是我们尽量不会越过最低点。

7、注意,这里说的是尽量不越过,如果你的选择得很大,还是会越过,还会出现一只无法到达最低点的情况,不过我们可以先不要关心这一点,在后面我会讲到如何选择合适的ABC9导数的含义之前的例子,为了便于理解,我用的是只有一个参数的J(a1),当有两个参数的时候,图像是三维的,所以在确定下山方向的时候,要分别对a1和a2求偏导,得到两个方向上的增量,这样才可以确定出下一步的位置。你们看,是不是和经典物理里面求合力的情况有点像?实际上,梯度降维法可以用在更一般的情况,有n个参数的时候也是一样的求法,只不过为了让大家可以尽量不去理解超过三维的内容,所以我用了一个参数和两个参数的情况作为例题讲解10偏导的结果之前

8、的公式,我们复习一下这里一直有一个问题困扰着不会求偏导的同学,那就是这个偏导该怎么求,我不打算在这里将数学分析的内容重新讲一遍,所以我决定直接给出求偏导的答案,大家可以放心使用。求出偏导以后的梯度降维法如下:然后循环下面这一段a0 = temp0a1 = temp1用新的a0和a1计算一下代价函数值直到代价函数值不再变化或是变化很小,可以忽略不计的时候,就说明我们已经找到了需要的a0和a1注意:这里的xi和yi就是我们做回归分析时,事先知道的点的实际值,m则是这些已知值的个数。补充说明:对于这种根据已知的值,进行学习的过程,我们叫做监督学习。而这些已知的值,我们叫做训练集。就如字面意思,我们的

9、目的,是根据已知的数据,将算法训练成更优秀的算法。从而达到计算机的智能学习。11关于一点说明前面为了讨论梯度降维法如何工作,所以我用的函数图并不真实,对于那种“崇山峻岭”的图,你会发现,用梯度降维法,你可能只到达了一个局部最低点,而不是真正的最低点,那我们用梯度降维法的时候,是不是会有这种局限性呢?很幸运的,不会!因为线性回归问题的代价函数,不可能有局部最低点,他们的图像,都是弓形图,这一点我之前提到过,所以不用担心这一点。a0a1J(a0,a1)12本章节结束语这一节,我们学习了如何使用梯度降维法解决两个参数的线性回归问题,如果你顺利看到这里,并且掌握了请先“沾沾自喜”一下,因为你已经踏入了机器学习的大门,不过这只是开始,后面的路还长。不过也不用害怕,到目前为止,你也看到了,即使不懂高等数学,你也是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论