机器学习知识点04-梯度下降算法

梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数 J(θ0,θ1) 的最小值。

梯度下降背后的思想是:开始时我们随机选择一个参数的组合(θ0,θ1,...,θn),计算代价 函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到 一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定 我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合, 可能会找到不同的局部最小值。

想象一下你正站立在山的这一点上,站立在你想象的公园这座红色山上,在梯度下降算法中,我们要做的就是旋转 360 度,看看我们的周围,并问自己要在某个方向上,用小碎步 尽快下山。这些小碎步需要朝什么方向?如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下 山?然后你按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并 决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点 的位置。

批量梯度下降(batch gradient descent)算法的公式为:

其中 α 是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。

在梯度下降算法中,还有一个更微妙的问题,梯度下降中,我们要更新 θ0 和 θ1 ,当 j=0 和 j=1 时,会产生更新,所以你将更新 Jθ0 和 Jθ1。实现梯度下降算法的微妙之处是,在这 个表达式中,如果你要更新这个等式,你需要同时更新 θ0 和 θ1,我的意思是在这个等式中, 我们要这样更新:

θ0:= θ0 ,并更新 θ1:= θ1。实现方法是:你应该计算公式右边的部分,通过那一部分计算出 θ0 和 θ1 的值,然后同 时更新 θ0 和 θ1。

在梯度下降算法中,这是正确实现同时更新的方法。我不打算解释为什么你需要同时更 新,同时更新是梯度下降中的一种常用方法。我们之后会讲到,同步更新是更自然的实现方 法。当人们谈到梯度下降时,他们的意思就是同步更新。(注意:正确实现同步这句话的意思是说不要算出temp0后,更新 θ0;然后在算temp1,更新 θ1)

梯度下降的深入理解:

我们给出了一个数学上关于梯度下降的定义,我们更深入研 究一下,更直观地感受一下这个算法是做什么的,以及梯度下降算法的更新过程有什么意义。 梯度下降算法如下图:

描述:对 θ 赋值,使得 J(θ)按梯度下降最快方向进行,一直迭代下去,最终得到局部最 小值。其中 α 是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方 向向下迈出的步子有多大。

对于这个问题,求导的目的,基本上可以说取这个红点的切线,就是这样一条红色的直线,刚好与函数相切于这一点,让我们看看这条红色直线的斜率,就是这条刚好与函数曲线 相切的这条直线,这条直线的斜率正好是这个三角形的高度除以这个水平长度,现在,这条线有一个正斜率,也就是说它有正导数,因此,我得到的新的 θ1,θ1 更新后等于 θ1 减去一 个正数乘以 α。

让我们来看看如果 α 太小或 α 太大会出现什么情况:

如果 α 太小了,即我的学习速率太小,结果就是只能这样像小宝宝一样一点点地挪动, 去努力接近最低点,这样就需要很多步才能到达最低点,所以如果 α 太小的话,可能会很慢 因为它会一点点挪动,它会需要很多步才能到达全局最低点。如果 α 太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果 α 太大,它会导致无法收敛,甚至发散。 现在,我还有一个问题,如果我们预先把 θ1 放在一个局部的最低点,你认为下一步梯度下降法会怎样工作? 假设你将 θ1 初始化在局部最低点,在这儿,它已经在一个局部的最优处或局部最低点。 结果是局部最优点的导数将等于零,因为它是那条切线的斜率。这意味着你已经在局部最优 点,它使得 θ1 不再改变,也就是新的 θ1 等于原来的 θ1,因此,如果你的参数已经处于局部 最低点,那么梯度下降法更新其实什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率 α 保持不变时,梯度下降也可以收敛到局部最低点。

我们来看一个例子,这是代价函数 J(θ)。

我想找到它的最小值,首先初始化我的梯度下降算法,在那个品红色的点初始化,如果 我更新一步梯度下降,也许它会带我到这个点,因为这个点的导数是相当陡的。现在,在这个绿色的点,如果我再更新一步,你会发现我的导数,也即斜率,是没那么陡的。随着我接近最低点,我的导数越来越接近零,所以,梯度下降一步后,新的导数会变小一点点。然后 我想再梯度下降一步,在这个绿点,我自然会用一个稍微跟刚才在那个品红点时比,再小一 点的一步,到了新的红色点,更接近全局最低点了,因此这点的导数会比在绿点时更小。所以,我再进行一步梯度下降时,我的导数项是更小的,θ1 更新的幅度就会更小。所以随着梯度下降法的运行,你移动的幅度会自动变得越来越小,直到最终移动幅度非常小,你会发 现,已经收敛到局部极小值。

回顾一下,在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是 梯度下降的做法。所以实际上没有必要再另外减小 α。这就是梯度下降算法,你可以用它来最小化任何代价函数 J,不只是线性回归中的代价 函数 J。

在接下来的随笔中,我们要用代价函数 J,回到它的本质,线性回归中的代价函数。也就是我们前面得出的平方误差函数,结合梯度下降法,以及平方代价函数,我们会得出第一个机器学习算法,即线性回归算法

原文地址:https://www.cnblogs.com/lpzblog/p/9302590.html

时间: 2024-10-08 16:29:44

机器学习知识点04-梯度下降算法的相关文章

【机器学习】对梯度下降算法的进一步理解

单一变量的线性回归 让我们依然以房屋为例,如果输入的样本特征是房子的尺寸,我们需要研究房屋尺寸和房屋价格之间的关系,假设我们的回归模型训练集如下 其中我们用 m表示训练集实例中的实例数量, x代表特征(输入)变量, y代表目标变量 (x,y)代表实例 根据线性回归模型hΘ(x) = Θ0+Θ1*x1       (Θ是模型参数) 需要找出Θ0,Θ1,使得平均误差最小.J(Θ0,Θ1)称为代价函数. 根据不同的特征值,我们按照如下步骤进行迭代更新,以此来得到不同的Θ: 执行过程中,同步更新Θ0,Θ

【机器学习】(2):梯度下降算法

上一章中我们简单介绍了机器学习的大概情况,今天我们开始循序渐进地学习机器学习中相关的算法.在接触经典算法之前,我们先来了解下"梯度下降"算法.一.算法背景    作为一个算法演示的背景,我们还是采用上一章中提到的房屋价格和房屋大小的关系问题,不同大小的房屋对应不同的房价,我们要通过分析已有的数据样本,来预 测一个新样本的房价.这里其实是监督式学习中回归问题的简单应用,如果所有的特性因变量都是一次的关系,那么就称之为一个线性回归问题.下面就是我们解决 问题的基本思路:    首先从训练集

斯坦福CS229机器学习课程笔记一:线性回归与梯度下降算法

应该是去年的这个时候,我开始接触机器学习的相关知识,当时的入门书籍是<数据挖掘导论>.囫囵吞枣般看完了各个知名的分类器:决策树.朴素贝叶斯.SVM.神经网络.随机森林等等:另外较为认真地复习了统计学,学习了线性回归,也得以通过orange.spss.R做一些分类预测工作.可是对外说自己是搞机器学习的还是不太自信,毕竟和科班出身的各位大牛相比自己对这些模型.算法的理解只能算是“知其然而不知其所以然”,用起来总感觉哪里不对劲. 因此,去年早早地就把网易公开课上Andrew大神的斯坦福CS229课程

机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)

本文介绍了机器学习中基本的优化算法-梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有样本的特征向量组成的矩阵 x(i) 是第i个样本包含的所有特征组成的向量x(i)=(x(i)1,x(i)2...,x(i)n) y(i) 第i个样本的label,每个样本只有一个label,y(i)是标量(一个数值) hθ(x(i)) :拟合函数,机器学习中可以用多种类型的拟合函数 θ 是函数变量,

Hulu机器学习问题与解答系列 | 十七:随机梯度下降算法之经典变种

这是本周第二篇机器学习,也是Hulu面试题系列的第十七篇了~ 之前的所有内容都可以在菜单栏的"机器学习"中找到,愿你温故,知新. 今天的内容是 [随机梯度下降算法之经典变种] 场景描述 提到Deep Learning中的优化方法,人们都会想到Stochastic Gradient Descent (SGD),但是SGD并不是理想的万金油,反而有时会成为一个坑.当你设计出一个deep neural network时,如果只知道用SGD来训练,不少情况下你得到一个很差的训练结果,于是你放弃

机器学习(一)梯度下降算法的实现及过程分析

机器学习(一)梯度下降算法 因为算法最好能应用到实际问题中才会让读者感到它的真实的用处,因此首先我来描述一个实际问题(梯度下降算法用以帮助解决该问题):给定一个指定的数据集,比如由若干某一地区的房屋面积和房屋价格这样的数据对(area, price)组成的集合(吴恩达老师的课程是启蒙课程所以举该例子),我的目标是通过一个学习算法得到一个预测房价和房屋面积之间的函数,然后给定一个新的房屋面积,用这个函数来预测房价.如下图所示: 我的解决思路大致如下: 1.我找了一个很小的数据集,有两个特征X1,X

机器学习:梯度下降算法原理讲解

背景 学习机器学习时作为基础概念. 转载自: <梯度下降算法原理讲解--机器学习> 1. 概述 梯度下降(gradient descent)在机器学习中应用十分的广泛,不论是在线性回归还是Logistic回归中,它的主要目的是通过迭代找到目标函数的最小值,或者收敛到最小值. 本文将从一个下山的场景开始,先提出梯度下降算法的基本思想,进而从数学上解释梯度下降算法的原理,解释为什么要用梯度,最后实现一个简单的梯度下降算法的实例! 2. 梯度下降算法 2.1 场景假设 梯度下降法的基本思想可以类比为

机器学习(Andrew Ng)笔记(二):线性回归模型 &amp; 梯度下降算法

线性回归模型 回忆一下第一节课提出的预测房屋每平方单位价格的例子.在这个例子中,我们可以画一条直线,尽量符合数据点的分布趋势.我们已经知道这是一个回归问题,即预测连续值的输出.实际上,这是一个典型的线性回归模型.之所以这样定义,大概是因为回归方程可以用一个线性函数来表示. 我们可以假设这个线性函数为: 这是一个关于x的一元一次方程.其中两个参数的值我们还不知道,要根据训练集中的数据求解出来.这里要定义几个概念,我们已经有的数据,即房屋面积与单价的对应数据对,被称作训练集.x作为房屋面积,称作输入

简单多元线性回归(梯度下降算法与矩阵法)

多元线性回归是最简单的机器学习模型,通过给定的训练数据集,拟合出一个线性模型,进而对新数据做出预测. 对应的模型如下: n: 特征数量. 一般选取残差平方和最小化作为损失函数,对应为: M:训练样本数量. 通过最小化代价损失函数,来求得 值,一般优化的方法有两种,第一是梯度下降算法(Gradient Descent),第二种是矩阵法(The normal equations). 梯度下降算法