前言
神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应”.我们在机器学习中谈论神经网络时指的是“神经网络学习”,或者说,是机器学习与神经网络这两个学科领域的衣叉部分。
文章目录
- 前言
- 1. 神经元模型
- 2. 感知机与多层网络
- 2.1感知机
- 2.2 多层神经网络
- 3. 误差逆传播算法
- 4. 全局最小与局部极小
- 5. 其他常见神经网络
- 5.1 RBF网络
- 5.2 ART网络
- 5.3 SOM 网络
- 5.4 级联相关网络
- 5.5 Elman网络
1. 神经元模型
神经网络中最基本的成分是 神经元(neuron)模型,即上述定义中的“简单单元”。在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”(threshold), 那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。
1943年,将上还情形抽象为下图所示的简单模型,这就是一直沿用至今的 “M-P神经元模型”。在这个模型中,神经元接收到来自 n 个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”(activation function) 处理以产生神经元的输出。
最理想的激活函数是 阶跃函数,但它不连续。它将输入值映射为输出值"0" 或"1",显然"1" 对应于神经元兴奋, “0” 对应于神经元抑制。然而,阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数。
它把可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,因此有时也称为 “挤压函数”(squashing function).
把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。
事实上,从计算机科学的角度看,我们可以先不考虑神经网络是否真的模拟了生物神经网络,只需将一个神经网络视为包含了许多参数的数学模型,这个模型是若千个函数,例如 y j = f ( ∑ i w i x i − θ i ) y_j = f(\sum_iw_ix_i - \theta_i) yj=f(∑iwixi−θi) 相互(嵌套)代入而得。有效的神经网络学习算法大多以数学证明为支撑.
2. 感知机与多层网络
2.1感知机
感知机(Perceptron)由 两层神经元组成,如下图所示,输入层接收外界输入信号后传递给输出层,输出层是 M-P神经元,亦称“阈值逻辑单元”(threshold logic unit).
阈值 θ 可看作一个固定输入为 -1.0 的 “哑结点”(dummy node) 所对应的连接权重 w n + 1 w_{n+1} wn+1,这样,权重和阈值的学习就可统一为权重的学习。感知机学习规则非常简单,对训练样例 (x, y),若当前感知机的输出为 y,则感知机权重将这样调整:
w i ← w i + Δ w i w_i ← w_i + Δw_i wi←wi+Δwi
Δ w i = η ( y − y ^ ) x i Δw_i = η(y - \hat{y})x_i Δwi=η(y−y^)xi
其中, η η η 称为 学习率(learning rate),取值范围是 (0,1)。感知机是 逐个数据点输入来更新 的。设定初始的权重后,逐个点输入,如果没有预测错就继续检验下一个点;如果预测错了就更新权重,然后重新开始逐个点检验,直到所有点都预测正确了就停止更新(所以这其实是一种最小化经验误差的方法)。
而注意的是,感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元(functional neuron),其学习能力非常有限,只能处理线性可分问题。可以证明,若两类模式是线性可分的,即存在一个线性超平面能将它们分开,则感知机的学习过程一定会 收敛(converge),而求得适当的权向量 w = ( w 1 ; w 2 ; . . W n + 1 ) w = (w_1; w_2;.. W_{n+1}) w=(w1;w2;..Wn+1);否则感知机学习过程将会发生 振荡(Auctuation), w 难以稳定下来,不能求得合适解。
2.2 多层神经网络
要解决非线性可分问题,需考虑使用 多层功能神经元。例如图5.5中这个简单的两层感知机就能解决异或问题.在图5.5(a)中,输出层与输入层之间的一层神经元,被称为 隐层或隐含层(hiddenlayer),隐含层和输出层神经元都是拥有激活函数的功能神经元。·
更一般的,常见的神经网络是形如图 5.6 所示的 层级结构,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构通常称为 “多层前馈神经网络”(multi-layer feedforward neural networks),其中输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出;换言之,输入层神经元仅是接受输入,不进行函数处理,隐层与输出层包含功能神经元。因此,图 5.6(a) 通常被称为 “两层网络”。为避免歧义,本书称其为“单隐层网络”。只需包含隐层,即可称为多层网络。神经网络的学习过程,就是根据训练数据来调整神经元之间的 “连接权”(connection weight) 以及每个功能神经元的阈值;换言之,神经网络“学”到的东西,蕴涵在连接权与阈值中。
3. 误差逆传播算法
训练多层网络要比感知机复杂多了,感知机的学习方法是不够的。误差逆传播算法(error BackPropagation,简称BP) 也称为 反向传播算法,是最为成功的一种神经网络学习方法之一。一般而言,BP神经网络算法不仅可用于多层前馈神经网络,还可用于训练其他类型的神经网络,如递归神经网络。
学习率 η ∈ ( 0 , 1 ) η∈(0,1) η∈(0,1) 控制着算法每一轮迭代中的更新步长,若太大则容易振荡,太小则收敛速度又会过慢。有时为了做精细调节,可令式(5.11)与(5.12) 使用 η 1 η1 η1,式(5.13)与(5.14)使用 η 2 η2 η2,两者未必相等.
下图给出了BP算法的工作流程。对每个训练样例,BP算法执行以下操作:先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差(第4-5行),再将误差逆向传播至隐层神经元(第6行),最后根据隐层神经元的误差来对连接权和阈值进行调整(第7行)。该迭代过程循环进行,直到达到某些停止条件为止,例如训练误差已达到一一个很小的值。
BP算法的目标是最小化训练集 D 上的 累积误差:
E = 1 m ∑ k = 1 m E k E = \frac{1}{m}\sum_{k = 1}^mE_k E=m1k=1∑mEk
而标准BP算法 每输入一个样例就进行一次更新,所以它的参数更新非常频繁,而且不同样例可能会对更新起到 抵消 效果,从而使得模型需要更多次迭代才能到达累积误差的极小点。
如果把更新方式变为 每输入一遍训练集进行一次更新,就得到 累积BP算法,更新公式需要重新推导一下。这样更新一次就称为 一轮(one round,亦称one epoch) 学习。
使用累积BP算法时参数更新的频率要低得多,但是!在很多任务中,累积误差在下降到一定程度后,进一步下降会非常缓慢。此时标准BP算法能更快地获得较好的解(特别是训练集 D 很大的时候)。
事实证明,只需一个包含 足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。然而,如何设置隐层神经元的个数仍是个未决问题,实际应用中通常靠 “试错法”(trial-by-error) 调整。
正是由于其强大的表示能力, BP神经网络经常遭遇 过拟合,其训练误差持续降低,但测试误差却可能上升。有两种策略常用来缓解BP网络的过拟合。第一种策略是 “早停”(early stopping):将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。第二种策略是 “正则化”(regularization) ,其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分。
4. 全局最小与局部极小
学习模型的过程其实就是一个寻找最优参数的过程,在谈到最优时,一般会提到 局部极小(local minimum) 和 全局最小(global minimum)。
- 局部极小解:参数空间中的某个点,其邻域点的误差函数值均不小于该点的误差函数值。
- 全局最小解:参数空间中的某个点,所有其他点的误差函数值均不小于该点的误差函数值。
这两个解对应的误差函数值分别成为 局部最小值 和 全局最小值。
要成为局部极小,只要满足该点在参数空间中梯度为0就可以了。局部极小可以有多个,全局最小则只有一个。全局最小一定也是局部极小,反之则不成立。
因为用梯度下降搜索最优解可能会陷入非全局最小解的局部极小解,在现实任务中,人们会使用以下这些策略试图 跳出局部极小:
-
以多组不同参数值初始化多个神经网络:按标准方法训练后,取其中误差最小的解作为最终参数.这相当于从多个不同的初始点开始搜索, 这样就可能陷入不同的局部极小从中进行选择有可能获得更接近全局最小的结果。
-
模拟退火(simulated annealing) 技术:每次迭代都以一定的概率接收比当前解差的结果,从而有机会跳出局部极小(当然也有可能跳出全局最小),每次接受“次优解”的概率会随着时间推移逐渐减小,从而保证了算法的稳定。
-
随机梯度下降(stochastic gradient descent,简称SGD):在计算梯度时加入了随机因素,因此即便陷入局部极小点,梯度依然可能不为0,从而有机会跳出局部极小,继续搜索。
除了这些方法之外,遗传算法 也常用于训练神经网络以逼近全局最小。当这些技术大多是 启发式,没有理论的保障。也就是说,这些方法指示基于直观或者经验构造的,能 在可接受的时间和空间花费下给出待解决的组合优化问题的一个可行解,但 不能估计可行解与最优解的偏离程度。
5. 其他常见神经网络
5.1 RBF网络
RBF(Radial Basis Function)网络 是一种单隐层前馈神经网络,它 使用径向基函数作为隐层神经元的激活函数。输出层则直接使用隐层神经元的 线性组合。假定输入为 d 维向量 x 输出为实值,则 RBF 网络可表示为
其中 qqq 为隐层神经元个数, c i c_i ci 和 w i w_i wi 分别是第 4 个隐层神经元所对应的中心和权重, ρ ( x , c i ) ρ(x,c_i) ρ(x,ci)是径向基函数,这是某种沿径向对称的标量函数,通常定义为样本 x 到数据中心 c i c_i ci 之间欧氏距离的单调函数。常用的高斯径向基函数形如
具有足够多隐层神经元的 RBF 网络能以任意精度逼近任意连续函数。
通常采用两步过程来训练RBF 网络:第一步,确定神经元中心 C i C_i Ci , 常用的方式包括随机采样、聚类等;第二步,利用 BP 算法等来确定参数 w i w_i wi 和 β i β_i βi
5.2 ART网络
竞争型学习(competitive learning) 是神经网络中一种 常用的无监督学习策略,在使用该策略时,网络的输出神经元相互竞争,每一时刻 仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制.这种机制亦称“胜者通吃”(winner-take al)原则.
ART(Adaptive Resonance Theory,自适应谐振理论) 网络是竞争型学习的重要代表。该网络由四部份组成:比较层、识别层、识别阈值、重置模块。比较层就是输入层,只负责把样本传递给识别层。识别层也即输出层,但识别层的每个神经元对应一个模式类,而且 神经元的数目可以在训练过程中动态增加以增加新的模式类。
识别层的每个神经元有一个对应的模式类的 代表向量,每次输入一个样本,各识别层神经元相互竞争,代表向量与样本距离最小的胜出并被激活。获胜神经元会 向其他神经元发送信号,抑制其激活。如果样本与获胜神经元的 距离小于识别阈值,则被分到对应的模式类。否则,重置模块会在识别层新增一个神经元,代表向量为该样本。
ART能有效缓解竞争型学习中的 可塑性-稳定性窘境(stability-plasticity dilemma)。可塑性指神经网络要有 学习新知识的能力,稳定性则指神经网络 在学习新知识时要保持对旧知识的记忆。
ART具备可塑性和稳定性,因此能进行 增量学习(incremental learning) 和 在线学习(online learning)。
增量学习可以理解为 建立模型后再收到新的样例时可以对模型进行更新,但不用重新训练整个模型,先前学得的有效信息会被保存。它可以逐个新样例进行更新,也能以 批模型(batch-mode),每次用一批新样例来更新。
在线学习则可以理解为 每拿到一个新样本就进行一次模型更新,不需要一开始就准备好完整的训练集,每次收到新样例都能继续训练。可以看作 增量学习的一个特例。
5.3 SOM 网络
SOM(Self-Organizing Map,自组织映射) 网络,又称为 自组织特征映射网络 或 Kohonen网络。同样是一种竞争学习型无监督神经网络,只有输入层和输出层两层,输出层以矩阵形式排列。与样本距离最近的输出层神经元获胜,称为 最佳匹配单元(best matching unit)。最佳匹配单元和邻近神经元的权向量会被调整,使得下次遇到相似的样本时距离更小。如此迭代,直至收敛。
5.4 级联相关网络
一般的神经网络模型通常假定网络结构是事先固定的,训练的目的是利用训练样本来确定合适的连接权、阈值等参数。与此不同,结构自适应网络则将网络结构也当作学习的目标之一 ,并 希望能在训练过程中找到最符合数据特点的网络结构。级联相关(Cascade- Correlation)网络是结构自适应网络的重要代表.
级联相关网络有两个主要成分:“级联” 和“相关”。级联是指建立层次连接的层级结构。在开始训练时,网络只有输入层和输出层,处于最小拓扑结构;随着训练的进行,如上图所示,新的隐层神经元逐渐加入,从而创建起层级结构。当新的隐层神经元加入时,其输入端连接权值是冻结固定的。相关是指通过最大化新神经元的输出与网络误差之间的相关性(correlation)来训练相关的参数。
与一般的前馈神经网络相比,级联相关网络无需设置网络层数、隐层神经元数目,且训练速度较快,但其在数据较小时易陷入过拟合.
5.5 Elman网络
与前馈神经网络不同,“ 递归神经网络”(recurrent neural networks) 允许网络中出现 环形结构,从而可让一些 神经元的输出反馈回来作为输入信号。这样的结构与信息反馈过程,使得网络在 t 时刻的输出状态不仅与 t 时刻的输入有关,还与 t- 1 时刻的网络状态有关,从而能处理与时间有关的动态变化.
Elman网络 是最常用的递归神经网络之一, 其结构如图5.13所示,它的结构与多层前馈网络很相似,但隐层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下一时刻的输入。隐层神经元通常采用Sigmoid激活函数,而网络的训练则常通过推广的BP算法进行。
参考资料
- 周志华老师的《机器学习》