Skip to content

神经网络

神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

M-P神经元模型

  • 输入:自其他n个神经云传递过来的输入信号
  • 处理:输入信号通过带权重的连接进行传递, 神经元接受到总输入值将与神经元的阈值进行比较
  • 输出:通过激活函数的处理以得到输出

alt text

  • 激活函数:理想激活函数是阶跃函数,0表示神经元抑制,1表示激活。
  • 阶跃函数具有不连续、不光滑等性质(广义导数可看做狄拉克 \(\delta\) 函数),常用Sigmoid函数

感知机与多层网络

感知机

  • 定义:感知机由两层神经元组成,输入层接受外界输入信号传递给输出层,输出层是M-P神经元(阈值逻辑单元)

求解与或非问题:

alt text

  • 能力:若两类模式线性可分, 则感知机的学习过程一定会收 敛;否则感知机的学习过程将会发生震荡;单层感知机只能解决线性可分问题

多层前馈神经网络

  • 定义:每层神经元与下一层神经元全互联, 神经元之间不存在同层连接也不存在跨层连接
  • 前馈:输入层接受外界输入, 隐含层与输出层神经元对信号进行加工, 最终结果由输出层神经元输出
  • 学习:根据训练数据来调整神经元之间的“连接权”以及每个功能神经元的“阈值”
  • 多层网络:包含隐层的网络

alt text

误差逆传播算法(Error BackPropagation)⭐

是多层前馈神经网络的学习算法

  • 给定训练集 \(D={(x_i,y)i}, x_i\in R^d, y_i\in R^l,(i=1,...,m)\),即输入示例由d个属性描述,输出l维实值向量。
  • 给定一个拥有d个输入神经元,l个输出神经元,q个隐层神经元的多层前馈神经网络结构
  • 记号:
    • \(\theta_j\):输出层第j个神经元阈值
    • \(\gamma_h\):隐含层第h个神经元阈值
    • \(v_{ih}\):输入层与隐层神经元间的连接权重
    • \(w_{hj}\):隐层与输出层神经元间的连接权重

alt text

对于样例 \((x_k,y_k)\),假设网络实际输出为 \(\hat{y_k}\)

  • 向前计算:
    1. \(b_h=f(\alpha_h-\gamma_h), \alpha_h=\Sigma_{i=1}^d v_{ih}x_i\)
    2. \(\hat{y}_j^k=f(\beta_j-\theta_j), \beta_j=\Sigma_{h=1}^{q}w_{hj}b_h\)
    3. \(E_k=\frac{1}{2}\Sigma_{j=1}^l(\hat{y}_j^k-y_j^k)^2\)
  • 参数数目:权重 \(v_{ih},w_{hj}\) 阈值:\(\theta_j, \gamma_h(i=1,\dots,d,h=1,\dots,q,j=1,\dots,l)\), 所以网络中需要优化 \((d+l+1)q+l\) 个参数
  • 参数优化:BP是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,任意的参数v的更新估计式为 \(v\leftarrow v+\Delta v\)

BP学习算法

BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整,对误差 \(E_k\) ,给定学习率 \(\eta\)

\[ \Delta w_{hj}=-\eta \frac{\partial E_k}{\partial w_{hj}} \]
\[ \frac{\partial E_k}{\partial w_{hj}}=\frac{\partial E_k}{\partial \hat{y}_j^k} \frac{\partial \hat{y}_j^k}{\partial \beta_j} \frac{\partial \beta_j}{\partial w_{hj}} \]
\[\frac{\partial \beta_j}{\partial w_{hj}}=b_h\]

\[ g_i=-\frac{\partial E_k}{\partial \hat{y}_j^k} \frac{\partial \hat{y}_j^k}{\partial \beta_j} \]
\[=-(\hat{y}_j^k-y_j^k)f'(\beta_j -\theta_j)\]
\[=\hat{y}_j^k(1-\hat{y}_j^k)(y_j^k-\hat{y}_j^k)\]

最后一个等号是由于激活函数f选取Sigmoid函数,\(f\(x)=f(x)(1-f(x))\)

所以,

\[\Delta w_{hj}=\eta g_j b_h\]

类似地,可推导出

\[\Delta \theta_j = -\eta g_j\]
\[\Delta v_{ih} = \eta e_h x_i\]
\[\Delta \gamma_h = -\eta e_h\]

其中,

\[e_h=-\frac{\partial E_k}{\partial b_h}\frac{\partial b_h}{\partial \alpha_h}\]
\[=-\Sigma_{j=1}^l \frac{\partial E_k}{\partial \beta_j} \frac{\partial \beta_j}{\partial b_h}f'(\alpha_h-\gamma_h) \]
\[=\Sigam_{j=1}^l w_{hj}g_j f'(\alpha_h-\gamma_h)\]
\[b_n(1-b_n)\Sigma_{j=1}^l w_{hj}g_j\]
  • 多层前馈网络表示能力:只需一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数

  • 多层前馈网络局限:由于其强大的表示能力, BP 神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升

    • 缓解过拟合:
      1. 早停:训练过程中,若训练误差降低但验证误差升高,则停止训练
      2. 正则化:在误差目标函数中增加一项描述网络复杂度的部分,例如连接权值与阈值的平方和(加入后训练过程将会偏好比较小的连接权和阈值,使网络输出更加"光滑)

全局最小与局部最小

如何跳出局部最小

  • 以多组不同参数值初始化多个神经网络 按标准方法训练后,取其中误差 小的解作为最终参数 .这相当于从多个不同的初始点开始搜索, 这样就 可能陷入不同的局部极小从中进行选择有可能获得更接近全局最小的 结果
  • 模拟退火(simulated annealing):每一步都以一定的概率接受比当前解更差的结果,从而有助于"跳出"局部极小 在每步迭代过程中,接受"次优解"的概率要随着时间的推移而逐渐降低从而保证算法稳定。
  • 随机梯度下降:与标准梯度下降法精确计算梯度不同, 随机梯度下降 法在计算梯度时加入了随机因素.即便陷入局部极小点,它计算出的梯度仍可能不为零这样就有机会跳出局部极小继续搜索

其他常见神经网络

  • RBF(Radial Basis Function)网络:一种单隐藏前馈神经网络,使用径向基函数作为隐层激活函数
  • ART网络:一种竞争型学习网络。竞争型学习是神经网络中一种常用的无监督学习策略 在使用该策略时,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制。
  • 性能依赖于识别阈值,较好解决了竞争学习中的“可塑性-稳定性窘境”
  • SOM网络(Self-Organizing Map)自组织映射:竞争学习型的无监督神经网络,能将高维输入数据映射到低维空间
  • Elman网络:递归神经网络RNN,允许网络中出现环形结构, 使得神经元的输出反馈回来作为输入信号

深度学习

典型的深度学习模型:很深层的神经网络

复杂模型训练方法

预训练+微调

  • 预训练:无监督逐层训练(unsupervised layer-wise training) 是多隐层网络训练的有效手段,其基本思想是每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,而本层隐结点的输出作为下一层隐结点的输入
  • 微调:一般使用BP算法
  • 预训练+微调的做法可以视为将大量参数分组,对每组先找到局部看起来比较好的设置,然后基于这些局部较优的结果联合起来进行全局寻优

权共享

  • 让一组神经元使用相同的连接权值,在卷积神经网络中发挥重要作用

卷积神经网络

Comments