资讯专栏INFORMATION COLUMN

机器学习从入门到XX(一):线性回归与梯度下降

verano / 2138人阅读

摘要:介绍什么是机器学习有两种定义。如此描述机器学习一个领域的研究,旨在研究,在不进行编程的情况下,让计算机具有学习能力。将均方除以,是为了梯度下降算法的计算。现在将介绍第一个算法,称为梯度下降。

介绍 什么是机器学习?

有两种定义。Arthur Samuel如此描述机器学习:一个领域的研究,旨在研究,在不进行编程的情况下,让计算机具有学习能力。

Tom Mitchell给出了一个更为现代的定义:一个计算机程序从经验E以及评判标准P中学习如何完成任务T,随着E的累积,P得到提升。

例如,下棋游戏中:

E:在很多盘棋局中的经验

T:下棋任务

P:程序赢得下一盘棋的可能性

总体来说,任何机器学习问题可以分为监督学习(supervised learning)无监督学习(unsupervised learning)

监督学习

在监督学习中,给定一个数据集,并且我们已经知道输出看起来是什么样子的,知道数据和输出之间是存在联系的。

监督学习可分为“回归(regression)”“分类(classification)”两种类型的问题。在回归问题中,我们试图预测连续的结果,换句话说,我们试图将输入变量映射到某种连续函数。在分类问题中,却试图预测离散结果,换句话说,我们试图将输入变量映射进离散的类别中。

例子1:

给定一组关于房子大小的数据,预估出价格。从大小推算价格的函数的输出是连续的,所以这是个回归问题。

如果换一种问法:“预估房价与指定价格的大小关系”。这个问题就转化为分类问题了,因为我们试图将房价分为两种离散的类别中(大于或小于)。

例子2:

a) 回归:给定一张男性或女性的照片,推算年龄。
b) 分类:给定一张男性或女性的照片,估计他/她是高中生还是大学生。另一个分类的例子:银行需要根据跟人信用历史,判断是否要给其贷款。

无监督学习

无监督学习是指在几乎对结果一无所知的情况下,趋近结果。在对输入数据的变量缺少必要的认识的情况下,从中获取一些结构。通过将数据中变量的关联,将数据进行聚类,从而获取这些结构。无监督学习对于预测结果是没有反馈的。

例如:

聚类:从1,000,000个不同的基因中,找到某种方式,能够自动将具有某种相似性或关联的基因进行分组,这些变量可能是寿命,位置,功能等。

非聚类:“鸡尾酒算法”,能否从嘈杂环境中识别不同的声音。(例如,在鸡尾酒会上,从混合的声音中区分人声或音乐声)

模型和代价函数 模型表示

这里以监督学习中的房子大小预测房价问题为例。使用$ x^{(i)} $指代输入变量(这里是房屋面积),$ y^{(i)} $指代输出或者我们需要预测的结果(这里是房屋价格)。元组($ x^{(i)}, y^{(i)} $)是训练用例数据集,m个训练用例$ (x^{(i)},y^{(i)});i=1,...,m $称为训练数据集。注意,上标(i),并没有幂运算的功能。我们也会使用X,表征输入数据集,Y表征输出数据集。

稍微正规的解释一下监督学习是什么。监督学习的目标是,给定一个训练数据集,尝试学习一个函数h: X → Y,使得h(x)成为好的预测y的函数。由于历史原因,这个h函数称为假设函数(hypothesis),下图说明了这个流程:

如果我们要预测的目标值是一个连续值时,例如房价预测问题,我们称这种机器学习问题为回归(regression)问题;如果y值只在少数的离散值中取值(例如,假设给定面积,预测这是个house还是apartment),我们称为分类(classification)问题

代价函数

我们可以使用代价函数(cost function)来衡量假设函数(hypothesis function)的精准性。代价函数实际上计算的就是每一个经由假设函数计算而来的y,与实际的y的差值的平均值。当这个差值最小时,假设函数最优。

如果hypothesis function如下:

$$ h(x)=θ_0+θ_1x $$

这是一个线性函数,对于房价预测问题,我们的最终目的是通过算法,得到一组最优的$ (θ_0,θ_1) $使得对所有的训练集合X(房屋面积),通过h(x)计算得到的Y(房屋价格)与实际的Y偏差最小,即拟合度最高。为了衡量h(x)的拟合度,使用代价函数$ J(θ_0,θ_1) $如下:

$$ J(θ_0,θ_1) = {1 over 2m} {sum_{i=1}^m(h_θ(x_i)-y_i)^2} $$

通过观察,不难发现,该公式实际计算的是,y的方差的均值。并且这个均值越小,说明拟合度越高。所以算法推导$ (θ_0,θ_1) $的过程,就是求$ J(θ_0,θ_1) $最小值的过程。

直观的看,我们可以把训练数据集看成散落在一个x-y的二维坐标系中的点,试图找到一条直线(由$ h_θ(x) $定义),穿过这些点。最终的目的是,找到一条这样的一条直线,使得这些点离这条直线的垂直距离最近。理想状态下,这条直线能够穿过所有的点,这时$ J(θ_0,θ_1) $为0。

这个代价函数也称为平法误差代价函数(Squared error function)均方误差(Mean squared error)。将均方除以2,是为了梯度下降算法的计算。下图总结了代价函数

为了更直观的观察代价函数,我们假设,需要预测的变量只有一个$ θ_1 $,那么h(x)如下:

$$ h(x)=θ_1x $$

这将是一条经过原点的直线。那么容易想到,随着斜率$ θ_1 $的变化,$ J(θ_1) $将呈现出一个如下类似抛物线的造型:

总能找到一个$ θ_1 $使得$ J(θ_1) $最小。

如果有两个变量$ J(θ_0,θ_1) $:

$$ h(x)=θ_0+θ_1x $$

那么$ J(θ_0,θ_1) $将同时受到两个变量的影响,这将是一个三维的图形:

因此,我们总能找到一组$ (θ_0,θ_1) $,使得$ J(θ_0,θ_1) $最小。用三维图观察并不直观,现在我们引入一种叫contour plot的图。观察上面的三维图,我们用一个平行于底面的平面穿过曲面,与曲面相交,形成一个类似椭圆的闭环,随着这个平面高度的变化,将产生无数的类似椭圆的闭环,如果将这些椭圆闭环投影到底面,将形成一个类似靶环的图形,就跟下图的右图一样,这称为contour plot

在同一个环上的点,对应不同的$ (θ_0,θ_1) $取值,但是他们的$ J(θ_0,θ_1) $是相同的。而靶环的中心点,就是能够使得$ J(θ_0,θ_1) $最小的$ (θ_0,θ_1) $取值:

梯度下降

现在我们有了hypothesis function和用于衡量hypothesis function中参数$ (θ_0,θ_1) $取值拟合度的cost function。现在将介绍第一个算法,称为Gradient Descent(梯度下降)。算法的目的是找到一组变量$ (θ_0,θ_1) $,使得他们的代价函数$ J(θ_0,θ_1) $最小。我们把代价函数假想成如下的三维图,好似有一座座的山头,如果我们从某个山头的某处出发,往下走,走到最低点,每一步往哪个方向取决于当前往哪个方向走最优,我们可能会走到A点。如果换一个点出发,我们可能走到B点:

在决定下一步往哪里走的时候,我们采取的方式是,找到当前这个点的切线方向(切线即导数),切线方向告诉我们应该往哪个方向走;另一个影响因素是,每一步大小α,这个参数我们称为learning rate学习速率。单次梯度下降迭代得到的往往是局部最优解,即上图的A,B两点是对于不同的起始点来说的最优解。

梯度下降算法描述如下:

重复如下步骤,直到收敛:

$$ θ_j := θ_j - α{∂ over ∂θ_j}J(θ_0,θ_1), j=0,1 $$

上述公式中的:=表示赋值,而不是数学意义上的判等。上式的迭代过程就是,从初始的$ (θ_0,θ_1) $开始,对于每组$ (θ_0,θ_1) $计算$ J(θ_0,θ_1) $的导数,然后得到新的$ (θ_0,θ_1) $,重复计算,直到$ (θ_0,θ_1) $不再变化,即收敛。

为了更直观的展示算法,我们任然假设h(x)只有一个参数$ θ_1 $:

$$ h(x)=θ_1x $$

那么此时的算法可以描述为,重复如下过程直到收敛:

$$ θ_1 := θ_1 - α{∂ over ∂θ_j}J(θ_1) $$

由于$ J(θ_1) $是关于$ θ_1 $的二次函数,所以$ ∂ over ∂θ_j $ 表示$ θ_1 $所在点的切线斜率。从下图可以看出,当$ θ_1 $在上升沿时,斜率为正数,这会使得$ θ_1 $在迭代过程中逐渐减小;当$ θ_1 $在下降沿时,斜率为负数,这会使得$ θ_1 $在迭代过程中逐渐减增大,总之都是趋近于最低点的$ θ_1 $。

所以可以看到,算法巧妙的使用导数,让迭代过程自动趋向于正确的方向。

在算法中,$ α $是一个可调参数,当$ α $太小时,每次迭代,$ θ_1 $的变化很小,这样会算法的效率;而当$ α $太大时,每次迭代,$ θ_1 $的变化很大,这有可能会产生震荡,甚至无法收敛:

理想情况下,$ ∂ over ∂θ_j $会在最低点,使得斜率为0,此时:

$$ θ_1 := θ_1 − α ∗ 0 $$

这样得到的新的$ θ_1 $不变,这就是收敛。

再考虑有两个变量$ (θ_0,θ_1) $的情况:

$$ h(x)=θ_0+θ_1x $$

前面我们将原本三维的代价函数,绘制成了contour plot,不难想象,在梯度下降算法的迭代过程中,$ (θ_0,θ_1) $总是从远离靶心的位置开始,向靠近靶心的位置移动,最终收敛在靶心

有了直观的认知后,我们给出Gradient Descent(梯度下降)的推导式,这样能够方便计算机进行计算:

重复如下过程,直到收敛:

$$ θ_0 := θ_0 - α{1 over m} {sum_{i=1}^m(h_θ(x_i)-y_i)} $$

$$ θ_1 := θ_1 - α{1 over m} {sum_{i=1}^m((h_θ(x_i)-y_i)x_i)} $$

具体的推导过程省略。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/18368.html

相关文章

  • 机器学习入门XX(二):多元线性回归和正规方程

    摘要:多元线性回归多特征多个特征变量也称为多元线性回归。可以从数学上证明正规方程得到的能使代价函数最小化。线性回归代码总结在整个线性回归问题中,主要有如下几个算法需要实现代价函数梯度下降算法特征缩放正规方程使用和利于快速验证算法和模型。 多元线性回归 多特征 多个特征变量也称为多元线性回归(multivariate linear regression)。先解释一些符号含义: $ x^{(i...

    daryl 评论0 收藏0
  • 机器学习入门XX(三):分类器和逻辑回归

    摘要:分类问题分类问题的一种实现方式是,使用线性回归,对于所有的预测结果,以某个值作为分界。代价函数与线性回归一样,为了得到最优的假设函数,我需要先定义代价函数来衡量分类器的精度。对于逻辑回归依旧可以复用线性回归中的梯度下降算法来最小化。 分类问题 分类(classification)问题的一种实现方式是,使用线性回归(linear regression),对于所有的预测结果,以某个值作为分...

    zhoutao 评论0 收藏0
  • 机器学习入门

    摘要:机器学习是需要更多的计算资源及数据量支撑,计算前无需预设过多条件,运算过程会不断迭代,直至收敛。 showImg(https://segmentfault.com/img/remote/1460000019236033); 随着人工智能的火热,数据科学领域逐渐被人们所熟知,相信你肯定也听说过诸如一些机器学习,深度学习之类让人听不懂的术语,而随着概念的火热,想进入人工智能这个领域的人越来...

    xietao3 评论0 收藏0
  • 机器学习(三)-单变量线性回归算法

    摘要:在大量对象上应用了回归分析甚至包括人的身高。孩子的高度向着平均高度回退回归。回归的目的是预测数值型的目标值。这就是监督学习算法的一个例子。 @toc 1 预测数值型数据:回归 1.1 什么是回归? 大自然让我们回归到一定的区间范围之内;反过来说就是,有一个平均的水平,可以让突出的事物能向他靠拢。 回归是由达尔文(Charles Darwin)的表兄弟Francis Galton发明的...

    CoderDock 评论0 收藏0
  • 机器学习(三)-单变量线性回归算法

    摘要:在大量对象上应用了回归分析甚至包括人的身高。孩子的高度向着平均高度回退回归。回归的目的是预测数值型的目标值。这就是监督学习算法的一个例子。 @toc 1 预测数值型数据:回归 1.1 什么是回归? 大自然让我们回归到一定的区间范围之内;反过来说就是,有一个平均的水平,可以让突出的事物能向他靠拢。 回归是由达尔文(Charles Darwin)的表兄弟Francis Galton发明的...

    ZHAO_ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<