斯坦福机器学习课程 第一周

(1) 欢迎来到机器学习

欢迎来到这门关于机器学习的免费网络课程。机器学习是近年来最激动人心的技术之一。在这门课中,你不仅可以了解机器学习的原理,更有机会进行实践操作,并且亲自运用所学的算法。在生活中,每天你都可能在不知不觉中使用了各种各样的机器学习算法。比如,当你每一次使用像诸如谷歌 (Google)或必应 (Bing) 的搜索引擎时,它们运作得如此之好的原因之一便是,由Google或微软实现的一种学习算法可以“学会”如何对网页进行排名;每当你使用脸书 (Facebook)或苹果 (Apple) 的照片处理应用时,它们都能自动识别出你朋友的照片,这也是机器学习的一种;每当你阅读电子邮件时,你的垃圾邮件过滤器帮你免受大量垃圾邮件的困扰,这也是通过一种学习算法实现的。还有一个让我兴奋的理由,是一个关于人工智能的梦想:有朝一日,我们能创造出像你我一样聪明的机器,尽管我们离这个目标仍有很长的距离,但许多的人工智能专家相信,实现这一目标最好的途径是通过学习算法,来模拟人类大脑的学习方式。关于这点,我也会在这门课程中有所提及。

(2) 监督学习(Supervised learning)

分类和回归的代表

(3) 无监督学习(Unsupervised learning)

聚类的代表

(4) 一元线性回归

线性回归预测一个输入值的一个真值输出。我们讨论了线性回归在住房价格预测中的应用,提出了成本函数的概念,并介绍了学习的梯度下降法。

模型与成本函数(Model and Cost Function)

模型表示

首先给出一些这门课中经常使用的一些符号的定义:

  • m = 训练样本的数目
  • x‘s = 输入值 / 特征量
  • y‘s = 输出值 / “target” variable
  • h = hypothesis(假设函数)

$$h_\theta(x)=\theta_0+\theta_1x$$

这个模型被称为线性回归(linear regression)模型。另外,这实际上是关于单个变量的线性回归,这个变量就是x。同时,对于这种模型有另外一个名称,称作单变量线性回归

代价函数(Cost function)

Idea: Choose $\theta_0$、$\theta_1$ so that $h_\theta(x)$ is close to $y$ for our training examples $(x,y)$.

让我们给出标准的定义:在线性回归中我们要解决的是一个最小化问题。所以我要写出关于 $\theta_0$、$\theta_1$ 的最小化,而且我希望这个式子极其小,我想要 $h_\theta(x)$和$y$之间的差异要小。

在这里定义一个代价函数:

$$J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}(h(x_i)-y_i)^{2}$$

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

几个重要的公式:

假设(Hypothesis):

$$h_\theta=\theta_0+\theta_1x$$

参数(Parameters):

$$\theta_i, \theta_1$$

代价函数(Cost function):

$$J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}(h(x_i)-y_i)^{2}$$

目标(Goal):

$$minimize\underbrace{J(\theta_0,\theta_1)}_{Cost function}$$

(5) 参数学习-梯度下降算法

梯度下降

梯度下降算法

公式:

$$\theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) \text{ (for } j=0 \text{ and } j=1)$$

我们将反复执行这个公式直到收敛。

另外,在此公式中$:=$表示赋值,$\alpha$是一个数字,被称为学习速率(learn)

现在,在梯度下降算法中还有一个更微妙的问题:在梯度下降中,当$j=0$和$j=1$时,如果你要更新这个等式,需要同时更新$\theta_0$和$\theta_1$ 。正确实现同时更新的方法如下:

$temp0 := \theta_0-\alpha\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)$

$temp1 := \theta_1-\alpha\frac{\partial}{\partial\theta_1}J(\theta_0,\theta_1)$

$\theta_0 := temp0$

$\theta_1 := temp1$

同时更新是梯度下降中的一种常用方法。实际上同步更新是更自然的实现方法。当人们谈到梯度下降时,他们的意思就是同步更新。

深入研究梯度下降算法

在梯度下降法中,当我们接近局部最低点时,导数越来越接近零,移动的幅度会自动变得越来越小,直到最终移动幅度非常小,你会发现已经收敛到局部极小值。

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

线性回归中的梯度下降

左侧梯度下降法,右侧是线性回归模型,还有线性假设和平方误差代价函数。我们将要做的就是:用梯度下降的方法来最小化平方误差代价函数。为了达到梯度下降,我们需要的关键项是这里这个微分项 :
$$
\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)
$$
推导可以得出:
$$
j=0时:\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)=\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})
$$

$$
j=1时:\frac{\partial}{\partial\theta_j}J(\theta_1,\theta_1)=\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)}) ·x^i
$$

(6) 线性代数复习

线性代数复习

矩阵和向量

加减法与数乘运算

矩阵乘法

矩阵乘法性质

矩阵的逆和矩阵的转置