机器学习(一)——线性回归和梯度下降
线性回归
定义
什么是线性回归(Linear Regression)?说的通俗易懂一点,就像高中数学在一个平面内给出了一堆点,让我们找到一个最符合的直线来描述。线性回归就是让我们找到一个最合适的线性函数来描述给出的数据。
模型
输入:
X
=
{
x
i
}
i
=
1
N
,
x
i
∈
R
m
\mathcal{X}=\{x_i\}_{i=1}^N,x_i \in \mathbb{R}^m
X={xi}i=1N,xi∈Rm
其中N是数据个数,
x
i
x_i
xi包含m个特征属性。
输出: Y = { y i } i = 1 N , y i ∈ R \mathcal{Y}=\{y_i\}_{i=1}^N,y_i \in \mathbb{R} Y={yi}i=1N,yi∈R
对于loss我们有不同的计算方式,我们可以用
l
(
y
i
^
,
y
i
)
=
∣
y
i
^
−
y
i
∣
l(\hat{y_i},y_i)=|\hat{y_i}-y_i|
l(yi^,yi)=∣yi^−yi∣,也可以用
l
(
y
i
^
,
y
i
)
=
1
2
(
y
i
^
−
y
i
)
2
l(\hat{y_i},y_i)=\frac{1}{2}(\hat{y_i}-y_i)^2
l(yi^,yi)=21(yi^−yi)2。这里我们使用的是第二种。
Loss function:
L
D
(
W
)
=
∑
i
=
1
N
l
(
y
i
^
,
y
i
)
\mathcal{L}_D(W)=\sum_{i=1}^Nl(\hat{y_i},y_i)
LD(W)=∑i=1Nl(yi^,yi)
L
D
\mathcal{L}_D
LD的大小表示函数拟合的效果,其值越小说明函数拟合的越好,因此我们需要寻找
L
D
\mathcal{L}_D
LD的最小解
f
∗
=
a
r
g
m
i
n
f
∑
i
=
1
N
l
(
y
i
^
,
y
i
)
f^*=\mathop{argmin}\limits_{f}\sum_{i=1}^Nl(\hat{y_i},y_i)
f∗=fargmin∑i=1Nl(yi^,yi)
因此我们需要通过学习得到模型函数:
f
(
x
;
w
,
b
)
=
w
1
x
1
+
.
.
.
w
m
x
m
+
b
=
∑
i
=
1
m
w
i
x
i
+
b
=
w
T
+
b
f(x;w,b)=w_1x_1+...w_mx_m+b =\sum_{i=1}^mw_ix_i+b =w^T+b
f(x;w,b)=w1x1+...wmxm+b=∑i=1mwixi+b=wT+b
也就是算出
w
∗
,
b
∗
=
a
r
g
m
i
n
w
,
b
L
D
(
w
,
b
)
w^*,b^*=\mathop{argmin}\limits_{w,b}\mathcal{L}_D(w,b)
w∗,b∗=w,bargminLD(w,b)
闭式解
为了简化证明过程,我们引入了增广矩阵和增广向量。
X
=
(
x
1
,
x
2
,
.
.
.
,
x
i
,
.
.
.
,
x
n
)
T
X=(x_1,x_2,...,x_i,...,x_n)^T
X=(x1,x2,...,xi,...,xn)T
x
i
=
(
1
,
x
i
1
,
x
i
2
,
.
.
.
,
x
i
m
)
x_i=(1,x_{i1},x_{i2},...,x_{im})
xi=(1,xi1,xi2,...,xim)
w
=
(
b
,
w
1
,
w
2
,
.
.
.
,
w
n
)
T
w=(b,w_1,w_2,...,w_n)^T
w=(b,w1,w2,...,wn)T
因此可以得到
L
D
(
w
)
=
1
2
∣
∣
Y
−
X
w
∣
∣
2
2
\mathcal{L}_D(w)=\frac{1}{2}||Y-Xw||_2^2
LD(w)=21∣∣Y−Xw∣∣22,证明过程如下:
闭式解求解过程如下:
由于
L
D
(
w
)
\mathcal{L}_D(w)
LD(w)是凸函数,所以
∂
L
D
(
w
)
∂
w
=
0
\frac{\partial \mathcal{L}_D(w)}{\partial w}=0
∂w∂LD(w)=0时即为所需解。
因此可以得到闭式解
w
∗
=
a
r
g
m
i
n
w
L
D
(
w
)
=
(
X
T
X
)
−
1
X
T
y
w^*=\mathop{argmin}\limits_{w}\mathcal{L}_D(w)=(X^T X)^{-1}X^Ty
w∗=wargminLD(w)=(XTX)−1XTy
但是如果遇到矩阵不可逆的情况则该结论不适用,这里就不加以讨论了。
梯度下降
定义
所谓梯度下降,简单来说就是通过下降方向来调整参数以得到最佳解的过程。那么我们需要做的就是寻找梯度下降方向以及设置步长。
如何找到一个可行的搜索方向?如何设置一个合适的步长
η
\eta
η?
Descent Direction
我们用
d
=
−
∂
L
D
(
w
)
∂
w
d=-\frac{\partial \mathcal{L}_D(w)}{\partial w}
d=−∂w∂LD(w)来描述下降方向,
L
D
(
w
,
)
=
L
D
(
w
+
η
d
)
≤
L
D
(
w
)
\mathcal{L}_D(w^,)=\mathcal{L}_D(w+\eta d)\leq \mathcal{L}_D(w)
LD(w,)=LD(w+ηd)≤LD(w) 结合高中数学知识应该很好理解。
Update Parameters
得到
d
d
d后我们可以更新参数
w
w
w的值
w
,
=
w
−
η
∂
L
D
(
w
)
∂
w
w^,=w-\eta \frac{\partial \mathcal{L}_D(w)}{\partial w}
w,=w−η∂w∂LD(w)
η \eta η的设置
如果 η \eta η值过大,则会导致震荡或者发散的情况;若太小,则导致收敛速率过慢。因此我们需要调整得到一个较佳的 η \eta η值。一种比较基础的方法是逐步减小 η \eta η: η k + 1 = η k k + 1 \eta_{k+1}=\frac{\eta_k}{k+1} ηk+1=k+1ηk