2.1 模型描述
例子:预测住房价格
红色叉叉是来自数据集描绘的点
这是一个监督学习算法的例子,因为每一个例子都有一个“正确”的答案,我们知道卖出的房子的大小和与之对应的价格。这也是一个回归的例子,回归是指我们预测一个具体的数值输出。
- 注意*:
训练样本的数量:m = Number of training examples
输入变量/特征:x’s = “input” variable / features
输出变量/目标变量:y’s = “output” variable / “target” variable
一个训练样本/一行:(x,y)
第i个样本: ( x ( i ) , y ( i ) ) ( x^{(i)}, y^{(i)} ) (x(i),y(i))
假设函数/输出函数: h (hypothesis)
模型参数: θ i \theta_i θi
监督学习算法工作流程图
- 向学习算法提供训练集(比如本例中的房价训练集)
- 学习算法的任务是输出一个函数h(假设函数)
- 假设函数的作用是将自变量(本例中的房子的大小)作为输入变量x
- 根据假设函数预测y值
- h是一个引导x得到y的函数
下一小节讲单变量线性回归
2.2 代价函数
线性回归的整体目标函数
含义:目标函数 = minimize 代价函数
m
i
n
i
m
i
z
e
θ
0
,
θ
1
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
minimize_{\theta_0,\theta_1} \frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})^2
minimizeθ0,θ12m1i=1∑m(hθ(x(i))−y(i))2
其中
h
θ
(
x
(
i
)
)
=
θ
0
+
θ
1
x
(
i
)
h_\theta(x^{(i)}) = \theta_0 + \theta_1x^{(i)}
hθ(x(i))=θ0+θ1x(i)
或写作
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1) = \frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})^2 J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2
该函数被称为代价函数/平方误差函数/平方误差代价函数;对于回归问题,平方误差函数是较常使用的函数
1 2 \frac{1}{2} 21是为了接下来方便求导之后, 1 m \frac{1}{m} m1 是为了让cost function不依赖训练集中元素的数量
2.3 代价函数(一)
假设 θ 0 = 0 \theta_0 = 0 θ0=0简化假设函数h为 h θ ( x ( i ) ) = θ 1 x ( i ) h_\theta(x^{(i)}) = \theta_1x^{(i)} hθ(x(i))=θ1x(i),随着 θ 1 \theta_1 θ1的变化,如左图所示, h θ ( x ) h_\theta(x) hθ(x)对数据集的拟合程度不同,根据误差函数 J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)= \frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})^2 J(θ)=2m1∑i=1m(hθ(x(i))−y(i))2描绘出右图。
这就是为什么要最小化 J ( θ ) J(\theta) J(θ)来找到一条最符合数据的直线。
2.4 代价函数(二)
当只有 θ 1 \theta_1 θ1时,误差函数的图像只与 θ 1 \theta_1 θ1有关,是一个碗状函数。
课堂补充
为什么只有一个参数θ1的时候,代价函数的图像是抛物线形式?
答:因为J(θ)是一个二次函数 J ( θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_1) = \frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})^2 J(θ1)=2m1∑i=1m(hθ(x(i))−y(i))2,即预测值减去实际值的值的平方的和。
凸函数和凹函数
- 凹函数:开口向下。
- 凸函数:开口向上。
优化函数都要是凸函数,才能找到最小点。但在实际中,优化函数经常是非凸函数,且局部最优解也能很好工作。
当有两个参数 θ 0 和 θ 1 \theta_0和\theta_1 θ0和θ1时,误差函数实际上仍为碗状函数,且与训练集有关。(多元函数求极值?)
右图为等高图像,显示了一系列 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0,θ1)值相等的点。吴恩达在视频中选取了同心椭圆的中心,表述该点“不是最小值,但是已经相当接近”。 但是根据 J ( θ ) J(\theta) J(θ)的3D图像,我认为,所有同心椭圆的中心就是误差函数值最小的点。
2.5 梯度下降
repeat until convergence{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
(
f
o
r
j
=
0
a
n
d
j
=
1
)
\theta_j := \theta_j - \alpha\frac{\partial}{\partial \space\theta_j}J(\theta_0,\theta_1)\space\space (for\space j = 0\space and\space j = 1)
θj:=θj−α∂ θj∂J(θ0,θ1) (for j=0 and j=1)
}
∂ \partial ∂是求偏导, d d d是求导
梯度下降法的工作:
- α \alpha α的含义是学习速率,用来控制梯度下降时,以多大的幅度更新参数 θ j \theta_j θj
- 设置 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1的初始值,通常二者都设为0;初始值不同,最优解可能不同。
- 不断改变 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1的值来减小 J ( θ ) J(\theta) J(θ)的值,直到找到 J ( θ ) J(\theta) J(θ)的最小值或局部最小值
- θ 0 和 θ 1 \theta_0和\theta_1 θ0和θ1是需要同时更新的,见上图。
可以设置多个不同的初始值,得到不同的局部最优解,再从这些局部最优解中取最小的解
注意: := 代表赋值, = 代表两值相等。
例如:a:=b的意思是将b的值赋给a;a=b的意思是a的值和b的值相等。
2.6 梯度下降知识点总结
当J( θ \theta θ)的导数为正数时,更新后的 θ \theta θ减小,如第一个坐标系所示;当J( θ \theta θ)的导数为负数时,更新后的 θ \theta θ增大,如第二个坐标系所示。
当 α \alpha α过小或过大会出现的情况如上图。
当达到局部最优点之后, θ \theta θ的值不会再改变(导数为0),使得解始终保持在局部最优点。
当越来越接近最小值时,导数值会越来越小,学习速率 α \alpha α也会自动越来越小。当达到最低点后,就没有必要继续减小学习速率。
梯度下降算法可以用来最小化任何代价函数J
2.7 线性回归的梯度下降
将梯度下降算法应用到最小化平方差代价函数,关键在于导数项
对
θ
0
和
θ
1
\theta_0和\theta_1
θ0和θ1求偏导
线性回归的梯度下降算法如下:
线性回归的代价函数总是下图一样的凸函数,这个函数没有局部最优,只有全局最优。
上述梯度下降算法有时候被称为Batch梯度下降,意味着每一步梯度下降都遍历了整个训练集的样本。
有其他算法没有关注整个训练集,每次只关注了小子集,比如正规方程组方法。相比于正规方程组法,梯度下降法适合更大的数据集。