迷人的神经网络——机器学习笔记1
开始接触神经网络(Neural Network,NN)的入门例子 MNIST及其论文 Y. LeCun, L. Bottou, Y. Bengio and P. Haffner: Gradient-Based Learning Applied to Document Recognition, Proceedings of the IEEE, 86(11):2278-2324, November 1998 时,难免会有很多疑问:例如:
- 什么是CNN、RNN、LSTM?什么是卷积(convolution)层、池化(pooling)层、全连接(fully connected)层、Dropout层?
- 为什么需要激活函数?为什么ReLU不处处可微却性能优良?
- 什么是反向传播?怎么实现?
- 损失函数如何设置?
- 优化算法如何选取?什么是贝叶斯正则化?如何设置学习率可以保证最速训练且收敛到全局最优?
- 学习率、Batch_Size和Epoch的如何设置?
带着这些疑问找到了一本讲述传统神经网络的书《神经网络设计(第二版)》,读之后感觉豁然开朗,学了多年的《线性代数》终于明白了怎么用,而且顺便复习了很多学过的课程:线性代数、高等数学、概率论与数理统计、离散信号处理、随机信号处理、数字图像处理、数学物理方法等。收获良多,故而整理下作为学习笔记。本文所有配图及其版权归原作者所有,本文仅供学习。另外中文翻译版内容有些许错误,强烈建议对照着原版pdf一起学习。
原书名为《NEURAL NETWORK DESIGN (Second Edition)》,作者:Mattin T.Hagan、Howard B.Demuth、Mark H.Bearle 和 Orlando De Jesus。
配套的演示软件、书籍pdf版及ppt下载页面如下:
第1章 神经元模型及网络结构
1.1 神经元模型
1.1.1 单输入神经元
标量输入 \(p\) 乘以权值(weight) \(w\) 得到 \(wp\),作为其中的一项进入累加器,另一个输入"1"乘以一个偏置值(bias)\(b\) ,再送入累加器。累加器的输出结果 \(n\) ,通常称作 净输入
(net input) ,送给 传输函数
(transfer function) \(f\) 作用后,产生标量 \(a\) ,作为神经元的输出(一些作者使用“激活函数”而不是“传输函数”,“补偿”而不是“偏置值”)。权值 \(w\) 对应生物神经元的突触连接的强度,胞体由累加器和激活函数来表述,神经元的输出 \(a\) 代表突触上的信号。神经元的实际输出依赖于不同激活函数的选择。
\[a = f(wp+b)
\]
1.1.2 激活函数
激活函数可以是一个关于净输入 $ n $ 的线性或非线性函数。
(1)硬限值:如果自变量小于0,神经元输出0;如果函数大于等于0,神经元输出1。
\[a=
\begin{cases}
1 & n \ge 0\\
0 & n < 0
\end{cases}
\]
输入/输出特性如下
(2)线性:输出等于输入
\[a=n
\]
输入/输出特性如下图:
(3)对数-S型(log-sigmoid):
\[a=\frac{1}{1+e^{-n}}
\]
输入/输出特性如下
(4)Tanh (hyperbolic tangent sigmoid 双曲正切S型),用于循环神经网络RNN(recurrent neural networks):
\[a=\frac{e^{n}-e^{-n}}{e^{n}+e^{-n}}
\]
(5)ReLU (rectified linear units),目前卷积神经网络CNN(convolutional neural networks)中喜欢使用的激活函数:
\[a=
\begin{cases}
n & n \ge 0\\
0 & n < 0
\end{cases}
\]
1.1.3 多输入神经元
\(R\) 个输入权值 \(p_{1}\) ,\(p_{2}\) ,... , \(p_{r}\)对应权值矩阵 \(W\)
共享神经元的偏置 \(b\)
\[a = f(Wp+b)
\]
1.2 网络结构
1.2.1 单层神经网络
\(R\)个输入,\(S\)个神经元的权值矩阵:
\[W=\left[
\begin{matrix}
w11 & w12 & {\dots} & w1r \\
w21 & w22 & {\dots} & w2r\\
{\vdots} & {\vdots} & {} & {\vdots} \\
ws1 & ws2 & {\dots} & wsr
\end{matrix}
\right]
\]
1.2.2 多层神经网络
1.2.3 循环神经网络(recurrent network , RNN)
延迟器:
\[a(t)=u(t-1)
\]
假设时间步长的更新是离散的,并且只取整数值
积分器:
\[a(t)=\int{u(\tau)d(\tau)+a(0)}
\]
\(a(0)\)代表初始条件
循环神经网络是一个带有反馈的网络,它的部分输出连接到它的输入。
延迟器、积分器和循环神经网络RNN如图所示:
第2章 一个小例子
三种网络:前馈网络(感知机为代表)、竞争网络(Hamming 网络为代表)和循环神经网络(Hopfield 网络为代表)
2.1 问题描述:模式识别
水果的三种特征:形状、纹理和重量
- 形状感知器:近似圆输出 1 ,近似椭圆输出 -1
- 纹理感知器:表面光滑输出 1 , 表面粗糙输出 -1
- 重量感知器:大于1磅输出 1 , 小于1磅输出 -1
输入、标准的橘子和标准的苹果为:
\[p=
\left[
\begin{matrix}
形状 \\
纹理 \\
重量
\end{matrix}
\right],
p_{橘子}=
\left[
\begin{matrix}
1 \\
-1 \\
-1
\end{matrix}
\right],
p_{苹果}=
\left[
\begin{matrix}
1 \\
1 \\
-1
\end{matrix}
\right]
\]
2.2 感知机
采用对称硬限值激活函数 handlims 的单层感知机
2.2.1 两个输入的实例
单神经元的感知机能把输入向量分为两类
\[a=hardlinms(n)=hardlinms([w_{1,1} , w_{1,2}]p+b)
\]
如果输入权值矩阵(这里是一个行向量)和输入向量的内积大于或者等于 \(-b\) ,则感知机的输出为 1 ,如果内积小于 \(-b\) ,则输出 -1 。这样将空间划分为两个部分
边界条件为:
\[Wp+b=0
\]
2.2.2 模式识别实例
\[a=hardlinms(n)=hardlinms([w_{1,1} ,w_{1,2},w_{1,3}]
\left[
\begin{matrix}
p_{1} \\
p_{2} \\
p_{3}
\end{matrix}
\right]+b)
\]
偏置值 \(b=0\) , 权值矩阵 \(W=[0,1,0]\),权值矩阵正交与决策边界
感知机的决策边界与标准向量:
2.3 Hamming 网络
为了解决二值模式识别的问题而特别设计的(输入向量中的每个元素都只有2个可能的取值)
包含一层前馈层和一层反馈层,两层神经元个数相同,标准的Hamming 网络如下:
Hamming 网络的目标是判断哪个标准向量最接近输入向量。判断结果由反馈层的输出表示。对于每一个标准模式
而言,在反馈层中都有与之对应的神经元。当反馈层收敛后,只有一个神经元会输出非零值,该神经元就表示哪一个标准模式
最接近输入向量。
2.3.1 前馈层
前馈层用来计算每个标准模式
和输入模式
之间的相关性或内积。为了达到计算相关性的目的,前馈层中权值矩阵用连接矩阵 \(W^{1}\) 表示,该矩阵每一行设置为一个标准模式。在苹果和橘子实例中:
\[\mathbf{W}^{1}=\left[ \begin{array}{c}{\mathbf{p}_{1}^{T}} \\ {\mathbf{p}_{2}^{T}}\end{array}\right]=\left[ \begin{array}{cc}{1} & {-1} & {-1} \\ {1} & {1} & {-1}\end{array}\right]
\]
前馈层中使用线性传输函数,偏置向量中的每个元素都等于 \(r\) ,其中 \(r\) 等于输入向量中元素的个数,偏置向量为:
\[\mathbf{b}^{1}=\left[ \begin{array}{l}{3} \\ {3}\end{array}\right]
\]
通过选择权值和偏置向量,前馈层的输出为:
\[\mathbf{a}^{1}=\mathbf{W}^{1} \mathbf{p}+\mathbf{b}^{1}=\left[ \begin{array}{c}{\mathbf{p}_{1}^{T}} \\ {\mathbf{p}_{2}^{T}}\end{array}\right] \mathbf{p}+\left[ \begin{array}{l}{3} \\ {3}\end{array}\right]=\left[ \begin{array}{c}{\mathbf{p}_{1}^{T} \mathbf{p}+3} \\ {\mathbf{p}_{2}^{T} \mathbf{p}+3}\end{array}\right]
\]
注意:前馈层的输出等于每个标准模式和输入向量的内积加上 \(r\) 。对于两个长度(范数)相同的向量而言,当它们方向相同时内积最大,方向相反时内积最小。通过给内积加上 \(r\) ,来确保前馈层的输出永远不会为负数,这也是反馈层所需要的。
2.3.2 反馈层
反馈层正是所谓的 竞争层 。初始值为前馈层的输出,这个输出代表着标准模式和输入向量的相关性。然后该层的神经元互相竞争决定一个胜者。竞争结束后,只会有一个神经元的输出为零。获胜的神经元表明了网络输入的类别。
\[a=
\begin{cases}
\mathbf{a}^{2}(0)=\mathbf{a}^{1} & (初始条件)\\
\mathbf{a}^{2}(t+1)=\operatorname{ReLU}\left(\mathbf{W}^{2} \mathbf{a}^{2}(t)\right) & n < 0
\end{cases}
\]
其中上标表示网络层数
权值矩阵为:
\[\mathbf{W}^{2}=\left[ \begin{array}{cc}{1} & {-\varepsilon} \\ {-\varepsilon} & {1}\end{array}\right]
\]
其中 \(\varepsilon\) 是一个小于 $ 1/(s-1)$ 的数, \(s\) 为反馈层中神经元的个数。
反馈层一次迭代计算过程为:
\[\mathbf{a}^{2}(t+1)=\operatorname{ReLU}\left(\left[ \begin{array}{cc}{1} & {-\varepsilon} \\ {-\varepsilon} & {1}\end{array}\right] \mathbf{a}^{2}(t)\right)=\operatorname{ReLU}\left(\left[ \begin{array}{c}{a_{1}^{2}(t)-\varepsilon a_{2}^{2}(t)} \\ {a_{2}^{2}(t)-\varepsilon a_{1}^{2}(t)}\end{array}\right]\right)
\]
向量中每一个元素都要同等比例减去另一个元素的一部分,值较大的元素减幅小一些,值较小的元素减幅大一些,因此值较大的元素与值较小元素之间的差异就会增大。反馈层的作用就在于将除了初始值最大的神经元外的其他所有神经元的输出逐步缩小为0(最终输出值最大的神经元对应着与输入的 Hamming 距离最小的标准输入模式)
运行过程如下:
考虑用于验证感知机的椭圆形橘子
\[\mathbf{p}=\left[ \begin{array}{c}{-1} \\ {-1} \\ {-1}\end{array}\right]
\]
前馈层的输出为:
\[\mathbf{a}^{1}=\left[ \begin{array}{rrr}{1} & {-1} & {-1} \\ {1} & {1} & {-1}\end{array}\right] \left[ \begin{array}{c}{-1} \\ {-1} \\ {-1}\end{array}\right]+\left[ \begin{array}{l}{3} \\ {3}\end{array}\right] = \left[ \begin{array}{c}{(1+3)} \\ {(-1+3)}\end{array}\right] = \left[ \begin{array}{l}{4} \\ {2}\end{array}\right]
\]
上式的结果是反馈层的初始条件:
反馈层第一次迭代结果:
\[\mathbf{a}^{2}(1)=\operatorname{ReLU}\left(\mathbf{W}^{2} \mathbf{a}^{2}(0)\right) =
\begin{cases}
\operatorname{ReLU}\left(\left[ \begin{array}{rr}{1} & {-0.5} \\ {-0.5} & {1}\end{array}\right] \left[ \begin{array}{l}{4} \\ {2}\end{array}\right]\right)
\\
\\
\operatorname{ReLU}\left(\left[ \begin{array}{l}{3} \\ {0}\end{array}\right]\right)=\left[ \begin{array}{l}{3} \\ {0}\end{array}\right]
\end{cases}
\]
反馈层第二次迭代结果:
\[\mathbf{a}^{2}(1)=\operatorname{ReLU}\left(\mathbf{W}^{2} \mathbf{a}^{2}(1)\right) =
\begin{cases}
\operatorname{ReLU}\left(\left[ \begin{array}{rr}{1} & {-0.5} \\ {-0.5} & {1}\end{array}\right] \left[ \begin{array}{l}{3} \\ {0}\end{array}\right]\right)
\\
\\
\operatorname{poslin}\left(\left[ \begin{array}{r}{3} \\ {-1.5}\end{array}\right]\right)=\left[ \begin{array}{l}{3} \\ {0}\end{array}\right]
\end{cases}
\]
由于后续迭代的输出都相同,所以网络是收敛的。因为只有第一神经元输出了非零值,所以选择第一个标注模式 橘子
作为匹配结果。因为 橘子
的标准模式与输入模式的 Hamming 距离为 1 ,而苹果
的标准模式和输入模式的 Hamming 距离为2 ,所以网络做出的选择是正确的。
2.4 Hopfield 网络
循环网络,可以完成 Hamming 网络两层结构才能完成的工作。Hopfield 网络的一种变形如下图:
使用输入向量来初始化该网络的神经元,然后网络不断迭代直到收敛。当网络结果正确时,其输出结果将会是某一个标准向量。
在 Hamming 网络中由输出非零值的神经元来表明选定了哪种标准模式,而 Hopfield 网络则是直接生成一个选定的标准模式作为输出。
网络运算:
\[\begin{cases}
\mathbf{a}(0)=\mathbf{p}\\
\mathbf{a}(t+1)=\operatorname{satlins}(\mathbf{W} \mathbf{a}(t)+\mathbf{b})
\end{cases}
\]
satlins 表示对称饱和输出函数,其输入输出为:
\[a=
\begin{cases}
-1 & n<-1 \\
n & -1 \le n \le 1 \\
1 & n>1
\end{cases}
\]
Hamming 网络的前馈层的权值为标准模式,在Hopfield 网络中权值矩阵和偏置向量的设置要复杂许多。
2.5 总结
感知机是前馈网络的一个实例。在这些网络中,输出是直接根据输入计算得到的,中间没有任何形式的反馈。前馈网络可以用于模式识别,也可以用于函数逼近。函数逼近在自适应滤波和自动控制等领域已有所应用。
以 Hamming 网络为代表的竞争网络由两个主要的特性。第一,它们计算了已存储的标准模式和输入模式之间的距离。第二,它们通过竞争来决定哪个神经元所代表的标准模式最接近输入。
以 Hopfield 网络为代表的循环网络,最初是受统计力学的启发。它们被用作联想记忆,其中已存储的数据可以通过与输入数据的关联关系而不是基于地址被提取。循环网络已经被用来解决各种优化问题。
第3章 感知机学习规则
在不能可视化决策边界的情况下,如何确定多输入感知机网络的权值矩阵和偏置值?
单层感知机网络的优点和局限性
3.1 学习规则
指修改网络权值和偏置值的方法和过程,也称为训练算法。学习规则是为了训练网络来完成某些任务。学习规则可以归纳为三大类:
- 有监督学习
- 无监督学习
- 增强(评分)学习 :适合应用于决策等控制系统
3.2 感知机结构
网络的输出为:
\[\mathbf{a}=\mathbf{hardlim} (\mathbf{W} \mathbf{p}+\mathbf{b})
\]
网络中的每个神经元把输入空间划分成了两个区域
3.2.1 单神经元感知机
考虑两个输入,输出为:
\[\begin{aligned} a &= \operatorname{hardlim}(n)=\operatorname{hardlim}(\mathbf{W} \mathbf{p}+b) \\ &= \operatorname{hardlim}\left(\mathbf{w}^{T} \mathbf{p}+b\right)=\operatorname{hardlim}\left(w_{1,1} p_{1}+w_{1,2} p_{2}+b\right) \end{aligned}
\]
决策边界(descision boundary)通过网络的净输入 \(n\) 等于 0 的输入向量来确定
\[_{1} \mathbf{w}^{T} \mathbf{p}+b=0
\]
对于决策边界上的所有点而言,输入向量与权值向量间的内积都相等。
3.2.2 多神经元感知机
每个神经元都有一个决策边界:
\[_{i} \mathbf{w}^{T} \mathbf{p}+b_{i}=0
\]
3.3 感知机学习规则
有监督训练的学习过程是从一组能够正确反映网络行为的样本集中获得的:
\[\left\{\mathbf{p}_{1}, \mathbf{t}_{1}\right\},\left\{\mathbf{p}_{2}, \mathbf{t}_{2}\right\}, \ldots,\left\{\mathbf{p}_{Q}, \mathbf{t}_{Q}\right\}
\]
其中 \({p}_{q}\) 是网络的输入, \(t_{q}\) 是该输入相应的目标输出。当每个输入作用到网络上时,将网络的实际输出与目标输出相比较。为了使网络的实际输出尽量靠近目标输出,学习规则将调整该网络的权值和偏置值。
统一的学习规则:
定义感知机误差 \(e\) :
\[e=t-a
\]
其中 \(t\) 代表目标输出, \(a\) 代表实际输出
权值学习规则:
\[_{1} \mathbf{w}^{n e w}=_{1} \mathbf{w}^{o l d}+e \mathbf{p}=_{1} \mathbf{w}^{o l d}+(t-a) \mathbf{p}
\]
将偏置值看作一个输入总是1的权值,则偏置值学习规则:
\[b^{n e w}=b^{o l d}+e
\]
通常将权值和偏置值初始化为较小的随机数
3.4 收敛性证明
可以证明:
该规则总能收敛到能实现正确分类的权值上(假设权值存在)
感知机的学习规则将在有限次迭代后收敛
局限性:
无法解决 “异或”门 (两个输入值相同输出0,输入值不同输出1)问题
3.5 小结
决策边界总与权值向量正交
单层感知机只能对线性可分的向量进行分类
学习规则:
\[\begin{cases}
e=t-a \\
\mathbf{w}^{n e w}=\mathbf{w}^{o l d}+e \mathbf{p}=\mathbf{w}^{o l d}+(t-a) \mathbf{p} \\
b^{n e w}=b^{o l d}+e
\end{cases}
\]
第4章 Hebb 学习
Hebb 规则是最早的神经网络学习规则之一,Donald Hebb 在1949年提出,作为一种可能的大脑神经元突触调整机制,一直用于人工神经网路设计。Donald Hebb加拿大人,立志成为一名小说家,英语专业学士,心理学硕士(巴普洛夫条件反射),哈佛博士。1949年出版专著《The Origanization of Behavior》(《行为自组织》)。
Hebb 学习假说:
当神经细胞A的轴突足够接近到能够激发神经细胞B,且反复或持续地刺激细胞B,那么A或B中一个或者两个细胞将会产生某种增长过程或代谢变化,从而增强细胞A对细胞B的刺激效果。
这一假说提出了一种在细胞层次进行学习的物理机制。直至今日,Hebb理论依然影响着神经科学的研究。
4.1 线性联想器
Hebb 学习规则能适用于多种神经网络结构。采用 线性联想器(linear associator) 这个非常简单的网络结构来介绍 Hebb 学习。(James Anderson [Ande72] 和 Teuvo Kohonen[Koho72] 提出)
网络的输出向量 \(a\) 由输入向量 \(p\) 根据下式决定:
\[a=Wp
\]
也可以记作:
\[a_{i}=\sum_{j=1}^{R} w_{i j} p_{j}
\]
线性联想器属于一类被称为 联想记忆(associative memory)模型的神经网络。结构如图所示:
4.2 Hebb 规则
如果突触两侧的两个神经元被同时激活,那么突触的连接强度将会增加。
数学解释:
\[w_{i j}^{n e w}=w_{i j}^{o l d}+\alpha f_{i}\left(a_{i q}\right) g_{j}\left(p_{j q}\right)
\]
可以简化为:
\[w_{i j}^{n e w}=w_{i j}^{o l d}+\alpha a_{i q} p_{j q}
\]
其中 \(p_{j q}\) 是第 \(q\) 个输入向量 \(p_{q}\) 中的第 \(j\) 个元素,\(a_{i q}\) 是网络给定输入向量 \(p_{q}\) 后输出的第 \(i\) 个元素, \(\alpha\) 是一个被称为学习率正常数。这个等式表明 权值 \(W_{ij}\) 的变化与突触两侧传输函数值的乘积成正比。
上式定义了一种 无监督学习规则:它并不需要目标输出的任何信息。
对于有监督的 Hebb 规则,我们用目标输出代替实际输出。这样,学习算法将了解网络应该做什么,而不是当前网络正在做什么。
\[w_{i j}^{n e w}=w_{i j}^{o l d}+t_{i q} p_{j q}
\]
其中 \(t_{iq}\) 是第 \(q\) 个目标向量 \(t_{q}\) 中的第 \(i\) 个元素(为简化,设学习率为1),向量形式为:
\[\mathbf{W}^{n e w}=\mathbf{W}^{o l d}+\mathbf{t}_{q} \mathbf{p}_{q}^{T}
\]
如果假设权值矩阵初始值为0,将其应用于 \(Q\) 个输入/输出对,可得:
\[\mathbf{W}=\mathbf{t}_{1} \mathbf{p}_{1}^{T}+\mathbf{t}_{2} \mathbf{p}_{2}^{T}+\cdots+\mathbf{t}_{Q} \mathbf{p}_{Q}^{T}=\sum_{q=1}^{Q} \mathbf{t}_{q} \mathbf{p}_{q}^{T}
\]
矩阵形式为:
\[\mathbf{W}=\left[ \begin{array}{llll}{\mathbf{t}_{1}} & {\mathbf{t}_{2}} & {\ldots} & {\mathbf{t}_{Q}}\end{array}\right]
\left[ \begin{array}{c}{\mathbf{p}_{1}^{T}} \\
\\
{\mathbf{p}_{2}^{T}} \\
\\ {\mathbf{p}_{2}^{T}} \\
\\
{\vdots} \\
\\ {\mathbf{p}_{Q}^{T}}\end{array}\right]
=\mathbf{T} \mathbf{P}^{T}
\]
其中\(\mathbf{T}=\left[ \begin{array}{lll}{\mathbf{t}_{1}} & {\mathbf{t}_{2}} & {\dots} & {\mathbf{t}_{Q}}\end{array}\right]\) , \(\mathbf{P} = \left[ \begin{array}{lll}{\mathbf{p}_{1}} & {\mathbf{p}_{2}} & {\dots} & {\mathbf{p}_{Q}}\end{array}\right]\)。
性能分析
当输入向量为标准正交向量时,Hebb 规则对每个输入向量都能产生正确的输出结果
\[\mathbf{a}=\mathbf{W} \mathbf{p}_{k}=\left(\sum_{q=1}^{Q} \mathbf{t}_{q} \mathbf{p}_{q}^{T}\right) \mathbf{p}_{k}=\sum_{q=1}^{Q} \mathbf{t}_{q}\left(\mathbf{p}_{q}^{T} \mathbf{p}_{k}\right) = \mathbf{t}_{k}
\]
当输入向量不正交时候的单位向量时,
\[\mathbf{a}=\mathbf{W} \mathbf{p}_{k}=\mathbf{t}_{k}+\sum_{q \neq k} \mathbf{t}_{q}\left(\mathbf{p}_{q}^{T} \mathbf{p}_{k}\right)
\]
另外一项为误差,大小取决于标准输出模式之间相关性的总和。
4.3 伪逆规则
有些方法可以减小上述的误差
选取一个能最小化以下性能指标的权值矩阵:
\[F(\mathbf{W})=\sum_{q=1}^{Q}\left\|\mathbf{t}_{q}-\mathbf{W} \mathbf{p}_{q}\right\|^{2}
\]
当矩阵 \(P\)可逆时,矩阵 \(\mathbf{W P}=\mathbf{T}\) 的解为 \(\mathbf{w}=\mathbf{T} \mathbf{P}^{-1}\) 。然而通常情况下 \(P\) 不是一个方阵,所以不存在准确的逆矩阵。
伪逆规则[Albe72]:
\[\mathbf{W}=\mathbf{T} \mathbf{P}^{+}
\]
其中 \(P+\) 是 Moore-Penrose 伪逆矩阵(广义逆矩阵)。对于实数矩阵 \(P\) ,它的伪逆矩阵唯一存在。且满足如下条件:
\[\begin{cases}
\mathbf{P P}^{+} \mathbf{P}=\mathbf{P}\\
\mathbf{P}^{+} \mathbf{P} \mathbf{P}^{+}=\mathbf{P}^{+}\\
\mathbf{P}^{+} \mathbf{P}=\left(\mathbf{P}^{+} \mathbf{P}\right)^{T}\\
\mathbf{P} \mathbf{P}^{+}=\left(\mathbf{P} \mathbf{P}^{+}\right)^{T}
\end{cases}
\]
当矩阵 \(P\) 的行数 \(R\) 大于其列数 \(Q\) ,且 \(P\) 的列向量线性无关时,其伪逆矩阵为:
\[\mathbf{P}^{+}=\left(\mathbf{P}^{T} \mathbf{P}\right)^{-1} \mathbf{P}^{T}
\]
注意 : 使用 伪逆规则 不需要对输入向量进行归一化
4.4 应用
自联想记忆模型
4.5 Hebb 学习的变形
难题: 当训练数据集包含大量输入模式时,权值矩阵将会包含一些高数值元素,可以添加一项衰减器,让学习规则表现得像一个平滑滤波器,使得最近一次的输入变得更重要,而慢慢淡忘之前的输入:
\[\mathbf{W}^{n e w}=\mathbf{W}^{o l d}+\alpha \mathbf{t}_{q} \mathbf{p}_{q}^{T}-\gamma \mathbf{W}^{o l d}=(1-\gamma) \mathbf{W}^{o l d}+\alpha \mathbf{t}_{q} \mathbf{p}_{q}^{T}
\]
这限制了权值矩阵元素值的无限制增长。
过滤权值变化和调整学习率的思想非常重要
采用目标输出与实际输出之差来代替目标输出:
\[\mathbf{W}^{n e w}=\mathbf{W}^{o l d}+\alpha\left(\mathbf{t}_{q}-\mathbf{a}_{q}\right) \mathbf{p}_{q}^{T}
\]
这一规则被称为增量规则。这一规则也以它的发明人命名,称为 Widrow-Hoff
算法。
- 增量规则通过调整权值来最小化均方误差。这一规则与伪逆规则得到的结果相同,因为伪逆规则最小化的是误差的平方和。
- 增量规则的优势在于每接收一个输入模式,权值矩阵就会进行更新,而伪逆规则在接受到所有输入/输出对之后,进行一次计算而得到权值矩阵。这种依次更新方式使得增量规则能适用于动态变化的环境。
无监督学习 Hebb 学习中,网络的目标输出将由其实际输出来代替:
\[\mathbf{W}^{n e w}=\mathbf{W}^{o l d}+\alpha \mathbf{a}_{q} \mathbf{p}_{q}^{T}
\]
第5章 Widrow-Hoff 学习
把性能学习应用于单层神经网络
Widrow-Hoff 学习算法 是一个以均方误差为性能指标的近似最速下降算法。重要性体现在两个方面:首先,该算法被广泛应用于现今诸多信号处理的实际问题中;其次,它是多层网络学习算法——BP算法的前导工作。
ADALINE (自适应线性神经网络)和 LMS (Least Mean Square 最小均方)
ADALINE 与感知机相似,传输函数是线性函数而不是硬限值函数。只能解决线性可分问题。
LMS 算法在信号处理领域应用中取得了巨大成功。
5.1 ADALINE 网络
\[\mathbf{a}=\operatorname{purelin}(\mathbf{W} \mathbf{p}+\mathbf{b})=\mathbf{W} \mathbf{p}+\mathbf{b}
\]
其中 \(\operatorname{purelin}\) 代表 线性传输函数。网络结构如图:
5.2 均方误差
LMS 算法是一个有监督的训练算法。其学习规则将使用一个表征网络正确行为的样本集合:
\[\left\{\mathbf{p}_{1}, \mathbf{t}_{1}\right\},\left\{\mathbf{p}_{2}, \mathbf{t}_{2}\right\}, \ldots,\left\{\mathbf{p}_{Q}, \mathbf{t}_{Q}\right\}
\]
其中 \(\mathbf{p}_{Q}\) 表示网络的一个输入,而 \(\mathbf{t}_{Q}\) 是对应的目标输出。对于每一个网络输入,网络的实际输出将与对应的目标输出相比较,其差值称为 误差
。
LMS 算法将会调整 ADALINE 网络 的权值和偏置值来最小化均方误差。
首先考虑单个神经元的情况。为了简化,将所有需要调整的参数(包括偏置值)构成一个向量
\[\mathbf{x}=\left[ \begin{array}{c}{\mathbf{w}} \\ {b}\end{array}\right]
\]
类似地,将偏置值输入"1" 作为向量的一部分
\[\mathbf{z}=\left[ \begin{array}{l}{\mathbf{p}} \\ {1}\end{array}\right]
\]
网络的输出为
\[a=_{1} \mathbf{w}^{T} \mathbf{p}+b
\]
也可以记为
\[a=\mathbf{x}^{T} \mathbf{z}
\]
均方误差(mean sqare error)为
\[F(\mathbf{x})=E\left[e^{2}\right]=E\left[(t-a)^{2}\right]=E\left[\left(t-\mathbf{x}^{T} \mathbf{z}\right)^{2}\right]
\]
其中,期望值在所有输入/目标对的集合上求得。(这里我们使用 \(E[ \quad ]\) 表示期望,使用期望的一个广义定义,即确定信号的时间平均值,参考[WiSt85]),上式可扩展为:
\[F(\mathbf{x})=E\left[t^{2}-2 t \mathbf{x}^{T} \mathbf{z}+\mathbf{x}^{T} \mathbf{z} \mathbf{z}^{T} \mathbf{x}\right] =E\left[t^{2}\right]-2 \mathbf{x}^{T} E[t \mathbf{z}]+\mathbf{x}^{T} E\left[\mathbf{z} \mathbf{z}^{T}\right] \mathbf{x}
\]
可以简化为:
\[F(\mathbf{x})=c-2 \mathbf{x}^{T} \mathbf{h}+\mathbf{x}^{T} \mathbf{R} \mathbf{x}
\]
其中 \(c=E\left[t^{2}\right]\) ,\(h=E[tz]\) , \(R = E[tz]\)
这里,向量 \(h\) 给出了输入向量和对应目标输出之间的相关性, \(R\) 是输入相关矩阵(correlation matrix) 。矩阵的对角线元素等于输入向量的均方值。
ADALINE 网络 的均方误差是一个二次函数,其中,\(d=-2h\) , \(A=2R\)
这里, Hessian 矩阵是相关矩阵 \(R\) 的两倍。显然,所有相关矩阵式正定或半正定的,即它们不会有负的特征值。因此,性能指标存在两种可能性:若相关矩阵只有正的特征值,性能指标将有一个唯一的全局极小点;若相关矩阵有一个特征值为0,那么性能矩阵将有一个弱极小点或者没有极小点,这取决于向量 \(d=-2h\) 。
现在来确定驻点。性能指标的梯度为
\[\nabla F(\mathbf{x})=\nabla\left(c+\mathbf{d}^{T} \mathbf{x}+\frac{1}{2} \mathbf{x}^{T} \mathbf{A} \mathbf{x}\right)=\mathbf{d}+\mathbf{A} \mathbf{x}=-2 \mathbf{h}+2 \mathbf{R} \mathbf{x}
\]
\(F(\mathbf{x})\) 的驻点可以通过令梯度等于0来求得:
\[-2 \mathbf{h}+2 \mathbf{R} \mathbf{x}=0
\]
若相关矩阵是正定的,则存在唯一驻点,而且它是一个强极小值点:
\[\mathbf{x}^{*}=\mathbf{R}^{-1} \mathbf{h}
\]
值得注意的是,唯一解是否存在仅取决于相关矩阵 \(R\) 。因此,输入向量的性质决定了是否存在唯一解。
5.3 LMS 算法
Widrow 和 Hoff 的关键思想在于使用下式估计均方误差 \(F(x)\)
\[\hat{F}(\mathbf{x})=(t(k)-a(k))^{2}=e^{2}(k)
\]
其中,均方误差的期望被第 \(k\) 次迭代的均方误差所代替。每次迭代都有一个如下形式的梯度估计:
\[\hat{\nabla} F(\mathbf{x})=\nabla e^{2}(k)
\]
该梯度有时被称为 随机梯度 (stochastic gradient)。当该梯度用于梯度下降算法的时候,每当一个样本输入网络,权值都会被更新。
\(\nabla e^{2}(k)\) 的前 \(R\) 个元素是关于网络权值的导数值,而第 \((R+1)\) 个元素是关于偏置值的导数值。于是有
\[\left[\nabla e^{2}(k)\right]_{j}=\frac{\partial e^{2}(k)}{\partial w_{1, j}}=2 e(k) \frac{\partial e(k)}{\partial w_{1, j}} \text { for } j=1,2, \ldots, R
\]
和
\[\left[\nabla e^{2}(k)\right]_{R+1}=\frac{\partial e^{2}(k)}{\partial b}=2 e(k) \frac{\partial e(k)}{\partial b}
\]
接下来考虑其中的偏导数项。首先计算 \(e(k)\) 对于网络权值 \(w_{1, j}\) 的偏导数
\[\frac{\partial e(k)}{\partial w_{1, j}}=\frac{\partial[t(k)-a(k)]}{\partial w_{1, j}}=\frac{\partial}{\partial w_{1, j}}\left[t(k)-\left(_{1} \mathbf{w}^{T} \mathbf{p}(k)+b\right)\right]\\
=\frac{\partial}{\partial w_{1, j}}\left[t(k)-\left(\sum_{i=1}^{R} w_{1, i} p_{i}(k)+b\right)\right]
\]
其中 \(p_{i}(k)\) 是第 \(k\) 次迭代中输入向量的第 \(i\) 个元素,上式可简化为:
\[\frac{\partial e(k)}{\partial w_{1, j}}=-p_{j}(k)
\]
梯度的最后一项为:
\[\frac{\partial e(k)}{\partial b}=-1
\]
注意,因为 \(p_{j}(k)\) 和 1 式输入向量 \(z\) 的元素,所以第 \(k\) 次迭代的均方误差的梯度可以记为:
\[\hat{\nabla} F(\mathbf{x})=\nabla e^{2}(k)=-2 e(k) \mathbf{z}(k)
\]
计算均方误差的公式用第 \(k\) 次迭代时的瞬时误差来近似均方误差的精妙之处:这个梯度的近似值的计算只需要将误差与输入相乘。
\(\nabla F(\mathbf{x})\) 的近似值可被用于最速下降算法。具有固定学习率的最速下降算法可写作:
\[\mathbf{x}_{k+1}=\mathbf{x}_{k}-\alpha \nabla F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{X}_{k}}
\]
如果用梯度的估计值替代梯度,可得:
\[\mathbf{x}_{k+1}=\mathbf{x}_{k}+2 \alpha e(k) \mathbf{z}(k)
\]
或者
\[_{1} \mathbf{w}(k+1)=_{1} \mathbf{w}(k)+2 \alpha e(k) \mathbf{p}(k)
\]
和
\[b(k+1)=b(k)+2 \alpha e(k)
\]
最后两个等式构成了最小均方(LMS)算法。将前面的结果扩展到多维可得矩阵的第 \(i\) 行的更新:
\[_{i} \mathbf{w}(k+1)=_{i} \mathbf{w}(k)+2 \alpha e_{i}(k) \mathbf{p}(k)
\]
其中 \(e_{i}(k)\) 是第 \(k\) 次迭代时误差的第 \(i\) 个元素。偏置的第 \(i\) 个元素的更新为:
\[b_{i}(k+1)=b_{i}(k)+2 \alpha e_{i}(k)
\]
写成矩阵形式为:
\[\mathbf{W}(k+1)=\mathbf{W}(k)+2 \alpha \mathbf{e}(k) \mathbf{p}^{T}(k)
\]
\[\mathbf{b}(k+1)=\mathbf{b}(k)+2 \alpha \mathbf{e}(k)
\]
其中 误差 \(e\) 和偏置 \(b\) 是向量。
5.4 收敛性分析
权值向量的期望值将收敛于
\[\mathbf{x}^{*}=\mathbf{R}^{-1} \mathbf{h}
\]
系统稳定的条件:
\[\alpha<1 / \lambda_{i}
\]
或
\[0<\alpha<1 / \lambda_{\max }
\]
若满足上述稳定条件,LMS算法的稳态解为:
\[E\left[\mathbf{x}_{s s}\right]=[\mathbf{I}-2 \alpha \mathbf{R}] E\left[\mathbf{x}_{s s}\right]+2 \alpha \mathbf{h}
\]
或者
\[E\left[\mathbf{x}_{s s}\right]=\mathbf{R}^{-1} \mathbf{h}=\mathbf{x}^{*}
\]
5.5 自适应滤波器
ADALINE 网络比感知机有更广泛的应用。事实上,可以有把握地说,在实际应用中,ADALINE 是使用最广泛的神经网络之一。
ADALINE 网络的一个主要应用领域是自适应滤波。知道现在,它仍被广泛地应用。
首先我们需要介绍一个有 R 个输入的 抽头延迟线(tapped delay line)
模块
输入信号从左侧输入。抽头延迟线的输出端是一个 R 维的向量,由当前时刻的输入信号和分别经过 1 到 R-1 时间步 延迟的输入信号所构成。
把 抽头延迟器 和 ADALINE 网络 结合起来,我们就能设计一个 自适应滤波器(adaptive filter) 。滤波器的输出为:
\[a(k)=\operatorname{purelin}(\mathbf{W} \mathbf{p}+b)=\sum_{i=1}^{R} w_{1, i} y(k-i+1)+b
\]
上述网络就是数字信号处理中的 有限冲击响应滤波器(Finite Impluse Response , FIR)
[WiSt85]。
5.5.1 自适应噪声消除(例子)
例如,网络最小化的输出“误差”,实际上是一个近似于我们试图要恢复的信号!
假设医生试图检查一个心烦意乱的研究生的脑电图(Electronencephalogram , EEG)发现他想看的信号被 60Hz 噪声源发出的噪声所污染。下面通过一个自适应滤波来消除噪声信号:
如图所示,最初的 60Hz 信号样本输入一个自适应滤波器中,并通过调整它的元件来使“误差” \(e\) 达到最小。因此,自适应滤波器的输出是被噪声污染的 EEG 信号 \(t\) 。 由于自适应滤波器仅仅知道初始的噪声源 \(v\) ,在滤波器试图通过重现被污染信号的过程中,它只能复制自适应滤波器的输出 \(a\) 将接近于干扰噪声 \(m\) 。通过这样的方法,误差 \(e\) 将接近于未被污染的初始 EEG 信号。
在噪声源为单正弦波的情况下,由两个权值且没有偏置值的一个神经元足以实现这个滤波器。滤波器的输入是噪声源的当前值和前一时刻的值。
输入相关矩阵 \(R\) 和 输入/目标 的互相关向量 \(h\) 分别为 \(\mathbf{R}=\left[\mathbf{z z}^{T}\right]\) ,\(\mathbf{h}=E[t \mathbf{z}]\)
输入向量由噪声源和当前值和前一时刻的值构成:
\[\mathbf{z}(k)=\left[ \begin{array}{c}{v(k)} \\ {v(k-1)}\end{array}\right]
\]
目标输出是当前信号和过滤的噪声信号之和:
\[t(k)=s(k)+m(k)
\]
通过展开 \(R\) 和 \(h\) 可得:
\[\mathbf{R}=\left[ \begin{array}{cc}{E\left[v^{2}(k)\right]} & {E[v(k) v(k-1)]} \\ {E[v(k-1) v(k)]} & {E\left[v^{2}(k-1)\right]}\end{array}\right]
\]
和
\[\mathbf{h}=\left[ \begin{array}{c}{E[(s(k)+m(k)) v(k)]} \\ {E[(s(k)+m(k)) v(k-1)]}\end{array}\right]
\]
然后可以得到权值的最小均方误差算法的解
\[\mathbf{x}^{*}=\mathbf{R}^{-1} \mathbf{h}
\]
将得到的 \(R\) 、 \(h\) 和 \(x^{*}\) 带入可得最终均方误差值
\[F(\mathbf{x})=c-2 \mathbf{x}^{T} \mathbf{h}+\mathbf{x}^{T} \mathbf{R} \mathbf{x}
\]
该最小均方误差值与 EEG 信号的均方值相同
5.5.2 回声消除
在长途电话线和用户地线之间连接的“混合”设备处的阻抗不匹配,所以长途电话线上的回声普遍存在。在长距离线的末端,到来的信号被输送到一个自适应滤波器及混合设备。滤波器的输出是混合设备的输出,因此,滤波器试图消除混合设备输出中与输入信号相关的那部分信号,即回声。
第6章 反向传播(Back Propagation , BP)
和 LMS 算法学习法则一样,反向传播算法也是一种近似最速梯度下降算法,它采用均方误差作为性能指标。LMS 算法和反向传播算法的差异仅在于它们计算导数的方式。对于单层的线性网络来说,误差是网络权值的显示线性函数,它关于权值的导数可以轻易地通过计算得到。然而,多层网络采用非线性的传输函数,网络权值和误差之间的关系更为复杂,为了计算导数,需要利用微积分中的链式法则。
1974年 Paul Werbos 的毕业论文中首次描述多层网络训练算法 [Werbo74]。然而直到80年代中期,反向传播算法才被 David Rumelhart, Geoffrey Hinton 和 Ronald Williams
[RuHi86], David Parker [Park85], 还有 Yann Le Cun [LeCu85]重新发现并得到广泛宣传。
如今,通过反向传播算法训练的多层感知机网络是应用最广泛的神经网络。
6.1 多层感知机
考虑三层网络,第一层的权值矩阵记为 \(\mathbf{W}^{1}\) ,第二层的权值矩阵记为 \(\mathbf{W}^{2}\),将输入的神经元个数与每层中神经元的个数依次列出,多层网络结构记为:
\[R-S^{1}-S^{2}-S^{3}
\]
6.1.1 模式分类
两层网络能解决异或问题,有多种不同的多层解决方法,以下是一个例子
6.1.2 函数逼近
在控制系统中,目标是找到合适的反馈函数,从而建立从测得输出到控制输入的映射。在自适应滤波中,目标是找到一个函数,建立从延迟输入信号到合适的输出信号的映射。
已经证明:只要有足够多的隐层单元,一个隐层采用 S 型传输函数,输出层采用线性传输函数的两层网络几乎可以任意精度逼近任意函数[HoSt89]。
函数逼近网络示例:
接下来需要设计一个算法来训练这样的网络
6.2 反向传播算法
多层网络可以表达为:
\[\mathbf{a}^{m+1}=\mathbf{f}^{m+1}\left(\mathbf{W}^{m+1} \mathbf{a}^{m}+\mathbf{b}^{m+1}\right) \text { for } m=0,1, \ldots, M-1
\]
其中 M 是网络的层数,第一层的神经元接收外部输入:
\[\mathbf{a}^{0}=\mathbf{p}
\]
最后一层神经元的输出作为网络的输出:
\[\mathbf{a}=\mathbf{a}^{M}
\]
6.2.1 性能指标
多层网络的反向传播算法是 LMS 算法的推广,并且两个算法都使用 均方误差 作为性能指标。算法需要一组反应正确网络行为的样本:
\[\left\{\mathbf{p}_{1}, \mathbf{t}_{1}\right\},\left\{\mathbf{p}_{2}, \mathbf{t}_{2}\right\}, \ldots,\left\{\mathbf{p}_{Q}, \mathbf{t}_{Q}\right\}
\]
其中 , \(P_{q}\) 是网络的一个输入, \(t_{q}\) 是对应的目标输出。每一个输入传给网络后,网络的输出都将和目标输出进行比较。算法则调整网络的参数以最小化均方误差:
\[F(\mathbf{x})=E\left[e^{2}\right]=E\left[(t-a)^{2}\right]
\]
其中 \(x\) 是网络权值和偏置值构成的向量。如果网络有多个输出,则可以推广为:
\[F(\mathbf{x})=E\left[\mathbf{e}^{T} \mathbf{e}\right]=E\left[(\mathbf{t}-\mathbf{a})^{T}(\mathbf{t}-\mathbf{a})\right]
\]
和 LMS 算法一样,我们用下式近似表示均方误差:
\[\hat{F}(\mathbf{x})=(\mathbf{t}(k)-\mathbf{a}(k))^{T}(\mathbf{t}(k)-\mathbf{a}(k))=\mathbf{e}^{T}(k) \mathbf{e}(k)
\]
原来的误差平方的期望被第 \(k\) 次迭代时的误差平方代替。
近似均方误差的最速梯度下降算法(随机梯度下降)为:
\[\begin{cases}
w_{i, j}^{m}(k+1)=w_{i, j}^{m}(k)-\alpha \frac{\partial \hat{F}}{\partial w_{i, j}^{m}}\\
\\
b_{i}^{m}(k+1)=b_{i}^{m}(k)-\alpha \frac{\partial \hat{F}}{\partial b_{i}^{m}}
\end{cases}
\]
6.2.2 链式法则
单层线性网络(ADALINE)的偏导数可以方便计算出来。对于多层网络而言,误差并不是隐层网络权值的显式函数,因此这些导数的计算并不那么容易。
由于误差是隐层权值的间接函数,我们将用微积分中的链式法则来计算这些导数。假设有一个函数 \(f\) ,它仅仅是变量 \(n\) 的显式函数。我们要计算 \(f\) 关于另一个变量 \(w\) 的导数,链式法则为:
\[\frac{d f(n(w))}{d w}=\frac{d f(n)}{d n} \times \frac{d n(w)}{d w}
\]
若
\[f(n)=e^{n} \text { and } n=2 w, \text { so that } f(n(w))=e^{2 w}
\]
则
\[\frac{d f(n(w))}{d w}=\frac{d f(n)}{d n} \times \frac{d n(w)}{d w}=\left(e^{n}\right)(2)
\]
导数为
\[\frac{\partial \hat{F}}{\partial w_{i, j}^{m}}=\frac{\partial \hat{F}}{\partial n_{i}^{m}} \times \frac{\partial n_{i}^{m}}{\partial w_{i, j}^{m}}
\]
\[\frac{\partial \hat{F}}{\partial b_{i}^{m}}=\frac{\partial \hat{F}}{\partial n_{i}^{m}} \times \frac{\partial n_{i}^{m}}{\partial b_{i}^{m}}
\]
由于第 \(m\) 层的净输入是该层权值和偏置值的显式函数,因此上式的第二项可以容易计算处:
\[n_{i}^{m}=\sum_{j=1}^{S^{m-1}} w_{i, j}^{m} a_{j}^{m-1}+b_{i}^{m}
\]
因此
\[\frac{\partial n_{i}^{m}}{\partial w_{i, j}^{m}}=a_{j}^{m-1}, \frac{\partial n_{i}^{m}}{\partial b_{i}^{m}}=1
\]
定义
\[s_{i}^{m}=\frac{\partial \hat{F}}{\partial n_{i}^{m}}
\]
即 \(\hat{F}\) 对第 \(m\) 层中净输入额第 \(i\) 个元素变化的敏感度(sensitivity) ,导数可以简化为:
\[\frac{\partial \hat{F}}{\partial w_{i, j}^{m}}=s_{i}^{m} a_{j}^{m-1}
\]
\[\frac{\partial \hat{F}}{\partial b_{i}^{m}}=s_{i}^{m}
\]
近似梯度下降算法可以表示为:
\[w_{i, j}^{m}(k+1)=w_{i, j}^{m}(k)-\alpha s_{i}^{m} a_{j}^{m-1}
\]
\[b_{i}^{m}(k+1)=b_{i}^{m}(k)-\alpha s_{i}^{m}
\]
写成矩阵形式:
\[\mathbf{W}^{m}(k+1)=\mathbf{W}^{m}(k)-\alpha \mathbf{s}^{m}\left(\mathbf{a}^{m-1}\right)^{T}
\]
\[\mathbf{b}^{m}(k+1)=\mathbf{b}^{m}(k)-\alpha \mathbf{s}^{m}
\]
其中
\[\mathbf{s}^{m} \equiv \frac{\partial \hat{F}}{\partial \mathbf{n}^{m}}=\left[ \begin{array}{c}{\frac{\partial \hat{F}}{\partial n_{1}^{m}}} \\
{\frac{\partial \hat{F}}{\partial n_{1}^{m}}} \\
{\vdots} \\
{\frac{\partial F}{\partial n_{s^{m}}^{m}}}\end{array}\right]
\]
6.2.3 敏感度的反向传播
现在剩下的工作就是计算敏感度 \(s^{m}\) ,这需要再次利用链式法则。反向传播正是由这个过程而得名,因为它描述了一种递归关系,即第 \(m\) 层敏感度是由第 \(m+1\) 层敏感度计算得到的。
为了推导敏感度的递归关系,我们将使用 Jacobian (雅可比)矩阵
\[\frac{\partial \mathbf{n}^{m+1}}{\partial \mathbf{n}^{m}} \equiv
\left[ \begin{array}{cc}{\frac{\partial n_{1}^{m+1}}{\partial n_{1}^{m}}} & {\frac{\partial n_{1}^{m+1}}{\partial n_{2}^{m}}} & \ldots & {\frac{\partial n_{1}^{m+1}}{\partial n_{S^{m}}^{m}}} \\
\\
{\frac{\partial n_{2}^{m+1}}{\partial n_{1}^{m}}} & {\frac{\partial n_{2}^{m+1}}{\partial n_{2}^{m}}} & \ldots & {\frac{\partial n_{2}^{m+1}}{\partial n_{S^{m}}^{m}}} \\
{\vdots} & {\vdots} & {\vdots} & {\vdots}\\
{\frac{\partial n_{s^{m+1}}^{m+1}}{\partial n_{1}^{m}}} & {\frac{\partial n_{s^{m+1}}^{m+1}}{\partial n_{2}^{m}}} & \ldots & {\frac{\partial n_{s^{m+1}}^{m+1}}{\partial n_{s^{m}}^{m}}}\end{array}\right]
\]
接下来要找到一种计算表达式。考虑矩阵的第 \(i,j\) 项元素
\[\frac{\partial n_{i}^{m+1}}{\partial n_{j}^{m}}=\frac{\partial\left(\sum_{l=1}^{m+1} a_{l}^{m}+b_{i}^{m+1}\right)}{\partial n_{j}^{m}}=w_{i, j}^{m+1} \frac{\partial a_{j}^{m}}{\partial n_{j}^{m}}\\
=w_{i, j}^{m+1} \frac{\partial f^{m}\left(n_{j}^{m}\right)}{\partial n_{j}^{m}}=w_{i, j}^{m+1} f^{m}\left(n_{j}^{m}\right)
\]
其中
\[\dot{f}^{m}\left(n_{j}^{m}\right)=\frac{\partial f^{m}\left(n_{j}^{m}\right)}{\partial n_{j}^{m}}
\]
故这个雅可比矩阵可以写为
\[\frac{\partial \mathbf{n}^{m+1}}{\partial \mathbf{n}^{m}}=\mathbf{W}^{m+1} \dot{\mathbf{F}}^{m}\left(\mathbf{n}^{m}\right)
\]
其中
\[\dot{\mathbf{F}}^{m}\left(\mathbf{n}^{m}\right)=
\left[ \begin{array}{cc}{\dot{f}^{m}\left(n_{1}^{m}\right)} & {0} & \ldots & {0} \\
\\
{0} & {\dot{f}^{m}\left(n_{2}^{m}\right)} & \ldots & {0} \\
{\vdots} & {\vdots} & {\vdots} & {\vdots}\\
{0} & {0} & \ldots & {\dot{f}^{m}\left(n_{S^{n}}^{m}\right)}\end{array}\right]
\]
利用矩阵形式的链式法则写出敏感词之间的递归关系:
\[\mathbf{s}^{m}=\frac{\partial \hat{F}}{\partial \mathbf{n}^{m}}=\left(\frac{\partial \mathbf{n}^{m+1}}{\partial \mathbf{n}^{m}}\right)^{T} \frac{\partial \hat{F}}{\partial \mathbf{n}^{m+1}}=\dot{\mathbf{F}}^{m}\left(\mathbf{n}^{m}\right)\left(\mathbf{W}^{m+1}\right)^{T} \frac{\partial \hat{F}}{\partial \mathbf{n}^{m+1}} \\
=\dot{\mathbf{F}}^{m}\left(\mathbf{n}^{m}\right)\left(\mathbf{W}^{m+1}\right)^{T} \mathbf{s}^{m+1}
\]
由此可以看出反向传播算法名称的由来。敏感度在网络中从最后一层反向传播到第一层:
\[\mathbf{s}^{M} \rightarrow \mathbf{s}^{M-1} \rightarrow \ldots \rightarrow \mathbf{s}^{2} \rightarrow \mathbf{s}^{1}
\]
需要强调的是,反向传播算法利用了和 LMS 算法相同的近似最速下降方法。唯一复杂的地方在于,为了计算梯度我们首先要反向传播敏感度。反向传播的精妙之处在于链式法则的有效实现。
还差一部我们便可以完成反向传播算法。我们需要一个起始点 \(s^{M}\)来实现上述递归关系。它可以在最后一层得到:
\[s_{i}^{M}=\frac{\partial \hat{F}}{\partial n_{i}^{M}}=\frac{\partial(\mathbf{t}-\mathbf{a})^{T}(\mathbf{t}-\mathbf{a})}{\partial n_{i}^{M}}=\frac{\partial \sum_{i=1}^{n}\left(t_{j}-a_{j}\right)^{2}}{\partial n_{i}^{M}}=-2\left(t_{i}-a_{i}\right) \frac{\partial a_{i}}{\partial n_{i}^{M}}
\]
由于
\[\frac{\partial a_{i}}{\partial n_{i}^{M}}=\frac{\partial a_{i}^{M}}{\partial n_{i}^{M}}=\frac{\partial f^{M}\left(n_{i}^{M}\right)}{\partial n_{i}^{M}}=\dot{f}^{M}\left(n_{i}^{M}\right)
\]
可以得到
\[s_{i}^{M}=-2\left(t_{i}-a_{i}\right) \dot{f}^{M}\left(n_{i}^{M}\right)
\]
写成矩阵形式为
\[\mathbf{s}^{M}=-2 \dot{\mathbf{F}}^{M}\left(\mathbf{n}^{M}\right)(\mathbf{t}-\mathbf{a})
\]
6.2.4 总结
第一步将输入向前传过网络:
\[\mathbf{a}^{0}=\mathbf{p}
\]
\[\mathbf{a}^{m+1}=\mathbf{f}^{m+1}\left(\mathbf{W}^{m+1} \mathbf{a}^{m}+\mathbf{b}^{m+1}\right) \text { for } m=0,1, \ldots, M-1
\]
\[\mathbf{a}=\mathbf{a}^{M}
\]
接着,将敏感度反向传过网络:
\[\mathbf{s}^{M}=-2 \dot{\mathbf{F}}^{M}\left(\mathbf{n}^{M}\right)(\mathbf{t}-\mathbf{a})
\]
\[\mathbf{s}^{m}=\dot{\mathbf{F}}^{m}\left(\mathbf{n}^{m}\right)\left(\mathbf{W}^{m+1}\right)^{T} \mathbf{s}^{m+1}, \text { for } m=M-1, \ldots, 2,1
\]
最后,利用近似最速下降规则更新网络的权值和偏置值:
\[\mathbf{W}^{m}(k+1)=\mathbf{W}^{m}(k)-\alpha \mathbf{s}^{m}\left(\mathbf{a}^{m-1}\right)^{T}
\]
\[\mathbf{b}^{m}(k+1)=\mathbf{b}^{m}(k)-\alpha \mathbf{s}^{m}
\]
6.3 例子
为了演示反向传播算法,需要选择一个网络并把它应用到一个实际的问题中。
我们需要一个网络逼近于下面的函数:
\[g(p)=1+\sin \left(\frac{\pi}{4} p\right) \text { for }-2 \leq p \leq 2
\]
在多个 \(p\) 值处计算该函数以得到训练集
在开始反向传播算法之前,我们还需要选定网络权值和偏置值的初始值。通常它们都被设置为比较小的随机数,我们先将其设为:
\[\mathbf{w}^{1}(0)=\left[ \begin{array}{c}{-0.27} \\ {-0.41}\end{array}\right], \mathbf{b}^{1}(0)=\left[ \begin{array}{c}{-0.48} \\ {-0.13}\end{array}\right], \mathbf{w}^{2}(0)=[0.09-0.17], \mathbf{b}^{2}(0)=[0.48]
\]
接下来我们需要选定一个训练集\(\left\{p_{1}, t_{1}\right\},\left\{p_{2}, t_{2}\right\}, \ldots,\left\{p_{Q}, t_{Q}\right\}\)。我们在[-2,2]范围内对函数进行21次间距为0.2的等距采样。
虽然训练样本可以任意顺序选择,但通常会采用随机的方法取选取。第一个输入我们选择 \(p=1\) ,即第16个训练样本:
\[a^{0}=p=1
\]
于是,第一个网络层的输出为
\[\mathbf{a}^{1}=\mathbf{f}^{1}\left(\mathbf{W}^{1} \mathbf{a}^{0}+\mathbf{b}^{1}\right)= \operatorname{logsig}\left(\left[ \begin{array}{c}{-0.27} \\ {-0.41}\end{array}\right] \left[ \begin{array}{c}{-0.48} \\ {-0.13}\end{array}\right]\right)=\operatorname{logsig}\left(\left[ \begin{array}{c}{-0.75} \\ {-0.54}\end{array}\right]\right)\\
\\
=\left[ \begin{array}{c}{\frac{1}{1+e^{0.7}}} \\
{\frac{1}{1+e^{0.54}}}\end{array}\right]=\left[ \begin{array}{c}{0.321} \\ {0.368}\end{array}\right]
\]
第二层的输出为
\[a^{2}=f^{2}\left(\mathbf{W}^{2} \mathbf{a}^{1}+\mathbf{b}^{2}\right)=\text { purelin }([0.09-0.17]] \left[ \begin{array}{c}{0.321} \\ {0.368}\end{array}\right]+[0.48] )=[0.446]
\]
误差为
\[e=t-a=\left\{1+\sin \left(\frac{\pi}{4} p\right)\right\}-a^{2}=\left\{1+\sin \left(\frac{\pi}{4} 1\right)\right\}-0.446=1.261
\]
反向传播的下一步是回传敏感度。在开始反向传播之前,我们还需要计算传输函数的导数 \(\dot{f}^{\mathrm{1}}(n)\) 和 \(\dot{f}^{2}(n)\) 。对第一层
\[\dot{f}^{1}(n)=\frac{d}{d n}\left(\frac{1}{1+e^{-n}}\right)=\frac{e^{-n}}{\left(1+e^{-n}\right)^{2}}=\left(1-\frac{1}{1+e^{-n}}\right)\left(\frac{1}{1+e^{-n}}\right)=\left(1-a^{1}\right)\left(a^{1}\right)
\]
对第二层
\[\dot{f}^{2}(n)=\frac{d}{d n}(n)=1
\]
现在开始进行反向传播,起点在第二层
\[\mathbf{s}^{2}=-2 \dot{\mathbf{F}}^{2}\left(\mathbf{n}^{2}\right)(\mathbf{t}-\mathbf{a})=-2\left[\dot{f}^{2}\left(n^{2}\right)\right](1.261)=-2[1](1.261)=-2.522
\]
然后可以计算出第一层的敏感度:
\[\mathbf{s}^{1}=\dot{\mathbf{F}}^{1}\left(\mathbf{n}^{1}\right)\left(\mathbf{W}^{2}\right)^{T} \mathbf{s}^{2}=\left[ \begin{array}{cc}{\left(1-a_{1}^{1}\right)\left(a_{1}^{1}\right)} & {0} \\ {0} & {\left(1-a_{2}^{1}\right)\left(a_{2}^{1}\right)}\end{array}\right] \left[ \begin{array}{c}{0.09} \\ {-0.17}\end{array}\right] \left[ \begin{array}{c}{-2.522}\end{array}\right]\\
\\
=\left[ \begin{array}{cc}{(1-0.321)(0.321)} & {0} \\ {0} & {(1-0.368)(0.368)}\end{array}\right] \left[ \begin{array}{c}{0.09} \\ {-0.17}\end{array}\right] \left[ \begin{array}{c}{-2.522}\end{array}\right]\\
\\
=\left[ \begin{array}{cc}{0.218} & {0} \\ {0} & {0.233}\end{array}\right] \left[ \begin{array}{c}{-0.227} \\ {0.429}\end{array}\right]=\left[ \begin{array}{c}{-0.0495} \\ {0.0997}\end{array}\right]
\]
算法的最后一步是更新权值,设置学习率 \(\alpha =0.1\) 权值为:
\[\mathbf{w}^{2}(1)=\mathbf{w}^{2}(0)-\alpha \mathbf{s}^{2}\left(\mathbf{a}^{1}\right)^{T}\\
=[0.09-0.17]-0.1[-2.522][0.3210 .368]
\\
=[0.171-0.0772]
\]
\[\mathbf{b}^{2}(1)=\mathbf{b}^{2}(0)-\alpha \mathbf{s}^{2}=[0.48]-0.1[-2.522]=[0.732]
\]
\[\mathbf{W}^{1}(1)=\mathbf{W}^{1}(0)-\alpha \mathbf{s}^{1}\left(\mathbf{a}^{0}\right)^{T}=\left[ \begin{array}{c}{-0.27} \\ {-0.41}\end{array}\right]-0.1 \left[ \begin{array}{c}{-0.0495} \\ {0.0997}\end{array}\right] \left[ \begin{array}{c}{-0.265} \\ {-0.420}\end{array}\right]
\]
\[\mathbf{b}^{1}(1)=\mathbf{b}^{1}(0)-\alpha \mathbf{s}^{1}=\left[ \begin{array}{c}{-0.48} \\ {-0.13}\end{array}\right]-0.1 \left[ \begin{array}{c}{-0.0495} \\ {0.0997}\end{array}\right]=\left[ \begin{array}{c}{-0.475} \\ {-0.140}\end{array}\right]
\]
这样,就完成了反向传播算法的第一次迭代。接着再从训练集中随机选取另一个输入并执行一次新的算法迭代,直到网络输出和目标函数之间的差异达到可接受的程度。
6.4 批量训练和增量训练
网络的连接权值和偏置值在每一个样本传过网络后都被更新。我们也可以执行 批量训练(batch training)先计算完整梯度(即在所有输入都传给网络进行计算之后)再更新连接权值和偏置值。例如,假设每个样本出现的概率是一样的,均方误差性能指标可以写为
\[F(\mathbf{x})=E\left[\mathbf{e}^{T} \mathbf{e}\right]=E\left[(\mathbf{t}-\mathbf{a})^{T}(\mathbf{t}-\mathbf{a})\right]=\frac{1}{Q} \sum_{q=1}^{Q}\left(\mathbf{t}_{q}-\mathbf{a}_{q}\right)^{T}\left(\mathbf{t}_{q}-\mathbf{a}_{q}\right)
\]
这个性能指标的总梯度为
\[\nabla F(\mathbf{x})=\nabla\left\{\frac{1}{Q} \sum_{q=1}^{Q}\left(\mathbf{t}_{q}-\mathbf{a}_{q}\right)^{T}\left(\mathbf{t}_{q}-\mathbf{a}_{q}\right)\right\}=\frac{1}{Q} \sum_{q=1}^{Q} \nabla\left\{\left(\mathbf{t}_{q}-\mathbf{a}_{q}\right)^{T}\left(\mathbf{t}_{q}-\mathbf{a}_{q}\right)\right\}
\]
因此,均方误差的总梯度等于每个样本平方误差梯度的平均。所以,为了实现反向传播算法的批量训练,我们首先对训练集中的所有样本先求计算前向传播的值和反向传播的敏感度,然后求单个样本梯度的平均以得到总梯度。这样,批量训练最速下降算法的更新公式为
\[\mathbf{W}^{m}(k+1)=\mathbf{W}^{m}(k)-\frac{\alpha}{Q} \sum_{q=1}^{Q} \mathbf{s}_{q}^{m}\left(\mathbf{a}_{q}^{m-1}\right)^{T}
\]
\[\mathbf{b}^{m}(k+1)=\mathbf{b}^{m}(k)-\frac{\alpha}{Q} \sum_{q=1}^{Q} \mathbf{s}_{q}^{m}
\]
6.5 使用反向传播
6.5.1 网络结构的选择
要逼近一个具有大量拐点的函数,需要隐层中有大量的神经元。
6.5.2 收敛性
网络有逼近函数的能力,但是学习算法却不一定能产生能准确逼近函数的网络参数。
6.5.3 泛化
一个网络要能够泛化,它包含的参数个数应该少于训练集中数据点的个数。
第7章 反向传播算法的变形
反向传播算法收敛速度慢
启发式技术:可变的学习率、使用冲量以及改变变量范围
数值优化技术:[Shan90], [Barn92], [Batt92] and [Char92] 等。
成功用于训练多层感知机的数值优化技术:共轭梯度算法和 Levenberg-Marquardt 算法(牛顿法的一种变形)
算法差异在于它们利用得到的导数来更新权值的方式。
把基本的反向传播算法称为 最速下降反向传播算法(steepest descent
backpropagation , SDBP)
7.1 反向传播算法的缺点
为了防止进入鞍点区域,将初始权值和偏置设置成小的随机值
平滑轨迹,防止振荡
7.2 反向传播的启发式改进
7.2.1 冲量(Momentum)
平滑轨迹上的振荡,提升算法的收敛性。
一阶滤波器:
\[y(k)=\gamma y(k-1)+(1-\gamma) w(k)
\]
\(w(k)\) 是滤波器的输入, \(y(k)\)是滤波器的输出, \(\gamma\) 是冲量系数且必须满足如下条件
\[0 \leq \gamma<1
\]
将冲量用于参数更新时,可得 反向传播算法的冲量改进(momentum modification to backpropagation , MOBP)
\[\Delta \mathbf{W}^{m}(k)=\gamma \Delta \mathbf{W}^{m}(k-1)-(1-\gamma) \alpha \mathbf{s}^{m}\left(\mathbf{a}^{m-1}\right)^{T}
\]
\[\Delta \mathbf{b}^{m}(k)=\gamma \Delta \mathbf{b}^{m}(k-1)-(1-\gamma) \alpha \mathbf{s}^{m}
\]
目标:使用较大的学习率同时保证算法的稳定性。
该方法倾向于在相同方向上进行梯度更新
7.2.2 可变学习率
可变学习率反向传播算法(variable learning rate backpropagation algorithm ,VLBP)
7.2.3 数值优化技术
7.2.3.1 共轭梯度
不需要计算二阶导数但拥有二阶函数的收敛性质。共轭梯度反向传播(conjugate gradient backpropagation , CGBP)
黄金分割搜索算法[Scal85]:
7.2.3.2 Levenberg-Marquardt 算法
LMBP
用于最小化非线性函数的平方和。此方法非常适合采用均方误差为性能指标的神经网络训练。
\[\mathbf{x}_{k+1}=\mathbf{x}_{k}-\left[\mathbf{J}^{T}\left(\mathbf{x}_{k}\right) \mathbf{J}\left(\mathbf{x}_{k}\right)+\mu_{k} \mathbf{I}\right]^{-1} \mathbf{J}^{T}\left(\mathbf{x}_{k}\right) \mathbf{v}\left(\mathbf{x}_{k}\right)
\]
或
\[\Delta \mathbf{x}_{k}=-\left[\mathbf{J}^{T}\left(\mathbf{x}_{k}\right) \mathbf{J}\left(\mathbf{x}_{k}\right)+\mu_{k} \mathbf{I}\right]^{-1} \mathbf{J}^{T}\left(\mathbf{x}_{k}\right) \mathbf{v}\left(\mathbf{x}_{k}\right)
\]
其中 \(J(x)\) 为雅可比矩阵
误差向量
\[\Delta \mathbf{x}_{k}=-\left[\mathbf{J}^{T}\left(\mathbf{x}_{k}\right) \mathbf{J}\left(\mathbf{x}_{k}\right)+\mu_{k} \mathbf{I}\right]^{-1} \mathbf{J}^{T}\left(\mathbf{x}_{k}\right) \mathbf{v}\left(\mathbf{x}_{k}\right)
\]
参数向量
\[\mathbf{x}^{T}=\left[ \begin{array}{lll}{x_{1}} & {x_{2}} & {\dots} & {x_{n}}\end{array}\right]= \left[ \begin{array}{lllllll}{w_{1,1}^{1}w_{1,2}^{1}} & {\dots}&{w_{S^{1}, R}^{1} b_{1}^{1}} & {\dots} & {b_{S^{1}}^{1} w_{1,1}^{2}} & {\dots} & {b_{S^{M}}^{M}}\end{array}\right]
\]
\(N=Q \times S^{M}\) 且 \(S^{1}(R+1)+S^{2}\left(S^{1}+1\right)+\cdots+S^{M}\left(S^{M-1}+1\right)\)
雅可比矩阵的每一项都可以通过对反向传播算法进行简单改进求得:
\[[\mathbf{J}]_{h, l}=\frac{\partial v_{h}}{\partial x_{l}}=\frac{\partial e_{k, q}}{\partial w_{i, j}^{m}}=\frac{\partial e_{k, q}}{\partial n_{i, q}^{m}} \times \frac{\partial n_{i, q}^{m}}{\partial w_{i, j}^{m}}=\tilde{s}_{i, h}^{m} \times \frac{\partial n_{i, q}^{m}}{\partial w_{i, j}^{m}}=\tilde{s}_{i, h}^{m} \times a_{j, q}^{m-1}
\]
如果 \(x_{l}\) 是偏置值,
\[[\mathbf{J}]_{h, l}=\frac{\partial v_{h}}{\partial x_{l}}=\frac{\partial e_{k, q}}{\partial b_{i}^{m}}=\frac{\partial e_{k, q}}{\partial n_{i, q}^{m}} \times \frac{\partial n_{i, q}^{m}}{\partial b_{i}^{m}}=\tilde{s}_{i, h}^{m} \times \frac{\partial n_{i, q}^{m}}{\partial b_{i}^{m}}=\tilde{s}_{i, h}^{m}
\]
Marquardt 敏感度定义为:
\[\tilde{S}_{i, h}^{m} \equiv \frac{\partial v_{h}}{\partial n_{i, q}^{m}}=\frac{\partial e_{k, q}}{\partial n_{i, q}^{m}}
\]
其中 \(h=(q-1) S^{M}+k\)
矩阵形式:
初始化
\[\tilde{S}_{q}^{M}=-\dot{\mathbf{F}}^{M}\left(\mathbf{n}_{q}^{M}\right)
\]
行列反向传播求解
\[\tilde{S}_{q}^{m}=\dot{\mathbf{F}}^{m}\left(\mathbf{n}_{q}^{m}\right)\left(\mathbf{W}^{m+1}\right)^{T} \tilde{S}_{q}^{m+1}
\]
对每个输入计算得到的矩阵进行增广,可得每一层完整的 Marquardt 敏感度矩阵
\[\tilde{S}^{m}=\left[\tilde{S}_{1}^{m}\left|\tilde{S}_{2}^{m}\right| \ldots | \tilde{S}_{Q}^{m}\right]
\]
第8章 泛化(generalization)
神经元数量过多时,在训练数据上容易过拟合。泛化能力出众的网络应当在训练数据和新的数据上具有同样优异的表现。
Ockham's razor 奥卡姆剃刀 :如无必要,勿增实体!
产生最简神经网络:生长法、剪枝法、全局搜索法、正则化法和提前终止法
后两种方法约束网络权值大小来实现网络最简化
8.1 提升泛化性能的方法
75%训练 15%验证 15%测试
8.1.1 提前终止法(Early Stopping)
交叉验证
8.1.2 正则化法 (Regularization)
添加一个包含逼近函数导数的惩罚项,或者说正则化项,以平滑所得到的函数。
\[F(\mathbf{x})=\beta E_{D}+\alpha E_{W}=\beta \sum_{q=1}^{Q}\left(\mathbf{t}_{q}-\mathbf{a}_{q}\right)^{T}\left(\mathbf{t}_{q}-\mathbf{a}_{q}\right)+\alpha \sum_{i=1}^{n} x_{i}^{2}
\]
比率 $\alpha / \beta $ 用于控制网络解的有效复杂度。比率越大,网络响应越平滑。
8.1.3 贝叶斯分析(Bayesian Analysis)
如果存在两个随机事件 A 和 B ,那么已知事件 B 发生的情况下,事件 A 发生的条件概率为
\[P(A | B)=\frac{P(B | A) P(A)}{P(B)}
\]
8.1.4 贝叶斯正则化
第一层贝叶斯框架
第二层贝叶斯框架
最大似然估计
好复杂。。。
然后看不懂了。。。太难了,公式推不动!!!有空再补
第9章 动态网络
输出不但依赖于当前的网络输入,还依赖于之前的输入、输出及状态等。(有记忆性)
动态网络可以逼近一个 动力学系统。有众多应用:金融系统的预测、通信系统的信道均衡、电力系统的相位探测、排序、故障检测、语音识别、自然语言中的语法学习、遗传学中蛋白质结构预测。
9.1 分层数字动态网络(Layered Digital Dynamic Networks (LDDN))
可以方便地表示具有多个反馈连接及抽头延迟线(tapped delay lines , TDL)的网络。
\[\mathbf{n}^{m}(t)=\sum_{l \in L_{m}^{f} d \in D L_{m, l}} \mathbf{L} \mathbf{W}^{m, l}(d) \mathbf{a}^{l}(t-d)++\sum_{l \in I_{m} d \in D I_{m, l}} \mathbf{I} \mathbf{W}^{m, l}(d) \mathbf{p}^{l}(t-d)+\mathbf{b}^{m}
\]
第 \(m\) 层的输出计算为
\[\mathbf{a}^{m}(t)=\mathbf{f}^{m}\left(\mathbf{n}^{m}(t)\right)
\]
示例
静态网络可以逼近静态函数。动态网络可以通过训练逼近动力学系统,如机械臂、飞行器、生物过程、经济体系等,这些系统的输出依赖于之前输入和输出的历史。
9.2 动态网络的反向传播算法
动态网络的反向传播算法:时间反向传播算法(backpropagation-throughtime , BPTT)和 实时回复学习(real-time recurrent learning , RTRL)
第10章 竞争网络
使用联想学习规则进行自适应学习,以实现模式分类。
竞争网络、特征图网络以及学习向量量化(Learning Vector Quantization , LVQ)网络
Hamming 网络是最简单的竞争网络之一,其输出层的神经元通过互相竞争从而产生一个胜者。这个胜者表明了何种标准模式最能代表输入模式。
10.1 Hamming 网络
Hamming 网络包含两层,第一层(是一个 instat 层)将输入向量和标准向量相互关联起来。第二层采用竞争方式确定最接近于输入向量的标准向量。
10.1.1 第一层
单个instar只能识别一种模式。为了实现多个模式,需要多个 instar ,Hamming 网络实现了这一点。
假设要让网络识别如下的标准向量
\[\left\{\mathbf{p}_{1}, \mathbf{p}_{2}, \dots, \mathbf{p}_{Q}\right\}
\]
则第一层的权值矩阵 \(W^{1}\) 和偏置向量 \(b^{1}\) 为:
\[\mathbf{W}^{1}=\left[ \begin{array}{c}{ _{1}\mathbf{w}^{T}} \\ { _{2}\mathbf{w}^{T}} \\ {\vdots} \\ {_{s}\mathbf{w}^{T}}\end{array}\right]=\left[ \begin{array}{c}{\mathbf{p}_{1}^{T}} \\ {\mathbf{p}_{2}^{T}} \\ {\vdots} \\ {\mathbf{p}_{Q}^{T}}\end{array}\right], \mathbf{b}^{1}=\left[ \begin{array}{c}{R} \\ {R} \\ {\vdots} \\ {R}\end{array}\right]
\]
其中, \(\mathbf{W}^{1}\) 的每一行代表了一个想要识别的标准向量, \(B^{1}\) 中的每一个元素都设为等于输入向量的元素个数R (神经元的数量 S 等于将要被识别的标准向量个数 Q )
因此,第一层的输出为:
\[\mathbf{a}^{1}=\mathbf{W}^{1} \mathbf{p}+\mathbf{b}^{1}=\left[ \begin{array}{c}{\mathbf{p}_{1}^{T} \mathbf{p}+R} \\ {\mathbf{p}_{2}^{T} \mathbf{p}+R} \\ {\vdots} \\ {\mathbf{p}_{Q}^{T} \mathbf{p}+R}\end{array}\right]
\]
注意,第一层的输出等于标准向量于输入的乘积再加上R
10.1.2 第二层
在instar 中,使用了 hardlim 传输函数来决定输入向量是否足够接近于标准向量。 Hamming 网络的第二个层拥有多个 instar ,因此需要确定哪个标准向量于输入最接近。我们会用一个竞争层代替一个 hardlim 传输函数以选择最接近的标准向量。
第二层是一个竞争层,这一层的神经元使用前馈层的输出进行初始化,这些输出指明了标准模式和输入向量间的相互关系。然后这一层的神经元之间相互竞争以决出一个胜负,即竞争过后只有一个神经元具有非零输出。获胜的神经元指明了输入数据所属的类别(每一个标准向量代表一个类别)
首先使用第一层的输出 \(a^{1}\) 初始化第二层
\[\mathbf{a}^{2}(0)=\mathbf{a}^{1}
\]
然后更新第二层的输出
\[\mathbf{a}^{2}(t+1)=\operatorname{poslin}\left(\mathbf{W}^{2} \mathbf{a}^{2}(t)\right)
\]
第二层的权值矩阵 \(W^{2}\) 的对角线上的元素都被设为1 ,非对角线上的元素被设为一个很小的负数。
\[w_{i j}^{2}=\left\{\begin{aligned} 1, & \text { if } i=j \\-\varepsilon, & \text { otherwise } \end{aligned}\right., \text { where } 0<\varepsilon<\frac{1}{S-1}
\]
该矩阵产生 侧向抑制 (lateral inhibition) ,即每一个神经元的输出都会对所有其他神经元产生一个抑制作用。最终稳定时,只有一个 神经元有非零输出。
10.2 竞争层 (competition)
由于其每个神经元都激活自身并抑制其他所有神经元。
定义一个传输函数来实现回复竞争层的功能:
\[\mathbf{a}=compet(\mathbf{n})
\]
它找到拥有最大净输入的神经元的索引 \(i^{*}\) ,并将该神经元的输出置为 1(平局时选索引最小的神经元),同时将其他所有神经元的输出置为0
\[a_{i}=\left\{\begin{array}{l}{1, i=i^{*}} \\ {0, i \neq i^{*}}\end{array}\right., \text { where } n_{i^{*}} \geq n_{i}, \forall i, \text { and } i^{*} \leq i, \forall n_{i}=n_{i^{*}}
\]
和 Hamming 网络一样,标准向量被存储在 \(W\) 矩阵的行中。网络净输入 \(n\) 计算了输入向量 \(p\) 与每一个标准向量 \(_{i} W\)之间的距离(假设所有向量都被归一化,长度为L)。每个神经元 \(i\) 的净输入 \(n_{i}\) 正比于 \(p\) 与标准向量 \(_{i}W\) 之间的夹角\(\theta _{i}\):
\[\mathbf{n}=\mathbf{W}_{\mathbf{p}}=\left[ \begin{array}{c}{_{1}\mathbf{w}^{T}} \\ {_{2} \mathbf{w}^{T}} \\ {\vdots} \\ {_{s}\mathbf{w}^{T}}\end{array}\right] \mathbf{p}=\left[ \begin{array}{c}{_{1}\mathbf{w}^{T} \mathbf{p}} \\ {_{2} \mathbf{w}^{T} \mathbf{p}} \\ {\vdots} \\ {_{s}\mathbf{w}^{T} \mathbf{p}}\end{array}\right]=\left[ \begin{array}{c}{L^{2} \cos \theta_{1}} \\ {L^{2} \cos \theta_{2}} \\ {\vdots} \\ {L^{2} \cos \theta_{S}}\end{array}\right]
\]
竞争函数将方向上与输入向量最接近的权值向量所对应的神经元输出设置为1:
\[\mathbf{a}=\mathbf{c} \mathbf{o} \mathbf{m} \mathbf{p} \mathbf{e} \mathbf{t}(\mathbf{W} \mathbf{p})
\]
10.2.1 竞争学习
通过将 \(W\) 的行设置为期望的标准向量,可设计一个竞争网络分类器。instar 学习规则:
\[_{i} \mathbf{w}(q)=_{i} \mathbf{w}(q-1)+\alpha a_{i}(q)\left(\mathbf{p}(q)-_{i} \mathbf{w}(q-1)\right)
\]
使用 Kohonen 规则也能得到同样结果:
\[_{i} \mathbf{w}(q)=_{i} \mathbf{w}(q-1)+\alpha\left(\mathbf{p}(q)-_{i} \mathbf{w}(q-1)\right)=(1-\alpha)_{i} \mathbf{w}(q-1)+\alpha \mathbf{p}(q)
\]
\[_{i} \mathbf{w}(q)=_{i} \mathbf{w}(q-1) \quad i \neq i^{*}
\]
因此,权值矩阵中最接近输入向量的行(即与输入向量的内积最大的行)向着输入向量靠近,它沿着权值矩阵原来的行向量与输入向量之间的连线移动。
10.2.2 竞争层存在的问题
学习度与最终权值向量稳定性之间折中。死神经元等。。。
10.2.3 生物学中的竞争层
加强中心、抑制周围
10.3 自组织特征图
10.4 学习向量量化(LVQ )
混合型网络:使用 无监督和有监督学习来实现分类
第11章 径向基网络(通用函数逼近网络)
隐层采用S型传输函数而输出层采用线性传输函数的多层网络是通用的函数逼近器。
另一类通用函数逼近网络——径向基(Radial Basis Networks ,RBF)函数
RBF 被用来解决多维空间中的精确插值问题。也就是说,通过径向基插值创建的函数需要精确地通过训练集中的所有的目标。[Powe87]
11.1 径向基网络
径向基网络是一个两层网络。径向基函数(RBF)网络和两层感知机网络有两个主要的区别。第一,在RBF网络的第一层,我们计算了输入向量和权值矩阵的行向量之间的距离,而不是计算权值和输入的内积(矩阵相乘)。第二,RBF对偏置采用乘积而非加的方式。因此,第一层中神经元 \(i\) 的净输入的计算如下所示:
\[n_{i}^{1}=\left\|\mathbf{p}-_{i} \mathbf{w}^{1}\right\| b_{i}^{1}
\]
权值矩阵的每一行作为一个中心点,在这个点处的净输入值为0。偏置值对传输(基)函数实施一种缩放操作,即放大或缩小。
绝大多数关于RBF网络的文献使用了标准差、方差或分布参数等基本术语,而非偏置值。我们采用“偏置值”仅为了与其他网络保持一致。
当使用高斯传输函数时,偏置值与标准差有如下关系:
\[b=1 /(\sigma \sqrt{2})
\]
RBF网络中第一层所采用的传输函数不同于多层感知机(MLP)中在隐层一般采用的 S 型函数。有几种不同类型的传输函数都可以采用[BrLo88]。考虑高斯函数:
\[a=e^{-n^{2}}
\]
局部性(local)是该函数的关键特性。这意味着如果在任意方向非常远离中心点的话,输出将趋近于零,全局(global) S 型函数的输出依然接近于 1 。
网络的第二层是一个标准线性层:
\[\mathbf{a}^{2}=\mathbf{W}^{2} \mathbf{a}^{1}+\mathbf{b}^{2}
\]
11.1.1 函数逼近
这种 RBF 已经被证明是通用的逼近器[PaSa93]。
如果RBF网络第一层给拥有足够多的神经元,可以逼近任意函数。
11.1.2 模式分类
11.2 训练网络
11.2.1 线性最小二乘法
矩阵增广
\[\mathbf{x}=\left[ \begin{array}{c}{\mathbf{w}^{2}} \\ {b^{2}}\end{array}\right], \mathbf{z}_{q}=\left[ \begin{array}{c}{\mathbf{a}_{q}^{1}} \\ {1}\end{array}\right]
\]
输出
\[a_{q}^{2}=\left(_{1} \mathbf{w}^{2}\right)^{T} \mathbf{a}_{q}^{1}+b^{2}
\]
可以写为
\[a_{q}=\mathbf{x}^{T} \mathbf{z}_{q}
\]
误差平方和:
\[F(\mathbf{x})=\sum_{q=1}^{Q}\left(e_{q}\right)^{2}=\sum_{q=1}^{Q}\left(t_{q}-a_{q}\right)^{2}=\sum_{q=1}^{Q}\left(t_{q}-\mathbf{x}^{T} \mathbf{z}_{q}\right)^{2}
\]
定义矩阵
\[\mathbf{t}=\left[ \begin{array}{c}{t_{1}} \\ {t_{2}} \\ {\vdots} \\ {t_{Q}}\end{array}\right], \mathbf{U}=\left[ \begin{array}{c}{\mathbf{u}^{T}} \\ {\mathbf{u}^{T}} \\ {2^{T}} \\ {\vdots} \\ {Q^{\mathbf{u}}}\end{array}\right]=\left[ \begin{array}{c}{\mathbf{z}_{1}^{T}} \\ {\mathbf{z}_{2}^{T}} \\ {\vdots} \\ {\mathbf{z}_{Q}^{T}}\end{array}\right], \mathbf{e}=\left[ \begin{array}{c}{e_{1}} \\ {e_{2}} \\ {\vdots} \\ {e_{Q}}\end{array}\right]
\]
误差可以写为
\[\mathbf{e}=\mathbf{t}-\mathbf{U} \mathbf{x}
\]
性能指标为:
\[F(\mathbf{x})=(\mathbf{t}-\mathbf{U} \mathbf{x})^{T}(\mathbf{t}-\mathbf{U} \mathbf{x})
\]
使用正则化方法防止过拟合:
\[F(\mathbf{x})=(\mathbf{t}-\mathbf{U} \mathbf{x})^{T}(\mathbf{t}-\mathbf{U} \mathbf{x})+\rho \mathbf{x}^{T} \mathbf{x}
\]
最优权值为 \(\mathbf{x}^{*}\) 可从下式求得:
\[\left[\mathbf{U}^{T} \mathbf{U}+\rho \mathbf{I}\right] \mathbf{x}^{*}=\mathbf{U}^{T} \mathbf{t}
\]
11.2.2 正交最小二乘法
11.2.3 聚类(Clustering)
训练权值
\[_{i^{*}} \mathbf{w}^{1}(q)=_{i^{*}} \mathbf{w}^{1}(q-1)+\alpha\left(\mathbf{p}(q)-_{i^{*}} \mathbf{w}^{1}(q-1)\right)
\]
计算中心点和它相邻点的平均距离
\[d i s t_{i}=\frac{1}{n_{c}}\left(\sum_{j=1}^{n_{c}}\left\|\mathbf{p}_{j}^{i}-_{i} \mathbf{w}\right\|^{2}\right)^{\frac{1}{2}}
\]
设置第一层的偏置值
\[b_{i}^{1}=\frac{1}{\sqrt{2} \operatorname{dis} t_{i}}
\]
11.2.4 非线性优化
\[n_{i}^{1}=\left\|\mathbf{p}-_{i} \mathbf{w}^{1}\right\| b_{i}^{1}=b_{i}^{1} \sqrt{\sum_{j=1}^{s^{1}}\left(p_{j}-w_{i, j}^{1}\right)^{2}}
\]
\[\frac{\partial n_{i}^{1}}{\partial w_{i, j}^{1}}=b_{i}^{1} \frac{1 / 2}{\sqrt{\sum_{j=1}^{S}\left(p_{j}-w_{i, j}^{1}\right)^{2}}} 2\left(p_{j}-w_{i, j}^{1}\right)(-1)=\frac{b_{i}^{1}\left(w_{i, j}^{1}-p_{j}\right)}{\left\|\mathbf{p}-_{i} \mathbf{w}^{1}\right\|}
\]
\[\frac{\partial n_{i}^{1}}{\partial b_{i}^{1}}=\left\|\mathbf{p}-_{i} \mathbf{w}^{1}\right\|
\]
梯度
\[\frac{\partial \hat{F}}{\partial w_{i, j}^{1}}=s_{i}^{1} \frac{b_{i}^{1}\left(w_{i, j}^{1}-p_{j}\right)}{\left\|\mathbf{p}-_{i} \mathbf{w}^{1}\right\|}
\]
\[\frac{\partial \hat{F}}{\partial b_{i}^{1}}=s_{i}^{1}\left\|\mathbf{p}-_{i} \mathbf{w}^{1}\right\|
\]
第12章 实际训练问题
12.1 训练前的步骤
12.1.1 数据选择
训练集、测试集、验证集 70% 15% 15%
12.1.2 数据预处理
归一化、非线性变换、特征提取、离散输入/目标的编码以及缺失数据的处理
归一化(normalization):
\[\mathbf{p}^{n}=2\left(\mathbf{p}-\mathbf{p}^{m i n}\right) . /\left(\mathbf{p}^{\max }-\mathbf{p}^{\min }\right)-1
\]
- 调整数据,使其具有特定的均值和方差——通常是0和1
\[\mathbf{p}^{n}=\left(\mathbf{p}-\mathbf{p}^{m e a n}\right) / \mathbf{p}^{s t d}
\]
通用特征提取方法:主成分分析(PCA:principal component analysis (PCA) [Joll02])。将原始输入向量变换为各成分之间互不相关的向量。
另一种在多层模式识别网络输出层使用的传输函数是 softmax 函数:
\[a_{i}=f\left(n_{i}\right)=\exp \left(n_{i}\right) \div \sum_{j=1}^{S} \exp \left(n_{j}\right)
\]
softmax 传输函数的输出可以解释为每个类别的概率。每个输出都在0~1之间,且所有输出之和为1。
12.1.3 网络结构选择
(1)基本结构的选择
拟合、模式识别、聚类和预测
拟合(fitting)又称为函数逼近或者回归。学习输入集和输出集之间的映射关系。对于拟合问题,目标输出变量为连续值。
用于拟合问题的标准神经网络结构式隐层采用 tansig 神经元、输出层采用线性神经元的多层感知机。
径向基网络也可用于拟合问题。在径向基隐层中使用高斯传输函数,输出层使用线性传输函数。
模式识别(pattern recognition)也被称为模式分类。
聚类(clustering):按照数据相似性对其进行划分。
预测(prediction)也属于时间序列分析、系统辨识、滤波和动态建模。预测时间序列上未来的值。需要使用动态神经网络。最简单的用于非线性预测的网络是聚焦延迟神经网络。这是一个通用动态网络的一部分,叫做聚焦网络。其动态性只表现在一个静态多层前馈网络的输入层。该网络的优点是可以使用静态反向传播算法来训练,因为网络输入的抽头延迟线能够被输入延迟值的扩展向量代替。
聚焦延迟神经网络(Focused Time-Delay Neural Network):
对于动态建模和控制问题, NARX网络(Nonlinear AutoRegressive model with eXogenous input 外部输入的非线性自回归模型)是广泛使用的一种方法。例如,输入信号可以表示施加到马达上的电压。输出可以表示机器人手臂的角位置。可以用静态反向传播算法训练。这两个抽头延迟线可以替换为延迟输入和目标的扩展向量。我们可以反馈目标而非网络输出(这需要采用动态反向传播算法进行训练),因为当训练结束时网络的实际输出应该和目标相匹配。
(2)具体结构的选择
例如,使用 SOFM 网络进行聚类,那么网络只有一层
12.2 网络训练
12.2.1 权值初始化
12.2.2 训练算法选择
在可用序列模式实现的算法中,最快的算法是扩展 Kalman 滤波算法
12.2.3 训练终止条件
(1)限制条件
(2)梯度的范数
12.2.4 性能函数选择
对于多层网络,标准的性能指标是均方误差,当训练集的所有输入都拥有同样的可能性时,可以表示为:
\[F(\mathbf{x})=\frac{1}{Q S_{q=1}^{M}}\left(\mathbf{t}_{q}-\mathbf{a}_{q}\right)^{T}\left(\mathbf{t}_{q}-\mathbf{a}_{q}\right)
\]
或者
\[F(\mathbf{x})=\frac{1}{Q S^{M}} \sum_{q=1}^{Q} \sum_{i=1}^{s^{n}}\left(t_{i, q}-a_{i, q}\right)^{2}
\]
Minkowski 误差(任意幂)
\[F(\mathbf{x})=\frac{1}{Q S_{q=1}^{M}} \sum_{q=1}^{Q} \sum_{i=1}^{s^{n}}\left|t_{i, q}-a_{i, q}\right|^{K}
\]
以均方误差作为性能指标在目标为连续的函数逼近问题上效果很好。然而,在目标是离散值的情况下,其他性能指标可能更合适。如在分类问题中使用 交叉熵(corss-entropy)[Bish95] :
\[F(\mathbf{x})=-\sum_{q=1}^{Q} \sum_{i=1}^{M} t_{i, q} \ln \frac{a_{i, q}}{t_{i, q}}
\]
使用交叉熵后通常在网络最后一层使用 softmax 传输函数
12.2.5 网络多次训练与网络委员会(Multiple Training Runs and Committees of Networks)
ephch
单次训练的网络不一定能获得最优的性能,因为训练过程中可能会陷入性能曲面的局部极小值。为了克服这个问题,最好能在不同初始化条件下多次训练网络,然后选择性能最好的网络。通常情况下训练5~10次能够获得全局最优解[HaBo07]。
12.3 训练结果分析
12.3.1 拟合
12.3.2 模式识别
受试者工作特征曲线(Receiver Operating Characteristic Curve, ROC)
12.3.3 聚类
自组织图(Self-Organizing Map ,SOM)网络是最常用的一种网络
12.3.4 预测
为了测试预测误差在时间上的相关性,使用 自相关函数(autocorrelation function):
\[R_{e}(\tau)=\frac{1}{Q-\tau} \sum_{t=1}^{Q-\tau} e(t) e(t+\tau)
\]
95% 置信区间边界 [BoJe96]
\[-\frac{2 R_{e}(0)}{\sqrt{Q}}<R_{e}(\tau)<\frac{2 R_{e}(0)}{\sqrt{Q}}
\]
为了检验预测误差与输入序列的相关性,可以使用 互相关函数(cross-correlation function):
\[R_{p e}(\tau)=\frac{1}{Q-\tau} \sum_{t=1}^{Q-\tau} p(t) e(t+\tau)
\]
95% 置信区间边界 [BoJe96]
\[-\frac{2 \sqrt{R_{e}(0)} \sqrt{R_{p}(0)}}{\sqrt{Q}}<R_{p e}(\tau)<\frac{2 \sqrt{R_{e}(0)} \sqrt{R_{p}(0)}}{\sqrt{Q}}
\]
12.3.5 过拟合与外推
12.3.6 敏感性分析
附录 : 数学基础
这章附录复习一下学过的《线性代数》及《高等数学》的知识,以便随时速查
1.1 线性代数
1.1.1 内积(Inner Product)
\[\mathbf{x}^{T} \mathbf{y}=x_{1} y_{1}+x_{2} y_{2}+\cdots+x_{n} y_{n}
\]
标量函数(scalar function)也是一种形式的内积:
\[\left(\chi_{\vartheta} y\right)=\int_{0}^{1} x(t) y(t) d t
\]
1.1.2 范数(Norm)
基于向量长度的概念,满足如下性质的标量函数 \(||\mathcal{X}||\) 称为范数:
-
- $||\mathcal{X}|| >0 $
-
- $||\mathcal{X}|| =0 $,当且仅当 $\mathcal{X} =0 $
-
- 对于标量 \(a\) ,\(||a\mathcal{X}|| = |a| ||\mathcal{X}||\)
-
- \(||\mathcal{X}+\mathcal{Y}|| \le ||\mathcal{X}|| + ||\mathcal{Y}||\)
有很多函数满足这些条件,一个常见的基于内积的范数是:
\[\|x\|=(x, x)^{1 / 2}
\]
对于欧氏空间(Euclidean spaces),最熟悉的范数为:
\[\|\mathbf{x}\|=\left(\mathbf{x}^{T} \mathbf{x}\right)^{1 / 2}=\sqrt{x_{1}^{2}+x_{2}^{2}+\cdots+x_{n}^{2}}
\]
在神经网络中,对输入向量归一化( normalize)通常是有用的,也即对于每个输入向量都有 \(||\mathbf{p}_{i}=1||\)
利用范数和内积的定义,可以把夹角的概念推广到二维以上的向量空间中,两个向量 $\mathcal{X} $ 和 \(\mathcal{Y}\) 的夹角定义为:
\[\cos \theta=\frac{(x, y)}{\|x\| y \|}
\]
1.1.3 Gram-Schmidt 正交化
正交性和线性无关之间存在一种关系。一组线性无关的向量可以转换为一组正交向量,它们能生成同一个向量空间。标准的转化过程称为 Gram-Schmidt 正交化。
假设有 n 个线性无关的向量 \(y_{1}\) ,\(y_{2}\),... ,\(y_{n}\) 。要把它们转化为 n 个正交向量 \(v_{1}\) ,\(v_{2}\),... ,\(v_{n}\) 。首先选择第一个线性无关向量作为第一个正交向量:
\[v_{1}=y_{1}
\]
为了得到第二个正交向量,将 \(y_{2}\) 减去它在 \(v_{1}\) 方向上的分量。由此可得:
\[v_{2}=y_{2}-a v_{1}
\]
其中 \(a\) 的选择需要使 \(v_{2}\) 正交于 $v_{1} $ ,这需要满足:
\[\left(v_{1}, v_{2}\right)=\left(v_{1}, y_{2}-a v_{1}\right)=\left(v_{1}, y_{2}\right)-a\left(v_{1}, v_{1}\right)=0
\]
或者
\[a=\frac{\left(v_{1}, y_{2}\right)}{\left(v_{1}, v_{1}\right)}
\]
一次,为了得到 \(y_{2}\) 在 $v_{1} $ 方向上的分量 \(a v_{1}\) 需要求这两个向量的内积。\(a v_{1}\)也称为 \(y_{2}\) 在 \(v_{1}\) 上的投影。
继续这一过程,第 \(k\) 步为
\[v_{k}=y_{k}-\sum_{i=1}^{k-1} \frac{\left(v_{i}, y_{k}\right)}{\left(v_{i}, v_{i}\right)} v_{i}
\]
1.1.4 特征值、特征向量(Eigenvalues and Eigenvectors)与 对角化(Diagonalization)
\[\mathcal{A}(z)=\lambda z
\]
着意味着矩阵\([A-\lambda I]\)的各列是 线性相关(dependent)的,所以该矩阵的行列式必为0:
\[|[\mathbf{A}-\lambda \mathbf{I}]|=0
\]
这个行列式是一个 \(n\) 次多项式,通常有 \(n\) 个根,其中某些根可能是复数,某些根可能是重根。
定义
\[\mathbf{B}=\left[ \begin{array}{llll}{\mathbf{z}_{1}} & {\mathbf{z}_{2}} & {\dots} & {\mathbf{z}_{n}}\end{array}\right]
\]
其中 \(\left\{\mathbf{z}_{1}, \mathbf{z}_{2}, \dots, \mathbf{z}_{n}\right\}\) 是矩阵 \(A\) 的特征向量。那么:
\[\left[\mathbf{B}^{-1} \mathbf{A} \mathbf{B}\right]=
\left[ \begin{array}{cccc}{\lambda_{1}} & {0} & {\ldots} & {0}
\\ {0} & {\lambda_{2}} & {\dots} & {0}
\\ {\vdots} & {\vdots} & {{ }} & {\vdots} \\ {0} & {0} & {\ldots} & {\lambda_{n}}\end{array}\right]
\]
其中\(\left\{\lambda_{1}, \lambda_{2}, \ldots, \lambda_{n}\right\}\) 是矩阵 \(A\) 的特征值。
1.2 高等数学 之 性能曲面与最优点
性能学习(performance learning) : 网络参数调整的目标是优化网络性能
目标是研究性能曲面并确定性能曲面存在极小点和极大点的条件。
性能学习包含几种不同的学习法则
依据是:在网络训练过程中,网络参数(权值和偏置值)的改变旨在优化网络的性能。
第一步是定义“性能”,寻找一个衡量网络性能的定量指标,即 性能指标 (performance index) 。网络性能越好,性能指标越小;网络性能越差,性能指标越大。
第二步是搜索参数空间(调整网络权值和偏置)以减小性能指标。研究性能曲面的特性,建立一些保证一个曲面存在极小点(寻找的最优点)的条件。
1.2.1 泰勒级数(Taylor Series)
性能指标可以表示为在某点 \(x^{*}\) 处的 泰勒级数展开式(Taylor series expansion):
\[F(x) =F\left(x^{*}\right)+\frac{d}{d x} F\left.(x)\right|_{x=x^{*}}\left(x-x^{*}\right)
+\frac{1}{2} \frac{d^{2}}{d x^{2}} F\left.(x)\right|_{x=x^{*}}\left(x-x^{*}\right)^{2}+\cdots \\
+\frac{1}{n !} \frac{d^{n}}{d x^{n}} F\left.(x)\right|_{x=x^{*}}\left(x-x^{*}\right)^{n}+\cdots
\]
向量的情况
考虑 \(n\) 元函数:
\[F(\mathbf{x})=F\left(x_{1}, x_{2}, \ldots, x_{n}\right)
\]
这个函数在点 \(x^{*}\) 处的 泰勒级数展开式为:
\[F(\mathbf{x})=F\left(\mathbf{x}^{*}\right)+\frac{\partial}{\partial x_{1}} F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{x}^{*}}\left(x_{1}-x_{1}^{*}\right)+\frac{\partial}{\partial x_{2}} F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{x}^{*}}\left(x_{2}-x_{2}^{*}\right)\\
+\cdots+\frac{\partial}{\partial x_{n}} F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{x}^{*}}\left(x_{n}-x_{n}^{*}\right)+\frac{1}{2} \frac{\partial^{2}}{\partial x_{1}^{2}} F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{x}^{*}}\left(x_{1}-x_{1}^{*}\right)^{2}\\
+\frac{1}{2} \frac{\partial^{2}}{\partial x_{1} \partial x_{2}} F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{x}^{*}}\left(x_{1}-x_{1}^{*}\right)\left(x_{2}-x_{2}^{*}\right)+\cdots
\]
写成矩阵形式为:
\[F(\mathbf{x})=F\left(\mathbf{x}^{*}\right)+\nabla F\left.(\mathbf{x})^{T}\right|_{\mathbf{X}=\mathbf{x}^{*}}\left(\mathbf{x}-\mathbf{x}^{*}\right)\\+\frac{1}{2}\left(\mathbf{x}-\mathbf{x}^{*}\right)^{T} \nabla^{2} F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{x}^{*}}\left(\mathbf{x}-\mathbf{x}^{*}\right)+\cdots
\]
其中 \(\nabla F(\mathbf{x})\) 表示梯度(Gradient),定义为:
\[\nabla F(\mathbf{x})=\left[\frac{\partial}{\partial x_{1}} F(\mathbf{x}) \frac{\partial}{\partial x_{2}} F(\mathbf{x}) \ldots \frac{\partial}{\partial x_{n}} F(\mathbf{x})\right]^{T}
\]
\(\nabla^{2} F(\mathbf{x})\) 表示海塞矩阵(Hessian),是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率:
\[\nabla^{2} F(\mathbf{x})=\left[ \begin{array}{cc}{\frac{\partial^{2}} {\partial x_{1}^{2}} F(\mathbf{x})} & {\frac{\partial^{2}}{\partial x_{1} \partial x_{2}} F(\mathbf{x})} & \ldots & {\frac{\partial^{2}}{\partial x_{1} \partial x_{n}} F(\mathbf{x})} \\
\\
{\frac{\partial^{2}}{\partial x_{2} \partial x_{1}} F(\mathbf{x})} & {\frac{\partial^{2}}{\partial x_{2}^{2}} F(\mathbf{x})} & \ldots & {\frac{\partial^{2}}{\partial x_{2} \partial x_{n}} F(\mathbf{x})} \\
{\vdots} & {\vdots} & {\vdots} & {\vdots}\\
{\frac{\partial^{2}}{\partial x_{n} \partial x_{1}} F(\mathbf{x})} & {\frac{\partial^{2}}{\partial x_{n} \partial x_{2}} F(\mathbf{x}) } & \ldots & {\frac{\partial^{2}}{\partial x_{n}^{2}} F(\mathbf{x})}\end{array}\right]
\]
1.2.2 方向导数(Directional Derivatives)
梯度的第 \(i\) 个元素 \(\partial F(\mathbf{x}) / \partial x_{i}\) 是性能指标 \(F\) 沿着 \(x_{i}\) 轴的二阶导数。设向量 \(p\) 为要计算导数的方向上的一个向量,则这个方向导数是梯度和方向向量的内积:
\[\frac{\mathbf{p}^{T} \nabla F(\mathbf{x})}{\|\mathbf{p}\|}
\]
二阶梯度为:
\[\frac{\mathbf{p}^{T} \nabla^{2} F(\mathbf{x}) \mathbf{p}}{\|\mathbf{p}\|^{2}}
\]
当方向向量和梯度的内积最大时,方向为梯度方向,所以沿梯度方向的导数最大,与梯度正交的方向导数为0。
1.2.3 极小点(Minima)
- 强极小点 : 给定函数 \(F(\mathbf{x})\) 和 点 \(x^{*}\) ,如果存在一个标量 \(\delta >0\),使得对于所有满足 \(\delta > ||\Delta x||>0\)的 \(||\Delta x||\) 都有 \(F(\mathbf{x^{*}})<F(\mathbf{x^{*}+\Delta x})\),则 \(x^{*}\)是 \(F(\mathbf{x})\) 的一个强极小值点。
- 全局极小点 : 给定函数 \(F(\mathbf{x})\) 和 点 \(x^{*}\) ,如果对于所有的 \(\Delta x\) 都有 \(F(\mathbf{x^{*}})<F(\mathbf{x^{*}+\Delta x})\),则 \(x^{*}\)是 \(F(\mathbf{x})\) 的唯一全局极小点。
- 弱极小点 : 如果 \(x^{*}\) 不是函数 \(F(\mathbf{x})\) 的强极小点,并且存在一个标量 \(\delta >0\),使得对于所有满足 \(\delta > ||\Delta x||>0\)的 \(||\Delta x||\) 都有 \(F(\mathbf{x^{*}}) \le F(\mathbf{x^{*}+\Delta x})\),则 \(x^{*}\)是 \(F(\mathbf{x})\) 的一个强极小值点。
强弱极小点的区别在于领域内是否存在相等点,对应于 Hessian 矩阵的正定和半正定。
1.2.4 优化的必要条件(Necessary Conditions for Optimality)
一阶条件
极小值点处梯度必须为0。驻点(局部极小点的一阶必要(但不充分)条件):
\[\nabla F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{X}^{*}}=\mathbf{0}
\]
二阶条件
强极小点条件:
\[\Delta \mathbf{x}^{T} \nabla^{2} F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{x}^{*}} \Delta \mathbf{x}>0
\]
对任意向量 \(z \neq 0\) ,均有
\[\mathbf{z}^{T} \mathbf{A} \mathbf{z}>0
\]
则矩阵 \(A\) 是正定矩阵(positive semidefinite)。而如果
\[\mathbf{z}^{T} \mathbf{A} \mathbf{z} \geq 0
\]
则矩阵 \(A\) 是半正定矩阵。这些条件可以通过矩阵的特征值进行检验。如果特征值均为正,则矩阵是正定矩阵。如果所有的特征值均非负,则矩阵式是半正定矩阵。
正定的 Hessian 矩阵是强极小值点存在的一个二阶 充分条件(sufficient condition),但不是必要条件。强极小值点存在的 二阶必要条件是 Hessian 矩阵 为半正定矩阵。
综上所述: \(x^{*}\) 是函数 \(F(\mathbf{x})\) 的极小点(强极小点或弱极小点)的必要条件是 : \(\nabla F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{X}^{*}}=\mathbf{0}\) 且 \(\nabla^{2} F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{x}^{*}}\) 是半正定矩阵。\(x^{*}\) 是函数 \(F(\mathbf{x})\) 的强极小点的充分条件是 :\(\nabla F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{X}^{*}}=\mathbf{0}\) 且 \(\nabla^{2} F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{x}^{*}}\) 是正定矩阵。
1.2.5 二次函数
在某点的领域内,许多函数可以用二次函数近似。
\[F(\mathbf{x})=\frac{1}{2} \mathbf{x}^{T} \mathbf{A} \mathbf{x}+\mathbf{d}^{T} \mathbf{x}+c
\]
梯度
\[\nabla F(\mathbf{x})=\mathbf{A x}+\mathbf{d}
\]
Hessian 矩阵
\[\nabla^{2} F(\mathbf{x})=\mathbf{A}
\]
二阶方向导数
\[\frac{\mathbf{p}^{T} \nabla^{2} F(\mathbf{x}) \mathbf{p}}{\|\mathbf{p}\|^{2}}=\frac{\mathbf{p}^{T} \mathbf{A} \mathbf{p}}{\|\mathbf{p}\|^{2}}=\frac{\mathbf{c}^{T} \mathbf{B}^{T}\left(\mathbf{B} \Lambda \mathbf{B}^{T}\right) \mathbf{B} \mathbf{c}}{\mathbf{c}^{T} \mathbf{B}^{T} \mathbf{B} \mathbf{c}}=\frac{\mathbf{c}^{T} \Lambda \mathbf{c}}{\mathbf{c}^{T} \mathbf{c}}=\frac{\sum_{i=1}^{n} \lambda_{i} c_{i}^{2}}{\sum_{i=1}^{n} c_{i}^{2}}
\]
这个二阶导数是特征值的加权平均:
\[\lambda_{\min } \leq \frac{\mathbf{p}^{T} \mathbf{A} \mathbf{p}}{\|\mathbf{p}\|^{2}} \leq \lambda_{\max }
\]
二阶导数的最大值存在于最大特征值所对应的特征向量的方向上。事实上,在每个特征向量方向上,二阶导数都等于相应的特征值。特征向量定义了一个新的二次交叉衰减的坐标系。特征向量被称为函数等高线的主轴。
1.3 高等数学 之 性能优化
最速下降法、牛顿法、共轭梯度法
性能优化目标:寻找给定神经网络的最优权值和偏置值
优化的基本原理由 开普勒、费马、牛顿、莱布尼兹 这些科学家以及数学家于17世纪发现的。
所要讨论的优化算法都是迭代的,从某个初始值 \(x_{0}\) 开始,然后按照如下形式的等式逐步更新猜测值:
\[\mathbf{x}_{k+1}=\mathbf{x}_{k}+\alpha_{k} \mathbf{p}_{k}
\]
其中,向量 \(p_{k}\) 表示一个搜索方向,正数标量 \(\alpha_{k}\) 表示学习率,它决定了学习步长。
1.3.1 最速下降法(Steepest Descent)
当使用上式更新最优(极小)点的猜测值时,我们希望函数值在每次迭代时都减小:
\[F\left(\mathbf{x}_{k+1}\right)<F\left(\mathbf{x}_{k}\right)
\]
对于足够小的学习率,如何选择方向才能使得函数值递减?
考虑 \(F(\mathbf{x})\) 在旧猜测值 \(x_{k}\) 的一阶泰勒展开式
\[F\left(\mathbf{x}_{k+1}\right)=F\left(\mathbf{x}_{k}+\Delta \mathbf{x}_{k}\right) \approx F\left(\mathbf{x}_{k}\right)+\mathbf{g}_{k}^{T} \Delta \mathbf{x}_{k}
\]
其中 \(g_{k}\) 是在旧猜测值 \(x_{k}\) 处的梯度:
\[\mathbf{g}_{k} \equiv \nabla F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{X}_{k}}
\]
为了使 \(F\left(\mathbf{x}_{k+1}\right)<F\left(\mathbf{x}_{k}\right)\) ,另一项必须为负
\[\mathbf{g}_{k}^{T} \Delta \mathbf{x}_{k}=\alpha_{k} \mathbf{g}_{k}^{T} \mathbf{p}_{k}<0
\]
我们将选择一个较小但是大于0的 \(\alpha _{k}\) ,那么
\[\mathbf{g}_{k}^{T} \mathbf{p}_{k}<0
\]
任一满足上式的向量 \(p_{k}\) 均称作一个 下降方向(descent direction)。如果沿此方向选择足够小的步长,函数值一定减小。当 \(\mathbf{g}_{k}^{T} \mathbf{p}_{k}\) 最小时,最速下降就会发生(假设 \(p_{k}\) 的长度不变,只改变方向)。这是梯度和方向向量之间的内积。当方向向量于梯度反向时,该内积取最小值。因此最速下降方向上的一个向量为:
\[\mathbf{p}_{k}=-\mathbf{g}_{k}
\]
应用上式就得到了 最速下降法(steepest descent):
\[\mathbf{x}_{k+1}=\mathbf{x}_{k}-\alpha_{k} \mathbf{g}_{k}
\]
对于最速下降法,有两个一般的方法来确定学习率(learning rate) \(a_{k}\)。一个方法是在每次迭代时,选择使性能指标 \(F(\mathbf{x})\) 最小的 \(a_{k}\) 。这中情况下,我们将沿着下列直线进行最小化
\[\mathbf{x}_{k}-\alpha_{k} \mathbf{g}_{k}
\]
另一种选择 \(a_{k}\) 的方法是使用一个固定值(例如 \(\alpha =0.002\)),或使用预先设定的变量的值。
注意:对于较小的学习率,最速下降的轨迹总是沿着与等高线正交的路径。这是因为梯度与等高线正交。如果学习率过大,算法会变得不稳定,轨迹会出现振荡,且越来越大。希望取较大的学习率,可以增大学习步长,使得算法更快收敛。是否存在某种方法可以预测最大且可行的学习率?对于任意给定函数,这是不可能的。对于二次函数,可以确定一个上界。
稳定的学习率
将二次函数的梯度带入最速下降式子中:
\[\mathbf{x}_{k+1}=[\mathbf{I}-\alpha \mathbf{A}] \mathbf{x}_{k}-\alpha \mathbf{d}
\]
这是一个 线性动力学系统,如果 矩阵 \([\mathbf{I}-\alpha \mathbf{A}]\) 的特征值的绝对值小于1,该系统就是稳定的([Brog91])。\([\mathbf{I}-\alpha \mathbf{A}]\) 的特征向量 与 Hessian 矩阵 \(A\) 相同,并且\([\mathbf{I}-\alpha \mathbf{A}]\) 的特征值为 \((1-\alpha \lambda _{i})\)。最速下降稳定性条件为:
\[\left|\left(1-\alpha \lambda_{i}\right)\right|<1
\]
假设二次函数由一个强极小点,那么它的特征值一定为正数。上式可简化为:
\[\alpha<\frac{2}{\lambda_{i}}
\]
因为该式对 Hessian 矩阵所有特征值都成立,所以有
\[\alpha<\frac{2}{\lambda_{\max }}
\]
最大的稳定性学习率与二次函数的最大曲率成正比。
学习率受限于最大特征值,最小特征值与学习率共同决定算法收敛的快慢。最大特征值与最小特征值的绝对值相差悬殊将导致最速下降算法收敛缓慢。
沿直线最小化
\[\alpha_{k}=-\frac{\nabla F\left.(\mathbf{x})^{T}\right|_{\mathbf{x}=\mathbf{x}_{k}} \mathbf{p}_{k}}{\mathbf{p}_{k}^{T} \nabla^{2} F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{x}_{k}} \mathbf{p}_{k}}=-\frac{\mathbf{g}_{k}^{T} \mathbf{p}_{k}}{\mathbf{p}_{k}^{T} \mathbf{A}_{k} \mathbf{p}_{k}}
\]
算法逐次迭代都是正交的。如果使用 共轭 代替 正交 ,函数能在最多 \(n\) 步迭代内被极小化 , \(n\) 为 \(x\) 的维数
1.3.2 牛顿法
最速下降法中的推导是基于一阶泰勒级数展开式,牛顿法基于二阶泰勒级数:
\[F\left(\mathbf{x}_{k+1}\right)=F\left(\mathbf{x}_{k}+\Delta \mathbf{x}_{k}\right) \approx F\left(\mathbf{x}_{k}\right)+\mathbf{g}_{k}^{T} \Delta \mathbf{x}_{k}+\frac{1}{2} \Delta \mathbf{x}_{k}^{T} \mathbf{A}_{k} \Delta \mathbf{x}_{k}
\]
牛顿法的原理是寻找 \(F(\mathbf{x})\) 的二次近似的驻点。求解上式对 \(\Delta x_{k}\) 的梯度,并且将其设置为0,有:
\[\mathbf{g}_{k}+\mathbf{A}_{k} \Delta \mathbf{x}_{k}=\mathbf{0}
\]
求解可得:
\[\Delta \mathbf{x}_{k}=-\mathbf{A}_{k}^{-1} \mathbf{g}_{k}
\]
所以牛顿法被定义为:
\[\mathbf{x}_{k+1}=\mathbf{x}_{k}-\mathbf{A}_{k}^{-1} \mathbf{g}_{k}
\]
牛顿算法在许多应用中都能快速收敛。但是有时候可能收敛到鞍点。
1.3.3 共轭梯度法(Conjugate Gradient)
牛顿法有一个性质被称为 二次终结 。即它能在有限的迭代次数内使二次函数极小化。
假设寻找如下二次函数的极小点
\[F(\mathbf{x})=\frac{1}{2} \mathbf{x}^{T} \mathbf{A} \mathbf{x}+\mathbf{d}^{T} \mathbf{x}+c
\]
当且仅当
\[\mathbf{p}_{k}^{T} \mathbf{A} \mathbf{p}_{j}=0 \quad k \neq j
\]
向量集合 \(\{ p_{k} \}\) 关于一个正定 的 Hessian 矩阵 \(A\) 相互共轭。对于正交向量,存在无穷多个共轭向量集,他们将张成一个给定的 \(n\) 维空间。 \(A\) 的特征向量组成了一个共轭向量集。设 \(\left\{\lambda_{1}, \lambda_{2}, \ldots, \lambda_{n}\right\}\) 和 \(\left\{\mathbf{z}_{1}, \mathbf{z}_{2}, \dots, \mathbf{z}_{n}\right\}\) 分别为 Hessian 矩阵 的特征值和特征向量。为了验证特征向量的共轭性,用 \(z_{k}\) 代替上式的 \(p_{k}\) 可得:
\[\mathbf{z}_{k}^{T} \mathbf{A} \mathbf{z}_{j}=\lambda_{j} \mathbf{z}_{k}^{T} \mathbf{z}_{j}=0 \quad k \neq j
\]
其中,因为对称矩阵的特征向量两两正交,所以最后一个等式成立。因此特征向量即是共轭又是正交的。
因为特征向量构成了函数等高线的主轴,所以沿 Hessian 矩阵 的特征向量搜索就能准确地使二次函数极小化。我们需要找到一种不计算二次导数的算法。
已经证明([Scal85] or [Gill81]),如果沿着任意的共轭向量集合 \(\left\{\mathbf{p}_{1}, \mathbf{p}_{2}, \ldots, \mathbf{p}_{n}\right\}\) 进行连续的线性搜索,那么能在最多 \(n\) 次搜索内对 \(n\) 个参数的任意二次函数的极小化。如何构造这些共轭的搜索方向?
共轭条件可以重新表示:
\[\alpha_{k} \mathbf{p}_{k}^{T} \mathbf{A} \mathbf{p}_{j}=\Delta \mathbf{x}_{k}^{T} \mathbf{A} \mathbf{p}_{j}=\Delta \mathbf{g}_{k}^{T} \mathbf{p}_{j}=0 \quad k \neq j
\]
把共轭条件表示为算法相邻两次迭代的梯度变化。如果搜索方向 \(p_{0}\) 使任意的,且 \(p_{1}\) 可以是与 \(\Delta g_{0}\) 正交的任意向量,存在无穷多个共轭向量集。
共轭梯度法:
-
- 选择与梯度相反的方向作为第一次搜索方向:
\[\]
\[- 2. 进行进一步搜索,选择学习率 $\alpha _{k}$ 以使函数沿搜索方向极小化
\]
\Delta \mathbf{x}{k}=\left(\mathbf{x}-\mathbf{x}{k}\right)=\alpha \mathbf{p}_{k}
\[- 3. 确定下一个搜索方向([Scal85]),先计算 $\beta _{k}$ 之后构造一个与梯度之差正交的向量作为方向:
\]
\begin{cases}
\beta_{k}=\frac{\Delta \mathbf{g}{k-1}^{T} \mathbf{g}{k}}{\Delta \mathbf{g}{k-1}^{T} \mathbf{p}{k-1}}\
\
\beta_{k}=\frac{\mathbf{g}{k}^{T} \mathbf{g}{k}}{\mathbf{g}{k-1} \mathbf{g}{k-1}}\
\
\beta_{k}=\frac{\Delta \mathbf{g}{k-1}^{T} \mathbf{g}{k}}{\mathbf{g}{k-1}^{T} \mathbf{g}{k-1}}
\end{cases}
\[\]
\mathbf{p}{k}=-\mathbf{g}+\beta_{k} \mathbf{p}_{k-1}
\[其中 $\mathbf{g}_{k} \equiv \nabla F\left.(\mathbf{x})\right|_{\mathbf{X}=\mathbf{X}_{k}}$ ,且 $\Delta \mathbf{g}_{k}=\mathbf{g}_{k+1}-\mathbf{g}_{k}$。
- 4. 如果算法为收敛,返回第二步
# 参考文献
## 第1章
- [Ande72] J. A. Anderson, “A simple neural network generating an interactive memory,” Mathematical Biosciences, Vol. 14, pp.197–220, 1972.
>Anderson提出了一种“线性关联器”模型用于联想记忆。 使用推广的Hebb假设来训练模型,用于学习输入和输出向量之间的关联。
- [AnRo89] J. A. Anderson and E. Rosenfeld, Neurocomputing: Foundations of Research, Cambridge, MA: MIT Press, 1989.
>Neurocomputing是一本基础参考书。 它包含了40多个最重要的神经计算领域的著作。 每篇论文都附有一个成果介绍,并提供论文在该领域的历史中的位置。
- [DARP88] DARPA Neural Network Study, Lexington, MA: MIT Lincoln Laboratory, 1988.
>到1988年为止,已知的神经网络知识概要。它总结了神经网络的理论基础并讨论了它们目前的应用。 它包含关联记忆,循环网络,视觉,语音识别和机器人技术的章节。 最后,它讨论了仿真工具和实现技术。
- [MiPa69] M. Minsky and S. Papert, Perceptrons, Cambridge, MA: MIT Press, 1969.
>这是一本具有里程碑意义的书,其中包含第一次严谨研究了感知机的学习能力。通过严格的论述,阐述了感知机的局限性,以及克服局限的方法。遗憾的是,该书悲观地预测,感知器的局限性表明神经网络领域是没有前景的。 这一失实的观点为后续若干年的神经网络研究和基金资助造成了极大的负面影响。
- [Rose58] F. Rosenblatt, “The perceptron: A probabilistic model for information storage and organization in the brain,” Psychological Review, Vol. 65, pp. 386–408, 1958.
>提出了第一个实际的神经网络模型,感知机。
- [RuMc86] D. E. Rumelhart and J. L. McClelland, eds., Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Vol. 1, Cambridge, MA: MIT Press, 1986.
>20世纪80年代重新燃起人们对神经网络研究兴趣的两大重要论著之一。书中包含了许多主题,训练多层网络的反省传播算法是其中之一。
- [WiHo60] B. Widrow and M. E. Hoff, “Adaptive switching circuits,”1960 IRE WESCON Convention Record, New York: IRE Part 4, pp. 96–104, 1960.
>这篇重要论文描述了要给自适应的类似感知机的网络,它能快速准确地学习。作者假定系统有输入和每个输入对应地期望输出,且系统能计算实际输出和期望输出之间地误差。为了最小化均方误差,网络使用梯度下降法来调整权值(最小均方误差或LMS算法)
这篇论文在[AnRo88]中被重印。
## 第2章
- [Hopf82] J. J. Hopfield, “Neural networks and physical systems with emergent collective computational properties,” Proceedings of the National Academy of Sciences, vol. 79, pp. 2554–2558, 1982. (Chapter 1, 21)
>Hopfield提出了内容可寻址的神经网络。 他还清楚地描述了该神经网络如何运作,以及该网络可以胜任何种工作。
- [Hopf84] J. J. Hopfield, “Neurons with graded response have collective computational properties like those of two-state neurons,” Proceedings of the National Academy of Sciences, vol.81, pp. 3088–3092, 1984. (Chapter 21)
>Hofield网络
## 第3章
- [BaSu83] A. Barto, R. Sutton and C. Anderson, “Neuron-like adap tive elements can solve difficult learning control problems,” IEEE Transactions on Systems, Man and Cybernetics, Vol.13, No. 5, pp. 834–846, 1983.
>一种采用增强学习算法训练神经网络来平衡逆向振荡地经典论文。
- [Brog91] W. L. Brogan, Modern Control Theory, 3rd Ed., Englewood Cliffs, NJ: Prentice-Hall, 1991.
>一本关于线性系统主题的佳作。 本书的前半部分专门用于线性代数。 它在线性微分方程的解和线性和非线性系统的稳定性方面也有很好的部分。
- [McPi43] W. McCulloch and W. Pitts, “A logical calculus of the ideas immanent in nervous activity,” Bulletin of Mathematical Biophysics, Vol. 5, pp. 115–133, 1943.
>本文介绍了神经元的第一个数学模型。这个模型通过比较多个输入信号地加权和阈值来决定是否激发该神经元。这是第一次根据当时已知的计算元素描述大脑的作用。 它表明简单的神经网络可以计算任何算术或逻辑函数。
- [Rose58] F. Rosenblatt, “The perceptron: A probabilistic model for information storage and organization in the brain,” Psycho logical Review, Vol. 65, pp. 386–408, 1958.
>本文提出了第一个实用的人工神经网络模型:感知器。
- [Rose61] F. Rosenblatt, Principles of Neurodynamics, Washington DC: Spartan Press, 1961.
>关于神经计算的第一本书之一。
- [WhSo92] D. White and D. Sofge (Eds.), Handbook of Intelligent Control, New York: Van Nostrand Reinhold, 1992.Collection of articles describing current research and appli
>该书收集了当时一些关于控制系统中地神经网络和模糊逻辑地研究和应用地论文。
## 第4章
- [Hebb49] D. O. Hebb, The Organization of Behavior. New York:Wiley, 1949.
>这本著作的核心思想是:行为可以由生物神经元的活动来解释。在书中,Hebb提出了第一个神经网络学习规则,这是一个细胞级别上的学习机制假说。
- [Albe72] A. Albert, Regression and the Moore-Penrose Pseudoinverse, New York: Academic Press, 1972.
>Albert的著作是关于伪逆的理论和基本性质的主要参考文献。 包括主要伪逆定理地证明。
- [Ande72] J. A. Anderson, “A simple neural network generating an interactive memory,” Mathematical Biosciences, vol. 14, pp.197–220, 1972. (Chapter 1, 15, 21)
>Anderson提出了一种用于联想记忆的“线性关联器”模型。 使用Hebb假设的推广来训练模型,以学习输入和输出向量之间的关联。 强调了网络的生理合理性。 虽然两位研究人员独立工作,Kohonen同时发表了一篇密切相关的论文[Koho72]。
- [Koho72] T. Kohonen, “Correlation matrix memories,” IEEE Transactions on Computers, vol. 21, pp. 353–359, 1972.
>Kohonen提出了一种关联记忆的相关矩阵模型。 使用外积规则(也称为Hebb规则)训练模型,以学习输入和输出向量之间的关联。 强调了网络的数学结构。 安德森同时发表了一篇密切相关的论文[Ande72],尽管两位研究人员正在独立工作。
## 第5章
- [StDo84] W. D. Stanley, G. R. Dougherty, R. Dougherty, Digital Sig
nal Processing, Reston VA: Reston, 1984
- [WiHo60] B. Widrow, M. E. Hoff, “Adaptive switching circuits,” 1960
IRE WESCON Convention Record, New York: IRE Part 4,
pp. 96–104.
>这篇开创性的论文描述了一种类似自适应感知器的网络,可以快速准确地学习。 作者假设系统具有输入,每个输入的期望输出分类,并且系统可以计算实际输出和期望输出之间的误差。 使用梯度下降法调整权重,以便最小化均方误差。 (最小均方误差或LMS算法。)本文在[AnRo88]中重印。
- [WiSt85] B. Widrow and S. D. Stearns, Adaptive Signal Processing,Englewood Cliffs, NJ: Prentice-Hall, 1985.
>这本书描述了自适应信号处理方面地理论和应用。作者在书中提供了关于所需数学背景知识地综述,阐述了算法细节,并讨论了许多实际应用。
- [WiWi88] B. Widrow and R. Winter, “Neural nets for adaptive filtering and adaptive pattern recognition,” IEEE Computer Magazine, March 1988, pp. 25–39.
>这篇可读性地文章总结了自适应多层神经网络地应用,比如系统建模,统计预测、回声消除、逆向建模和模式识别等。
## 第6章
- [Werbo74] P. J. Werbos, “Beyond regression: New tools for predictionand analysis in the behavioral sciences,” Ph.D. Thesis,Harvard University, Cambridge, MA, 1974.
>这篇博士 论文包含似乎是反向传播算法的第一个描述(虽然没有使用该名称)。 这里在一般网络的背景下描述该算法,其中神经网络作为特殊情况。 直到20世纪80年代中期,Rumelhart,Hinton和Williams [RuHi86],David Parker [Park85]和Yann Le Cun [LeCu85]重新发现了反向传播。
- [RuHi86] D. E. Rumelhart, G. E. Hinton and R. J. Williams, “Learning representations by back-propagating errors,” Nature,vol. 323, pp. 533–536, 1986.
>本文包含最广泛的反向传播算法的描述。
- [Park85] D. B. Parker, “Learning-logic: Casting the cortex of the human brain in silicon,” Technical Report TR-47, Center forComputational Research in Economics and Management Science, MIT, Cambridge, MA, 1985.
>David Parker在与Le Cun和Rumelhart,Hinton和Williams大致同时独立地推导出反向传播算法。 该报告描述了他的算法。
- [LeCu85] Y. Le Cun, “Une procedure d’apprentissage pour reseau a seuil assymetrique,” Cognitiva, vol. 85, pp. 599–604, 1985.
>Yann Le Cun与Parker和Rumelhart,Hinton和Williams几乎同时发现了反向传播算法。 本文描述了他的算法。
- [HoSt89] K. M. Hornik, M. Stinchcombe and H. White, “Multilayerfeedforward networks are universal approximators,” Neural Networks, vol. 2, no. 5, pp. 359–366, 1989.
>本文证明了具有任意压缩函数的多层前馈网络可以逼近从一个有限维空间到另一个有限维空间的任何Borel可积函数。
## 第7章
- [Barn92] E. Barnard, “Optimization for training neural nets,” IEEE Trans. on Neural Networks, vol. 3, no. 2, pp. 232–240, 1992.
>这篇论文讨论了大量训练神经网络地优化算法。
- [Batt92] R. Battiti, “First- and second-order methods for learning:Between steepest descent and Newton's method,” Neural Computation, vol. 4, no. 2, pp. 141–166, 1992.
>这篇论文是对当前适合神经网络训练地优化算法极为出色地总结。
- [Char92] C. Charalambous, “Conjugate gradient algorithm for efficient training of artificial neural networks,” IEE Proceedings, vol. 139, no. 3, pp. 301–310, 1992.
>这篇论文解释了共轭梯度算法是如何用于训练多层网络地。同时比较了共轭梯度算法和其他训练算法地不同。
- [Fahl88] S. E. Fahlman, “Faster-learning variations on back-propagation: An empirical study,” In D. Touretsky, G. Hinton &T. Sejnowski, eds., Proceedings of the 1988 Connectionist Models Summer School, San Mateo, CA: Morgan Kaufmann, pp. 38–51, 1988.
>这篇论文描述了 QuickProp算法是一种对标准反向传播算法较为流行地启发式改进。它假设误差曲线可以被一个抛物线逼近,同时每一个权值地影响都可以独立考虑。在很多问题上,相比标准反向传播算法,QuickProp能显著提高算法地速度。
- [HaMe94] M. T. Hagan and M. Menhaj, “Training feedforward networks with the Marquardt algorithm,” IEEE Transactions on Neural Networks, vol. 5, no. 6, 1994.
>这篇论文描述了 Levenberg-Marquardt 算法在多层神经网络中地使用,同时比较了它与可变学习率反向传播算法以及共轭梯度算法地性能区别。这个 Levenberg-Marquardt 提高了收敛速度,但是需要更大地存储空间。
- [Jaco88] R. A. Jacobs, “Increased rates of convergence through learning rate adaptation,” Neural Networks, vol. 1, no. 4,pp. 295–308, 1988.
>这是另外一篇讨论使用可变学习率反向传播算法地早期论文。这里描述地过程被称为 delta-bar-delta 学习规则,在此学习规则中,每一个网络参数有独立地学习率,同时学习率在每次迭代时都发生变化。
- [NgWi90] D. Nguyen and B. Widrow, “Improving the learning speed of 2-layer neural networks by choosing initial values of the adaptive weights,” Proceedings of the IJCNN, vol. 3, pp.21–26, July 1990.
>这篇论文描述了一种反向传播算法中权值和偏置值地初始化方法。它通过S型传输函数地形状以及输入变量地范围来决定权值地大小,然后利用偏置值来将S型函数置于运作区域的中央。反向传播算法的收敛性可以通过此过程得到有效提升。
- [RiIr90] A. K. Rigler, J. M. Irvine and T. P. Vogl, “Rescaling of variables in back propagation learning,” Neural Networks, vol.4, no. 2, pp. 225–230, 1991.
>这篇论文提出S型函数的导数在尾部非常小,这意味着与前几层关联的梯度元素通常会小于与最后一层关联的梯度元素。因此,需要重新调整梯度中各项的范围,使它们均衡。
- [Scal85] L. E. Scales, Introduction to Non-Linear Optimization. New York: Springer-Verlag, 1985.
>这是一本可读性很强的书,它介绍了主要的优化算法,着重于优化方法而非收敛的存在定理和证明。
- [Shan90] D. F. Shanno, “Recent advances in numerical techniques for large-scale optimization,” Neural Networks for Control,Miller, Sutton and Werbos, eds., Cambridge MA: MIT Press, 1990.
>这篇论文讨论了一些可以用在神经网络训练中的共轭梯度算法以及拟牛顿优化算法。
- [Toll90] T. Tollenaere, “SuperSAB: Fast adaptive back propagation with good scaling properties,” Neural Networks, vol. 3, no.5, pp. 561–573, 1990.
>这篇论文介绍了一种可变学习率的反向传播算法。其中,每一个权值的学习率都是不同的。
- [VoMa88] T. P. Vogl, J. K. Mangis, A. K. Zigler, W. T. Zink and D. L. Alkon, “Accelerating the convergence of the backpropagation method,” Biological Cybernetics., vol. 59, pp. 256–264,Sept. 1988.
>这是介绍加速反向传播算法收敛速度的几种启发式技术最早的文章之一,它包括冲量、批处理以及可变学习率。
## 第8章
- [AmMu97] S. Amari, N. Murata, K.-R. Muller, M. Finke, and H. H.Yang, “Asymptotic Statistical Theory of Overtraining and Cross-Validation,” IEEE Transactions on Neural Networks, vol. 8, no. 5, 1997.
>当使用提前终止法时,确定验证集包含的数据数量很重要。这篇论文为验证规模的选取提供了理论基础。
- [FoHa97] D. Foresee and M. Hagan, “Gauss-Newton Approximation to Bayesian Learning,” Proceedings of the 1997 International Joint Conference on Neural Networks, vol. 3, pp.1930 - 1935, 1997.
>这篇论文介绍了一种使用高斯-牛顿法逼近 Hessian 矩阵以实现贝叶斯正则化的方法。
- [GoLa98] C. Goutte and J. Larsen, “Adaptive Regularization of Neural Networks Using Conjugate Gradient,” Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing, vol. 2, pp. 1201-1204, 1998.
>当使用正则化方法时,一个重要的步骤是设置正则化参数,这篇论文介绍了设置正则化参数以极小化验证集误差的步骤。
- [MacK92] D. J. C. MacKay, “Bayesian Interpolation,” Neural Computation, vol. 4, pp. 415-447, 1992.
>贝叶斯方法在统计学中已经使用了很多年。这篇论文展示了首次提出贝叶斯框架用于训练神经网络的方法之一。MacKay 针对该论文随后对其中的方法进行了很多措施性的改进。
- [Sarle95] W. S. Sarle, “Stopped training and other remedies for overfitting,” In Proceedings of the 27th Symposium on Interface,1995.
>这是一篇使用提前终止法和验证集来防止过拟合的早期文献之一。这篇论文介绍了提前终止法与其他提升泛化能力方法比较的仿真结果。
- [SjLj94] J. Sjoberg and L. Ljung, “Overtraining, regularization and searching for minimum with application to neural networks,” Linkoping University, Sweden, Tech. Rep. LiTHISY-R-1567, 1994.
>这个报告解释了提前终止法和正则化法是如何近似等价的过程。它证实了训练的迭代次数和正则化参数成反比。
- [Tikh63] A. N. Tikhonov, “The solution of ill-posed problems and the regularization method,” Dokl. Acad. Nauk USSR, vol. 151,no. 3, pp. 501-504, 1963.
>正则化法是一种将误差平方和性能指标与一个惩罚逼近函数复杂度的惩罚项进行结合的方法。这篇论文是介绍正则化的概念最早的文献。惩罚项设计逼近函数的导数。
- [WaVe94] C. Wang, S. S. Venkatesh, and J. S. Judd, “Optimal Stop ping and Effective Machine Complexity in Learning,” Advances in Neural Information Processing Systems, J. D.Cowan, G. Tesauro, and J. Alspector, Eds., vol. 6, pp. 303-310, 1994.
>这篇论文介绍了训练过程中网络有效参数数量是如何变化的,以及提前终止结束训练是如何提升网络泛化能力的。
## 第9章
- [DeHa07] O. De Jesús and M. Hagan, “Backpropagation Algorithms for a Broad Class of Dynamic Networks,” IEEE Transactions on Neural Networks, vol. 18, no. 1, pp., 2007.
>这篇论文介绍了 BPTT 和 RTRL 算法面向梯度和雅可比矩阵的一般性推广。文中呈现了相关实验结果,比较了在不同网络结构上这两个算法的复杂度。
- [MaNe99] J.R. Magnus and H. Neudecker, Matrix Differential Calculus, John Wiley & Sons, Ltd., Chichester, 1999.
>这部教材清晰而完整地介绍了矩阵论及矩阵微积分方法。
- [PhHa13] M. Phan and M. Hagan, “Error Surface of Recurrent Networks,” IEEE Transactions on Neural Networks and Learning Systems, Vol. 24, No. 11, pp. 1709 - 1721, October,2013.
>这篇论文介绍了循环网络误差曲面上地欺骗性凹槽,以及一系列可以用于改进循环网络地措施。
- [Werb90] P. J. Werbos, “Backpropagation through time: What it is and how to do it,” Proceedings of the IEEE, vol. 78, pp.1550–1560, 1990.
>时序反向传播算法是循环神经网络梯度计算地两个主要方法之一。这篇论文介绍了时序反向传播算法地一般性框架。
- [WiZi89] R. J. Williams and D. Zipser, “A learning algorithm for continually running fully recurrent neural networks,” Neural Computation, vol. 1, pp. 270–280, 1989.
>这篇论文介绍了计算动态网络梯度地实时回复学习算法。采用这一方方法,可以从第一个时刻开始计算梯度,并依时间顺序正向进行计算,该算法适合在线或实时地实现。
## 第10章
- [FrSk91] J. Freeman and D. Skapura, Neural Networks: Algorithms, Applications, and Programming Techniques, Reading, MA:Addison-Wesley, 1991.
>这本书包含了一些神经网络算法地代码段,以明晰网络细节。
- [Koho87] T. Kohonen, Self-Organization and Associative Memory,2nd Ed., Berlin: Springer-Verlag, 1987.
>这本书中介绍了 Kohonen 规则和几种使用该规则的网络。书中还提供了线性联想模型的完整分析,并且给出了很多扩展和例子。
- [Hech90] R. Hecht-Nielsen, Neurocomputing, Reading, MA: Addison-Wesley, 1990.
>这本书的一个章节介绍了竞争学习的历史和其中的数学。
- [RuMc86] D. Rumelhart, J. McClelland et al., Parallel Distributed Processing, vol. 1, Cambridge, MA: MIT Press, 1986.
>这套两卷的论文集著作是神经网络的经典文章,第一卷中的第一章描述了竞争网络及其是如何学会检测特征的。
## 第11章
- [BrLo88] D.S. Broomhead and D. Lowe, “Multivariable function in terpolation and adaptive networks,” Complex Systems,vol.2, pp. 321-355, 1988.
>这篇开创性的论文第一次阐述了径向基函数在神经网络领域内的使用。
- [MoDa89] J. Moody and C.J. Darken, “Fast Learning in Networks of Locally-Tuned Processing Units,” Neural Computation,Vol. 1, pp. 281–294, 1989.
>第一篇使用聚类方法选择径向基函数中心和方差的论文。
- [PaSa93] J. Park and I.W. Sandberg, “Universal approximation using radial-basis-function networks,” Neural Computation,vol. 5, pp. 305-316, 1993.
>这篇论文证明了径向基函数网络的通用逼近性能。
- [Powe87] M.J.D. Powell, “Radial basis functions for multivariable in terpolation: a review,” Algorithms for Approximation, pp.143-167, Oxford, 1987.
>这篇论文回顾了径向基函数的早期工作。径向基函数最初用于精确的多变量插值问题。
## 第12章
- [Bish95] C.M. Bishop, Neural Networks for Pattern Recognition, Oxford University Press,1995.
>一本从统计学角度论述神经网络的优秀教材。
- [HaBo07] L. Hamm, B. W. Brorsen and M. T. Hagan, “Comparison of Stochastic Global Optimization Methods to Estimate Neural Network Weights,” Neural Processing Letters, Vol. 26,No. 3, December 2007.
>这篇文章之处,使用多个启动的局部优化的程序,如最速下降或共轭梯度,其结果与全局优化方法不相上下,并且计算量较小。
- [HeOh97] B. Hedén, H. Öhlin, R. Rittner, L. Edenbrandt, “Acute My ocardial Infarction Detected in the 12-Lead ECG by Artificial Neural Networks,” Circulation, vol. 96, pp. 1798–1802,1997.
>这篇文章论述了使用神经网络通过心电图检测心肌梗塞的应用。
- [Joll02] I.T. Jolliffe, Principal Component Analysis, Springer Series in Statistics, 2nd ed., Springer, NY, 2002.
>有关主成分分析最著名的文章
- [PuFe97] G.V. Puskorius and L.A. Feldkamp, “Extensions and en hancements of decoupled extended Kalman filter training,”Proceedings of the 1997 International Conference on NeuralNetworks, vol. 3, pp. 1879-1883, 1997.
>这篇文章接受的扩展卡尔曼滤(Kalman)波算法,是神经网络训练较快的序列算法之一。
- [RaMa05] L.M. Raff, M. Malshe, M. Hagan, D.I. Doughan, M.G. Rockley, and R. Komanduri, “Ab initio potential-energy surfaces for complex, multi-channel systems using modified novelty sampling and feedforward neural networks,” The Journalof Chemical Physics, vol. 122, 2005.
>这篇文章描述了如何使用神经网络来进行分子动力学仿真。
- [ScSm99] B. Schölkopf, A. Smola, K.-R. Muller, “Kernel Principal Component Analysis,” in B. Schölkopf, C. J. C. Burges, A.J. Smola (Eds.), Advances in Kernel Methods-Support Vector Learning, MIT Press Cambridge, MA, USA, pp. 327-352, 1999.
>这篇文章介绍了一种使用核方法的非线性主成分分析方法。\]