神经网络基础篇

1.1 神经网络的前向传播

$W^{1} = \begin{bmatrix}w_{11}^{1} & w_{21}^{1}\\w_{12}^{1} & w_{22}^{1}\\w_{13}^{1}& w_{23}^{1}\end{bmatrix}，W^{2} = \begin{bmatrix}w_{11}^{2} & w_{21}^{2} & w_{31}^{2}\\w_{12}^{2} & w_{22}^{2} & w_{32}^{2}\end{bmatrix}，W^{3}=[w_{11}^{3}, w_{21}^{3}]$

$Z^{1} = \begin{bmatrix}z_{1}^{1}\\z_{2}^{1}\\z_{3}^{1} \end{bmatrix} = \begin{bmatrix}w_{11}^{1} & w_{21}^{1}\\w_{12}^{1} & w_{22}^{1}\\w_{13}^{1}& w_{23}^{1}\end{bmatrix} \begin{bmatrix}x_{1}\\x_{2} \end{bmatrix} = \begin{bmatrix}z_{1}^{1} \\ z_{2}^{1} \\ z_{3}^{1}\end{bmatrix} = W^{1}X，Z^{2} = W^{2}Z^{1}，y_{out} = W^{3}Z^{2}$

$W^{k+1} = W^{k} - \alpha \nabla L(w)$

1.2 神经网络的反向求导

$y_{out} \sim (w_{11}^3 w_{11}^2 + w_{21}^3 w_{12}^2 ) w_{11}^1 x_{1}, \dfrac{\partial y_{out}}{\partial w_{11}^1} = (w_{11}^3 w_{11}^2 + w_{21}^3 w_{12}^2 )x_{1} ;\quad y_{out} \sim (w_{11}^3 w_{11}^2 + w_{21}^3 w_{12}^2 ) w_{21}^1 x_{2}, \dfrac{\partial y_{out}}{\partial w_{21}^1} = (w_{11}^3 w_{11}^2 + w_{21}^3 w_{12}^2 )x_{2} \\ y_{out} \sim (w_{11}^3 w_{21}^2 + w_{21}^3 w_{22}^2 ) w_{12}^1 x_{1}, \dfrac{\partial y_{out}}{\partial w_{12}^1} = (w_{11}^3 w_{21}^2 + w_{21}^3 w_{22}^2 )x_{1}; \quad y_{out} \sim (w_{11}^3 w_{21}^2 + w_{21}^3 w_{22}^2 ) w_{22}^1 x_{1}, \dfrac{\partial y_{out}}{\partial w_{22}^1} = (w_{11}^3 w_{21}^2 + w_{21}^3 w_{22}^2 )x_{2} \\ y_{out} \sim (w_{11}^3 w_{31}^2 + w_{21}^3 w_{32}^2 ) w_{13}^1 x_{1}, \dfrac{\partial y_{out}}{\partial w_{13}^1} = (w_{11}^3 w_{31}^2 + w_{21}^3 w_{32}^2 )x_{1}; \quad y_{out} \sim (w_{11}^3 w_{31}^2 + w_{21}^3 w_{32}^2 ) w_{23}^1 x_{2}, \dfrac{\partial y_{out}}{\partial w_{23}^1} = (w_{11}^3 w_{31}^2 + w_{21}^3 w_{32}^2 )x_{2}$

$\dfrac{\partial L}{\partial W^{1}} = \begin{bmatrix}\dfrac{\partial y_{out}}{\partial w_{11}^{1}}&\dfrac{\partial y_{out}}{\partial w_{21}^1}\\ \dfrac{\partial y_{out}}{\partial w_{12}^1}&\dfrac{\partial y_{out}}{\partial w_{22}^1} \\ \dfrac{\partial y_{out}}{\partial w_{13}^1}& \dfrac{\partial y_{out}}{\partial w_{23}^1}\end{bmatrix} = (\begin{bmatrix}w_{11}^3 w_{11}^2 + w_{21}^3 w_{12}^2& w_{11}^3 w_{21}^2 + w_{21}^3 w_{22}^2& w_{11}^3 w_{21}^2 + w_{21}^3 w_{32}^2 \end{bmatrix} \odot \begin{bmatrix}x_{1}\\x_{2} \end{bmatrix})^{T} = (W^{3}W^{2} \odot X)^{T}$

1.3 激活函数

1.3.1 sigmoid 激活函数

$f(x)=\frac{1}{1+e^{-x}}$

1. 当输入值大于3或者小于-3时，梯度就非常接近0了，在深层网络中，这非常容易造成“梯度消失”（也就是反向传播时误差难以传递到前面一层）而使得网络很难训练。
2. 其解析式中含有幂运算，计算机求解时相对来讲比较耗时。

1.3.2 Softmax 激活函数

Softmax 又称归一化指数函数， 适用于只有一个正确答案多类别分类问题（例如手写数字）。构建分类器，解决只有唯一正确答案的问题时，用Softmax函数处理各个原始输出值。

$softmax(x_{i}) = \dfrac{e^{x_{i}}}{\sum_{j=1}^{n}e^{x_{j}}}$

Softmax函数是二分类函数Sigmoid在多分类上的推广，目的是将多分类的结果以概率的形式展现出来。直白来说就是将原来的输出映射成为 (0,1) 的值，而这些值的累和为1（满足概率的性质），我们就可以选取概率最大（也就是值对应最大的）结点，作为我们的预测目标。

1.3.3 tanh函数

$f(x)=\tanh (x)=\frac{2}{1+e^{-2 x}}-1=2 \operatorname{sigmoid}(2 x)-1 \quad \tanh x=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}$

1.3.4 ReLu函数

ReLu函数是当前最常用的一个激活函数，尤其是在卷积神经网络和层次较深的神经网络中。

$\text { Relu }=\max (0, x)$

2. 计算速度非常快，只需要判断输入是否大于0，不含数学运算
3. 收敛速度远快于 sigmoid 和 tanh

1.3.5 Leaky ReLu

$f(x)=\max (0.01 x, x) \quad f\left(y_{i}\right)=\left\{\begin{array}{rlr} y_{i} & i f, & y_{i}>0 \\ 0.01 * y_{i} & \text { if, } & y_{i} \leq 0 \end{array}\right.$

$x<=0$ 部分调整为 $f(x)=αx$, 其中 $α$ 一般设为一个较小的正数如 0.01 或 0.001。

1.4 损失函数

1.4.1 L1 和 L2 损失函数

$M A E=\frac{\sum_{n=1}^{n}\left|f\left(x_{i}\right)-y_{i}\right|}{n}$

$M S E=\frac{\sum_{i=1}^{n}\left(f_{x_{i}}-y_{i}\right)^{2}}{n}$

1.4.2 交叉熵（Cross Entropy）损失函数

$L = -[ylog(y_{out})+(1-y)log(1-y_{out})]$

1. $y=0$ 时，$L=-log(1-y_{out})$，要保证 $L$ 最小，那么 $y_{out}$ 必须为0；
2. $y=1$ 时，$L=-log(y_{out})$，要保证 $L$ 最小，那么 $y_{out}$ 必须为1。

1.4.3 不同分类问题的损失函数选择

1. 二分类 Sigmoid函数 二分类交叉熵损失函数（binary_crossentropy）
2. 多分类 Softmax函数 多类别交叉熵损失函数（categorical_crossentropy）
3. 多标签分类 Sigmoid函数 二分类交叉熵损失函数（binary_crossentropy）

1.5 优化算法

1.5.1 一阶方法

1. SGD：在每轮迭代中，随机优化某一条训练数据上的损失函数。由于单个样本并不能代表全体样本的趋势，造成损失函数严重震荡，影响准确性。后来改进为批量梯度下降。
2. Momentum：更新的时候在一定程度上保留之前更新的方向，同时利用当前batch的梯度微调最终的更新方向，使算法具有一定的摆脱局部最优解的能力。

1.5.2 二阶方法

1. 牛顿法：目标函数必须具有连续的一、二阶偏导数，海海森矩阵必须正定，且计算量大，每次迭代都要计算海森矩阵和它的逆矩阵。
2. 拟牛顿法：不⽤⼆阶偏导数而构造出可以近似海森矩阵或者海森矩阵的逆的正定对称阵，在拟⽜顿的条件下优化目标函数。不同的构造⽅法就产生了不同的拟牛顿法。

1.6 过拟合

$W_{m\times n}X_{n\times 1} = Y_{m\times 1}$

1. 翻转，旋转，缩方，平移；
2. 上下采样，图像融合，平移等。

1. 减少模型复杂度，使用更小的网络；
2. 在loss中添加正则化项，使部分权重为0，缩小解空间，从而减少求出过拟合解的可能性；
3. 采取 dropout，随机失活部分权重；
4. 添加 batch normalization 层；
5. 使用 PCA 等方法对特征进行降维。

1.7 梯度爆炸与梯度消失

1.7.3 梯度爆炸与梯度消失的解决方案

1. 用ReLU、Leaky-ReLU、P-ReLU、R-ReLU、Maxout等替代sigmoid函数；
2. 用Batch Normalization；
3. 预训练+微调；
4. 使用残差网络。
posted @ 2021-08-30 14:43  ZhiboZhao  阅读(292)  评论(0编辑  收藏  举报