梯度下降

梯度下降(Gradient Descent)是在求解机器学习算法的模型参数(无约束优化问题)时,最常采用的方法之一

代价函数

提到梯度下降就不得不说一下代价函数。代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。 我们以猜测房屋价格为例子来说明代价函数的具体形式。问题简化之后可以认为拟合一条直线来衡量房子的价格,下图为表达式。可以看到有两个参数θ0和θ1

线性函数 我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度, 模型所预测的值与训练集中实际值之间的差距就是 建模误差(modeling error)。我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。

代价函数 我们想要的结果是使这个函数最小,前面的1/2是为了在求导的时候方便计算

梯度下降

梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数J(θ0 ,θ1 ) 的最小值。 梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快

方法

  • 先确定向下一步的步伐大小,我们称为学习率Learning rate;
  • 初始化参数的值
  • 沿着负梯度方向去减小函数值并更新参数
  • 当下降的高度小于某个定义的值或迭代次数超过一定限制,则停止下降;

对于多个参数的情况那是一样的

梯度和偏导数都是向量,那么参考向量运算法则,我们在每个变量轴上减小对应变量值即可

特点

  • 这种方法只能找到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
  • 越接近最小值时,下降速度越慢

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • tensorflow-gpu版安装

    需要环境 Anaconda CUDA cuDNN 注:tensorflow1.4用的是cuda8,cudnn6;tensorflow用的是cuda9,cudn...

    听城
  • numpy中random模块使用

    在python数据分析的学习和应用过程中,经常需要用到numpy的随机函数,下面我们学习一下具体的使用,本文着重说明各个分布随机数的生成。 numpy.rand...

    听城
  • ubuntu安装web环境

    下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213...

    听城
  • 纯手写实现JDK动态代理前言JDK动态代理 手写代码实现JDK动态代理

    在Java领域,动态代理应用非常广泛,特别是流行的Spring/MyBatis等框架。JDK本身是有实现动态代理技术的,不过要求被代理的类必须实现接口,不过cg...

    用户2890438
  • 手把手带你实现JDK动态代理

    业务接口Interface、业务实现类target、业务处理类Handler、JVM在内存中生成的动态代理类$Proxy0

    java进阶架构师
  • 纯手写实现JDK动态代理

    在Java领域,动态代理应用非常广泛,特别是流行的Spring/MyBatis等框架。JDK本身是有实现动态代理技术的,不过要求被代理的类必须实现接口,不过cg...

    java思维导图
  • 由 Underscore 与 Lodash 的差异引发的思考

    自打接触 Underscore 以来就对其爱不释手,尔后又了解到 Lodash。这两个类库为我们提供了一系列相当不错的跟函数式编程相关的方法。Underscor...

    草小灰
  • 使用CNN-LSTM混合深度学习分类基于MUSE采集的运动想象EEG信号

    脑机接口(BrainComputer Interfaces)技术是将人脑与外部设备建立起直接的通路,在智能助残、人机工程、神经康复训练等领域有巨大的应用潜力。随...

    脑机接口社区
  • python(3)模块、函数式 、三元运

    函数的默认参数:定义默认参数,如果下面调用函数时不指定参数,默认就是这个参数,默认参数可以无限定义

    py3study
  • 【Science重磅】DeepMind生成查询网络GQN,无监督学习展现3D场景

    新智元

扫码关注云+社区

领取腾讯云代金券