5 神经网络
本文根据西瓜书内容整理而成,并参考了以下资料: Datawhale南瓜书https://www.datawhale.cn/learn/content/2/67
5.1 神经元模型
定义: 神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应
M-P神经元模型:神经元兴奋时会导致电位差传给其他神经元,当一个神经元的电位超过了阈值的话就会兴奋,向其他神经元发送化学物质。根据这个想法抽象成了“M-P神经元模型”。
Remark: 为了避免不连续函数带来的问题,我们的激活函数,类似地,也是选择sigmoid函数$$sigmoid(x) = \frac{1}{1+e^{-x}}$$
5.2 感知机与多层网络
感知机:由两层神经元组成,是“阈值逻辑单元”
感知机可以很容易地实现逻辑中的与,或,非运算
- “与” \((x_1 \land x_2)\):令 \(w_1 = w_2 = 1\),\(\theta = 2\),则 \(y = f\left(1 \cdot x_1 + 1 \cdot x_2 - 2\right)\),仅在 \(x_1 = x_2 = 1\) 时,\(y = 1\);
- “或” \((x_1 \lor x_2)\):令 \(w_1 = w_2 = 1\),\(\theta = 0.5\),则 \(y = f\left(1 \cdot x_1 + 1 \cdot x_2 - 0.5\right)\),当 \(x_1 = 1\) 或 \(x_2 = 1\) 时,\(y = 1\);
- “非” \((\neg x_1)\):令 \(w_1 = -0.6\),\(w_2 = 0\),\(\theta = -0.5\),则 \(y = f\left(-0.6 \cdot x_1 + 0 \cdot x_2 + 0.5\right)\),当 \(x_1 = 1\) 时,\(y = 0\);当 \(x_1 = 0\) 时,\(y = 1\)。
从中我们可以明白,其实我们就是在寻找一个最佳的\(w\)与\(\theta\),我们的参数选择的目标是:使得误分类样本尽量少
损失函数: 用数学语言来描述误分类程度$$L(w,\theta)=\sum_{x\in M}(\hat{y}-y)(w^T x- \theta)$$
感知机学习算法:$$\min_{w.\theta}L(w,\theta)$$
根据最优化理论,使用随机梯度下降法,得到迭代更新公式:
上述感知机学习算法只考虑两层神经元,解决的问题只是线性可分问题,对于非线性可分问题,我们使用多层功能神经元,输入层与输出层之间还有一层神经元,这层神经元叫做隐含层。
5.3 误差逆传播算法
多层网络的优化算法变得复杂起来,误差逆传播算法就是解决这一问题的一个优秀算法
对训练例 \((\boldsymbol{x}_k, \boldsymbol{y}_k)\),假定神经网络的输出为 \(\hat{\boldsymbol{y}}_k = (\hat{y}_1^k, \hat{y}_2^k, \dots, \hat{y}_l^k)\),即
网络在 \((\boldsymbol{x}_k, \boldsymbol{y}_k)\) 上的均方误差为
参数\(v\)的更新方式$$v \leftarrow v + \Delta v$$
对于误差,根据最优化理论,有$$\Delta w_{hj} = -\eta \frac{\partial E_k}{\partial w_{hj}}$$
注意到 \(w_{hj}\) 先影响到第 \(j\) 个输出层神经元的输入值 \(\beta_j\),再影响到其输出值 \(\hat{y}_j^k\),然后影响到 \(E_k\),类似链式法则,有
因为\(\beta_j=\sum b_hw_{hj}\) , 所以导数就是各个部分的权重 $$\frac{\partial \beta_j}{\partial w_{hj}} = b_h$$ 而我们的Sigmoid 函数有一个很好的性质: $$f'(x) = f(x) \left( 1 - f(x) \right) $$化简剩下的部分,有
全部带回,得到了 BP 算法中关于 \(w_{hj}\) 的更新公式
类似可得
其中
算法的整体流程如下:
对训练集里面的一个样本点
- 根据当前参数计算出当前样本的输出\(\hat{y}_k\)
- 开始算输出层神经元梯度项\(g_j\)
- 计算隐层神经元的梯度项\(e_h\)
- 更新参数\(w\)与\(v\)
- 计算阈值\(\theta\)与\(\gamma\)
不断循环直到达到阈值
标准BP算法:上面介绍的是针对一个样本点的训练方法,这种就叫做标准BP算法
累计BP算法:针对训练集D上的累计误差来进行最小化$$E=\frac{1}{m}\sum_{k=1}^mE_k$$
Remark:
- 标准BP算法容易出现频繁抵消问题
- 累积算法小到一定程度之后,下降速度会变得十分缓慢
BP神经网络容易出现过拟合现象,训练集误差下降但是测试集误差上升
解决策略:
- 早停:训练集误差降低但验证机误差升高时就停止训练
- 正则化:添加一个描述网络复杂度的部分,例如$$E=\lambda\frac{1}{m}\sum_{k=1}^{m}E_k+(1-\lambda)\sum_i w_i^2$$
5.4 全局最小与局部极小
有一些常用的跳出局部最小值以找到全局最小值的方法:
- 多个不同初始点(多组不同参数值)
- 模拟退火(以一定概率接受比当前解更差的结果)
- 随机梯度下降
Remark:这些技术大多都是启发式,理论上尚缺乏保障

浙公网安备 33010602011771号