山东大学机器学习基本梯度下降和牛顿法.docVIP

山东大学机器学习基本梯度下降和牛顿法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
山东大学机器学习基本梯度下降和牛顿法

山东大学计算机学院实验报告 实验题目:基本梯度下降和牛顿法的线性判别 学号:201405130158 日期:2016.11.16 班级: 2014级4班 姓名: 寇晓宇 Email:714366968@ 实验目的: 1.掌握线性分类器的原理并且明白它的应用范围。 2.了解并掌握梯度下降和牛顿法的原理并且熟练应用公式。 3.比较两种方法的数学运算量和优缺点 。 4.掌握学习率和迭代次数以及收敛时间的关系 硬件环境:? windows10操作系统 软件环境: matlab环境 实验步骤: 一、背景知识及原理 在机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解。在逻辑回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法。 我们直接假定判别函数的参数形式已知,而用训练的方法来估计判别函数的参数值。属于非参数化的形式。这些判别函数是X的各个分量的线性函数或者是关于以X为自变量的某些函数的线性函数。 寻找线性判别函数的问题将被形式化为极小化原则函数的问题,以分类为目的的准则函数可以是样本风险,或者是训练误差。准确的计算极小风险线性判别函数通常是很困难的,所以用一些比较易于分析的准则函数。 判别函数: 两类情况的判定原则:如果g(x)0则判定w1,如果g(x)0,则判定w2。 基本梯度下降法:标量函数极小化 分类原理:为了找到使成本函数最小的参数,采用搜索算法:给定一个的初值,然后不断改进,每次改进都使更小,直到最小化的的值收敛。这其实就是梯度下降法的基本思想。 求解方法: 随意选择一个a(1),计算其梯度向量 deltaJ(a(1)),下一个值a(2)由a(1)向下降最抖的方向移动一段距离,得到,即延梯度的负方向。 a(k+1)= a(k)- lr(k)deltaJ(a(k)) 直到收敛 关键:步长的学习率(式子中的lr, learning rate)如何选择? 太小,收敛慢;太大,overshoot 解决方法: ① 求J(a)的一阶导数,得到学习率的设定 ② 牛顿法 牛顿法: 分类原理:考虑一个设定学习率的原则性的方法,假定准则函数可以由它在a(k)附近的二阶展开来近似: 求解方法: a(k+1)= a(k)- H^-1 deltaJ(a(k)) H 表示海森矩阵 两种方式比较: 1. 即使有了最佳的学习率,牛顿法一般也比梯度下降法每一步都给出了最好的步长。 2. 牛顿法的缺陷:①H为奇异阵时不能用 ②计算H伪逆时间复杂度是O(d^3) 3. 用梯度下降法,将学习率设置为较小的常数,在实际中更实用。 牛顿法比梯度下降法好的原因: 牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。 二、实验步骤 1.5.4节主要就是第一问,用两种算法对2维数据设计判别器。这两个算法课本上面虽然都给出了公式,但是离直接上手使用还差好多,关键就是理解公式。所以我最一开始没有直接就做题,而是去网上查了很多关于线性判别的知识和关于梯度下降与牛顿法的区别,通过结合老师的PPT,我才大体上有了思路。但是实验的结果很曲折。大概经历了3个阶段: 开始的时候我想的是就像以前贝叶斯的实验一样,把数据的一些规律代入公式,设计出一个判别器(也就是画出一条分界线)然后再画个图表示出哪个点分错,哪个点分对。 但是刚一上来画了原始样本的图,竟然发现这不是线性可分的,就直接蒙了,难道题出错了?拿着图和同学讨论,也询问老师,讨论结果是没有关系,这才是常态,毕竟可以线性可分的点是很少的,只需要稍微改一下公式里面的循环跳出来的条件就可以。如果循环跳不出来就让迭代次数到达某个足够大的数然后break。 这样数据的问题就处理好了,后来发现其实我画数据代入分类器的结果没有太大意义,和题目要求的关系不大,因为设置不同的学习率会有不同的分类结果,整体上考察的应该是学习率与迭代次数的关系。所以就老老实实按照书上的要求来画图。 2.处理完数据的问题,又出现了另外一个错误。就是第一次写了两个函数,一个是做梯度下降方法,另一个是牛顿法。梯度下降方法中就没有设置变量,而且两个方法都没有设置阈值权w0,本来以为不设置是简单的,都在二维空间中做还不用再给样本加一行,后来发现在牛顿法中没法求偏导,也没法得到hessian矩阵。最后还是乖乖的设置了3个变量,改了很多,a的初始化

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档