线性模型
线性模型是最简单的模型之一,它描述了一个(或多个)自变量对另一个因变量的影响是呈简单的比例,线性关系
输入(x) | 输出(y) |
---|---|
0.5 | 5.0 |
0.6 | 5.5 |
0.8 | 6.0 |
1.1 | 6.8 |
1.4 | 6.8 |
根据一组输入和输出(这叫做样本),寻找一个线性模型,这个线性模型能最优化的去拟合这些样本的数值分布。
线性模型在二维空间内表现为一条直线,再三维空间内表现为一个平面,更高维度下的线性模型是很难用几何图形来表示的(称为超平面),这个主要是有线性模型中的自变量的个数所影响。
设给定一组属性
x
,
x
=
(
x
1
;
x
2
;
.
.
.
;
x
n
)
x, x=(x_1;x_2;...;x_n)
x,x=(x1;x2;...;xn),线性方程的一般表达形式为:
y
=
w
1
x
1
+
w
2
x
2
+
w
3
x
3
+
.
.
.
+
w
n
x
n
+
b
y = w_1x_1 + w_2x_2 + w_3x_3 + ... + w_nx_n + b
y=w1x1+w2x2+w3x3+...+wnxn+b
写成向量形式为:
y
=
w
T
x
+
b
y = w^Tx + b
y=wTx+b
其中,
w
=
(
w
1
;
w
2
;
.
.
.
;
w
n
)
,
x
=
(
x
1
;
x
2
;
.
.
.
;
x
n
)
w=(w_1;w_2;...;w_n), x=(x_1;x_2;...;x_n)
w=(w1;w2;...;wn),x=(x1;x2;...;xn),w和b经过学习后,模型就可以确定. 当自变量数量为1时,上述线性模型即为平面下的直线方程:
y
=
w
x
+
b
y = wx + b
y=wx+b
线性模型的训练
从图中我们可以看出,二维平面中,当我们的样本点过多的时候,我们训练的线性模型并没有拟合到100%(当然,这几乎也是不可能的),我们只能找到一条与这些样本点几乎接近,或者说,模型与样本点的距离足够小的直线。
样本到直线的距离我们称为欧氏距离
- 那么问题来了,我们怎样要使样本与直线的距离最近呢?我们可以用损失函数来进行度量
损失函数:真实值(由样本中给出)和预测值(由模型算出)之间的差异.损失函数值越小,表明模型预测值和真实值之间差异越小,模型性能越好;损失函数值越大,模型预测值和真实值之间差异越大,模型性能越差.
在回归问题中,均方差是常用的损失函数,这里的前面乘以2/1,也可以乘以4/1,除以N,都没有错,只影响损失函数的大小,不会影响这个值所代表的性质,平方是避免存在复数,不采用绝对值
E
=
1
2
∑
i
=
1
n
(
y
−
y
′
)
2
E = \frac{1}{2}\sum_{i=1}^{n}{(y - y')^2}
E=21i=1∑n(y−y′)2
y为模型预测值,y’为真实值
(
w
∗
,
b
∗
)
=
a
r
g
m
i
n
1
2
∑
i
=
1
n
(
y
−
y
′
)
2
=
a
r
g
m
i
n
1
2
∑
i
=
1
n
(
y
′
−
w
x
i
−
b
)
2
(w^*, b^*) = arg min \frac{1}{2}\sum_{i=1}^{n}{(y - y')^2} \\ = arg min \frac{1}{2}\sum_{i=1}^{n}{(y' - wx_i - b)^2}
(w∗,b∗)=argmin21i=1∑n(y−y′)2=argmin21i=1∑n(y′−wxi−b)2
- 基于均方误差最小化来进行模型求解的方法称为“最小二乘法”. 线性回归中,最小二乘法就是试图找到一条直线,是所有样本到直线的欧式距离之和最小. 可以将损失函数对w和b分别求导,得到损失函数的导函数,并令导函数为0即可得到w和b的最优解
这里我们得到的损失函数是关于w,b
y‘已知,只有w和b是未知,所以,我们想要
a
r
g
m
i
n
1
2
∑
i
=
1
n
(
y
′
−
w
x
i
−
b
)
2
arg min \frac{1}{2}\sum_{i=1}^{n}{(y' - wx_i - b)^2}
argmin21∑i=1n(y′−wxi−b)2这个值最小,我们只需要求出w和b的min就行,这个情况下,就要用到梯度下降法来训练出最优的w和b
梯度下降法
梯度(gradient)是一个向量(矢量,有方向),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大.损失函数沿梯度相反方向收敛最快(即能最快找到极值点).当梯度向量为零(或接近于零),说明到达一个极值点,这也是梯度下降算法迭代计算的终止条件.
- 最初的w或者b参数可能是最不准确的,那时的斜率很大,收敛速度比较快,当向负方向进行收敛的是时候,当快要接近极值的时候,它会收敛的越来越慢,梯度越来越小。(数学上的意义,参数更新法则)
这种按照负梯度不停地调整函数权值的过程就叫作“梯度下降法”.通过这样的方法,改变权重让损失函数的值下降得更快,进而将值收敛到损失函数的某个极小值.
参数更新法则
在直线方程中,有两个参数需要学习,
w
0
w_0
w0和
w
1
w_1
w1,梯度下降过程中,分别对这两个参数单独进行调整,调整法则如下:
Δ
w
0
\Delta w_0
Δw0就是梯度,要收敛的量,
w
0
w_0
w0,就是原始的参数
w
0
w_0
w0
w
0
=
w
0
+
Δ
w
0
w
1
=
w
1
+
Δ
w
1
w_0 = w_0 + \Delta w_0\\ w_1 = w_1 + \Delta w_1
w0=w0+Δw0w1=w1+Δw1
Δ
w
0
\Delta w_0
Δw0和
Δ
w
1
\Delta w_1
Δw1可表示为:
−
η
Δ
l
o
s
s
Δ
w
0
-\eta \frac{\Delta loss}{\Delta w_0}
−ηΔw0Δloss和
−
η
Δ
l
o
s
s
Δ
w
1
-\eta \frac{\Delta loss}{\Delta w_1}
−ηΔw1Δloss可以理解为
Δ
w
0
\Delta w_0
Δw0
Δ
w
1
\Delta w_1
Δw1对损失函数的影响。也就是一个对
Δ
w
0
\Delta w_0
Δw0求偏导,一个对
Δ
w
1
\Delta w_1
Δw1求偏导,前面的负号是控制收敛的方向的,向负梯度的方向
- 梯度越大,调整越大,梯度越小,调整的越微弱
Δ
w
0
=
−
η
Δ
l
o
s
s
Δ
w
0
Δ
w
1
=
−
η
Δ
l
o
s
s
Δ
w
1
\Delta w_0 = -\eta \frac{\Delta loss}{\Delta w_0}\\ \Delta w_1 = -\eta \frac{\Delta loss}{\Delta w_1}\\
Δw0=−ηΔw0ΔlossΔw1=−ηΔw1Δloss
其中,
η
\eta
η称为学习率(控制在0-1之间),
Δ
l
o
s
s
Δ
w
i
\frac{\Delta loss}{\Delta w_i}
ΔwiΔloss为梯度(即损失函数关于参数
w
i
w_i
wi的偏导数). 损失函数表达式为:
l
o
s
s
=
1
2
∑
(
y
−
y
′
)
2
=
1
2
∑
(
(
y
−
(
w
0
+
w
1
x
)
)
2
)
loss =\frac{1}{2}\sum(y - y')^2 = \frac{1}{2}\sum((y-(w_0+w_1x))^2)
loss=21∑(y−y′)2=21∑((y−(w0+w1x))2)
对损失函数求导(求导过程见补充知识),可得
w
0
,
w
1
w_0, w_1
w0,w1的偏导数为:
Δ
l
o
s
s
Δ
w
0
=
∑
(
(
y
−
y
′
)
(
−
1
)
)
=
−
∑
(
y
−
y
′
)
Δ
l
o
s
s
Δ
w
1
=
∑
(
(
y
−
y
′
)
(
−
x
)
)
=
−
∑
(
x
(
y
−
y
′
)
)
\frac{\Delta loss}{\Delta w_0} = \sum((y - y')(-1)) = -\sum(y - y')\\ \frac{\Delta loss}{\Delta w_1} = \sum((y - y')(-x)) = -\sum(x(y - y'))
Δw0Δloss=∑((y−y′)(−1))=−∑(y−y′)Δw1Δloss=∑((y−y′)(−x))=−∑(x(y−y′))
理解线性模型和梯度下降建议从数学意义上去理解,从根的角度去理解更好
- 下面是对损失函数的求导过程
y
′
=
w
0
+
w
0
x
1
y' = w_0 + w_0 x_1
y′=w0+w0x1
采用均方差损失函数:
l
o
s
s
=
1
2
(
y
−
y
′
)
2
loss = \frac{1}{2} (y - y')^2
loss=21(y−y′)2
其中,y为真实值,来自样本;y’为预测值,即线性方程表达式,带入损失函数得:
l
o
s
s
=
1
2
(
y
−
(
w
0
+
w
1
x
1
)
)
2
loss = \frac{1}{2} (y - (w_0 + w_1 x_1))^2
loss=21(y−(w0+w1x1))2
将该式子展开:
l
o
s
s
=
1
2
(
y
2
−
2
y
(
w
0
+
w
1
x
1
)
+
(
w
0
+
w
1
x
1
)
2
)
1
2
(
y
2
−
2
y
∗
w
0
−
2
y
∗
w
1
x
1
+
w
0
2
+
2
w
0
∗
w
1
x
1
+
w
1
2
x
1
2
)
loss = \frac{1}{2} (y^2 - 2y(w_0 + w_1 x_1) + (w_0 + w_1 x_1)^2) \\ \frac{1}{2} (y^2 - 2y*w_0 - 2y*w_1x_1 + w_0^2 + 2w_0*w_1 x_1 + w_1^2x_1^2) \\
loss=21(y2−2y(w0+w1x1)+(w0+w1x1)2)21(y2−2y∗w0−2y∗w1x1+w02+2w0∗w1x1+w12x12)
对
w
0
w_0
w0求导:
∂
l
o
s
s
∂
w
0
=
1
2
(
0
−
2
y
−
0
+
2
w
0
+
2
w
1
x
1
+
0
)
=
1
2
(
−
2
y
+
2
w
0
+
2
w
1
x
1
)
=
1
2
∗
2
(
−
y
+
(
w
0
+
w
1
x
1
)
)
=
(
−
y
+
y
′
)
=
−
(
y
−
y
′
)
\frac{\partial loss}{\partial w_0} = \frac{1}{2}(0-2y-0+2w_0 + 2w_1 x_1 +0) \\ =\frac{1}{2}(-2y + 2 w_0 + 2w_1 x_1) \\ = \frac{1}{2} * 2(-y + (w_0 + w_1 x_1)) \\ =(-y + y') = -(y - y')
∂w0∂loss=21(0−2y−0+2w0+2w1x1+0)=21(−2y+2w0+2w1x1)=21∗2(−y+(w0+w1x1))=(−y+y′)=−(y−y′)
对
w
1
w_1
w1求导:
∂
l
o
s
s
∂
w
1
=
1
2
(
0
−
0
−
2
y
∗
x
1
+
0
+
2
w
0
x
1
+
2
w
1
x
1
2
)
=
1
2
(
−
2
y
x
1
+
2
w
0
x
1
+
2
w
1
x
1
2
)
=
1
2
∗
2
x
1
(
−
y
+
w
0
+
w
1
x
1
)
=
x
1
(
−
y
+
y
′
)
=
−
x
1
(
y
−
y
′
)
\frac{\partial loss}{\partial w_1} = \frac{1}{2}(0-0-2y*x_1+0+2 w_0 x_1 + 2 w_1 x_1^2) \\ = \frac{1}{2} (-2y x_1 + 2 w_0 x_1 + 2w_1 x_1^2) \\ = \frac{1}{2} * 2 x_1(-y + w_0 + w_1 x_1) \\ = x_1(-y + y') = - x_1(y - y')
∂w1∂loss=21(0−0−2y∗x1+0+2w0x1+2w1x12)=21(−2yx1+2w0x1+2w1x12)=21∗2x1(−y+w0+w1x1)=x1(−y+y′)=−x1(y−y′)