Machine Learning(Stanford)| 斯坦福大学机器学习笔记--第一周(3.代价函数直观理解)

来源:互联网 发布:交换机监控软件 编辑:程序博客网 时间:2024/05/13 02:10

一.Cost Function-Intuition(代价函数直观理解)

在前面我们给了代价函数一个数学上的定义,在这部分,让我们通过一些例子来获取一些直观的理解,看看代价函数到底是在干什么。回顾一下,如图1-1所示
图1-1
这是前面所讲过的内容,我们想找一条直线来拟合我们的数据,所以我们用θ0,θ1等参数得到了这个假设hθ(x)=θ01*x,而且通过选择不同的参数,我们会得到不同的直线拟合。然后我们还有一个代价函数,图1-1中的Cost Function。 而我们的优化目标就是找到这个一组θ0,θ1,使得J(θ0 ,θ1)取到最小。

为更好将代价函数可视化,这里将使用一个简化的假设函数,如图1-2所示。令θ0为0。
图1-2
然后我将会用这个简化的假设,也就是hθ(x)=θ1*x来计算J。因为假设函数简化了,所以我的优化目标也从最小化J(θ0 ,θ1)变成最小化 J(θ1)了。用图形来表示,如图1-3所示,
图1-3
因为θ等于零,也就意味这我们选择的假设函数会经过原点,即经过坐标 (0,0)。通过简化的假设函数可以让我们更好地理解假设函数和代价函数。
注意到这个假设函数 h(x)是一个关于 x 的函数,即关于房子大小的函数。与此不同的是 代价函数J是一个关于参数θ1的函数,而θ1控制着这条直线的斜率。现在把这些函数都画出来,如图1-4所示,来试着更好地理解它们。

图1-4
这里稍微讲下画图过程。从假设函数开始,比如我的训练样本,包含了三个点 (1,1) (2,2)和(3,3),即图中三个红色的叉的位置。现在我们选择一个值θ1,当θ1等于1的时候,我的假设函数图像就是图中这条黑色的直线。

再提醒一下,第一幅图是h关于x的函数图像,第二幅图是J关于θ的函数图像。现在这里暂时把θ1定为1,我们根据θ1画出了图1-4中左边的第一幅图。接着要做的就是算出在θ1等于1的时候 J(θ1) 等于多少。所以按照这个思路来计算代价函数的值得大小。和之前一样代价函数就是对误差平方项进行求和,计算过程见图1-4中左下角蓝色字体,算出来结果为0。这时候我们在右边的图像中得到了一点,当θ1等于1的时候,J(θ1)=0。

现在有了 J(1) 等于零这个点。 让我们继续把代价函数图像画出来。现在让我们将θ1取其他值,θ1可以被设定为某个范围内各种可能的取值,θ1可以取负数,0或者正数。让我们看看如果θ1等于0.5会发生什么。 这里继续把它画出来,现在要把θ1设为0.5,在这个条件下,我的假设函数看起来就是如图1-5这样。

图1-5

 这条线的斜率等于0.5,现在让我们计算 J(0.5), 计算过程如图1-6所示。

图1-6
其实我们不难发现后面的求和,就是图1-6中这三条蓝色线段的高度的平方相加。因为y(i)与预测值hθ(x(i))的差刚好就是图中蓝色线段的长度。所以第一个样本将会是0.5减去1的平方,因为假设函数预测的值是0.5,而实际值则是1; 第二个样本得到的是1减去2的平方,因为假设函数预测的值是1,但是实际房价是2;最后一个样本是1.5减去3的平方。 最后算出J(0.5)=0.58。

接着把这个点画出来,如图1-7所示。

图1-7

现在让我们再多做一个点,让θ1等于0,J(0)会等于多少。 如果θ1等于0,那么 h(x) 就会等于一条水平的线,如图1-8中黑色加粗的线所示。
图1-8
所以测出这些误差,代入公式我们将会得到 J(0)=2.3。接着在图中标出这个点,并且多算几个θ1对应的J的值同时在图中标出,最后结果如图1-9。

图1-9
将图1-9中的点连成一条曲线,将会得到一条这样的曲线,如图1-10。
图1-10
来回顾一下,任何一个θ1的取值都对应着一个不同的假设函数,对于任意的θ1你可以算出一个不同的 J(θ1) 的值,而且我们可以利用这些值来描出图1-10的这条曲线。

是否还记得学习算法的优化目标。我们是想找到一个θ1的值,来使J(θ1) 最小化。可以从图1-10中看到让J(θ1)的值达到最小的条件是θ1等于1,并且正是θ1=1使我们自己给出的假设曲线和我们的训练集完美拟合,如图1-4左边的所示。这充分地说明了寻找一条最佳拟合直线,其实就是最小化J(θ1)。

总结一下,在这部分, 我们用了一些简单的二维图形来理解代价函数。这其中,我们简化了算法,让这个函数只有一个参数θ1,也就是说我们把θ0设定为0。接下来,我们将回到原来带有θ0公式,然后看一些带有θ1θ1的图形,也就是说不把θ0设置为0了。希望这会更好地理解在原来的线性回归公式里代价函数J的意义。 

二.Effect of Cost Function(代价函数的作用)

这部分,我们将更深入地学习代价函数的作用。首先回顾下公式,如图2-1,
图2-1
这是我们的几个重要公式, 包括了假设函数hθ(x)、参数θ、代价函数J 以及优化目标,跟上一部分稍稍不同的是,这里把θ写成θ0、θ1的形式,便于对代价函数进行可视化。
和前面一样,首先来理解假设函数hθ(x)和代价函数J。下图(图2-2)是房价数据组成的训练集数据。
图2-2
让我们来构建某种假设来拟合我们的数据,就像图2-3中黑色的这条线一样,很显然这不是一个很好的假设。
图2-3
上图中θ0等于50,θ1等于0.06。得到两个参数的值,接着我们要在右边画出代价函数的图像。上一次我们是只有一个参数θ1画出来的代价函数是这样一个弓形函数,如图2-4所示。
图2-4
但是现在我们有两个参数θ0和θ1, 因此图像就会复杂一些了,但代价函数仍然呈现类似的某种弓形。如图2-5所示。
图2-5
这是一个三维曲面图,不难发现这是一个弓形曲面,两个轴分别表示θ0和θ1 ,随着改变θ0和θ1的大小,便会得到不同的代价函数 J(θ0,θ1)。对于某个特定的点 (θ0,θ1)的值,也就是竖直方向的高度,就表示代价函数J(θ0,θ1) 的值。

在接下来的部分,为了描述方便将不再用三维曲面图的方式解释代价函数J, 而还是用轮廓图(contour plot 或 contour figure)来表示,图2-6就是一个轮廓图。

图2-6
两个轴分别表示θ0和θ1,而这些一圈一圈的椭圆形中的每一个圈就表示 J(θ01)值相同的所有点的集合。具体举个例子来说,在这里选三个点出来用桃红色标记,这三个点都在同一个圈里,都表示相同的 J(θ01)的值。轮廓图中的最小值就是这一系列同心椭圆的中心点。接下来让我们看几个例子,如图2-7所示,
图2-7
在这里有一点,在图中用红色的叉叉来表示,这个点表示θ0等于800,θ1大概等于-0.15。而这个点也对应于下图(图2-8)这样的一条线。
图2-8
θ0等于800,也就是直线的斜率是-0.15,跟纵轴相交于800这个点。很明显,这条线并不能很好地拟合数据。以这组θ0和θ1为参数的这个假设 h(x) 并不是数据的较好拟合,并且这个点距离图2-7中一系列同心椭圆的中心点也还很远,也就是说这个代价函数的值还是算比较大的,因此不能很好拟合数据。
让我们再来看几个例子,如图2-9,
图2-9
这是另一个假设,这依然不是一个好的拟合,但比刚才稍微好一点。这里θ0的值大约为360,θ1的值为0,也就是h(x) = 360 + 0 *x。

让我们再来看一些例子,如图2-10所示。

图2-10
这个点的这组θ0和θ1对应这样一条假设h(x) 。同样地,还是对数据拟合不好,离最小值更远了。

最后一个例子,如图2-11所示。

图2-11
这个点其实不是最小值,但已经非常靠近最小值点了,这个点对数据的拟合就很不错。这个点虽然不在最小值点,但非常接近了,因此误差平方和非常接近于最小值。

通过这些图形,希望能更好地理解这些代价函数J所表达的意思,理解它们是什么样的,它们对应的假设是什么样的,以及什么样的假设对应的点更接近于代价函数J的最小值。 当然,我们真正需要的是一种有效的算法,能够自动地找出这些使代价函数J取最小值的参数θ0和θ1来。接下来会遇到更复杂、更高维度、更多参数的情况,而这些情况是很难画出图的,因此更无法将其可视化,所以我们真正需要的是编写程序来找出这些最小化代价函数的θ0和θ1的值。在下一部分,将介绍一种算法,能够自动地找出能使代价函数 J 最小化的参数θ0和θ1的值 。
阅读全文
0 0