具有非常详尽的数学推导过程
概述
定位
比较 | 传统机器学习 | 深度学习 |
---|---|---|
特征 | 人工定义 | 机器生成 |
模型 | 决策树、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
梯度下降算法
用于求函数的局部最小值