目录html
开始接触神经网络(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 时,不免会有不少疑问:例如:ios
带着这些疑问找到了一本讲述传统神经网络的书《神经网络设计(第二版)》,读以后感受豁然开朗,学了多年的《线性代数》终于明白了怎么用,并且顺便复习了不少学过的课程:线性代数、高等数学、几率论与数理统计、离散信号处理、随机信号处理、数字图像处理、数学物理方法等。收获良多,故而整理下做为学习笔记。本文全部配图及其版权归原做者全部,本文仅供学习。另外中文翻译版内容有些许错误,强烈建议对照着原版pdf一块儿学习。git
原书名为《NEURAL NETWORK DESIGN (Second Edition)》,做者:Mattin T.Hagan、Howard B.Demuth、Mark H.Bearle 和 Orlando De Jesus。算法
配套的演示软件、书籍pdf版及ppt下载页面以下:性能优化
标量输入 \(p\) 乘以权值(weight) \(w\) 获得 \(wp\),做为其中的一项进入累加器,另外一个输入"1"乘以一个偏置值(bias)\(b\) ,再送入累加器。累加器的输出结果 \(n\) ,一般称做 净输入
(net input) ,送给 传输函数
(transfer function) \(f\) 做用后,产生标量 \(a\) ,做为神经元的输出(一些做者使用“激活函数”而不是“传输函数”,“补偿”而不是“偏置值”)。权值 \(w\) 对应生物神经元的突触链接的强度,胞体由累加器和激活函数来表述,神经元的输出 \(a\) 表明突触上的信号。神经元的实际输出依赖于不一样激活函数的选择。网络
\[ a = f(wp+b) \]app
激活函数能够是一个关于净输入 $ n $ 的线性或非线性函数。cors
(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} \]
\(R\) 个输入权值 \(p_{1}\) ,\(p_{2}\) ,... , \(p_{r}\)对应权值矩阵 \(W\)
共享神经元的偏置 \(b\)
\[ a = f(Wp+b) \]
\(R\)个输入,\(S\)个神经元的权值矩阵:
\[ W=\left[ \begin{matrix} w11 & w12 & {\dots} & w1r \\ w21 & w22 & {\dots} & w2r\\ {\vdots} & {\vdots} & {} & {\vdots} \\ ws1 & ws2 & {\dots} & wsr \end{matrix} \right] \]
延迟器:
\[ a(t)=u(t-1) \]
假设时间步长的更新是离散的,而且只取整数值
积分器:
\[ a(t)=\int{u(\tau)d(\tau)+a(0)} \]
\(a(0)\)表明初始条件
循环神经网络是一个带有反馈的网络,它的部分输出链接到它的输入。
延迟器、积分器和循环神经网络RNN如图所示:
三种网络:前馈网络(感知机为表明)、竞争网络(Hamming 网络为表明)和循环神经网络(Hopfield 网络为表明)
水果的三种特征:形状、纹理和重量
输入、标准的橘子和标准的苹果为:
\[ 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] \]
采用对称硬限值激活函数 handlims 的单层感知机
单神经元的感知机能把输入向量分为两类
\[ a=hardlinms(n)=hardlinms([w_{1,1} , w_{1,2}]p+b) \]
若是输入权值矩阵(这里是一个行向量)和输入向量的内积大于或者等于 \(-b\) ,则感知机的输出为 1 ,若是内积小于 \(-b\) ,则输出 -1 。这样将空间划分为两个部分
边界条件为:
\[ Wp+b=0 \]
\[ 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个可能的取值)
包含一层前馈层和一层反馈层,两层神经元个数相同,标准的Hamming 网络以下:
Hamming 网络的目标是判断哪一个标准向量最接近输入向量。判断结果由反馈层的输出表示。对于每个标准模式
而言,在反馈层中都有与之对应的神经元。当反馈层收敛后,只有一个神经元会输出非零值,该神经元就表示哪个标准模式
最接近输入向量。
前馈层用来计算每一个标准模式
和输入模式
之间的相关性或内积。为了达到计算相关性的目的,前馈层中权值矩阵用链接矩阵 \(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\) ,来确保前馈层的输出永远不会为负数,这也是反馈层所须要的。
反馈层正是所谓的 竞争层 。初始值为前馈层的输出,这个输出表明着标准模式和输入向量的相关性。而后该层的神经元互相竞争决定一个胜者。竞争结束后,只会有一个神经元的输出为零。获胜的神经元代表了网络输入的类别。
\[ 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 ,因此网络作出的选择是正确的。
循环网络,能够完成 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 网络中权值矩阵和偏置向量的设置要复杂许多。
感知机是前馈网络的一个实例。在这些网络中,输出是直接根据输入计算获得的,中间没有任何形式的反馈。前馈网络能够用于模式识别,也能够用于函数逼近。函数逼近在自适应滤波和自动控制等领域已有所应用。
以 Hamming 网络为表明的竞争网络由两个主要的特性。第一,它们计算了已存储的标准模式和输入模式之间的距离。第二,它们经过竞争来决定哪一个神经元所表明的标准模式最接近输入。
以 Hopfield 网络为表明的循环网络,最初是受统计力学的启发。它们被用做联想记忆,其中已存储的数据能够经过与输入数据的关联关系而不是基于地址被提取。循环网络已经被用来解决各类优化问题。
在不能可视化决策边界的状况下,如何肯定多输入感知机网络的权值矩阵和偏置值?
单层感知机网络的优势和局限性
指修改网络权值和偏置值的方法和过程,也称为训练算法。学习规则是为了训练网络来完成某些任务。学习规则能够概括为三大类:
网络的输出为:
\[ \mathbf{a}=\mathbf{hardlim} (\mathbf{W} \mathbf{p}+\mathbf{b}) \]
网络中的每一个神经元把输入空间划分红了两个区域
考虑两个输入,输出为:
\[ \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 \]
对于决策边界上的全部点而言,输入向量与权值向量间的内积都相等。
每一个神经元都有一个决策边界:
\[ _{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 \]
一般将权值和偏置值初始化为较小的随机数
能够证实:
该规则总能收敛到能实现正确分类的权值上(假设权值存在)
感知机的学习规则将在有限次迭代后收敛
局限性:
没法解决 “异或”门 (两个输入值相同输出0,输入值不一样输出1)问题
决策边界总与权值向量正交
单层感知机只能对线性可分的向量进行分类
学习规则:
\[ \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} \]
Hebb 规则是最先的神经网络学习规则之一,Donald Hebb 在1949年提出,做为一种可能的大脑神经元突触调整机制,一直用于人工神经网路设计。Donald Hebb加拿大人,立志成为一名小说家,英语专业学士,心理学硕士(巴普洛夫条件反射),哈佛博士。1949年出版专著《The Origanization of Behavior》(《行为自组织》)。
Hebb 学习假说:
当神经细胞A的轴突足够接近到可以激发神经细胞B,且反复或持续地刺激细胞B,那么A或B中一个或者两个细胞将会产生某种增加过程或代谢变化,从而加强细胞A对细胞B的刺激效果。
这一假说提出了一种在细胞层次进行学习的物理机制。直至今日,Hebb理论依然影响着神经科学的研究。
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)模型的神经网络。结构如图所示:
若是突触两侧的两个神经元被同时激活,那么突触的链接强度将会增长。
数学解释:
\[ 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) \]
另一项为偏差,大小取决于标准输出模式之间相关性的总和。
有些方法能够减少上述的偏差
选取一个能最小化如下性能指标的权值矩阵:
\[ 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} \]
注意 : 使用 伪逆规则 不须要对输入向量进行归一化
自联想记忆模型
难题: 当训练数据集包含大量输入模式时,权值矩阵将会包含一些高数值元素,能够添加一项衰减器,让学习规则表现得像一个平滑滤波器,使得最近一次的输入变得更重要,而慢慢淡忘以前的输入:
\[ \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} \]
把性能学习应用于单层神经网络
Widrow-Hoff 学习算法 是一个以均方偏差为性能指标的近似最速降低算法。重要性体如今两个方面:首先,该算法被普遍应用于现今诸多信号处理的实际问题中;其次,它是多层网络学习算法——BP算法的前导工做。
ADALINE (自适应线性神经网络)和 LMS (Least Mean Square 最小均方)
ADALINE 与感知机类似,传输函数是线性函数而不是硬限值函数。只能解决线性可分问题。
LMS 算法在信号处理领域应用中取得了巨大成功。
\[ \mathbf{a}=\operatorname{purelin}(\mathbf{W} \mathbf{p}+\mathbf{b})=\mathbf{W} \mathbf{p}+\mathbf{b} \]
其中 \(\operatorname{purelin}\) 表明 线性传输函数。网络结构如图:
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\) 。所以,输入向量的性质决定了是否存在惟一解。
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\) 是向量。
权值向量的指望值将收敛于
\[ \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}^{*} \]
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]。
例如,网络最小化的输出“偏差”,其实是一个近似于咱们试图要恢复的信号!
假设医生试图检查一个心烦意乱的研究生的脑电图(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 信号的均方值相同
在长途电话线和用户地线之间链接的“混合”设备处的阻抗不匹配,因此长途电话线上的回声广泛存在。在长距离线的末端,到来的信号被输送到一个自适应滤波器及混合设备。滤波器的输出是混合设备的输出,所以,滤波器试图消除混合设备输出中与输入信号相关的那部分信号,即回声。
和 LMS 算法学习法则同样,反向传播算法也是一种近似最速梯度降低算法,它采用均方偏差做为性能指标。LMS 算法和反向传播算法的差别仅在于它们计算导数的方式。对于单层的线性网络来讲,偏差是网络权值的显示线性函数,它关于权值的导数能够轻易地经过计算获得。然而,多层网络采用非线性的传输函数,网络权值和偏差之间的关系更为复杂,为了计算导数,须要利用微积分中的链式法则。
1974年 Paul Werbos 的毕业论文中首次描述多层网络训练算法 [Werbo74]。然而直到80年代中期,反向传播算法才被 David Rumelhart, Geoffrey Hinton 和 Ronald Williams
[RuHi86], David Parker [Park85], 还有 Yann Le Cun [LeCu85]从新发现并获得普遍宣传。
现在,经过反向传播算法训练的多层感知机网络是应用最普遍的神经网络。
考虑三层网络,第一层的权值矩阵记为 \(\mathbf{W}^{1}\) ,第二层的权值矩阵记为 \(\mathbf{W}^{2}\),将输入的神经元个数与每层中神经元的个数依次列出,多层网络结构记为:
\[ R-S^{1}-S^{2}-S^{3} \]
两层网络能解决异或问题,有多种不一样的多层解决方法,如下是一个例子
在控制系统中,目标是找到合适的反馈函数,从而创建从测得输出到控制输入的映射。在自适应滤波中,目标是找到一个函数,创建从延迟输入信号到合适的输出信号的映射。
已经证实:只要有足够多的隐层单元,一个隐层采用 S 型传输函数,输出层采用线性传输函数的两层网络几乎能够任意精度逼近任意函数[HoSt89]。
函数逼近网络示例:
接下来须要设计一个算法来训练这样的网络
多层网络能够表达为:
\[ \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} \]
多层网络的反向传播算法是 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} \]
单层线性网络(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] \]
如今剩下的工做就是计算敏感度 \(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}) \]
第一步将输入向前传过网络:
\[ \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} \]
为了演示反向传播算法,须要选择一个网络并把它应用到一个实际的问题中。
咱们须要一个网络逼近于下面的函数:
\[ 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] \]
这样,就完成了反向传播算法的第一次迭代。接着再从训练集中随机选取另外一个输入并执行一次新的算法迭代,直到网络输出和目标函数之间的差别达到可接受的程度。
网络的链接权值和偏置值在每个样本传过网络后都被更新。咱们也能够执行 批量训练(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} \]
要逼近一个具备大量拐点的函数,须要隐层中有大量的神经元。
网络有逼近函数的能力,可是学习算法却不必定能产生能准确逼近函数的网络参数。
一个网络要可以泛化,它包含的参数个数应该少于训练集中数据点的个数。
反向传播算法收敛速度慢
启发式技术:可变的学习率、使用冲量以及改变变量范围
数值优化技术:[Shan90], [Barn92], [Batt92] and [Char92] 等。
成功用于训练多层感知机的数值优化技术:共轭梯度算法和 Levenberg-Marquardt 算法(牛顿法的一种变形)
算法差别在于它们利用获得的导数来更新权值的方式。
把基本的反向传播算法称为 最速降低反向传播算法(steepest descent
backpropagation , SDBP)
为了防止进入鞍点区域,将初始权值和偏置设置成小的随机值
平滑轨迹,防止振荡
平滑轨迹上的振荡,提高算法的收敛性。
一阶滤波器:
\[ 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} \]
目标:使用较大的学习率同时保证算法的稳定性。
该方法倾向于在相同方向上进行梯度更新
可变学习率反向传播算法(variable learning rate backpropagation algorithm ,VLBP)
不须要计算二阶导数但拥有二阶函数的收敛性质。共轭梯度反向传播(conjugate gradient backpropagation , CGBP)
黄金分割搜索算法[Scal85]:
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] \]
神经元数量过多时,在训练数据上容易过拟合。泛化能力出众的网络应当在训练数据和新的数据上具备一样优异的表现。
Ockham's razor 奥卡姆剃刀 :如无必要,勿增实体!
产生最简神经网络:生长法、剪枝法、全局搜索法、正则化法和提早终止法
后两种方法约束网络权值大小来实现网络最简化
75%训练 15%验证 15%测试
交叉验证
添加一个包含逼近函数导数的惩罚项,或者说正则化项,以平滑所获得的函数。
\[ 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 $ 用于控制网络解的有效复杂度。比率越大,网络响应越平滑。
若是存在两个随机事件 A 和 B ,那么已知事件 B 发生的状况下,事件 A 发生的条件几率为
\[ P(A | B)=\frac{P(B | A) P(A)}{P(B)} \]
第一层贝叶斯框架
第二层贝叶斯框架
最大似然估计
好复杂。。。
而后看不懂了。。。太难了,公式推不动!!!有空再补
输出不但依赖于当前的网络输入,还依赖于以前的输入、输出及状态等。(有记忆性)
动态网络能够逼近一个 动力学系统。有众多应用:金融系统的预测、通讯系统的信道均衡、电力系统的相位探测、排序、故障检测、语音识别、天然语言中的语法学习、遗传学中蛋白质结构预测。
能够方便地表示具备多个反馈链接及抽头延迟线(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) \]
示例
静态网络能够逼近静态函数。动态网络能够经过训练逼近动力学系统,如机械臂、飞行器、生物过程、经济体系等,这些系统的输出依赖于以前输入和输出的历史。
动态网络的反向传播算法:时间反向传播算法(backpropagation-throughtime , BPTT)和 实时回复学习(real-time recurrent learning , RTRL)
使用联想学习规则进行自适应学习,以实现模式分类。
竞争网络、特征图网络以及学习向量量化(Learning Vector Quantization , LVQ)网络
Hamming 网络是最简单的竞争网络之一,其输出层的神经元经过互相竞争从而产生一个胜者。这个胜者代表了何种标准模式最能表明输入模式。
Hamming 网络包含两层,第一层(是一个 instat 层)将输入向量和标准向量相互关联起来。第二层采用竞争方式肯定最接近于输入向量的标准向量。
单个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
在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) ,即每个神经元的输出都会对全部其余神经元产生一个抑制做用。最终稳定时,只有一个 神经元有非零输出。
因为其每一个神经元都激活自身并抑制其余全部神经元。
定义一个传输函数来实现回复竞争层的功能:
\[ \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}) \]
经过将 \(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^{*} \]
所以,权值矩阵中最接近输入向量的行(即与输入向量的内积最大的行)向着输入向量靠近,它沿着权值矩阵原来的行向量与输入向量之间的连线移动。
学习度与最终权值向量稳定性之间折中。死神经元等。。。
增强中心、抑制周围
混合型网络:使用 无监督和有监督学习来实现分类
隐层采用S型传输函数而输出层采用线性传输函数的多层网络是通用的函数逼近器。
另外一类通用函数逼近网络——径向基(Radial Basis Networks ,RBF)函数
RBF 被用来解决多维空间中的精确插值问题。也就是说,经过径向基插值建立的函数须要精确地经过训练集中的全部的目标。[Powe87]
径向基网络是一个两层网络。径向基函数(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} \]
这种 RBF 已经被证实是通用的逼近器[PaSa93]。
若是RBF网络第一层给拥有足够多的神经元,能够逼近任意函数。
矩阵增广
\[ \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} \]
训练权值
\[ _{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}} \]
\[ 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\| \]
训练集、测试集、验证集 70% 15% 15%
归一化、非线性变换、特征提取、离散输入/目标的编码以及缺失数据的处理
归一化(normalization):
通用特征提取方法:主成分分析(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。
(1)基本结构的选择
拟合、模式识别、聚类和预测
拟合(fitting)又称为函数逼近或者回归。学习输入集和输出集之间的映射关系。对于拟合问题,目标输出变量为连续值。
用于拟合问题的标准神经网络结构式隐层采用 tansig 神经元、输出层采用线性神经元的多层感知机。
径向基网络也可用于拟合问题。在径向基隐层中使用高斯传输函数,输出层使用线性传输函数。
模式识别(pattern recognition)也被称为模式分类。
聚类(clustering):按照数据类似性对其进行划分。
预测(prediction)也属于时间序列分析、系统辨识、滤波和动态建模。预测时间序列上将来的值。须要使用动态神经网络。最简单的用于非线性预测的网络是聚焦延迟神经网络。这是一个通用动态网络的一部分,叫作聚焦网络。其动态性只表如今一个静态多层前馈网络的输入层。该网络的优势是可使用静态反向传播算法来训练,由于网络输入的抽头延迟线可以被输入延迟值的扩展向量代替。
聚焦延迟神经网络(Focused Time-Delay Neural Network):
对于动态建模和控制问题, NARX网络(Nonlinear AutoRegressive model with eXogenous input 外部输入的非线性自回归模型)是普遍使用的一种方法。例如,输入信号能够表示施加到马达上的电压。输出能够表示机器人手臂的角位置。能够用静态反向传播算法训练。这两个抽头延迟线能够替换为延迟输入和目标的扩展向量。咱们能够反馈目标而非网络输出(这须要采用动态反向传播算法进行训练),由于当训练结束时网络的实际输出应该和目标相匹配。
(2)具体结构的选择
例如,使用 SOFM 网络进行聚类,那么网络只有一层
在可用序列模式实现的算法中,最快的算法是扩展 Kalman 滤波算法
(1)限制条件
(2)梯度的范数
对于多层网络,标准的性能指标是均方偏差,当训练集的全部输入都拥有一样的可能性时,能够表示为:
\[ 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 传输函数
ephch
单次训练的网络不必定能得到最优的性能,由于训练过程当中可能会陷入性能曲面的局部极小值。为了克服这个问题,最好能在不一样初始化条件下屡次训练网络,而后选择性能最好的网络。一般状况下训练5~10次可以得到全局最优解[HaBo07]。
受试者工做特征曲线(Receiver Operating Characteristic Curve, ROC)
自组织图(Self-Organizing Map ,SOM)网络是最经常使用的一种网络
为了测试预测偏差在时间上的相关性,使用 自相关函数(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}} \]
这章附录复习一下学过的《线性代数》及《高等数学》的知识,以便随时速查
\[ \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 \]
基于向量长度的概念,知足以下性质的标量函数 \(||\mathcal{X}||\) 称为范数:
有不少函数知足这些条件,一个常见的基于内积的范数是:
\[ \|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 \|} \]
正交性和线性无关之间存在一种关系。一组线性无关的向量能够转换为一组正交向量,它们能生成同一个向量空间。标准的转化过程称为 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} \]
\[ \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\) 的特征值。
性能学习(performance learning) : 网络参数调整的目标是优化网络性能
目标是研究性能曲面并肯定性能曲面存在极小点和极大点的条件。
性能学习包含几种不一样的学习法则
依据是:在网络训练过程当中,网络参数(权值和偏置值)的改变旨在优化网络的性能。
第一步是定义“性能”,寻找一个衡量网络性能的定量指标,即 性能指标 (performance index) 。网络性能越好,性能指标越小;网络性能越差,性能指标越大。
第二步是搜索参数空间(调整网络权值和偏置)以减少性能指标。研究性能曲面的特性,创建一些保证一个曲面存在极小点(寻找的最优势)的条件。
性能指标能够表示为在某点 \(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] \]
梯度的第 \(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。
强弱极小点的区别在于领域内是否存在相等点,对应于 Hessian 矩阵的正定和半正定。
极小值点处梯度必须为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}^{*}}\) 是正定矩阵。
在某点的领域内,许多函数能够用二次函数近似。
\[ 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 } \]
二阶导数的最大值存在于最大特征值所对应的特征向量的方向上。事实上,在每一个特征向量方向上,二阶导数都等于相应的特征值。特征向量定义了一个新的二次交叉衰减的坐标系。特征向量被称为函数等高线的主轴。
最速降低法、牛顿法、共轭梯度法
性能优化目标:寻找给定神经网络的最优权值和偏置值
优化的基本原理由 开普勒、费马、牛顿、莱布尼兹 这些科学家以及数学家于17世纪发现的。
所要讨论的优化算法都是迭代的,从某个初始值 \(x_{0}\) 开始,而后按照以下形式的等式逐步更新猜想值:
\[ \mathbf{x}_{k+1}=\mathbf{x}_{k}+\alpha_{k} \mathbf{p}_{k} \]
其中,向量 \(p_{k}\) 表示一个搜索方向,正数标量 \(\alpha_{k}\) 表示学习率,它决定了学习步长。
当使用上式更新最优(极小)点的猜想值时,咱们但愿函数值在每次迭代时都减少:
\[ 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\) 的维数
最速降低法中的推导是基于一阶泰勒级数展开式,牛顿法基于二阶泰勒级数:
\[ 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} \]
牛顿算法在许多应用中都能快速收敛。可是有时候可能收敛到鞍点。
牛顿法有一个性质被称为 二次终结 。即它能在有限的迭代次数内使二次函数极小化。
假设寻找以下二次函数的极小点
\[ 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}\) 正交的任意向量,存在无穷多个共轭向量集。
共轭梯度法:
[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]中被重印。
[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网络
[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
该书收集了当时一些关于控制系统中地神经网络和模糊逻辑地研究和应用地论文。
[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],尽管两位研究人员正在独立工做。
[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.
这篇可读性地文章总结了自适应多层神经网络地应用,好比系统建模,统计预测、回声消除、逆向建模和模式识别等。
[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可积函数。
[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.
这是介绍加速反向传播算法收敛速度的几种启发式技术最先的文章之一,它包括冲量、批处理以及可变学习率。
[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.
这篇论文介绍了训练过程当中网络有效参数数量是如何变化的,以及提早终止结束训练是如何提高网络泛化能力的。
[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.
这篇论文介绍了计算动态网络梯度地实时回复学习算法。采用这一方方法,能够从第一个时刻开始计算梯度,并依时间顺序正向进行计算,该算法适合在线或实时地实现。
[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.
这套两卷的论文集著做是神经网络的经典文章,第一卷中的第一章描述了竞争网络及其是如何学会检测特征的。
[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.
这篇论文回顾了径向基函数的早期工做。径向基函数最初用于精确的多变量插值问题。
[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.
这篇文章介绍了一种使用核方法的非线性主成分分析方法。