多项式回归
如何表示误差?
最小二乘法——以一元一次函数为例
f
θ
(
x
)
=
θ
0
+
θ
1
x
f_\theta(x)=\theta_0+\theta_1x
fθ(x)=θ0+θ1x
假设有
n
n
n个训练数据,那么它们的误差之和可以用这样的表达式表示。这个表达式成为目标函数,
E
(
θ
)
E(\theta)
E(θ)的
E
E
E是误差的英语单词Error的首字母。
E
(
θ
)
=
1
2
∑
i
=
1
n
(
y
(
i
)
−
f
θ
(
x
(
i
)
)
)
2
E(\theta) = \frac{1}{2}\sum_{i=1}^{n}(y^{(i)}-f_{\theta}(x^{(i)}))^2
E(θ)=21i=1∑n(y(i)−fθ(x(i)))2
说明:
① x ( i ) x^{(i)} x(i) 和 y ( i ) y^{(i)} y(i) 指第 i i i 个训练数据;
② 对每个训练数据的误差取平方之和,全部相加,然后乘以 1 2 \frac{1}{2} 21。这么做是为了找到使 E ( θ ) E(\theta) E(θ) 的值最小的 θ \theta θ。这样的问题称为最优化问题;
③ 使用平方而不使用绝对值,乘以 1 2 \frac{1}{2} 21 而不乘以其他常数的原因是便于后续的微分。
如何使误差最小?
最速下降法——以一元一次函数为例
对于存在最小值的函数
g
(
x
)
g(x)
g(x),如果一边修改
x
x
x的值,一边计算
g
(
x
)
g(x)
g(x) 并与之前的值相比较,这样的做法太麻烦。
因此,我们可以让
g
(
x
)
g(x)
g(x) 的值不断变小,直到不变。为了使
g
(
x
)
g(x)
g(x) 的值变小,我们需要将
x
x
x 向与此时的导数符号相反的方向移动某个值,从而实现参数
x
x
x 的自动更新。
那么,应该移动多少呢?
x
:
=
x
−
η
d
d
x
g
(
x
)
x:=x-\eta\frac{d}{dx}g(x)
x:=x−ηdxdg(x)
从上式我们不难得出应当移动
η
d
d
x
g
(
x
)
\eta\frac{d}{dx}g(x)
ηdxdg(x) ,
d
d
x
g
(
x
)
\frac{d}{dx}g(x)
dxdg(x) 表示此时的导数值(即微分),
η
\eta
η 则表示学习率(正的常数)。根据学习率的大小,到达最小值的更新次数也会发生变化。换种说法就是收敛速度会不同。有时候甚至会出现完全无法收敛,一直发散的情况。
因此,当
η
\eta
η 过大,移动量变大,那么在参数的更新过程中可能会在两个值之间反复横跳,甚至远离最小值的情况,这就是发散状态;当
η
\eta
η 过小,移动量也变小,更新次数就会增加,但是值确实是会朝着收敛的方向去的。
E
(
θ
)
=
1
2
∑
i
=
1
n
(
y
(
i
)
−
f
θ
(
x
(
i
)
)
)
2
E(\theta) = \frac{1}{2}\sum_{i=1}^{n}(y^{(i)}-f_{\theta}(x^{(i)}))^2
E(θ)=21i=1∑n(y(i)−fθ(x(i)))2
我们回到误差的表达式,将其作为目标函数,采取最速下降法求最小值。但是该函数是拥有
θ
0
\theta_0
θ0 和
θ
1
\theta_1
θ1 的双变量函数,因此我们采用偏微分。
θ
0
:
=
θ
0
−
η
∂
E
∂
θ
0
θ
1
:
=
θ
1
−
η
∂
E
∂
θ
1
\begin{align*} &\theta_0:=\theta_0-\eta\frac{\partial E}{\partial \theta_0}\\ &\theta_1:=\theta_1-\eta\frac{\partial E}{\partial \theta_1} \end{align*}
θ0:=θ0−η∂θ0∂Eθ1:=θ1−η∂θ1∂E
∂
E
∂
θ
0
\frac{\partial E}{\partial \theta_0}
∂θ0∂E计算过程如下:(复合函数的微分)
u
=
E
(
v
)
v
=
f
θ
(
x
)
u=E(v)\\ v=f_{\theta}(x)
u=E(v)v=fθ(x)
∂
E
∂
θ
0
=
∂
u
∂
θ
0
=
∂
u
∂
v
⋅
∂
v
∂
θ
0
\frac{\partial E}{\partial\theta_0}=\frac{\partial u}{\partial\theta_0}=\frac{\partial u}{\partial v}·\frac{\partial v}{\partial\theta_0}
∂θ0∂E=∂θ0∂u=∂v∂u⋅∂θ0∂v
∂
u
∂
v
=
∂
∂
v
(
1
2
∑
i
=
1
n
(
y
(
i
)
−
v
)
2
)
A
B
=
1
2
∑
i
=
1
n
∂
∂
v
(
y
(
i
)
−
v
)
2
A
B
=
1
2
∑
i
=
1
n
(
2
v
−
2
y
(
i
)
)
A
B
=
∑
i
=
1
n
(
v
−
y
(
i
)
)
\begin{align*} &\frac{\partial u}{\partial v}=\frac{\partial}{\partial v}(\frac{1}{2}\sum_{i=1}^{n}(y^{(i)}-v)^2)\\ &\phantom{AB}=\frac{1}{2}\sum_{i=1}^{n}\frac{\partial}{\partial v}(y^{(i)}-v)^2\\ &\phantom{AB}=\frac{1}{2}\sum_{i=1}^{n}(2v-2y^{(i)})\\ &\phantom{AB}=\sum_{i=1}^{n}(v-y^{(i)}) \end{align*}
∂v∂u=∂v∂(21i=1∑n(y(i)−v)2)AB=21i=1∑n∂v∂(y(i)−v)2AB=21i=1∑n(2v−2y(i))AB=i=1∑n(v−y(i))
∂
v
∂
θ
0
=
∂
∂
θ
0
(
θ
0
+
θ
1
x
)
A
B
:
=
1
\begin{align*} &\frac{\partial v}{\partial \theta_0}=\frac{\partial}{\partial \theta_0}(\theta_0+\theta_1x)\\ &\phantom{AB:}=1 \end{align*}
∂θ0∂v=∂θ0∂(θ0+θ1x)AB:=1
∂
E
∂
θ
0
=
∂
u
∂
θ
0
=
∂
u
∂
v
⋅
∂
v
∂
θ
0
A
B
:
=
∑
i
=
1
n
(
v
−
y
(
i
)
)
⋅
1
A
B
:
=
∑
i
=
1
n
(
f
θ
(
x
(
i
)
)
−
y
(
i
)
)
\begin{align*} &\frac{\partial E}{\partial\theta_0}=\frac{\partial u}{\partial\theta_0}=\frac{\partial u}{\partial v}·\frac{\partial v}{\partial\theta_0}\\ &\phantom{AB:}=\sum_{i=1}^{n}(v-y^{(i)})·1\\ &\phantom{AB:}=\sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)}) \end{align*}
∂θ0∂E=∂θ0∂u=∂v∂u⋅∂θ0∂vAB:=i=1∑n(v−y(i))⋅1AB:=i=1∑n(fθ(x(i))−y(i))
综上所述
θ
0
:
=
θ
0
−
η
∑
i
=
1
n
(
f
θ
(
x
(
i
)
)
−
y
(
i
)
)
\theta_0:=\theta_0-\eta\sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)})
θ0:=θ0−ηi=1∑n(fθ(x(i))−y(i))
同理可得
θ
1
:
=
θ
1
−
η
∑
i
=
1
n
(
f
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
(
i
)
\theta_1:=\theta_1-\eta\sum_{i=1}^{n}(f_\theta(x^{(i)})-y^{(i)})x^{(i)}
θ1:=θ1−ηi=1∑n(fθ(x(i))−y(i))x(i)
只需要根据这个表达式来更新
θ
0
\theta_0
θ0和
θ
1
\theta_1
θ1就能找到正确的一次函数
f
θ
f_\theta
fθ(x)。
最速下降法——以多元一次函数为例(多重回归)
f
θ
(
x
)
=
θ
T
x
f_{\bm{\theta}}(\bm{x})=\bm{\theta}^T\bm{x}
fθ(x)=θTx
θ
=
[
θ
0
θ
1
θ
2
⋮
θ
n
]
x
=
[
x
0
x
1
x
2
⋮
x
n
]
(
x
0
=
1
)
\theta=\begin{bmatrix} \begin{matrix} \theta_0\\ \theta_1\\ \theta_2\\ \vdots \\ \theta_n\\ \end{matrix} \end{bmatrix} \space\space x=\begin{bmatrix} \begin{matrix} x_0\\ x_1\\ x_2\\ \vdots \\ x_n\\ \end{matrix} \end{bmatrix} \space\space(x_0=1)
θ=
θ0θ1θ2⋮θn
x=
x0x1x2⋮xn
(x0=1)
由最速下降法同理可得:
θ
j
:
=
θ
j
−
η
∑
i
=
1
n
(
f
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\theta_j:=\theta_j-\eta\sum_{i=1}^n(f_{\theta}(x^{(i)})-y^{(i)})x_j^{(i)}
θj:=θj−ηi=1∑n(fθ(x(i))−y(i))xj(i)
像这样包含了多个变量的回归称为多重回归
随机梯度下降法——以多元一次函数为例(多重回归)
所谓的最速下降法就是对所有训练数据都重复进行计算,但是训练数据越多,循环次数也就越多,因此计算量大、计算时间长是最速下降法的一个缺点。同时,最速下降法容易陷入局部最优解,从不同的点开始找最小值,会得到不同的“最小值”。
最速下降法使用了所有训练数据的误差,而随机梯度下降法中会随机选择一个训练数据,并使用它来更新参数。这个表达式中的
k
k
k就是被随机选择的数据索引。
θ
j
:
=
θ
j
−
(
f
θ
(
x
(
k
)
)
−
y
(
k
)
)
x
j
(
k
)
\theta_j:=\theta_j-(f_{\theta}(x^{(k)})-y^{(k)})x_j^{(k)}
θj:=θj−(fθ(x(k))−y(k))xj(k)
相比之下,最速下降法更新1次参数的时间,随机梯度下降法可以更新
n
n
n次,此外,随机梯度下降法由于训练数据是随机选择的,更新参数时使用的又是选择数据时的梯度,所以不容易陷入目标函数的局部最优解。
小批量梯度下降法——以多元一次函数为例(多重回归)
上述方法为随机选择1个训练数据的做法,此外还有随机选择
m
m
m个训练数据来更新参数的做法,这种做法被称为小批量梯度下降法。
设随机选择
m
m
m个训练数据的索引的集合为
K
K
K:
θ
j
:
=
θ
j
−
η
∑
(
k
∈
K
)
(
f
θ
(
x
(
k
)
)
−
y
(
k
)
)
x
j
(
k
)
\theta_j:=\theta_j-\eta\sum_{(k\in K)}(f_{\theta}(x^{(k)})-y^{(k)})x_j^{(k)}
θj:=θj−η(k∈K)∑(fθ(x(k))−y(k))xj(k)
学习率 η \space\eta\space η 的选择
这是一个很难的问题!