1. 神经元模型
神经网络
:具有适应性的 简单单元(神经元)组成的广泛并行互连的网络,其组织能够模拟生物神经系统对真实世界物体作出的交互反应
M-P神经元模型
:每个神经元与其他神经元相连。当神经元接收到来自 n 个其他神经元传递过来的 输入信号 ,信号通过 带权重的连接 进行传递,神经元接收到的总输入值与神经元的 阈值 进行比较,通过 激活函数 处理神经元输出
a 为理想激活函数。将输入值映射为输出值 0 或 1,0 对应神经元抑制,1 对应兴奋。
阶路函数不连续、不光滑,因此常用 Sigmoid 函数 作为激活函数。
b 为典型的 Sigmoid 函数,把可能在较大范围内变化的输入值挤压到(0,1)输出范围内,因此也称为 挤压函数
将许多个这样的神经元按一定层次结构连接,得到神经网络
2. 感知机与多层网络
感知机 (Perceptron)
:也称 阈值逻辑单元 (threshold logic unit)
。由两层神经元组成。输入层接收外界输入信号后传递给输出层,输出层是 M-P神经元
x1,x2 可能是上一层神经元传递过来的,也可能是从数据集中获取的。取值范围为 0到1。由 Sigmoid 函数可知
y = 1 ← Σ i w i x i − θ ≥ 0 y = 0 ← Σ i w i x i − θ ≤ 0 y = 1 \leftarrow \Sigma_iw_ix_i-\theta \geq 0 \newline y = 0 \leftarrow \Sigma_iw_ix_i-\theta \leq 0 y=1←Σiwixi−θ≥0y=0←Σiwixi−θ≤0
线性可分问题:
非线性可分问题:
使用多层功能神经元,中间层称为隐层(隐含层)
。隐含层与输出层神经元都是拥有激活函数的功能神经元
多层前馈神经网络 (multi-layer feedforward neural networks)
。常见神经网络的层级结构。每层神经元与下一层神经元全互连,同层级之间神经元不存在连接,也不跨层连接
输出层神经元
:接收外界输入
隐层与输出层神经元
:处理加工信号
输出层神经元
:输出结果
神经网络的学习过程,就是根据训练数据调整神经元之间的连接权(connection weight)
,经及每个功能神经元的阈值
3. 误差逆传播算法(BP)
多层网络的学习能力比单层感知机强。要训练多层网络,需要更强大的学习算法。
误差逆传播算法(error BackPropagation,BP)
:用于多层前馈神经网络训练(BP网络通常指),也可用于例如递归神经网络。
数学流程
E k E_k Ek 要剩 1 2 \frac{1}{2} 21 是为了后面方便求导
感知机学习算法的权重 Δ w i \Delta w_i Δwi 与 BP算法不同。
权重更新的方向 是 损失函数梯度的负方向,可以 最小化损失。在多层神经网络中,误差的传播需要使用 链式法则 来计算每个权重对最终输出误差的贡献。这涉及到对损失函数进行求导,得到每个权重的梯度。通过使用损失函数的梯度,BP算法可以更好地 泛化到未见过的数据 上,因为它 考虑了整个训练集的误差,而不仅仅是单个样本的误差。在 多层网络中,误差不是线性可分的,非线性激活函数的使用使得直接使用误差更新权重不适用。
通常学习率设为 0.1
BP 算法工作流程
累积BP算法 与 标准BP算法
:标准 BP 针对单个样例
E
k
E_k
Ek 推导。累积 BP 先读取整个训练集一遍再对参数更新。
累积 BP 更新频率低,但很多任务累积误差达到一定程度后再进步会很慢。标准 BP 更新频率高,但不同样例
E
k
E_k
Ek之间可能出现更新效果相互抵消的情况
万能近似定理
(universal approximation theorem) (Hornik et al., 1989;Cybenko, 1989) 证明,只需要一个包含足够多神经元隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。但是隐层的个数未明确得出,通常只能试错调整
由于 BP 算法太过强大,因此经常导致过拟合。训练误差持续降低,测试误差却可能上升。
通常用 早停 或 正则化 缓解过拟合
早停(early stopping)
:将数据分成 训练集 和 验证集。用验证集估计训练。若训练集误差降低但验证集误差升高,则停止训练,返回最小验证集误差的连接权的阈值
正则化(regularization)
:
4. 全局最小与局部极小
E E E 表示神经网络在训练集上的误差,是关于连接权 w w w 和 阈值 θ \theta θ 的函数。神经网络的训练可看作参数寻优过程。
两种最优:局部极小,全局最小
我们要找的是全局最小。基于梯度的搜索,从某些初始解出发,迭代找局部极小。每次迭代都沿负梯度方向搜索找最优解。若误差函数只有一个局部极小,则局部极小为全局最小;若误差函数有多个局部极小,不能保证找到的解是全局最小。
通常用以下策略试图找到全局最小:
- 多组不同参数值初始化多个神经网络,取误差最小的解作为最终参数,从中进行选择
- 模拟退火。以一定的概率接受比当前解更差的 “次优解”。站在初始条件找另一组解。若新解比当前解更优,选择新解。若新解比当前解更差,温度高时,以一定概率接受更差的解。随时间推移,搜索范围变窄,减少接受更差解的概率。最终找到全局最优更近似最优解。模拟退火找到的不一定是全局最优,只是多次尝试增加了找到更优解的概率
- 随机梯度下降。计算梯度时加入随机因素,即使陷入局部极小点,计算出的梯度仍可能不为零,有机会跳出局部极小继续搜索
上述方式理论上尚缺乏保障
5. 其他常见神经网络
神经网络模型算法繁多,以下为常见的几种
作为了解,原文并未解释太多
- 径向基函数网络,RBF
- 竞争型学习,ART
- 自组织映射,SOM
- 级联相差网络
- Elman 网络
- Boltzmann 机
6. 深度学习
理论上,参数越多,模型复杂度越高,容量越大,能完成更复杂的学习任务。但复杂模型的训练效率低,容易过拟合
深度学习
,用大量数据降低过拟合的风险,云计算计算能力的大幅提高缓解训练低效
典型深度学习模型
:增加隐层数目。增加隐层数目比增加隐层神经元数目更有效。因为神经元连接权、阈值等参数会更多,还会增加激活函数嵌套的层数。但是多隐层神经网络难以直接用经典算法进行训练。因为误差在多隐层逆传播时,往往会发散,而不能收敛到稳定状态
无监督逐层训练(unsupervised layer-wise training)
:预训练:每训练一层隐结点,将上一层隐结点的输出作为输入,本层输出作为下一层输入,也可用于重构上一层的输出。微调:通常使用监督学习对整个网络微调。例如:深度信念网络 DBN
权共享(weight sharing)
:让一组神经元使用相同的连接权
以卷积神经网络 CNN 为例:
总结深度学习就是把关联不密切的输入的数据逐层提取特征转化为关联更密切的输出目标