吴恩达机器学习笔记

CSDN 图片无法显示,请参考链接

引言(Introduction)

什么是机器学习

第一个机器学习定义来源于Arthur Samuel,他定义为: 在特定的编程情况下,给予计算机学习能力。
另一个年代近一点的定义,由 Tom Mitchell 提出,来自卡内基梅隆大学,Tom 定义的机器学习是,一个好的学习问题定义如下,他说,一个程序被认为能从经验 E 中学习,解决任务 T,达到性能度量值P,当且仅当,有了经验 E 后,经过 P 评判,程序在处理 T 时的性能有所提升。我认为经验E 就是程序上万次的自我练习的经验而任务 T 就是下棋。性能度量值 P 呢,就是它在与一些新的对手比赛时,赢得比赛的概率。简单来说就是从E中学习,解决任务T,达到性能度量值P。并且在经过P评判,和不断学习的过程中,程序在处理T时的性能有所提升.

监督学习

我们用一个例子介绍什么是监督学习把正式的定义放在后面介绍。假如说你想预测房价。

前阵子,一个学生从波特兰俄勒冈州的研究所收集了一些房价的数据。你把这些数据画出来,看起来是这个样子:横轴表示房子的面积,单位是平方英尺,纵轴表示房价,单位是千美元。那基于这组数据,假如你有一个朋友,他有一套750平方英尺房子,现在他希望把房子卖掉,他想知道这房子能卖多少钱。

那么关于这个问题,机器学习算法将会怎么帮助你呢?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ab9Ca9bl-1613535825619)(/images/image-20210216224108606.png)]

我们应用学习算法,可以在这组数据中画一条直线,或者换句话说,拟合一条直线,根据这条线我们可以推测出,这套房子可能卖$$150,000 , 当 然 这 不 是 唯 一 的 算 法 。 可 能 还 有 更 好 的 , 比 如 我 们 不 用 直 线 拟 合 这 些 数 据 , 用 二 次 方 程 去 拟 合 可 能 效 果 会 更 好 。 根 据 二 次 方 程 的 曲 线 , 我 们 可 以 从 这 个 点 推 测 出 , 这 套 房 子 能 卖 接 近 ,当然这不是唯一的算法。可能还有更好的,比如我们不用直线拟合这些数据,用二次方程去拟合可能效果会更好。根据二次方程的曲线,我们可以从这个点推测出,这套房子能卖接近 线线$200,000$。稍后我们将讨论如何选择学习算法,如何决定用直线还是二次方程来拟合。两个方案中有一个能让你朋友的房子出售得更合理。这些都是学习算法里面很好的例子。以上就是监督学习的例子。

可以看出,**监督学习指的就是我们给学习算法一个数据集。这个数据集由“正确答案”组成。**在房价的例子中,我们给了一系列房子的数据,我们给定数据集中每个样本的正确价格,即它们实际的售价然后运用学习算法,算出更多的正确答案。比如你朋友那个新房子的价格。用术语来讲,这叫做回归问题。我们试着推测出一个连续值的结果,即房子的价格。

一般房子的价格会记到美分,所以房价实际上是一系列离散的值,但是我们通常又把房价看成实数,看成是标量,所以又把它看成一个连续的数值。

回归这个词的意思是,我们在试着推测出这一系列连续值属性。

我再举另外一个监督学习的例子。我和一些朋友之前研究过这个。假设说你想通过查看病历来推测乳腺癌良性与否,假如有人检测出乳腺肿瘤,恶性肿瘤有害并且十分危险,而良性的肿瘤危害就没那么大,所以人们显然会很在意这个问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cYFalRHP-1613535825620)(/images/image-20210216225057126.png)]

让我们来看一组数据:这个数据集中,横轴表示肿瘤的大小,纵轴上,我标出1和0表示是或者不是恶性肿瘤。我们之前见过的肿瘤,如果是恶性则记为1,不是恶性,或者说良性记为0。

我有5个良性肿瘤样本,在1的位置有5个恶性肿瘤样本。现在我们有一个朋友很不幸检查出乳腺肿瘤。假设说她的肿瘤大概这么大,那么机器学习的问题就在于,你能否估算出肿瘤是恶性的或是良性的概率。用术语来讲,这是一个分类问题。

分类指的是,我们试着推测出离散的输出值:0或1良性或恶性,而事实上在分类问题中,输出可能不止两个值。比如说可能有三种乳腺癌,所以你希望预测离散输出0、1、2、3。0 代表良性,1 表示第1类乳腺癌,2表示第2类癌症,3表示第3类,但这也是分类问题。

因为这几个离散的输出分别对应良性,第一类第二类或者第三类癌症,在分类问题中我们可以用另一种方式绘制这些数据点。

现在我用不同的符号来表示这些数据。既然我们把肿瘤的尺寸看做区分恶性或良性的特征,那么我可以这么画,我用不同的符号来表示良性和恶性肿瘤。或者说是负样本和正样本现在我们不全部画X,良性的肿瘤改成用 O 表示,恶性的继续用 X 表示。来预测肿瘤的恶性与否。

在其它一些机器学习问题中,可能会遇到不止一种特征。举个例子,我们不仅知道肿瘤的尺寸,还知道对应患者的年龄。在其他机器学习问题中,我们通常有更多的特征,我朋友研究这个问题时,通常采用这些特征,比如肿块密度,肿瘤细胞尺寸的一致性和形状的一致性等等,还有一些其他的特征。这就是我们即将学到最有趣的学习算法之一。

那种算法不仅能处理2种3种或5种特征,即使有无限多种特征都可以处理。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mK5NE1xC-1613535825621)(/images/image-20210216225452470.png)]

上图中,我列举了总共5种不同的特征,坐标轴上的两种和右边的3种,但是在一些学习问题中,你希望不只用3种或5种特征。相反,你想用无限多种特征,好让你的算法可以利用大量的特征,或者说线索来做推测。那你怎么处理无限多个特征,甚至怎么存储这些特征都存在问题,你电脑的内存肯定不够用。**我们以后会讲一个算法,叫支持向量机,里面有一个巧妙的数学技巧,能让计算机处理无限多个特征。**想象一下,我没有写下这两种和右边的三种特征,而是在一个无限长的列表里面,一直写一直写不停的写,写下无限多个特征,事实上,我们能用算法来处理它们。

现在来回顾一下,这节课我们介绍了监督学习。其基本思想是,我们数据集中的每个样本都有相应的“正确答案”。再根据这些样本作出预测,就像房子和肿瘤的例子中做的那样。我们还介绍了回归问题,即通过回归来推出一个连续的输出,之后我们介绍了分类问题,其目标是推出一组离散的结果。

无监督学习

本次视频中,我们将介绍第二种主要的机器学习问题。叫做无监督学习。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-43xYqzab-1613535825622)(/images/image-20210216225824075.png)]

上个视频中,已经介绍了监督学习。回想当时的数据集,如图表所示,这个数据集中每条数据都已经标明是阴性或阳性,即是良性或恶性肿瘤。所以,对于监督学习里的每条数据,我们已经清楚地知道,训练集对应的正确答案,是良性或恶性了。

在无监督学习中,我们已知的数据。看上去有点不一样,不同于监督学习的数据的样子,**即无监督学习中没有任何的标签或者是有相同的标签或者就是没标签。**所以我们已知数据集,却不知如何处理,也未告知每个数据点是什么。别的都不知道,就是一个数据集。你能从数据中找到某种结构吗?针对数据集,无监督学习就能判断出数据有两个不同的聚集簇。这是一个,那是另一个,二者不同。是的,**无监督学习算法可能会把这些数据分成两个不同的簇。所以叫做聚类算法。**事实证明,它能被用在很多地方。

单变量线性回归(Linear Regression with One Variable)

模型表示

我们的第一个学习算法是线性回归算法。在这段视频中,你会看到这个算法的概况,更重要的是你将会了解监督学习过程完整的流程。

让我们通过一个例子来开始:这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集。比方说,如果你朋友的房子是1250平方尺大小,你要告诉他们这房子能卖多少钱。那么,你可以做的一件事就是构建一个模型,也许是条直线,从这个数据模型上来看,也许你可以告诉你的朋友,他能以大约220000(美元)左右的价格卖掉这个房子。这就是监督学习算法的一个例子。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9shj4j0l-1613535825623)(/images/image-20210216232328225.png)]

它被称作监督学习是因为对于每个数据来说,我们给出了“正确的答案”,即告诉我们:根据我们的数据来说,房子实际的价格是多少,而且,更具体来说,这是一个回归问题。回归一词指的是,我们根据之前的数据预测出一个准确的输出值,对于这个例子就是价格,同时,还有另一种最常见的监督学习方式,叫做分类问题,当我们想要预测离散的输出值,例如,我们正在寻找癌症肿瘤,并想要确定肿瘤是良性的还是恶性的,这就是0/1离散输出的问题。更进一步来说,在监督学习中我们有一个数据集,这个数据集被称训练集。

我将在整个课程中用小写的 m m m来表示训练样本的数目。

以之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-duiy1PKp-1613535825624)(/images/image-20210216232438960.png)]

我们将要用来描述这个回归问题的标记如下:

$m$ 代表训练集中实例的数量

$x$  代表特征/输入变量

$y$ 代表目标变量/输出变量

$\left( x,y \right)$ 代表训练集中的实例

$({{x}^{(i)}},{{y}^{(i)}})$ 代表第$i$ 个观察实例

$h$  代表学习算法的解决方案或函数也称为假设(**hypothesis**)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1FPDFH4Y-1613535825624)(/images/image-20210216232605293.png)]

这就是一个监督学习算法的工作方式,我们可以看到这里有我们的训练集里房屋价格
我们把它喂给我们的学习算法,学习算法的工作了,然后输出一个函数,通常表示为小写 h h h 表示。 h h h 代表hypothesis(假设), h h h表示一个函数,输入是房屋尺寸大小,就像你朋友想出售的房屋,因此 h h h 根据输入的 x x x值来得出 y y y 值, y y y 值对应房子的价格 因此, h h h 是一个从 x x x y y y 的函数映射。

我将选择最初的使用规则 h h h代表hypothesis,因而,要解决房价预测问题,我们实际上是要将训练集“喂”给我们的学习算法,进而学习得到一个假设 h h h,然后将我们要预测的房屋的尺寸作为输入变量输入给 h h h,预测出该房屋的交易价格作为输出变量输出为结果。那么,对于我们的房价预测问题,我们该如何表达 h h h

一种可能的表达方式为: h θ ( x ) = θ 0 + θ 1 x h_\theta \left( x \right)=\theta_{0} + \theta_{1}x hθ(x)=θ0+θ1x,因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。

代价函数

在这段视频中我们将定义代价函数的概念,这有助于我们弄清楚如何把最有可能的直线与我们的数据相拟合。如图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LsmDPaZZ-1613535825625)(/images/image-20210216234140487.png)]

在线性回归中我们有一个像这样的训练集, m m m代表了训练样本的数量,比如 m = 47 m = 47 m=47。而我们的假设函数,也就是用来进行预测的函数,是这样的线性函数形式: h θ ( x ) = θ 0 + θ 1 x h_\theta \left( x \right)=\theta_{0}+\theta_{1}x hθ(x)=θ0+θ1x

接下来我们会引入一些术语我们现在要做的便是为我们的模型选择合适的参数parameters θ 0 \theta_{0} θ0 θ 1 \theta_{1} θ1,在房价问题这个例子中便是直线的斜率和在 y y y 轴上的截距。

我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差modeling error)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NbmCQwtD-1613535825626)(/images/image-20210216234256392.png)]

我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得代价函数 J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J \left( \theta_0, \theta_1 \right) = \frac{1}{2m}\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2} J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))2最小。

我们绘制一个等高线图,三个坐标分别为 θ 0 \theta_{0} θ0 θ 1 \theta_{1} θ1 J ( θ 0 , θ 1 ) J(\theta_{0}, \theta_{1}) J(θ0,θ1)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RwSMYsTH-1613535825628)(/images/image-20210216234547570.png)]

通过不断调节theta_{0}, theta_{1}的值,使代价函数的值最小,此时得到的theta_{0}, theta_{1}变是我们期望得到的值。

则可以看出在三维空间中存在一个使得 J ( θ 0 , θ 1 ) J(\theta_{0}, \theta_{1}) J(θ0,θ1)最小的点。

代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。我们之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。

在后续课程中,我们还会谈论其他的代价函数,但我们刚刚讲的选择是对于大多数线性回归问题非常合理的。

也许这个函数 J ( θ 0 , θ 1 ) J(\theta_{0}, \theta_{1}) J(θ0,θ1)有点抽象,可能你仍然不知道它的内涵,在接下来的几个视频里,我们要更进一步解释代价函数J的工作原理,并尝试更直观地解释它在计算什么,以及我们使用它的目的。

代价函数的直观理解|

参考视频: 2 - 3 - Cost Function - Intuition I (11 min).mkv

在上一个视频中,我们给了代价函数一个数学上的定义。在这个视频里,让我们通过一些例子来获取一些直观的感受,看看代价函数到底是在干什么。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SwNxv7JF-1613535825629)(/images/image-20210216235141468.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HKODz2Wp-1613535825630)(/images/image-20210216235152322.png)]

代价函数的直观理解||

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aK7CaMN8-1613535825631)(/images/image-20210216235528290.png)]

代价函数的样子,等高线图,则可以看出在三维空间中存在一个使得 J ( θ 0 , θ 1 ) J(\theta_{0}, \theta_{1}) J(θ0,θ1)最小的点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0xdfNCPF-1613535825632)(/images/image-20210216235547767.png)]

通过这些图形,我希望你能更好地理解这些代价函数$ J 所 表 达 的 值 是 什 么 样 的 , 它 们 对 应 的 假 设 是 什 么 样 的 , 以 及 什 么 样 的 假 设 对 应 的 点 , 更 接 近 于 代 价 函 数 所表达的值是什么样的,它们对应的假设是什么样的,以及什么样的假设对应的点,更接近于代价函数 J$的最小值。

当然,我们真正需要的是一种有效的算法,能够自动地找出这些使代价函数 J J J取最小值的参数 θ 0 \theta_{0} θ0 θ 1 \theta_{1} θ1来。

我们也不希望编个程序把这些点画出来,然后人工的方法来读出这些点的数值,这很明显不是一个好办法。我们会遇到更复杂、更高维度、更多参数的情况,而这些情况是很难画出图的,因此更无法将其可视化,因此我们真正需要的是编写程序来找出这些最小化代价函数的 θ 0 \theta_{0} θ0 θ 1 \theta_{1} θ1的值,在下一节视频中,我们将介绍一种算法,能够自动地找出能使代价函数 J J J最小化的参数 θ 0 \theta_{0} θ0 θ 1 \theta_{1} θ1的值。

梯度下降

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oFXqBosm-1613535825632)(/images/image-20210216235758941.png)]

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wfgoIyVh-1613535825633)(/images/image-20210217000026099.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eTN2UD30-1613535825634)(/images/image-20210217000338121.png)]

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

θ 0 {\theta_{0}} θ0:= θ 0 {\theta_{0}} θ0 ,并更新 θ 1 {\theta_{1}} θ1:= θ 1 {\theta_{1}} θ1

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

让我进一步阐述这个过程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VrRH0kat-1613535825634)(/images/image-20210217000401134.png)]

在梯度下降算法中,这是正确实现同时更新的方法。我不打算解释为什么你需要同时更新,同时更新是梯度下降中的一种常用方法。我们之后会讲到,同步更新是更自然的实现方法。当人们谈到梯度下降时,他们的意思就是同步更新。

在接下来的视频中,我们要进入这个微分项的细节之中。我已经写了出来但没有真正定义,如果你已经修过微积分课程,如果你熟悉偏导数和导数,这其实就是这个微分项:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HCmm3wDN-1613535825635)(/images/image-20210217002837122.png)]

如果你不熟悉微积分,不用担心,即使你之前没有看过微积分,或者没有接触过偏导数,在接下来的视频中,你会得到一切你需要知道,如何计算这个微分项的知识。

下一个视频中,希望我们能够给出实现梯度下降算法的所有知识 。

梯度下降的直观理解

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

θ j : = θ j − α ∂ ∂ θ j J ( θ ) {\theta_{j}}:={\theta_{j}}-\alpha \frac{\partial }{\partial {\theta_{j}}}J\left(\theta \right) θj:=θjαθjJ(θ)

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j5Klh0R4-1613535825635)(/images/image-20210217000534228.png)]

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

这就是我梯度下降法的更新规则: θ j : = θ j − α ∂ ∂ θ j J ( θ ) {\theta_{j}}:={\theta_{j}}-\alpha \frac{\partial }{\partial {\theta_{j}}}J\left( \theta \right) θj:=θjαθjJ(θ)

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

如果 a a a太小了,即我的学习速率太小,结果就是只能这样像小宝宝一样一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点,所以如果 a a a太小的话,可能会很慢,因为它会一点点挪动,它会需要很多步才能到达全局最低点。

如果 a a a太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果 a a a太大,它会导致无法收敛,甚至发散。

现在,我还有一个问题,当我第一次学习这个地方时,我花了很长一段时间才理解这个问题,如果我们预先把 θ 1 {\theta_{1}} θ1放在一个局部的最低点,你认为下一步梯度下降法会怎样工作?

假设你将 θ 1 {\theta_{1}} θ1初始化在局部最低点,在这儿,它已经在一个局部的最优处或局部最低点。结果是局部最优点的导数将等于零,因为它是那条切线的斜率。这意味着你已经在局部最优点,它使得 θ 1 {\theta_{1}} θ1不再改变,也就是新的 θ 1 {\theta_{1}} θ1等于原来的 θ 1 {\theta_{1}} θ1,因此,如果你的参数已经处于局部最低点,那么梯度下降法更新其实什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率 a a a保持不变时,梯度下降也可以收敛到局部最低点。

我们来看一个例子,这是代价函数 J ( θ ) J\left( \theta \right) J(θ)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XonSxIxv-1613535825636)(/images/image-20210217000553809.png)]

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

回顾一下,在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法。所以实际上没有必要再另外减小 a a a

这就是梯度下降算法,你可以用它来最小化任何代价函数 J J J,不只是线性回归中的代价函数 J J J

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WmNuxFAs-1613535825636)(/images/image-20210217002957464.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ChaVFKE-1613535825637)(/images/image-20210217003019388.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6IRS8LRu-1613535825637)(/images/image-20210217003035133.png)]

则算法改写成:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ACSZbdv-1613535825638)(/images/image-20210217002906737.png)]

梯度下降算法更多内容

请参考链接

线性代数回顾(Linear Algebra Review)

参考[链接](

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值