线性模型
线性模型是一类最简单的监督机器学习模型,常用于简单的机器学习任务.
线性回归
拟合一个函数 y = W x + b y = Wx + b y=Wx+b,用于预测一个离散值.其中, W W W和 b b b都是需要拟合求解的系数, x x x为自变量, y y y为因变量.
最小二乘法
一种确定线性回归中 W W W和 b b b的一种方法(规则).
设有 n n n个样本,真实值为 y 1 , y 2 , ⋅ ⋅ ⋅ , y n y_1,y_2,···,y_n y1,y2,⋅⋅⋅,yn,最小二乘法就是要寻找一组系数 W , b W,b W,b,令 y ~ = W x + b \tilde y = Wx + b y~=Wx+b,使得 ∑ i = 1 n ( y ~ i − y i ) 2 \sum_{i=1}^{n}(\tilde y_i - y_i)^2 ∑i=1n(y~i−yi)2最小.
可以通过矩阵求逆的方式得到解析解,也可以通过梯度下降进行迭代求解.
逻辑斯提回归
一种用于二分类的线性回归方法.
逻辑斯提回归输出一个 ( 0 , 1 ) (0,1) (0,1)之间的预测值,表示样本属于正样本的概率,当输出值小于某一阈值时(通常为0.5),则判定为负样本.
对于普通的线性回归而言,其预测值的范围在 ( − ∞ , ∞ ) (-\infty,\infty) (−∞,∞)之间.因此需要借助一个函数将其映射到 ( 0 , 1 ) (0,1) (0,1)之间.即: s i g m o i d sigmoid sigmoid函数.
z
=
W
x
+
b
z = Wx + b
z=Wx+b
y
~
=
s
i
g
m
o
i
d
(
z
)
=
1
1
+
e
x
p
−
z
\tilde y = sigmoid(z) = \frac{1}{1 + exp^{-z} }
y~=sigmoid(z)=1+exp−z1
softmax回归
softmax回归是一种多分类线性回归的方法.
在二分类当中,我们使用一个真实值 p p p,表示样本的分类概率为 p , 1 − p p,1-p p,1−p.
而在多分类中,我们使用 o n e − h o t one-hot one−hot编码对样本进行分类.具体如下:
假设存在三个类别 y 1 , y 2 , y 3 y_1,y_2,y_3 y1,y2,y3,那么就可以使用一个三维向量表示其属于每个类别的概率.例如,对于一个 y 2 y_2 y2样本,其 o n e − h o t one-hot one−hot编码就为 [ 0 , 1 , 0 ] [0,1,0] [0,1,0].
在二分类中,我们使用线性回归预测其属于正样本的概率.
同样地,推广至多分类当中,我们可以用线性回归得到样本属于每个分类的概率,将其记作 [ z 1 , z 2 , z 3 ] [z_1,z_2,z_3] [z1,z2,z3].
由概率论可知, z 1 + z 2 + z 3 = 1 z_1 + z_2 + z_3 = 1 z1+z2+z3=1且 z i > 0 z_i > 0 zi>0,因此我们引入softmax函数,使其达到这一要求.
Y
~
=
(
y
~
1
,
y
~
2
,
y
~
3
)
=
s
o
f
t
m
a
x
(
Z
)
=
1
∑
i
=
1
3
e
x
p
−
z
[
z
1
,
z
2
,
z
3
]
\tilde Y =(\tilde y_1,\tilde y_2,\tilde y_3) = softmax(Z)=\frac{1}{\sum_{i=1}^{3}exp^{-z}}[z_1,z_2,z_3]
Y~=(y~1,y~2,y~3)=softmax(Z)=∑i=13exp−z1[z1,z2,z3]
通过上式,即可得到样本属于每个类别的概率.输出概率最大的结果即可.
为了确定预测值与真实值之间的差距,引入交叉熵进行计算.
设有两个 m m m维的离散概率分布, p = [ p 1 , p 2 , p 3 , ⋅ ⋅ ⋅ , p m ] p = [p_1,p_2,p_3,···,p_m] p=[p1,p2,p3,⋅⋅⋅,pm]和 q = [ q 1 , q 2 , q 3 , ⋅ ⋅ ⋅ , q m ] q = [q_1,q_2,q_3,···,q_m] q=[q1,q2,q3,⋅⋅⋅,qm],其中向量元素均大于零,且每个向量元素之和为1.则 p , q p,q p,q的交叉熵定义为:
H
(
p
,
q
)
=
−
∑
j
=
1
m
p
j
⋅
l
n
q
j
H(p,q) = - \sum_{j=1}^{m}p_j·ln^{q_j}
H(p,q)=−j=1∑mpj⋅lnqj
熵通常表示一个系统的混乱程度.对于交叉熵而言,则是两个向量之间的差异,我们为了让预测值尽可能接近真实值,就要
m
i
n
(
H
(
p
,
q
)
)
min(H(p,q))
min(H(p,q)),优化通常使用梯度下降.
神经网络
全连接神经网络
在线性回归中,我们拟合的是一个简单的线性函数,然而在实际中大多数函数是非线性的,因此借助全连接神经网络函数来进行拟合.
首先引入激活函数,使得函数具有非线性,然后通过各个函数的组合叠加,完成对复杂函数的拟合.
上述关于神经网络的拟合可以参考李宏毅老师的视频,生动直接.李宏毅机器学习P4
梯度下降
梯度下降是机器学习中常用的优化方法.
在机器学习中,我们的目标是最小化损失函数.
以简单的模型为例,假设 L L L表示损失函数, W W W表示拟合的参数.
y ~ = W x , L = ∑ ( y − y ~ ) 2 \tilde y = Wx,L = \sum(y - \tilde y)^2 y~=Wx,L=∑(y−y~)2
对于给定的 x x x而言,显然, L L L是关于 W W W的函数.
因为样本数据是已知的,所以 x x x是给定的,我们的目标是求解 W W W,使得 L L L最小.
在一元函数中,导数是速度上升最快的方向,而在多元函数中,梯度是速度上升最快的方向.
在机器学习中,参数通常有多个,因此需要计算梯度.
如果我们沿着梯度的反方向不断更新 W W W,理论上就可以到达 L L L的最小值点,自然也就求出了对应的 W W W.
通俗的理解是,我们站在群山之中,我们只要沿着最陡的地方往下走,就能到达山脚.
这是理想的情况.在实际中,我们可能会到达局部最小点.因为不同的山之间,他们的山脚海拔也不同.
为了解决这一问题,后续产生了很多梯度下降的进阶方法.
反向传播
反向传播的本质是链式法则.
神经网络的每一层都可以看做一个复合函数,所以神经网络本身也是一个巨大的复合函数.
如果需要梯度下降对参数进行更新,就需要用到反向传播.
以第一层的参数 W 1 W_1 W1为例,如果需要梯度下降,那么就需要损失函数 L L L对第一层的参数 W 1 W_1 W1进行求导.
而 W 1 W_1 W1到损失函数 L L L经过了其它层参数 W 2 , W 3 , ⋅ ⋅ ⋅ W_2,W_3,··· W2,W3,⋅⋅⋅,就需要借助链式法则进行求导,也就是反向传播.
当前的深度学习框架,已经可以直接调用进行方向传播,因此了解过程即可.