博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习——梯度下降算法
阅读量:4576 次
发布时间:2019-06-08

本文共 1121 字,大约阅读时间需要 3 分钟。

前言

我们有假设函数,我们有一种方法可以衡量它与数据的匹配程度。现在我们需要估计假设函数中的参数。这就是梯度下降的地方。

概念

想象一下,我们根据其字段绘制我们的假设函数 θ0和 θ1(实际上,我们将代价函数绘制为参数估计的函数)。我们不是绘制x和y本身,而是我们的假设函数的参数范围以及选择一组特定参数所产生的代价。 我们把 θ0在x轴和 θ1在y轴上,在垂直z轴上具有代价函数。我们的图上的点将是代价函数的结果,使用我们的假设和那些特定的θ参数。下图描绘了这样的设置。

当我们的代价函数位于图中凹坑的最底部时,即当它的值最小时,我们就会知道我们已经成功了。红色箭头显示图表中的最小点。

我们这样做的方法是采用我们的代价函数的导数(一个函数的切线)。切线的斜率是该点的导数,它将为我们提供朝向的方向。我们在最陡下降的方向上降低代价函数。每个步骤的大小由参数α确定,该参数称为学习率。

上图中每个“星”之间的距离表示由参数α确定的步长。较小的α将导致较小的步长,较大的α将导致较大的步长。采取步骤的方向由J(θ0,θ1)的偏导数确定。根据图表的开始位置,可能会在不同的点上结束。上图显示了两个不同的起点,最终出现在两个不同的地方。

  • 把这个图像想象为一座山,想像类似这样的景色,公园中有两座山,想象一下你正站立在山的这一点上,站立在你想象的公园这座红色山上,在梯度下降算法中 我们要做的就是旋转360度 看看我们的周围 并问自己 我要在某个方向上 用小碎步尽快下山,如果我想要下山,如果我想尽快走下山 这些小碎步需要朝什么方向? 如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,大约是那个方向,现在你在山上的新起点上,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下山? 然后你按照自己的判断又迈出一步,往那个方向走了一步,然后重复上面的步骤,从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,又是一小步,并依此类推,直到局部最低点的位置 。
  • α 是一个数字 被称为学习速率 什么是α呢? 在梯度下降算法中 它控制了 我们下山时会迈出多大的步子 因此如果 α值很大 那么相应的梯度下降过程中 我们会试图用大步子下山 如果α值很小 那么我们会迈着很小的小碎步下山。

梯度下降算法是: 重复直到收敛:

xd j = 0,1表示特征索引号。 在每次迭代j,应该同时更新参数θ₁,θ₂,θ₃...,θn。在计算另一个参数之前更新特定参数j 迭代将导致错误的实现。
一定要先计算值,最后再更新值!

转载于:https://juejin.im/post/5d37f9c65188254b6e577a7e

你可能感兴趣的文章
creat-react-app搭建的项目中按需引入antd以及配置Less和如何修改antd的主题色
查看>>
IIS安装
查看>>
html块级元素和行级元素的区别和使用
查看>>
for循环嵌套
查看>>
寒冬夜行人
查看>>
poj1151 Atlantis
查看>>
HTML页面之间的参数传递
查看>>
java面试题集锦
查看>>
scikit-learn:4.2.3. Text feature extraction
查看>>
Spring Security构建Rest服务-0800-Spring Security图片验证码
查看>>
AE待整理
查看>>
java8中规范的四大函数式接口
查看>>
分类---Logistic Regression
查看>>
35.Docker安装Mysql挂载Host Volume
查看>>
Ubuntu 英文下Fcitx 无法输入中文
查看>>
Android压力测试命令monkey详解
查看>>
MySQL_入手<二>之删--改--查
查看>>
MySQL创表--分页--自关联--
查看>>
python基础_面向对象进阶
查看>>
GitHub从小白到熟悉<一>
查看>>