本文主要介绍了线性回归的建模与求解。
模型假设
假设数据(m个特征为d维的样本)符合线性关系:
h
θ
(
x
)
=
θ
0
+
θ
1
∗
x
1
+
.
.
.
+
θ
d
∗
x
d
h
θ
(
x
)
=
∑
j
=
0
d
+
1
θ
j
∗
x
j
=
x
T
θ
h_\theta(x)=\theta_0+\theta_1*x_1+...+\theta_d*x_d\\ h_\theta(x)=\sum_{j=0}^{d+1}\theta_j*x_j=x^T\theta
hθ(x)=θ0+θ1∗x1+...+θd∗xdhθ(x)=j=0∑d+1θj∗xj=xTθ
损失函数
目标是使在训练数据上,模型输出离真实的y
尽可能近,采取均方误差:
J
(
θ
)
=
1
2
∑
i
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J(\theta)=\frac{1}{2}\sum_i^{m}(h_\theta(x^{(i)})-y^{(i)})^2
J(θ)=21i∑m(hθ(x(i))−y(i))2
优化目标:
θ
∗
=
arg
min
θ
J
(
θ
)
\theta^* = \arg\min_{\theta} J(\theta)
θ∗=argθminJ(θ)
求解
梯度下降法
参数更新公式:
θ
j
=
θ
j
−
α
∗
∂
J
(
θ
)
∂
θ
j
\theta_j = \theta_j - \alpha * \frac{\partial J(\theta)}{\partial \theta_j}
θj=θj−α∗∂θj∂J(θ)
计算梯度:
∂
J
(
θ
)
∂
θ
j
=
∂
∂
θ
j
(
1
2
∑
i
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
)
=
∑
i
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
∂
∂
θ
j
(
∑
j
d
+
1
θ
j
∗
x
j
(
i
)
−
y
(
i
)
)
=
∑
i
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\begin{aligned} \frac{\partial J(\theta)}{\partial \theta_j}&=\frac{\partial }{\partial \theta_j}(\frac{1}{2}\sum_i^{m}(h_\theta(x^{(i)})-y^{(i)})^2) \\ &=\sum_i^{m}(h_\theta(x^{(i)})-y^{(i)})\frac{\partial}{\partial \theta_j}(\sum_j^{d+1}\theta_j*x_j^{(i)}-y^{(i)}) \\ &=\sum_i^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} \end{aligned}
∂θj∂J(θ)=∂θj∂(21i∑m(hθ(x(i))−y(i))2)=i∑m(hθ(x(i))−y(i))∂θj∂(j∑d+1θj∗xj(i)−y(i))=i∑m(hθ(x(i))−y(i))xj(i)
批量梯度下降
repeat until convergence { for j=0 : d+1 { θ j = θ j + α ∗ ∑ i m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) } } \begin{aligned} &\text{repeat until convergence} \{ \\ &\text{for j=0 : d+1}\{\\ &\theta_j =\theta_j+\alpha*\sum_i^{m}(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)}\\ &\} \} \end{aligned} repeat until convergence{for j=0 : d+1{θj=θj+α∗i∑m(y(i)−hθ(x(i)))xj(i)}}
- 每次迭代需要对所有样本计算梯度,开销大,但是可以使用矩阵操作实现并行
- 每次迭代的方向能更好地代表全体样本,能更准确收敛到极值
随机梯度下降
repeat until convergence { for i=1 : m { for j=0 : d+1 { θ j = θ j + α ∗ ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) } } } \begin{aligned} &\text{repeat until convergence} \{\\ &\text{for i=1 : m}\{\\ &\text{for j=0 : d+1}\{\\ &\theta_j =\theta_j + \alpha*(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)}\\ &\}\}\} \end{aligned} repeat until convergence{for i=1 : m{for j=0 : d+1{θj=θj+α∗(y(i)−hθ(x(i)))xj(i)}}}
- 每轮迭代只需计算一个样本的梯度,更新速度大大加快
- 准确度下降,即使目标函数为强凸函数也可能无法收敛到全局最优值
- 不易于并行实现
小批量梯度下降
假设
b
a
t
c
h
s
i
z
e
batchsize
batchsize
repeat until convergence
{
for i=1 : m//batchsize
{
for j=0 : d+1
{
θ
j
=
θ
j
+
α
∗
(
y
(
i
)
−
h
θ
(
x
(
i
)
)
)
x
j
(
i
)
}
}
}
\begin{aligned} &\text{repeat until convergence} \{\\ &\text{for i=1 : m//batchsize}\{\\ &\text{for j=0 : d+1}\{\\ &\theta_j =\theta_j + \alpha*(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)}\\ &\}\}\} \end{aligned}
repeat until convergence{for i=1 : m//batchsize{for j=0 : d+1{θj=θj+α∗(y(i)−hθ(x(i)))xj(i)}}}
- 通过矩阵运算,每次在一个batch上优化参数并不会比单个数据慢太多。
- 每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。
- batch_size的不当选择可能会带来一些问题。
- 在合理地范围内,增大batch_size的好处:
– 内存利用率提高了,大矩阵乘法的并行化效率提高。
– 跑完一次epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
– 在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。 - 盲目增大batch_size的坏处:
– 内存利用率提高了,但是内存容量可能撑不住了。
– 跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
– Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。
正规方程法
J
(
θ
)
=
1
2
∑
i
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
=
1
2
∑
i
m
(
x
(
i
)
T
θ
−
y
(
i
)
)
2
=
1
2
∑
i
m
(
x
(
i
)
T
θ
−
y
(
i
)
)
T
(
x
(
i
)
T
θ
−
y
(
i
)
)
=
1
2
[
x
(
1
)
T
θ
−
y
(
1
)
.
.
.
x
(
m
)
T
θ
−
y
(
m
)
]
T
[
x
(
1
)
T
θ
−
y
(
1
)
.
.
.
x
(
m
)
T
θ
−
y
(
m
)
]
=
1
2
(
X
θ
−
Y
)
T
(
X
θ
−
Y
)
\begin{aligned} J(\theta)&=\frac{1}{2}\sum_i^{m}(h_\theta(x^{(i)})-y^{(i)})^2\\ &=\frac{1}{2}\sum_i^{m}({x^{(i)}}^T\theta-y^{(i)})^2 \\ &=\frac{1}{2}\sum_i^{m}({x^{(i)}}^T\theta-y^{(i)})^T({x^{(i)}}^T\theta-y^{(i)}) \\ &=\frac{1}{2}\begin{bmatrix}{x^{(1)}}^T\theta-y^{(1)}\\ ...\\{x^{(m)}}^T\theta-y^{(m)}\end{bmatrix}^T\begin{bmatrix}{x^{(1)}}^T\theta-y^{(1)}\\...\\{x^{(m)}}^T\theta-y^{(m)}\end{bmatrix}\\ &=\frac{1}{2}(X\theta-Y)^T(X\theta-Y) \end{aligned}
J(θ)=21i∑m(hθ(x(i))−y(i))2=21i∑m(x(i)Tθ−y(i))2=21i∑m(x(i)Tθ−y(i))T(x(i)Tθ−y(i))=21⎣⎢⎡x(1)Tθ−y(1)...x(m)Tθ−y(m)⎦⎥⎤T⎣⎢⎡x(1)Tθ−y(1)...x(m)Tθ−y(m)⎦⎥⎤=21(Xθ−Y)T(Xθ−Y)
令梯度等于零:
∂
J
(
θ
)
∂
θ
=
∂
∂
θ
(
1
2
(
X
θ
−
Y
)
T
(
X
θ
−
Y
)
)
=
1
2
∂
∂
θ
(
θ
T
X
T
X
θ
−
Y
T
X
θ
−
θ
T
X
T
Y
+
Y
T
Y
)
=
X
T
X
θ
−
X
T
Y
=
0
⇒
θ
∗
=
(
X
T
X
)
−
1
X
T
Y
\begin{aligned} \frac{\partial J(\theta)}{\partial \theta}&=\frac{\partial }{\partial \theta}(\frac{1}{2}(X\theta-Y)^T(X\theta-Y)) \\ &=\frac{1}{2}\frac{\partial }{\partial \theta}(\theta^TX^TX\theta-Y^TX\theta-\theta^TX^TY+Y^TY) \\ &=X^TX\theta-X^TY=0\\\\ &\Rightarrow \theta^*=(X^TX)^{-1}X^TY \end{aligned}
∂θ∂J(θ)=∂θ∂(21(Xθ−Y)T(Xθ−Y))=21∂θ∂(θTXTXθ−YTXθ−θTXTY+YTY)=XTXθ−XTY=0⇒θ∗=(XTX)−1XTY
其中
X
T
X
X^TX
XTX必须可逆,若不可逆:
- 梯度法求解
- 先降维,去相关
- 加扰动
概率解释
假设
y
(
i
)
=
θ
T
x
(
i
)
+
ϵ
(
i
)
ϵ
(
i
)
∼
i
i
d
N
(
0
,
δ
2
)
y^{(i)}=\theta^Tx^{(i)}+\epsilon^{(i)}\\ \epsilon^{(i)}\sim^{iid} N(0, \delta^2)
y(i)=θTx(i)+ϵ(i)ϵ(i)∼iidN(0,δ2)
则有
p
(
ϵ
(
i
)
)
=
1
2
π
δ
exp
{
−
(
ϵ
(
i
)
)
2
2
δ
2
}
=
1
2
π
δ
exp
{
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
δ
2
}
=
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
\begin{aligned} p(\epsilon^{(i)})&=\frac{1}{\sqrt{2\pi}\delta}\exp\{-\frac{(\epsilon^{(i)})^2}{2\delta^2}\}\\ &=\frac{1}{\sqrt{2\pi}\delta}\exp\{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\delta^2}\}\\ &=p(y^{(i)}|x^{(i)};\theta) \end{aligned}
p(ϵ(i))=2πδ1exp{−2δ2(ϵ(i))2}=2πδ1exp{−2δ2(y(i)−θTx(i))2}=p(y(i)∣x(i);θ)
log似然函数为
l
(
θ
)
=
log
p
(
Y
∣
X
;
θ
)
=
log
∏
i
=
1
m
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
∑
i
=
1
m
log
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
∑
i
=
1
m
log
(
1
2
π
δ
exp
{
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
δ
2
}
)
=
m
log
1
2
π
δ
−
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
δ
2
\begin{aligned} l(\theta)&=\log p(Y|X;\theta)\\ &=\log\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)\\ &=\sum_{i=1}^{m}\log p(y^{(i)}|x^{(i)};\theta)\\ &=\sum_{i=1}^{m}\log (\frac{1}{\sqrt{2\pi}\delta}\exp\{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\delta^2}\})\\ &=m\log \frac{1}{\sqrt{2\pi}\delta} - \sum_{i=1}^{m}\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\delta^2} \end{aligned}
l(θ)=logp(Y∣X;θ)=logi=1∏mp(y(i)∣x(i);θ)=i=1∑mlogp(y(i)∣x(i);θ)=i=1∑mlog(2πδ1exp{−2δ2(y(i)−θTx(i))2})=mlog2πδ1−i=1∑m2δ2(y(i)−θTx(i))2
根据最大似然法估计参数,则有
θ
∗
=
arg
max
θ
l
(
θ
)
=
arg
min
θ
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
\theta^* = \arg\max_\theta l(\theta)=\arg\min_\theta \frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2
θ∗=argθmaxl(θ)=argθmin21i=1∑m(y(i)−θTx(i))2
因此,之前使用均方误差是自然的选择。