神经网络

1. 定义

神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真是世界物体做出的交互反应。[Kohoene.T(1988).“An introduction to neural computing” Neural Networks,1(1):3-16]

在生物神经网络中,每个神经元与其他神经元与其他神经元相连接,当它“兴奋”时,会向相连接的神经元发送化学物质,改变这些神经元的电位。如果某个神经元的电位超过了一个阈值(threshold),它就会被激活(“兴奋”起来),继续向其他神经元发送化学物质。

1943年,McCulloch和Pitts将上述情形抽象为M-P神经元模型:神经元接受其他n nn个神经元的输入信号,这些输入信号通过带权重的连接进行传递,将总输入与阈值进行比较,然后通过激活函数(activation function)处理后产生神经元的输出。

人工神经网络(ANN, Artificial Neural Network) 是机器学习的一个庞大的分支,有几百种不同的算法(其中深度学习就是其中的一类算法),可用于分类(预测给定元组类标号)和数值预测(预测连续值输出)。

人工神经网络由一组连接的输入/输出单元组成,每个连接都与一个权重相关联,本质是一种特殊的有向图。

  • 优点:
    • 对噪声数据具有高承受能力
    • 对未经训练的数据的模式分类能力
    • 训练算法相对简单,易于并行实现
  • 缺点:
    • 计算量大,训练时间长
    • 可解释性差

2. 多层前馈神经网络

多层前馈(Multilayer feed-forward)神经网络由一个输入层、一个或多个隐藏层和一个输出层组成。

每个输出单元取前一次单元的加权和作为输入,应用一个非线性(激活)函数作用于加权和输入。规定神经元函数只能对输入变量(指向它的节点的值)线性组合后的结果进行一次非线性变换。

  • 网络是前馈的,其权重都不回送至输入单元
  • 网络是全连接的,每个单元都向下一层的每个单元提供输入
  • 同一层单元之间没有弧相互连接,且每一个单元不能越过下一层连接到下下层的单元

3. 激活函数

在人工神经网络中,需要设计的部分有两个:

  • 网络结构:输入的单元数、隐藏层数、每个隐藏层的单元数、输出层的单元数
  • 激活函数:常用的函数是指数函数,这时它的模式分类能力等价于最大熵模型

[Hornik et al., 1989] 证明,只需一个包含足够多神经元的隐藏层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。然而,如何设置隐藏层神经元的数量仍是个未决问题,实际应用常用“试错法”(trial-by-error)调整。

常用激活函数

4. 反向传播算法

神经网络的学习过程,就是根据训练数据调整神经元之间连接权重(connection weight)以及每个神经元的阈值(偏倚)。即神经网络学到的东西,蕴含着连接权重与阈值中。

反向传播算法(error BackPropagation,简称BP)目标是最小化训练数据的累积误差。

BP算法通过迭代地处理训练数据,把每个训练样本的预测值与已知的目标值比较,并基于gradient descent策略,以目标负梯度的方向来搜索权重集合,这些权重拟合训练数据,使样本的预测值与已知目标值之间的均方距离最小。