专栏首页人人都是极客Peter教你谈情说AI | 04梯度下降法

Peter教你谈情说AI | 04梯度下降法

上一节我们知道了算法是训练出来的,训练过程需要依据某种算法进行运算,这一节我们一起看下线性回归中最常用的优化算法——梯度下降法。

凸函数

在前面,我们讲到,每一个机器学习模型都有一个目标函数,而学习的目标,就是最小化目标函数。是不是所有函数都能够在自变量取值范围内找到因变量最小值呢?显然不是。不过我们要学习的几个经典机器学习模型的目标函数都有最小值,也就是我们常说的凸函数

数学定义:某个向量空间的凸子集(区间)上的实值函数,如果在其定义域上的任意两点 ,有 f(tx + (1-t)y) <= tf(x) + (1-t)f(y),则称其为该区间上的凸函数。

将这一定义用一元函数的形式,在二维坐标轴里表现出来,是这样的:

直观的理解,就是二维空间中的一条曲线,有个“弯儿”冲下,那个弯儿里面的最低点,就是该函数在自变量取值区间内的最小值。

如果自变量取值区间是整个实数域的话,那么可以想想这条曲线所有向下的弯儿里面有一个低到最低的,叫全局最小,而其他的弯儿,就叫做局部最小。

如果自变量本身是二维的(二元函数),则凸函数在三维空间中的图象是这样的:

同样有个“弯儿”,只不过这个弯儿不再是一段曲线,而是成了一个碗状的曲面,“碗底儿”就是区域内的极值点。在三维空间中,我们要找的最小值就是最深的那个碗底儿(如果不止一个的话)。

什么是梯度下降法

既然已经知道了学习的目标就是最小化目标函数的取值,而目标函数又是凸函数,那么学习的目标自然转化成了寻找某个凸函数的最小值。

求凸函数的最小值最常用的一种方法,就是梯度下降法。

我们先以一元函数为例,采用如下步骤来获得其最小值:

  1. 随机取一个自变量的值 x 0 ;
  2. 对应该自变量算出对应点的因变量值:f( x 0 );
  3. 计算 f( x 0 ) 处目标函数 f(x) 的导数;
  4. 从 f( x 0 ) 开始,沿着该处目标函数导数的方向,按一个指定的步长 α ,向前“走一步”,走到的位置对应自变量取值为 x 1 。换言之,| x 0 – x 1 | / α = f(x) 在 f ( x 0 ) 处的斜率;
  5. 继续重复2-4,直至退出迭代(达到指定迭代次数,或 f(x) 近似收敛到最优解)。

直观的看起来,就像上图演示的那样,在 J(w) 曲线上任取一点,放上一个没有体积的“小球”,然后让这个小球沿着该处曲线的切线方向“跨步”,每一步的步长就是 α ,一直跨到最低点位置。

对应三维的情况,可以想像在一个很大的碗的内壁上放上一个小球,每次,我们都沿着当时所在点的切线方向(此处的切线方向是一个二维向量)向前走一步,直到走到碗底为止。

梯度下降的超参数

上面讲了梯度下降法,其中的 α ,又叫做步长,它决定了为了找到最小值点而尝试在目标函数上前进的步伐到底走多大。

步长是算法自己学习不出来的,它必须由外界指定。

这种算法不能学习,需要人为设定的参数,就叫做超参数

步长参数 α 是梯度下降算法中非常重要的超参数。这个参数设置的大小如果不合适,很可能导致最终无法找到最小值点。

比如下左图就是因为步幅太大,几个迭代后反而取值越来越大。改成右侧那样的小步伐就可以顺利找到最低点了。

不过大步伐也不是没有优点。步伐越大,每一次前进得越多。步伐太小,虽然不容易“跨过”极值点,但需要的迭代次数也多,相应需要的运算时间也就越多。

为了平衡大小步伐的优缺点,也可以在一开始的时候先大步走,当所到达点斜率逐渐下降——函数梯度下降的趋势越来越缓和——以后,逐步调整,缩小步伐。比如下图这样:

梯度下降的注意点

那是不是只要步伐合适,就一定能找到最小值点呢?也不一定。

如果目标函数有多个极小值点(多个向下的“弯儿”),那么如果开始位置不妥,很可能导致最终是走到了一个局部极小值就无法前进了。比如下图的 Postion1 和 Position2。

如果目标函数不能确定只有一个极小值,而获得的模型结果又不令人满意时,就该考虑是否是在学习的过程中,优化算法进入了局部而非全局最小值。这种情况下,可以尝试几个不同的起始点。甚至尝试一下大步长,说不定反而能够跨出局部最小值点所在的凸域。

本文分享自微信公众号 - 人人都是极客(rrgeek)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • AI超金融成薪资最高行业,程序员如何转型?

    长期以来,金融业的平均工资水平一直排在全国首位,但 2016 年却悄然发生了变化。

    AI科技大本营
  • 在TensorFlow2.0发布前,帮你掌握TensorFlow的必备内容

    【导读】AI科技大本营曾报道过,TensorFlow 2.0 已经在开发计划中了,相信在不久的将来就会和我们见面。那么现在的 TensorFlow 都有哪些功能...

    AI科技大本营
  • 传统程序员转型AI做错了吗?

    近年来,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个 IT 界。所有的互联网公司,尤其是 Goog...

    AI科技大本营
  • 这一次,我拒绝了Python,选择了Go

    最近,我用一个以 Go 语言为后端的软件,实现了一个人脸识别项目。它能够识别出上传照片中的人像 (如流行歌手)是谁。这听起来不错,我决定试一下也给你们介绍一下项...

    AI科技大本营
  • 深圳高一学生,夺冠国际物理奥赛

    Facebook 首席 AI 科学家 Yann LeCun 在接受吴恩达采访时讲了一个故事,“80 年代早期,神经网络的研究重新引起了一些研究团体的兴趣,其中大...

    AI科技大本营
  • 文因互联鲍捷:深度解析知识图谱发展关键阶段及技术脉络 | 公开课笔记

    知识图谱是人工智能三大分支之一——符号主义——在新时期主要的落地技术方式。该技术虽然在 2012 年才得名,但它的历史渊源,却可以追溯到更早的语义网、描述逻辑、...

    AI科技大本营
  • 思考: R-CNN系列 网络结构 设计缺陷

    在 Fast R-CNN 中,网络最后部分的 cls reg (分类回归,即对框内实例进行标签分类)和 bbox reg (边界框回归,即对边界框进行平移回归)...

    Petrichor_
  • 深度学习: 过拟合 (overfitting)

    过拟合,overfitting,指的是 模型 对训练数据的 抽样误差 也进行了 很好的拟合 ,是一种 无监督下 的 矫枉过正 。

    Petrichor_
  • 深度学习: LeNet 网络

    该网络在字符识别上取得了高于99%的准确率,因此主要被用于字符识别的卷积神经网络。

    Petrichor_
  • 算法工程师养成记(附精选面试题)

    通往机器学习算法工程师的进阶之路是崎岖险阻的。《线性代数》《统计学习方法》《机器学习》《模式识别》《深度学习》,以及《颈椎病康复指南》,这些书籍将长久地伴随着你...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券