李宏毅ML lecture-1,2,3 线性回归及梯度下降
线性回归(Linear regression)
简单来说,就是给一组含有
N
N
N个数据的集合
s
e
t
set
set,包括输入
x
x
x和输出
t
t
t,找出生成这组数据的函数,用这个函数预测下一个数据所产生的输出.因为不知道函数长什么样子,可以假定为最简单的线性函数:
(1)
y
=
w
1
x
1
+
.
.
.
+
w
D
x
D
+
b
y=w_1x_1+...+ w_D x_D+b \tag{1}
y=w1x1+...+wDxD+b(1)
将上述式子转换为矩阵运算:
(2)
W
=
[
w
1
w
2
.
.
.
w
D
]
X
=
[
x
1
x
2
.
.
.
x
D
]
y
=
W
T
X
+
b
W=\left[ \begin{matrix} w_1\\w_2\\...\\w_D \end{matrix} \right] X=\left[ \begin{matrix} x_1\\x_2\\...\\x_D \end{matrix} \right] y=W^TX+b \tag{2}
W=⎣⎢⎢⎡w1w2...wD⎦⎥⎥⎤X=⎣⎢⎢⎡x1x2...xD⎦⎥⎥⎤y=WTX+b(2)
损失函数( loss function)
给出线性函数后,随机初始化 W W W,输入 X X X得到 y y y,而真实的输出应该是 t t t,所以得到直觉上的平方损失函数:
平方损失(square loss)
(3)
L
W
,
b
=
1
2
N
∑
n
=
1
N
(
t
n
−
y
n
)
2
L_{W,b}=\frac{1}{2N}\sum_{n=1}^{N}(t_n-y_n)^2 \tag{3}
LW,b=2N1n=1∑N(tn−yn)2(3)
现在的目标就是使平方损失函数
L
L
L最小.
这个时候就涉及到梯度下降算法(Gradient Descent)
梯度下降算法
(4)
W
∗
=
*
a
r
g
m
i
n
W
L
W
,
b
W^* = \operatorname*{argmin}_{W}L_{W,b} \tag{4}
W∗=*argminWLW,b(4)
(4)
b
∗
=
*
a
r
g
m
i
n
b
L
W
,
b
b^* = \operatorname*{argmin}_{b}L_{W,b} \tag{4}
b∗=*argminbLW,b(4)
这个时候,当
x
x
x确定时,则
w
w
w为自变量,为了找到让
L
L
L最小的
W
W
W和
b
b
b.就需要让
W
W
W和
b
b
b沿着
L
L
L的下降路线变化.
变化速度最快的方向就是
W
W
W对
L
L
L的梯度
∂
L
∂
W
\frac{\partial L}{\partial W}
∂W∂L记为
d
W
dW
dW以及
b
b
b对
L
L
L的梯度
∂
L
∂
b
\frac{\partial L}{\partial b}
∂b∂L记为
d
b
db
db.
PS:这个问题比较复杂,建议看视频或者别人的文章,这里就简单记一下.
学习率(Learning rate)
W
=
W
−
η
d
W
b
=
b
−
η
d
b
W = W - \eta dW\\ b = b- \eta db\\
W=W−ηdWb=b−ηdb
其中
η
\eta
η为学习率,也就是参数沿某个方向变化的步长.
η
\eta
η的选取有若干方法.学习率的设置的目标就是让参数在远的位置变化大,近的位置变化小.
momentum
decay
nesterov
RMSprop
Adagrad
Adadelta
Adam
Adamax
Nadam
偏执bias和方差variance
正则化(regularization)
在线性回归训练中,可以轻松让正确率达到100%,只需要让x数量D大于set集数量N.
但是如果你这样做,必然会导致在测试集准确率远低于训练集准确率,这就是过拟合(over-fitting).
更细致的内容涉及到偏差和方差.
这里列出线性回归训练可以用到的正则化方法.
参数范式惩罚
early stoping
数据预处理(data preprocessing)
在训练得不到提升以及涉及到过拟合时,可以考虑应用下述方法,往往,不需要考虑,先用了再说.