赞
踩
人工神经网络(Artificial Neural Network,ANN),通常简称为神经网络,是一种在生物神经网络的启示下建立的数据处理模型。神经网络由大量的人工神经元相互连接进行计算,根据外界的信息改变自身的结构,主要通过调整神经元之间的权值来对输入的数据进行建模,最终具备解决实际问题的能力.
人类自身就是一个极好的模式识别系统。人类大脑包含的神经元数量达到 1 0 11 10^{11} 1011数量级,其处理速度比当今最快的计算机还要快许多倍。如此庞大、复杂、非线性的计算系统时刻指挥着全身的获得。当视野中出现一张熟悉的人脸时,只需数百毫秒的时间即可正确识别。尽管许多昆虫的神经系统并不发达,但仍表现出极强的识别能力。蝙蝠依靠其声纳系统搜集目标的位置、速度、目标大小等信息,最终实现声纳的口声定位以极高的成功率捕捉目标。
一般认为,生物神经并不是一开始就具备这样的识别能力的,而是在其成长过程中通过学习逐步获得的。人类出生后的几年间,大脑接收了大量的环境信息,随着经验的积累,神经元之间的相互关系不断变化,从而完成智能、思维、情绪等精神活动。与其他细胞不同,神经元细胞由细胞体P、树突D和轴突A组成。其中树突用于接收信号输入(比如,人看到美食,会分泌物质,然后在树突化学反应转化为信号),细胞体用于处理,轴突则将处理后的信号传递给下一神经元。
右图是人类模拟神经元设计的神经元,
p
p
p表示输入信号,权值
w
w
w对应于突触的连接强度,细胞体对应于累加器
∑
\sum
∑和传输函数
f
f
f,神经元输出a 代表轴突的信号。什么是传输函数? 这里假设输入信号是一个累加的关系,这关系太绝对了.需要使用一个映射函数f做为传换.常用的w输函数有:线性函数, 对数-S形函数(sigmoid)…
一般来说,有多个输人的单个神经元并不能满足实际应用的要求。在实际应用中需要有多个并行操作的神经元,这里将这些可以并行操作的神经元组成的集合称为“层”。
输入层 隐含层 如果某层的输出是网络的输出,那么称该层为输出层,而其他层叫隐含层:上图中的网络有一个输出层(第 3层)和两个隐含层(第 1层和第 2层), 被称为前馈网络(Feedforward Neural Network),也被称为前向神经网络或多层感知器(Multi-Layer Perceptron,MLP)
感知器使用的激活函数通常是阶跃函数(如Heaviside函数)或符号函数,其根据输入的加权和决定节点是否激活。这使得感知器能够对输入数据做出二进制分类的预测。单层感知器就是包含一层权值可变的神经元的感知器模型.
单层感知器是感知器中最简单的一种,由单个神经元组成的单层感知器只能用来解决线性可分的二分类问题。其结构如上图所示.其通常采用纠错学习规则的学习算法(Error Correction Learning Rule)
什么是收敛?当权值向量 w w w已经能正确实现分类时,算法就收敛了,但实际情况都会有误差.所以在计算时的收敛
线性神经网络与感知器的主要区别在于,感知器的传输函数只能输出两种可能的值,而线性神经网络的输出可以取任意值,其传输函数是线性函数。
线性神经网络采用LMS 算法,也称为 A 规则(Delta Rule).其基于纠错学习规则,即最小二乘 (最小均方)算法来调整网络的权值和偏置
在实际运算中,为了解决权值 w w w维数过高,给计算带来困难的问题,会使用梯度下降法求值.
通过LMS算法线性神经网络在收敛的精度和速度上较感知器都有了较大提高,但其线性运算规则决定了它只能解决线性可分的问题。可以通过连接多个神经元节点,多个输出,形成 Madaline (多层)网络的方式解决非线性问题或者多分类问题
线性神经网络解决线性不可分问题的另一个方法是,对神经元添加非线性输入,从而引入非线性成分,这样做会使等效的输入维度变大,如图 5-4 所示。
BP 神经网络一般是多层的,与之相关的另一个概念是多层感知器 (Multi-LayerPerceptron,MLP)。多层感知器除了输入层和输出层以外,还具有若干个隐含层。BP 神经网络采用误差反向传播的学习算法(Error Backpropagation),也是基于误差的学习算法。
如图 6-1 所示,是一个包含2 层隐含层的 BP 神经网络的拓扑结构.BP 神经网络的特点
BP网络使用最速下降法来调制各层权值。下面以三层BP网络为例
工作信号正向传播
误差信号反向传播,在权值调整阶段,沿着网络逐层反向进行调整
以线性代数视角去理解多层网络的误差信号反向传播:
- 正向: 每一层神经元干的事情可以理解成空间映射子空间的概念,即降维。
- 反向: 误差的调节过程是升维的过程。输出层可能就2个维度,调节完这2个维度误差后。再加1个维度调节在下一个神经元权值中
标准的最速下降法在实际应用中往往有收敛速度慢的缺点。针对标准 BP 算法的不足,出现了几种标准 BP 法的改进,如动量 BP 算法、牛顿法等。BP存在的一定的局限性:
前面介绍的单层感知器、线性神经网络、BP 网络以及后面的径向基函数网络等都属于前向神经网络 (或前馈神经网络).在这种网络中,各层神经元节点接收前一层输入的数据,经过处理输出到下一层,数据正向流动,没有反馈连接。
1982 年,美国加州理工学院的 J.Hopfield 教授提出了一种单层反馈神经网络,称为Hopfield 网络。Hopfield 网络是一种循环的神经网络,从输出到输入有反馈连接。Hopfield网络可以作为联想存储器,又称为联想记忆网络。主要看 Hopfield 网络是离散网络,其结构图如图,任意两个神经元间的连接权值为
w
i
j
,
w
i
j
=
w
j
i
w_{ij},w_{ij}=w_{ji}
wij,wij=wji,神经元的连接是对称的。
w
i
i
=
0
w_{ii}=0
wii=0,即神经元自身无连接.且存在阀值
b
i
b_i
bi,激活函数
f
f
f用阐值函数二值化取值0/1或-1/1.即t时刻,第i个单经元公式
x
i
(
t
)
=
∑
j
=
1
j
≠
i
N
w
i
j
y
i
(
t
)
+
b
i
x_i(t)=\sum_{\substack{j=1\\j\neq i}}^Nw_{ij}y_i(t) + b_i
xi(t)=j=1j=i∑Nwijyi(t)+bi
y
i
(
t
+
1
)
=
f
(
x
i
(
t
)
)
y_i(t+1)=f(x_i(t))
yi(t+1)=f(xi(t))
假设初始输入
X
=
{
x
1
,
x
2
,
x
3
,
.
.
.
x
n
}
,
则
Y
(
0
)
=
X
X=\{x_1,x_2,x_3,...x_n\}, 则Y(0)=X
X={x1,x2,x3,...xn},则Y(0)=X
网络从初态
Y
(
0
)
Y(0)
Y(0)开始,经过有限次递归之后,如果其状态不再发生变化
Y
(
t
+
1
)
=
Y
(
t
)
Y(t+1)=Y(t)
Y(t+1)=Y(t),即
Y
(
t
+
1
)
Y(t+1)
Y(t+1)则称该网络是稳定的。
因为Hopfield网络的状态有限,所以不可能出现混沌现象,概括上述的两种现象,那我们可以通过数学定义什么是稳定状态
为什么能达到稳定状态?
通过“动力学系统的最终行为是由它的吸引子(稳定状态)决定的”规律。利用网络的能量函数来表示当前网络状态的能量.网络的能量在网络状态按一定规则变化时,能自动趋向能量的极小点。如果把一个待求解问题的目标函数以网络能量函数的形式表达出来,当能量函数趋于最小时,对应的网络状态就是问题的最优解。
证明过程略,最终会得出 Δ E ≤ 0 \Delta E \leq 0 ΔE≤0的结论,即网络最终将收敛到一个吸引子(网络稳定状态 )
能使网络稳定在同一吸引子的所有初态的集合,称该吸引子的吸引域.
欲使反馈网络具有联想能力,每个吸引子都应该具有一定的吸引域。只有这样,对于带有一定噪声或缺损的初始样本,网络才能经过动态演变而稳定到某一吸引子状态,从而实现正确联想。反馈网络设计的目的就是要使网络能落到期望的稳定点 (问题的解)上,并且还要具有尽可能大的吸引域,以增强联想功能。
吸引子的分布是由网络的权值 (包括阙值)决定的,设计吸引子的核心就是如何设计一组合适的权值。为了使所设计的权值满足要求,权值矩阵应保证给定的样本是网络的吸引子,并且要有一定的吸引域.
当所需要的吸引子较多时,可采用Hebb规则外积法
事实上,当网络规模n一定时,要记忆的模式数越多,联想时出错的可能性越大;反之,要求的出错概率越低,网络的信息存储容量上限越小。研究表明存储模式数 P 超过0.15n 时,联想时就有可能出错。错误结果对应的是能量的某个局部极小点,或称为伪吸引子。提高网络存储容量有两个基本途径:改进网络的拓扑结构;二是改进网络的权值设计方法。常用的改进方法有:反复学习法、纠错学习法、移动兴奋门限法、伪逆技术、忘记规则和非线性学习规则等。
Hopfield网络是寻找最低能量状态的过程及BP网络寻最小损失值的过程都使用了梯度下降法.梯度下降法只能按照能量(损失)函数递减的方式演化,很难避免伪状态的出现,而且容易陷入局部极小值,无法收敛于全局最优点。
模拟退火算法是随机网络中解决能量局部极小问题的一个有效方法,其基本思想是模拟金属退火过程。
金属退火过程大致是,先将物体加热至高温,使其原子处于高速运动状态此时物体具有较高的内能;然后,缓慢降温,随着温度的下降,原子运动速度减慢,内能下降;最后,整个物体达到内能最低的状态。
模拟退火过程相当于沿水平方向晃动托盘温度高则意味着晃动的幅度大,小球肯定会从任何低谷中跳出,而落人另一个低谷。这个低谷的高度(网络能量)可能比小球原来所在低谷的高度低 (网络能量下降),但也可能反而比原来高(能量上升)。
后一种情况的出现,从局部和当前来看,这个运动方向似乎是错误的;但从全局和发展的角度看,正是由于给小球赋予了“爬山”的本事,才使它有可能跳出局部低谷而最终落人全局低谷。当然,晃动托盘的力度要合适,并且还要由强至弱 (温度逐渐下降),小球才不致因为有了“爬山”的本领而越爬越高。
Boltzmann 机的随机神经网络只有两种输出状态,即单极性二进制的0或 1。状态的取值根据概率统计法则决定,由于这种概率统计法则的表达形式与著名统计力学家 LBoltzmann 提出的 Boltzmann分布类似,故将这种网络取名 Boltzmann Machine(BM)。
从式中可以得出状态稳定两点结论,也是采用模拟退火方法搜索全局最小的原因:
- BM 网络处于某一状态的概率主要取决于此状态下的能量 E,能量越低,概率越大;
- BM 网络处于某一状态的概率还取决于温度参数 丁,温度越高,不同状态出现的概率越接近,网络能量较易跳出局部极小而搜索全局最小;温度低则情况相反。
学习的目的是通过调整网络权值使训练集中的模式在网络状态中以相同的概率再现。学习过程可分为两个阶段
输人输出的对应规律表现为网络达到热平衡时,相连节点状态同时为1的平均概率。期望对应规律与模拟对应规律之间的差别就表现为两个学习阶段所对应的平均概率的差值,此差值便作为权值调整的依据
如何获取热平衡相连节点状态同时为1的平均概率.假设训练集提供了P对模式
过程中包括小循环与大循环:
- 在小循环中,温度保持恒定,算法选择不同的神经元进行状态调整,达到热平衡后进行降温,进入新的温度下的小循环。
- 大循环是指整个降温、计算的过程,当大循环结束后,算法也就结束了。
- 初始温度的选择方法与模拟退火算法类似,可以随机选择网络中的n个神经元,取其能量的方差,或随机选择若干神经元,取其能量的最大差值。
如何通过平均概率,调整权值
w
i
j
w_{ij}
wij
上述主要思路:
- 正向学习,通过热平衡(大小循环)算出 p i j p_{ij} pij
- 返回学习,通过热平衡(大小循环)算出 p i j ′ p'_{ij} pij′
- 修改权值 w i j w_{ij} wij,再重新正反学习,直到 Δ w i j → 0 \Delta w_{ij} \rarr 0 Δwij→0
玻尔兹曼机的计算复杂度较高,并且它的收敛速度较慢.受限玻尔兹曼机(restricted Boltzmann machine,RBM)是玻尔兹曼机的一个变体。与玻尔兹曼机相比,受限玻尔兹曼机的结构更加简单,因为它没有循环边。这意味着受限玻尔兹曼机中的单元只能与层间相连,而不能与同层相连。
其结构如上左图所示,可见层充当两个角色(输入,输出).因此将其展开如右图所示.两边权值相等(
w
i
j
=
w
j
i
w_{ij}=w_{ji}
wij=wji).如果一个 BRM 有n个可见单元和m个隐单元,且用
向量
v
和
h
向量v和h
向量v和h分别表示可见单元和隐单元的状态。其中,
v
i
v_i
vi表示第i个可见单元的状态,
h
j
h_j
hj表示第j个隐单元的状态。
关于Gibbs采样,主要依赖马氏链的数学定义:“状态转移的概率只依赖前一个状态” .即马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC). 与BM网络中达到热平衡时,相连节点状态同时为1的平均概率.过程相似,只是把“相连节点状态同时为1的平均概率”换成“马氏链中的概率”
假设目前有5个用户,4部电影. 构造出User-Item评分矩阵,其中
U
1
D
1
U_1D_1
U1D1为用户
U
1
U_1
U1对电影
D
1
D_1
D1的评分,记为
r
11
r_{11}
r11
怎么给用户没看过的电影评分? 然后推荐给用户
通过矩阵分解的思想,将一个大的矩阵分解为几个小的方便计算和存储的小矩阵.Basic MF最基础的分解方式,即稀疏的评分矩阵(User-Item)来预测用户对未打分电影的评分.其核心思想是从电影中抽出电影
k
k
k维主题(特征),比如: 武侠,爱情,新出电影,热血…
A
m
×
n
=
U
m
×
k
×
V
k
×
n
A_{m×n}=U_{m×k} \times V_{k×n}
Am×n=Um×k×Vk×n
将评分矩阵A分解为用户矩阵U和电影矩阵V, 通过不断的迭代训练使得U和V的乘积越来越接近真实矩阵A。进一步还可以通过线性代数中的SVD(Singular Value Decomposition,奇异值分解)来分解.
在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。因此可以忽略一点噪音.
当然也可以使用RBM进行电影评分.但明确的一点针对每一个用户,训练一个 RBM
关键字: 隐层-特征-降维, 就是RBM的特性
深度置信网络(DBN)的构成是多个受限玻尔兹曼机(RBM)堆叠起来,前一个RBM的隐藏层作为下一个RBM的可视层,每次训练时,将下层的RBM训练好后再训练上层的RBM,每次训练一层,直至最后。
效果如图所示:即简单的利用RBM堆叠压缩和解压会有明显失针,查也可以理解毕竟从2000个维度除到了30.但加上BP神经网络的损失学习之前.还原度明显变高了
《人工神经网络理论、设计及应用》
《MATLAB神经网络原理与实例精解》
《LDA数学八卦》
《推荐系统中的矩阵分解》
《奇异值分解(SVD)》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。