二、单变量线性回归Linear Regression woth One Variable
2.1 模型描述
训练数据集=>学习任务=>输出假设函数 h ( x ) h(x) h(x)
- m m m 训练样本数
- x x x 输入变量/特征
- y y y 输出变量
- ( x ( i ) , y ( i ) ) ( x^{(i)} , y^{(i)} ) (x(i),y(i))第i个样本
2.2 代价函数
选择合适的模型参数parameters使
(
h
(
x
)
−
y
)
2
(h(x)-y)^2
(h(x)−y)2(预测值和真实值的误差)尽可能的小。
对于回归问题平方误差函数最常用的是平方误差函数:
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
(
x
)
(
i
)
−
y
(
i
)
)
2
J(\theta_0 , \theta_1) = {1 \over 2m}\sum_{i=1}^{m}(h(x)^{(i)} - y^{(i)})^2
J(θ0,θ1)=2m1i=1∑m(h(x)(i)−y(i))2
2.3 代价函数直观理解
假设函数Hypothesis:
h
θ
(
x
)
=
θ
0
+
θ
x
x
h_ \theta(x) = \theta_0 + \theta_xx
hθ(x)=θ0+θxx
模型参数Parameters:
θ
0
,
θ
1
\theta_0, \theta_1
θ0,θ1
代价函数Cost Function:
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
(
x
(
i
)
)
−
y
(
i
)
)
2
J(\theta_0, \theta_1) = {1\over2m}\sum_{i=1}^m(h(x^{(i)}) - y^{(i)})^2
J(θ0,θ1)=2m1i=1∑m(h(x(i))−y(i))2
优化目标Goal:
m
i
n
i
m
i
z
e
−
J
(
θ
0
,
θ
1
)
minimize -J(\theta_0, \theta_1)
minimize−J(θ0,θ1)
将
θ
0
=
0
\theta_0=0
θ0=0,
h
θ
(
x
)
=
θ
x
x
h_\theta(x) = \theta_xx
hθ(x)=θxx:
保留
θ
0
\theta_0
θ0,
h
θ
(
x
)
=
θ
0
+
θ
x
x
h_ \theta(x) = \theta_0 + \theta_xx
hθ(x)=θ0+θxx:
2.5 梯度下降
函数function:
J
(
θ
0
,
θ
1
)
J(\theta_0, \theta_1)
J(θ0,θ1) (可应用与更多的参数)
目标want:
m
i
n
−
J
(
θ
0
,
θ
1
)
min - J(\theta_0, \theta_1)
min−J(θ0,θ1)
Outline:
- 给定初始值 θ 0 , θ 1 \theta_0, \theta_1 θ0,θ1(通常为0)
- 改变
θ
0
,
θ
1
\theta_0, \theta_1
θ0,θ1的值去减少
J
(
θ
0
,
θ
1
)
J(\theta_0, \theta_1)
J(θ0,θ1)
直到代价函数J得到最小值或局部最小值
梯度下降:起点不同可能会得到完全不同的局部最优解
数学原理:更新 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1重复以下工作直到收敛
{
θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) \theta_j := \theta_j - \alpha{\partial\over\partial\theta_j}J(\theta_0, \theta_1)\quad θj:=θj−α∂θj∂J(θ0,θ1) (for j = 0 and j = 1)
}
其中的 α \alpha α是学习率, α \alpha α越大,梯度下降越迅速。
α \alpha α太小,梯度计算步数越多;太大则可能不收敛甚至发散
注意在更新 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1时必须两个paramaters同时更新。
将 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1分别求梯度后赋值给temp0和temp1之后,再将temp0和temp1同时赋值给 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1。参数全部求完梯度之后同时赋值。
正确做法:
temp0 := θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) \theta_0 - \alpha{\partial\over\partial\theta_0}J(\theta_0, \theta_1) θ0−α∂θ0∂J(θ0,θ1)
temp1 := θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) \theta_1 - \alpha{\partial\over\partial\theta_1}J(\theta_0, \theta_1) θ1−α∂θ1∂J(θ0,θ1)
θ 0 \theta_0 θ0 := temp0
θ 1 \theta_1 θ1 := temp1
错误做法:
temp0 := θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) \theta_0 - \alpha{\partial\over\partial\theta_0}J(\theta_0, \theta_1) θ0−α∂θ0∂J(θ0,θ1)
θ 0 \theta_0 θ0 := temp0
temp1 := θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) \theta_1 - \alpha{\partial\over\partial\theta_1}J(\theta_0, \theta_1) θ1−α∂θ1∂J(θ0,θ1)
θ 1 \theta_1 θ1 := temp1
在 θ 1 \theta_1 θ1求梯度的时候, θ 0 \theta_0 θ0的值已经改变了,没做到同步更新。
2.6 梯度下降直观理解
简化函数:
θ
0
=
0
\theta_0=0
θ0=0
当处于
θ
j
\theta_j
θj时函数J达到最小值,那么梯度下降公式
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
j
)
\theta_j := \theta_j - \alpha{\partial\over\partial\theta_j}J(\theta_j)
θj:=θj−α∂θj∂J(θj) 导数部分为0,参数
θ
j
\theta_j
θj不再改变。
梯度下降算法:
接近最小点的过程中,导数值越来越小,步幅自动变小直到达到最小点步幅为0。
2.7 梯度下降的线性回归
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
)
(
i
)
−
y
(
i
)
)
2
J(\theta_0, \theta_1)={1\over2m}\sum_{i=1}^m(h_\theta(x)^{(i)} - y^{(i)})^2
J(θ0,θ1)=2m1i=1∑m(hθ(x)(i)−y(i))2
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
=
∂
∂
θ
j
∗
1
2
m
∑
i
=
1
m
(
h
θ
(
x
)
(
i
)
−
y
(
i
)
)
2
=
∂
∂
θ
j
∗
1
2
m
∑
i
=
1
m
(
θ
0
+
θ
1
x
(
i
)
−
y
(
i
)
)
2
{\partial\over\partial\theta_j}J(\theta_0, \theta_1)={\partial\over\partial\theta_j}*{1\over2m}\sum_{i=1}^m(h_\theta(x)^{(i)} - y^{(i)})^2={\partial\over\partial\theta_j}*{1\over2m}\sum_{i=1}^m(\theta_0+\theta_1x^{(i)}-y^{(i)})^2
∂θj∂J(θ0,θ1)=∂θj∂∗2m1i=1∑m(hθ(x)(i)−y(i))2=∂θj∂∗2m1i=1∑m(θ0+θ1x(i)−y(i))2
j
=
0
:
∂
∂
θ
0
J
(
θ
0
,
θ
1
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
)
(
i
)
−
y
(
i
)
)
j=0:{\partial\over\partial\theta_0}J(\theta_0, \theta_1)={1\over m}\sum_{i=1}^m(h_\theta(x)^{(i)} - y^{(i)})
j=0:∂θ0∂J(θ0,θ1)=m1i=1∑m(hθ(x)(i)−y(i))
j
=
1
:
∂
∂
θ
1
J
(
θ
0
,
θ
1
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
)
(
i
)
−
y
(
i
)
)
∗
x
(
i
)
j=1:{\partial\over\partial\theta_1}J(\theta_0, \theta_1)={1\over m}\sum_{i=1}^m(h_\theta(x)^{(i)} - y^{(i)})*x^{(i)}
j=1:∂θ1∂J(θ0,θ1)=m1i=1∑m(hθ(x)(i)−y(i))∗x(i)
“Batch”梯度下降:历遍了所有的训练数据集