训练集
X | Y |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
x
i
x^{i}
xi指训练集的第i个x ,
y
i
y^{i}
yi指训练集的第i个y
如
x
2
=
2
x^{2}=2
x2=2,
y
3
=
3
y^{3}=3
y3=3
m=训练集的数量=3
预测函数
H ( x i ) = θ 0 + θ 1 x i H(x^{i})=\theta_{0}+\theta_{1}x^{i} H(xi)=θ0+θ1xi
不同的 θ 0 \theta_{0} θ0和 θ 1 \theta_{1} θ1将会有不同的函数曲线
当
θ
0
=
2
\theta_{0}=2
θ0=2,
θ
1
=
1
\theta_{1}=1
θ1=1
当
θ
0
=
1
\theta_{0}=1
θ0=1,
θ
1
=
2
\theta_{1}=2
θ1=2
神经网络的目标就是通过改变 θ 0 \theta_{0} θ0和 θ 1 \theta_{1} θ1是函数更好的拟合训练集
误差函数
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(x^{(i)})-y^{(i)})^2 J(θ0,θ1)=2m1i=1∑M(H(x(i))−y(i))2
误差函数是预测函数的结果与实际结果的误差
误差越小就表明我们的预测函数越好,也就是 θ 0 \theta_{0} θ0和 θ 1 \theta_{1} θ1越好
为了方便运算,我们使
θ
0
=
0
\theta_{0}=0
θ0=0
所以
H
(
x
i
)
=
θ
1
x
i
H(x^{i})=\theta_{1}x^{i}
H(xi)=θ1xi
误差函数的图像如下:
从肉眼可以看出 当 θ 1 = 1 \theta_{1}=1 θ1=1时误差最小
图像如下
但当数据特别大时,我们就无法直接从肉眼看出,所以有了梯度下降
梯度下降
定义如下
θ
1
=
θ
1
−
a
d
d
θ
1
J
(
θ
1
)
\theta_{1}=\theta_{1}-a\frac{d}{d\theta_{1}}J(\theta_{1})
θ1=θ1−adθ1dJ(θ1)
a是学习速度,学习速度过大会导致数据网络在局部最优摆动,过小会导致到达局部最优的时间过久
计算得到
θ
1
=
θ
1
−
1
m
∑
i
=
1
M
(
H
(
x
(
i
)
)
−
y
(
i
)
)
x
(
i
)
\theta_{1}=\theta_{1}-\frac{1}{m}\sum_{i=1}^{M}(H(x^{(i)})-y^{(i)})x^{(i)}
θ1=θ1−m1i=1∑M(H(x(i))−y(i))x(i)
随机一个
θ
1
\theta_{1}
θ1,梯度下降图像如下
梯度下降的优点:
梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解
梯度下降的缺点:
- 一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。
- 靠近极小值时收敛速度减慢,求解需要很多次的迭代;
- 直线搜索时可能会产生一些问题;
- 可能会“之字形”地下降。