Machine Learning

机器学习入门(4)--代价函数

2016-09-10  本文已影响1487人  Alfie20

申明:此文章内容来自于 Doctor AndrewNG的视频,经过编辑而成

本篇文章主要深入理解代价函数的概念。为了简化问题,把线性回归的模型函数中θ0设为0,所以我只有一个参数也就是 θ1,其模型函数为如下。也就意味这我们选择的假设函数 会经过经过坐标 (0,0)。

简化单变量线性回归模型

那相应的代价函数简化如下:

简化的单变量线性回归代价函数

我们要理解的是这两个重要的函数 第一个是假设函数 第二个是代价函数。这个假设函数h(x) 对于一个固定的 θ1 这是一个关于 x 的函数;与此不同的是代价函数 J是一个关于参数 θ1 的函数 而 θ1 控制着这条直线的斜率。

现在我们把这写函数都画出来,试着更好地理解它们。我们从假设函数开始 比如说这里是我的训练样本 它包含了三个点 (1,1) (2,2) 和 (3,3) 现在我们选择一个值 θ1 所以当 θ1 等于1 如果这是我选择的 θ1 那么我的假设函数看起来就会像是这条直线

θ1不同的单变量线性回归模型图形化表示

现在 在代价函数里 我们发现所有这些值都等于0。因为对于我所选定的这三个训练样本 ( 1 ,1 ) (2,2) 和 (3,3)  如果 θ1 等于 1 那么 h(x(i)) 就会正好等于 y(i) 。让我把这个画出来 我将要在屏幕右边画出我的代价函数 J 要注意的是 因为我的代价函数是关于参数 θ1 的函数。让我们继续把函数画出来 结果我们会得到这样一个点 现在我们来看其它一些样本 θ1 可以被设定为 某个范围内各种可能的取值 所以 θ1 可以取负数  0 或者正数 所以如果 θ1 等于0.5会发生什么呢 继续把它画出来,结果你会发现 你算出来的这些值 你得到一条这样的曲线 通过计算这些值 你可以慢慢地得到这条线 这就是 J(θ) 的样子了如下图:

单变量线性代价函数图形化表示

我们来回顾一下,任何一个 θ1 的取值对应着一个不同的 假设函数 或者说对应着左边一条不同的拟合直线 对于任意的θ1 你可以算出一个不同的 J(θ1) 的取值 。现在你还记得 学习算法的优化目标 是我们想找到一个 θ1 的值 来将 J(θ1) 最小化 对吗 这是我们线性回归的目标函数。这条曲线 让 J(θ1) 最小化的值 是 θ1 等于1  然后你看 这个确实就对应着最佳的通过了数据点的拟合直线 这条直线就是由 θ1=1 的设定而得到的。

上面讨论是把θ0设置为0, 在现实建模过程中θ0不是0是大概率事件。那么此时,模型函数图形化表示如下:

θ0不为0的单变量线性回归模型图形化表示

代价函数 仍然呈现类似的某种弓形,实际上这取决于训练样本 你可能会得到这样的图形:

θ0不为0的单变量线性代价函数图形化表示

因此这是一个三维曲面图 两个轴分别表示θ0和θ1。随着你改变θ0和θ1的大小,你便会得到不同的代价函数 J(θ0,θ1) 对于某个特定的点 (θ0,θ1) 这个曲面的高度 也就是竖直方向的高度 就表示代价函数 J(θ0,θ1) 的值 不难发现这是一个弓形曲面。

我们来看看三维图 这是这个曲面的三维图 水平轴是θ0、θ1 竖直方向表示 J(θ0,θ1) ,为了描述方便,轮廓图来表示(contour plot 或 contour figure),两个轴分别表示 θ0 和 θ1 而这些一圈一圈的椭圆形 每一个圈就表示 J(θ0,θ1) 相同的所有点的集合,如下。举例说明,当θ0等于800 也就是跟纵轴相交于大约800 斜率大概是-0.15 当然 这条线并不能很好地拟合数据,以这组 θ0 θ1 为参数的这个假设 h(x) 并不是数据的较好拟合 并且你也发现了 这个代价值就是这里的这个值 距离最小值点还很远 也就是说这个代价值还是算比较大的 因此不能很好拟合数据

θ0不为0的单变量线性代价函数轮廓图

事实上 我们后面就会学到 我们会遇到更复杂、更高维度、更多参数的情况 这在我们在后面的视频中很快就会遇到 而这些情况是很难画出图的 因此更无法将其可视化 因此我们真正需要的 是编写程序来找出这些最小化代价函数的θ0和θ1的值。

能够自动地找出能使代价函数 J 最小化的参数θ0和θ1的值,将在后续讲解。

上一篇下一篇

猜你喜欢

热点阅读