社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

机器学习——梯度下降算法

yucheng1998 • 4 年前 • 34 次点击  
阅读 5

机器学习——梯度下降算法

前言

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

概念

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

在这里插入图片描述

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

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

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

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

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

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/36398
 
34 次点击