具有非常详尽的数学推导过程
概述
定位
比较 | 传统机器学习 | 深度学习 |
---|---|---|
特征 | 人工定义 | 机器生成 |
模型 | 决策树、SVM、贝叶斯等(具有不同数学原理) | 神经网络 |
概率论
联合概率
P
(
X
,
Y
)
=
P
(
X
∣
Y
)
P
(
Y
)
=
P
(
Y
∣
X
)
P
(
X
)
P(X,Y)=P(X|Y)P(Y)=P(Y|X)P(X)
P(X,Y)=P(X∣Y)P(Y)=P(Y∣X)P(X)
=>贝叶斯法则
P
(
X
∣
Y
)
=
P
(
Y
∣
X
)
P
(
X
)
P
(
Y
)
P(X|Y)=\frac{P(Y|X)P(X)}{P(Y)}
P(X∣Y)=P(Y)P(Y∣X)P(X)
均匀分布
p
(
x
)
=
1
U
−
L
p(x)=\frac{1}{U-L}
p(x)=U−L1
正态分布(概率密度函数)
p
(
x
)
=
1
2
π
σ
2
e
x
p
(
−
(
x
−
μ
)
2
2
σ
2
)
p(x)=\frac{1}{\sqrt{2\pi \sigma^2}}exp(-\frac{(x-\mu)^2}{2\sigma^2})
p(x)=2πσ21exp(−2σ2(x−μ)2)
向量
范数 ∣ ∣ a ∣ ∣ 2 = ∑ i = 1 m a i 2 ≥ 0 ||a||_2=\sqrt{\sum_{i=1}^ma_i^2}\ge0 ∣∣a∣∣2=∑i=1mai2≥0 for all a
矩阵
如果可能,此处应当补充关于矩阵的更多知识(超出线性代数课程),如pca主成分分析。详见线性代数、矩阵论。
矩阵特征值和特征向量
A
x
=
λ
x
Ax=\lambda x
Ax=λx
对称性
正定型(特征值均为非负数)
正交矩阵
函数求导
详见微积分
标量、向量、矩阵间的求导运算
标量对标量求导=1
x = ( x 1 x 2 . . . x m ) , ∂ y ∂ x = ( ∂ y ∂ x 1 , ∂ y ∂ x 2 , . . . , ∂ y ∂ x m ) x=\begin{pmatrix} x_1\\ x_2\\ ...\\ x_m \end{pmatrix},\frac{\partial y}{\partial x} =\begin{pmatrix} \frac{\partial y}{\partial x_1}, \frac{\partial y}{\partial x_2}, ..., \frac{\partial y}{\partial x_m} \end{pmatrix} x= x1x2...xm ,∂x∂y=(∂x1∂y,∂x2∂y,...,∂xm∂y)称为分母布局
y
=
(
y
1
y
2
.
.
.
y
m
)
,
∂
y
∂
x
=
(
∂
y
1
∂
x
∂
y
2
∂
x
.
.
.
∂
y
m
∂
x
)
y=\begin{pmatrix} y_1\\ y_2\\ ...\\ y_m \end{pmatrix},\frac{\partial y}{\partial x} =\begin{pmatrix} \frac{\partial y_1}{\partial x}\\ \frac{\partial y_2}{\partial x}\\ ...\\ \frac{\partial y_m}{\partial x} \end{pmatrix}
y=
y1y2...ym
,∂x∂y=
∂x∂y1∂x∂y2...∂x∂ym
称为分子布局
此处有些不清楚,详见矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇)
机器学习基本流程
分为:有监督学习(占大头)、无监督学习、半监督学习、强化学习
k折交叉验证,用于评估算法的准确度:
欠拟合和过拟合:
克服过拟合的方法:权重衰减,平方正则化作为硬/软约束
深度学习框架
学生多用pytorch,企业多用tensorflow,还有百度的paddlepaddle,此外,c++的框架是caffe
DNN 前向(深度)神经网络(感知机)
感知机
给予输入x,权重w,偏置(bias)b,感知机输出:
o
=
σ
(
w
⋅
x
+
b
)
o=\sigma(w·x+b)
o=σ(w⋅x+b),其中wx是向量点积,
σ
(
x
)
\sigma (x)
σ(x)是激活函数。
最早的感知器非常简单,由Rosenblatt在1957年提出,只有两层神经元,只能对线性数据进行分辨。这还曾经导致人们对神经网络的计算能力产生了严重的怀疑,很大程度上阻碍了神经网络研究的发展。
损失函数(loss):
l
(
y
,
x
,
w
)
=
m
a
x
(
0
,
−
y
w
⋅
x
)
l(y,x,w)=max(0,-yw·x)
l(y,x,w)=max(0,−yw⋅x)其中y是真实label,为使损失函数最小,使用梯度下降算法(柯西,1860)
伪代码:
多层感知机MLP构成前向神经网络(全连接):
单隐含层二分类
单隐含层多分类
多隐含层多分类
多层感知器具有对线性不可分数据进行辨识的能力
激活函数
作用
1.完成数据的非线性变换,解决线性模型的表达、分类能力不足的问题,而且如果网络中全是线性变换,那么可以通过数学推导转化为一层,失去了深度的含义;
2.执行数据的归一化,将输入数据映射到某个范围内,再往下传递,这样做的好处是可以限制数据的扩张,防止数据过大导致的溢出风险
激活函数的性质:
1.计算简单(频繁)
2.输出范围有限,如
∈
[
0
,
1
]
或
[
−
1
,
1
]
\in [0,1]或[-1,1]
∈[0,1]或[−1,1]
3.非线性
4.单调性(保持梯度方向的稳定)
5.几乎处处可微(用于梯度下降算法的求导)
举例:
1.sigmoid函数
s
i
g
m
o
i
d
(
x
)
=
1
1
+
e
−
x
sigmoid(x)=\frac{1}{1+e^{-x}}
sigmoid(x)=1+e−x1
s
i
g
m
o
i
d
′
(
x
)
=
s
i
g
m
o
i
d
(
x
)
(
1
−
s
i
g
m
o
i
d
(
x
)
)
sigmoid'(x)=sigmoid(x)(1-sigmoid(x))
sigmoid′(x)=sigmoid(x)(1−sigmoid(x))
缺点:幂运算相对耗时;函数具有饱和性。在反向传播时容易出现梯度消失的情况,从而无法完成深层网络的训练;收敛缓慢
2.双曲正切函数
t
a
n
h
(
x
)
=
1
−
e
−
2
x
1
+
e
−
2
x
tanh(x)=\frac{1-e^{-2x}}{1+e^{-2x}}
tanh(x)=1+e−2x1−e−2x
t
a
n
h
′
(
x
)
=
1
−
t
a
n
h
2
(
x
)
tanh'(x)=1-tanh^2(x)
tanh′(x)=1−tanh2(x)
特点:和 Sigmoid 函数的曲线相近;在输入很大或是很小的时候,输出都几乎平滑;整个函数以 0 为中心;计算量大
3.线性修正函数(ReLU)
R
e
L
U
(
x
)
=
m
a
x
(
x
,
0
)
ReLU(x)=max(x,0)
ReLU(x)=max(x,0)
f
′
(
x
)
=
1
,
x
>
0
f'(x)=1,x>0
f′(x)=1,x>0
特点:仿生物学;解决梯度消失问题;计算比较简单
4.阶跃函数
s
t
e
p
(
x
)
=
{
1
,
x
>
0
0
,
x
<
0
step(x)=\left\{\begin{matrix} 1,x>0 \\ 0,x<0 \end{matrix}\right.
step(x)={1,x>00,x<0
5.带泄露线性整流函数 (Leaky ReLU)
是 ReLU 函数的变体,输入值为负时梯度为一个常数
6.ELU 函数
E
L
U
(
x
)
=
{
x
,
x
>
0
α
(
e
x
−
1
)
,
x
<
=
0
ELU(x)=\left\{\begin{matrix} x,x>0 \\ \alpha(e^x-1),x<=0 \end{matrix}\right.
ELU(x)={x,x>0α(ex−1),x<=0
E
L
U
′
(
x
)
=
{
1
,
x
>
0
E
L
U
(
x
)
+
α
,
x
<
=
0
ELU'(x)=\left\{\begin{matrix} 1,x>0 \\ ELU(x)+\alpha,x<=0 \end{matrix}\right.
ELU′(x)={1,x>0ELU(x)+α,x<=0
7.SoftPlus 函数
ReLU 函数的平滑版,,值域为 (0, +∞)。运算量比较大,收敛速度比 ReLU 要慢很多
f
(
x
)
=
l
n
(
e
x
+
1
)
f(x)=ln(e^x+1)
f(x)=ln(ex+1)
f
′
(
x
)
=
1
e
x
+
1
f'(x)=\frac{1}{e^x+1}
f′(x)=ex+11
梯度下降算法
用于求函数的局部最小值