Stanford-Machine-Learning-学习笔记1

摘要:本周课程主要是介绍机器学习的基础知识,通过介绍代价函数来了解机器学习的基本原理:首先构造假设并且假设中包含参数,然后根据假设来建立代价函数,最后通过使代价函数最小化来最终求解假设中的参数从而求解模型。最后又介绍了一种最简单的获得最小代价函数值的方法:梯度下降法,通过直观的是解释详细了解了其原理,并通过偏导公式进行求解。

模型与代价函数

Model and Cost Function

模型表达

Model Representation

这一节主要就是简述一下监督机器学习的目的,通过训练数据集和算法得到预测假设,使用预测假设来预测新的数据分类或趋势。

关键知识点

假设 hypothesis,也就是我们在学习前先假设一个输出与输入的关系,然后再不断的更新这个假设使其最优。假设的形式有很多种,比如线性相关假设为:

这里面的 $\theta$ 是参数,当我们提出了假设后的任务就是想办法计算这个参数。

代价函数

Cost Function

首先课程根据上一节的假设举了三个例子,设置不同的参数($\theta_0, \theta_1$),得到不同的线性方程。

下面的问题是,我们如何找到一组$\theta_0, \theta_1$,使其尽可能的表达训练数据,也就是让线性方程尽可能靠近训练数据?

解决这个问题就引出了代价函数,代价函数就是来评价对于已知的训练数据,给定的线性方法预测值和实际值之间的差异。
这个代价函数使用每个数据点的预测值和实际值之差再平方来度量预测的准确度。同时为了尝试尽量减少我们的平均误差,所以除以了 $2m$ 来计算平局值。

这个方程实际上很简单,其中 $\hat{y}_i$表示根据给定的假设计算出训练数据点$i$对应的值,这个值一般都和实际值$y_i$有一定的差距,我们通过两者相减再平方得到两者之间的差距,由于是平方所以一定是正值。然后再把所有训练数据都计算这个差距,再相加并取平均数。

该方程还叫做 Squared error function

有了这个代价函数,我们就可以回答上面的问题了,我们尽可能的减少这个代价函数值,就能尽可能的让预测的线性方程穿过或靠近训练数据点(极端情况,预测直线刚好穿过所有的训练数据,这时候这个 $J(\theta_0,\theta_1)$ 为零,也就是最小值,这时直线也就是最优的拟合。

代价函数直观解释

首先给出了一个简化版本,其中 $\theta_0 = 0$。然后举例说明代价函数是如何用来比较不同的假设的优劣的。这里通过3条直线举例,求得3个代价函数的值,对$J(\theta_1)$进行作图类似于二维抛物线曲线,然后分析$J(\theta_1)$的最小值。

然后开始解释 $\theta_0 \neq 0$ 的情况,这回 $J(\theta_0,\theta_1)$ 变成了一个三维的曲面,这个曲面的 $z$ 轴表示代价的大小,同一个$z$截面上的点表示其训练数据的代价函数值相同。

参数学习

梯度下降

目标是求解代价函数的最小值。

首先从 $\theta_0,\theta_1$ 开始,逐步的变化$\theta_0,\theta_1$从而达到 $J(\theta_0,\theta_1)$

通过图片直观理解,每次都朝向目标前进一小步。然后逐步迭代知道不需要进行前进。

赋值符号
$a:=b, a:=a+1$

$\alpha$ 学习速率

$\frac{\partial }{\partial \theta_0}$ derivative 求导,slope 斜率

需要同时更新 $\theta_0,\theta_1$,所以引入了两个临时变量。否则在变化 $\theta_0$ 的时候,下一步计算 $\theta_1$时候就用了新的 $\theta_0$

由于导数的性质,即使在学习速率不变的情况下,变化的步长也会逐步的缩小,因为越靠近最小值的时候,其斜率的绝对值也会逐步缩小。

梯度下降直观解释

使用梯度下降进行线性回归

并没有给出 两个梯度下降的公式的推导,需要多变量求偏导的知识来推导。

convex function: local optimization is global optimization

线性代数回顾

这一节主要是回顾矩阵和向量的基础知识:

矩阵加法,减法,乘法
矩阵乘法的特性没有交换律,但是有结合律
矩阵的逆乘以矩阵本身为单位矩阵
矩阵的转置就是行列互换

矩阵与向量