总结
该部分主要针对前一节内容进行补充和回顾,上一节主要介绍了----线性回归模型与代价函数。上一节内容点此查看。
(1)线性回归模型,表示为:
h
y
p
o
t
h
e
s
i
s
:
h
θ
(
x
)
=
θ
0
+
θ
1
x
等
价
于
:
h
(
x
)
=
θ
0
+
θ
1
x
\begin{array}{l} hypothesis:h_{\theta(x)}=\theta_{0}+\theta_{1} x \\ 等价于:h_{(x)}=\theta_{0}+\theta_{1} x \end{array}
hypothesis:hθ(x)=θ0+θ1x等价于:h(x)=θ0+θ1x目的:当样本数据基本符合或存在线性关系时,使用线性回归模型,可以更好的拟合数据(样本数据即便不符合线性关系也可以使用该模型,但是结果应该不太好)。个人感觉:模型的选择一方面取决于对样本数据的分析,一方面取决于经验。
方法:由公式可以看出,线性回归函数存在两个参数
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1,当
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1的值不同时,得到的线性回归函数也不同。那么为了更好的拟合样本数据,
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1的值的选择至关重要。
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1的数值组合有很多种,如何得到最优的值呢?此时引出了代价函数,代价函数当代价函数最小时,
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1的值最优。
(2)代价函数,表示为:
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J_{\left(\theta_{0}, \theta_{1}\right)}=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}(x^{(i)})-y^{(i)}\right)^{2}
J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2说明:代价函数本质上是计算预测结果值与实际结果值之间的距离,也就是偏差。当偏差最小时,即
minimize
θ
0
,
θ
1
J
(
θ
0
,
θ
1
)
\underset{\theta_{0}, \theta_{1}}{\operatorname{minimize}} J_{\left(\theta_{0}, \theta_{1}\right)}
θ0,θ1minimizeJ(θ0,θ1),此时的
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1的值最优。
问题:为什么说当代价函数最小时,得到的
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1是最优的呢?
解释:为了解释该问题,我们从最简单的情况入手,前篇讲过,线性回归函数类似于一次函数(
y
=
k
x
+
b
y=kx+b
y=kx+b),当
b
=
0
b=0
b=0时,此时的一次函数即为最简单的正比例函数。因此为了简化问题,我们首先令
θ
0
\theta_{0}
θ0=0,那么此时的线性回归函数即为
h
θ
(
x
)
=
θ
1
x
h_{\theta(x)}=\theta_{1} x
hθ(x)=θ1x。
①假设此时我们有三个样本,
(
x
(
1
)
,
y
(
1
)
)
=
(
1
,
1
)
,
(
x
(
2
)
,
y
(
2
)
)
=
(
2
,
2
)
,
(
x
(
3
)
,
y
(
3
)
)
=
(
3
,
3
)
(x^{(1)},y^{(1)})=(1,1),(x^{(2)},y^{(2)}) =(2,2),(x^{(3)},y^{(3)})=(3,3)
(x(1),y(1))=(1,1),(x(2),y(2))=(2,2),(x(3),y(3))=(3,3),如图所示。
②此时,我们根据线性回归函数即为
h
θ
(
x
)
=
θ
1
x
h_{\theta(x)}=\theta_{1} x
hθ(x)=θ1x来预测具体模型,我们分别取
θ
1
=
\theta_{1}=
θ1={0, 0.5, 1.0, 1.5, 2}。根据不同的
θ
1
\theta_{1}
θ1值画出其对应的图像,如图所示,红色点为已知样本数据,绿色线条为对应
θ
1
\theta_{1}
θ1的函数图像。
③很明显可以看出来,当
θ
1
=
1.0
\theta_{1}= 1.0
θ1=1.0时,得到的模型最优。但是怎么让机器知道此时的
θ
1
\theta_{1}
θ1是最优的模型参数呢?此时就需要使用到代价函数,通过计算代价函数,即可让机器判断哪个才是最优的结果。根据代价函数,我们分别计算一下上述5个模型的结果。
④通过结果可以看出,当
θ
1
=
1.0
\theta_{1}= 1.0
θ1=1.0时,代价函数最小,即
minimize
θ
1
J
(
θ
1
)
\underset{ \theta_{1}}{\operatorname{minimize}} J_{(\theta_{1})}
θ1minimizeJ(θ1),且此时的模型最优。画出代价函数的图像,如下图所示。
⑤结合图像可以发现,当代价函数结果最小时,对应的模型最优。
回到最初的线性回归函数
h
(
x
)
=
θ
0
+
θ
1
x
h_{(x)}=\theta_{0}+\theta_{1} x
h(x)=θ0+θ1x,当
θ
0
\theta_{0}
θ0不等于0时,想象一下代价函数的图像是什么样子的。没错,此时代价函数是三维的,因为此时的
J
(
θ
0
,
θ
1
)
J_{(\theta_{0},\theta_{1})}
J(θ0,θ1)会根据
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1的改变而改变,而不仅仅是
θ
1
\theta_{1}
θ1。图像大致如下,术语叫作“凸函数”。
它还有另一种表现形式,叫作“等高线图”,其实际和三维图是一样的。
(1)如图所示,当
θ
0
\theta_{0}
θ0=800,
θ
1
\theta_{1}
θ1=-1.5时,模型如图左侧蓝色线条所示;
(2)如图所示,当
θ
0
\theta_{0}
θ0=360,
θ
1
\theta_{1}
θ1=0时,模型如图左侧蓝色线条所示;
(3)如图所示,当
θ
0
\theta_{0}
θ0=220,
θ
1
\theta_{1}
θ1=0.13时,模型如图左侧蓝色线条所示;
(4)由上可以看出,当取值越靠近等高线图中心时,模型越优,最中心时,模型最优。
梯度下降简介
通过前边的知识,我们了解了线性回归模型、代价函数之间的关系------代价函数值越小,线性回归模型越优。那么问题来了,如何求取代价函数的最小值呢?毕竟
θ
0
,
θ
1
\theta_{0},\theta_{1}
θ0,θ1取值组合有n种,每种组合都能得到一个新的代价函数结果值。此时就引入了梯度下降算法。
梯度可以理解为是一个曲面沿着给定方向的倾斜程度,越陡表示梯度越大,梯度有正负之分。以上述代价函数为例进行说明:
图中分别作出p1(1,0),p2(1.5,0.58),p3(2,2.3)三点的梯度,即红色线条,其实也就是对应点切线。那么它的梯度值是多少呢?其实就是对应红色线条的斜率,可以直观感受出,梯度值由小到大p1<p2<p3,且p1处的梯度为0。
梯度下降算法公式:
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
,
f
o
r
(
j
=
1
a
n
d
j
=
0
)
\theta_{j}:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J_{\left(\theta_{0}, \theta_{1}\right)},for(j=1 and j=0)
θj:=θj−α∂θj∂J(θ0,θ1),for(j=1andj=0)
其中
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
\frac{\partial}{\partial \theta_{j}} J_{\left(\theta_{0}, \theta_{1}\right)}
∂θj∂J(θ0,θ1)其实就是计算的梯度,
:
=
:=
:=表示赋值,
α
\alpha
α表示学习率(步长)。注意
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1应该同时更新。
公式替换:
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
:
=
θ
j
−
α
∂
∂
θ
j
⋅
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
:
=
θ
j
−
α
∂
∂
θ
j
⋅
1
2
m
∑
i
=
1
m
(
θ
0
+
θ
1
x
(
i
)
−
y
(
i
)
)
2
\begin{aligned} \theta_{j} &:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J_{\left(\theta_{0}, \theta_{1}\right)} \\ &:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} \cdot \frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}(x^{(i)})-y^{(i)}\right)^{2} \\ &:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} \cdot \frac{1}{2 m} \sum_{i=1}^{m}\left(\theta_{0}+\theta_{1} x^{(i)}-y^{(i)}\right)^{2} \end{aligned}
θj:=θj−α∂θj∂J(θ0,θ1):=θj−α∂θj∂⋅2m1i=1∑m(hθ(x(i))−y(i))2:=θj−α∂θj∂⋅2m1i=1∑m(θ0+θ1x(i)−y(i))2
因此,当
j
=
0
j=0
j=0时,即可得到
θ
0
\theta_{0}
θ0,当
j
=
1
j=1
j=1时,即可得到
θ
1
\theta_{1}
θ1。
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
θ
1
:
=
θ
1
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
(
i
)
\begin{aligned} \theta_{0} &:=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}(x^{(i)})-y^{(i)}\right) \\ \theta_{1} &:=\theta_{1}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}(x^{(i)})-y^{(i)}\right) \cdot x^{(i)} \end{aligned}
θ0θ1:=θ0−αm1i=1∑m(hθ(x(i))−y(i)):=θ1−αm1i=1∑m(hθ(x(i))−y(i))⋅x(i)
等价于:
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
θ
0
+
θ
1
x
(
i
)
−
y
(
i
)
)
θ
1
:
=
θ
1
−
α
1
m
∑
i
=
1
m
(
θ
0
+
θ
1
x
(
i
)
−
y
(
i
)
)
⋅
x
(
i
)
\begin{aligned} \theta_{0} &:=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(\theta_{0}+\theta_{1} x^{(i)}-y^{(i)}\right) \\ \theta_{1} &:=\theta_{1}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(\theta_{0}+\theta_{1} x^{(i)}-y^{(i)}\right) \cdot x^{(i)} \end{aligned}
θ0θ1:=θ0−αm1i=1∑m(θ0+θ1x(i)−y(i)):=θ1−αm1i=1∑m(θ0+θ1x(i)−y(i))⋅x(i)