人工神经网络
神经元与神经网路
生物神经元结构
神经元具有两种常规工作状态:兴奋与抑制,即满足“0—1”律。当传入的神经冲动使细胞膜电位升高超过阈值时,细胞进入兴奋状态,产生神经冲动并由轴突输出;当传入的冲动使膜电位下降低于阈值时,细胞进入抑制状态,没有神经冲动输出。
神经元数学模型
神经元的数学模型由加权求和、线性动态系统和非线性函数映射三部分组成。
- y i ( t ) y_i(t) yi(t):第 i i i 个神经元的输出
- θ i \theta_i θi:第 i i i 个神经元的阈值
- U k ( t ) ( k = 1 , 2 , ⋯ , M ) U_k(t)(k=1,2,\cdots,M) Uk(t)(k=1,2,⋯,M):外部输入
- a i j , b i k a_{ij},b_{ik} aij,bik:权值
加权求和:
v
i
(
t
)
=
∑
j
−
1
N
a
i
j
y
i
(
t
)
+
∑
k
=
1
M
b
i
k
u
k
(
t
)
−
θ
I
v_i(t)=\sum^N_{j-1}a_{ij}y_i(t)+\sum^M_{k=1}b_{ik}u_k(t)-\theta_I
vi(t)=j−1∑Naijyi(t)+k=1∑Mbikuk(t)−θI
记为矩阵形式:
V
(
t
)
=
A
Y
(
t
)
+
B
U
(
t
)
−
θ
V(t)=AY(t)+BU(t)-\theta
V(t)=AY(t)+BU(t)−θ
- A = { a i j } N × N A=\{a_{ij}\}_{N\times N} A={aij}N×N
- B = { b i k } N × M B=\{b_{ik}\}_{N\times M} B={bik}N×M
- V = [ v 1 , ⋯ , v N ] T V=[v_1,\cdots,v_N]^T V=[v1,⋯,vN]T
- U = [ u 1 , ⋯ , u M ] T U=[u_1,\cdots,u_M]^T U=[u1,⋯,uM]T
- Θ = [ θ 1 , ⋯ , θ N ] T \Theta=[\theta_1,\cdots,\theta_N]^T Θ=[θ1,⋯,θN]T
- Y = [ y 1 , ⋯ , y N ] T Y=[y_1,\cdots,y_N]^T Y=[y1,⋯,yN]T
线性环节的传递函数:
X
i
(
s
)
=
H
(
s
)
V
i
(
s
)
X_i(s)=H(s)V_i(s)
Xi(s)=H(s)Vi(s)
式中,
H
(
s
)
H(s)
H(s) 通常取为:
1
;
1
s
;
1
T
s
+
1
;
e
−
T
s
1;\ \frac{1}{s};\ \frac{1}{Ts+1};\ e^{-Ts}
1; s1; Ts+11; e−Ts及其组合等。
神经元输出
y
i
(
t
)
y_i(t)
yi(t) 与
y
i
(
t
)
y_i(t)
yi(t) 之间的非线性函数关系
最常用的有以下两种:
-
阶跃函数
f ( x i ) = { 1 x i ≥ 0 0 x i < 0 \begin{equation} f(x_i)=\left\{ \begin{aligned} & 1 && x_i\ge0\\ & 0 && x_i<0 \end{aligned} \right. \end{equation} f(xi)={10xi≥0xi<0
或
f ( x i ) = { 1 x i ≥ 0 − 1 x i < 0 \begin{equation} f(x_i)=\left\{ \begin{aligned} & 1 && x_i\ge0\\ & -1 && x_i<0 \end{aligned} \right. \end{equation} f(xi)={1−1xi≥0xi<0 -
S型函数
-
Sigmoid函数
f ( x i ) = 1 1 + e − a x i f(x_i)=\frac{1}{1+e^{-ax_i}} f(xi)=1+e−axi1 -
双曲正切函数([-1,1]区间)
f ( x i ) = 1 − e − a x i 1 + e − a x i f(x_i)=\frac{1-e^{-ax_i}}{1+e^{-ax_i}} f(xi)=1+e−axi1−e−axi
-
神经网络的结构与工作方式
-
决定人工神经网络性能的三大要素:
- 神经元的特性。
- 神经元之间相互连接的形式——拓扑结构。
- 为适应环境而改善性能的学习规则。
-
神经网络的结构:
-
前馈型:各神经元接受前一层的输入,并输出给下一层,没有反馈。前馈网络可分为不同的层,第i层只与第i—1层输出相连,输入与输出的神经元与外界相连。
-
反馈型:一些神经元的输出经过若干个神经元后,再反馈到这些神经元的输入端。
最典型的反馈型神经网络是Hopfield神经网络。它是全互联神经网络,即每个神经元 和其他神经元都相连。
-
-
神经网络的工作方式
- 同步(并行)方式:任一时刻神经网络中所有神经元同时调整状态。
- 异步(串行)方式:任一时刻只有一个神经元调整状态,而 其它神经元的状态保持不变。
神经网络的学习
神经网络的学习是指调整神经网络的连接权值或者结构,使输入输出具有需要的特性。Hebb学习规则:当某一突触两端的神经元同时处于兴奋状态,那么该连接的权值应该增强。用数学方式描述调整权值
w
i
j
w_{ij}
wij 的方法为:
w
i
j
(
k
+
1
)
=
w
i
j
(
k
)
+
α
y
i
(
k
)
y
i
(
k
)
(
α
>
0
)
w_{ij}(k+1)=w_{ij}(k)+\alpha y_i(k)y_i(k)\quad(\alpha>0)
wij(k+1)=wij(k)+αyi(k)yi(k)(α>0)
式中,
w
i
j
(
k
+
1
)
w_{ij}(k+1)
wij(k+1) 为权值的下一步值;
w
i
j
(
k
)
w_{ij}(k)
wij(k) 为权值的当前值。
BP神经网络及其学习方法
BP神经网络的结构
BP神经网络(Back-Propagation Neural Network)就是多层前向网络,其结构如下图:
可以把BP神经网络看成是一个从输入到输出的非线性映射,对网络的连接权进行学习和调整,以使该网络实现给定样本的输入输出映射关系。要解决BP神经网络的学习问题,关键是解决两个问题:
- 是否存在一个BP神经网络能够逼近给定的样本或者函数。
- Kolmogorov定理
- 如何调整BP神经网络的权值,使网络的输入与输出之间的关系与给定的样本相同。
- BP学习算法
BP学习算法
-
目标函数:BP学习算法是通过反向学习过程使误差最小,因此选择
m i n J = 1 2 ∑ j = 1 P m ( y j m − y s j ) minJ=\frac{1}{2}\sum^{P_m}_{j=1}(y^m_j-y_{sj}) minJ=21j=1∑Pm(yjm−ysj) -
约束条件:
y i k = f k ( u i k ) u i k = ∑ j w i j k − 1 y j k − 1 k = 2 , ⋯ , m y^k_i=f_k(u^k_i)\\u^k_i=\sum_jw^{k-1}_{ij}y^{k-1}_jk=2,\cdots,m yik=fk(uik)uik=j∑wijk−1yjk−1k=2,⋯,m -
权值的修正量:
Δ w ( k − 1 ) i j = − ε ∂ J ∂ w i j k − 1 ( ε > ) \Delta w^(k-1)_{ij}=-\varepsilon\frac{\partial J}{\partial w^{k-1}_{ij}}\qquad (\varepsilon>) Δw(k−1)ij=−ε∂wijk−1∂J(ε>) -
推导
-
求 ∂ J ∂ w i j k − 1 \frac{\partial J}{\partial w^{k-1}_{ij}} ∂wijk−1∂J
∂ J ∂ w i j k − 1 = ∂ J ∂ u i k ∂ u i k ∂ w i k − 1 = ∂ J ∂ u i k ∂ ∂ w i j k − 1 ( ∑ j w i j k − 1 y j k − 1 ) = ∂ J ∂ u i k y j k − 1 \frac{\partial J}{\partial w^{k-1}_{ij}}= \frac{\partial J}{\partial u^k_i}\frac{\partial u_i^k}{\partial w_i^{k-1}}= \frac{\partial J}{\partial u_i^ k}\frac{\partial}{\partial w_ {ij}^{k-1}}(\sum_jw^{k-1}_{ij}y_j^{k-1}) = \frac{\partial J}{\partial u_i^k}y_j^{k-1} ∂wijk−1∂J=∂uik∂J∂wik−1∂uik=∂uik∂J∂wijk−1∂(j∑wijk−1yjk−1)=∂uik∂Jyjk−1
记
d i k = ∂ J ∂ u i k ( k = 2 , ⋯ , m ) d_i^k= \frac{\partial J}{\partial u_i^k}\qquad(k=2,\cdots,m) dik=∂uik∂J(k=2,⋯,m)
则
Δ w i j k − 1 = − ε d i k y i k − 1 ( k = 2 , ⋯ , m ) \Delta w_{ij}^{k-1}=-\varepsilon d_i^ky_i^{k-1}\qquad(k=2,\cdots,m) Δwijk−1=−εdikyik−1(k=2,⋯,m) -
推导计算 d i k d^k_i dik 的公式
d i k = ∂ J ∂ u i k = ∂ J ∂ y i k ∂ y i k ∂ u i k = ∂ J ∂ y i k f k ′ ( u i k ) d_i^k=\frac{\partial J}{\partial u_i^k}=\frac{\partial J}{\partial y_i^k}\frac{\partial y_ i^k}{\partial u_i^k}=\frac{\partial J}{\partial y_i^k}f'_k(u_i^k) dik=∂uik∂J=∂yik∂J∂uik∂yik=∂yik∂Jfk′(uik)
分两种情况求 ∂ J ∂ y i k \frac{\partial J}{\partial y^k_i} ∂yik∂J-
对输出层(第 m 层)的神经元,即 k = m , y i k = y i m k=m,y^k_i=y^m_i k=m,yik=yim,由误差定义式得
∂ J ∂ y i k = ∂ J ∂ y i m = y i m − y s i \frac{\partial J}{\partial y_i^k}=\frac{\partial J}{\partial y_i^m}=y_i^m-y_{si} ∂yik∂J=∂yim∂J=yim−ysi
则
d i m = ( y i m − y s i ) f m ′ ( u i m ) d^m_i=(y^m_i-y_{si})f'_m(u^m_i) dim=(yim−ysi)fm′(uim) -
若 i i i 为隐单元层 k k k,则有
∂ J ∂ y i k = ∑ l ∂ J ∂ i l k + 1 ∂ u l k + 1 ∂ y i k = ∑ i d l k + 1 w l i k d i k = f k ′ ( u i k ) ∑ l d l k + 1 w l i k \frac{\partial J}{\partial y_i^k}=\sum_l\frac{\partial J}{\partial i^{k+1}_l}\frac{\partial u_l^{k+1}}{\partial y_i^k}=\sum_id_l^{k+1}w_{li}^k\\d^k_i=f'_k(u^k_i)\sum_ld_l^{k+1}w_{li}^k ∂yik∂J=l∑∂ilk+1∂J∂yik∂ulk+1=i∑dlk+1wlikdik=fk′(uik)l∑dlk+1wlik
-
-
-
综上所述,BP算法可归纳为:
Δ w i j k − 1 = − ε d i k y j k − 1 d i m = ( y 1 m − Y s i ) f m ′ ( u i m ) d i k = f k ′ ( u i k ) ∑ l d l k + 1 w l i k ( k = m − 1 , ⋯ , 2 ) \Delta w_{ij}^{k-1}=-\varepsilon d_i^ky_j^{k-1}\\d_i^m=(y_1^m-Y_{si})f'_m(u_i^m)\\d_i^k=f'_k(u_i^k)\sum_ld_l^{k+1}w_{li}^k\quad (k=m-1,\cdots,2) Δwijk−1=−εdikyjk−1dim=(y1m−Ysi)fm′(uim)dik=fk′(uik)l∑dlk+1wlik(k=m−1,⋯,2)
若取 f k ( ⋅ ) f_k(\cdot) fk(⋅) 为 S 型函数,即
y i k = f k ( u i k ) = 1 1 + e − u i k y_i^k=f_k(u_i^k)=\frac{1}{1+e^{-u_i^k}} yik=fk(uik)=1+e−uik1
则
∂ y i k ∂ i i k = f k ′ ( u i k ) = e − u i k [ 1 + e − u i k ] 2 = y i k ( 1 − y i k ) \frac{\partial y_i^k}{\partial i_i^k}=f'_k(u_i^k)=\frac{e^{-u_i^k}}{[1+e^{-u_i^k}]^2}=y_i^k(1-y_i^k) ∂iik∂yik=fk′(uik)=[1+e−uik]2e−uik=yik(1−yik)
则BP学习算法可以归纳为
Δ w i j k − 1 = − ε d i k y j k − 1 d i m = y i m ( i − y i m ) ( y i m − y s i ) d i k = y i k ( 1 − y i k ) ∑ l d l k + 1 w l i k ( k = m − 1 , ⋯ , 2 ) \Delta w_{ij}^{k-1}=-\varepsilon d_i^ky_j^{k-1}\\d_i^m=y_i^m(i-y_i^m)(y_i^m-y_{si})\\d_i^k=y_i^k(1-y_i^k)\sum_ld_l^{k+1}w_{li}^k\quad (k=m-1,\cdots,2) Δwijk−1=−εdikyjk−1dim=yim(i−yim)(yim−ysi)dik=yik(1−yik)l∑dlk+1wlik(k=m−1,⋯,2)
BP学习算法的实现
BP学习算法得程序框图如下:
在BP算法实现时,还要注意下列问题:
- 隐层数及隐层神经元数的确定:目前尚无理论指导。
- 初始权值的设置:一般以一个均值为0的随机分布设置网络的初始权值。
- 训练数据预处理:线性的特征比例变换,将所有的 特征变换到[0,1]或者[-1,1]区间内,使得在每个训练集上,每个特征的均值为0,并且具有相同的方差。
- 后处理过程:当应用神经网络进行分类操作时,通常将输出值编码成所谓的名义变量,具体的值对应类别标号。
BP算法计算机实现流程:
-
初始化:对所有连接权和阈值赋以随机任意小值;
w i j k ( t ) , θ i k ( t ) , ( k = 1 , ⋯ , m ; i = 1 , ⋯ , p k ; j = 1 , ⋯ , p k − 1 ; t = 0 ) w_{ij}^k(t),\theta_i^k(t),(k=1,\cdots,m;i=1,\cdots,p_k;j=1,\cdots,p_{k-1};t=0) wijk(t),θik(t),(k=1,⋯,m;i=1,⋯,pk;j=1,⋯,pk−1;t=0) -
从 N 组输入输出样本中取一组样本 x = [ x 1 , x 2 , ⋯ , x P 1 ] T , d = [ d 1 , d 2 , ⋯ , d p m ] T x=[x_1,x_2,\cdots,x_{P1}]^T,d=[d_1,d_2,\cdots,d_{pm}]^T x=[x1,x2,⋯,xP1]T,d=[d1,d2,⋯,dpm]T, 把输入信息 x = [ x 1 , x 2 , ⋯ , x p 1 ] T x=[x_1,x_2,\cdots,x_{p1}]^T x=[x1,x2,⋯,xp1]T 输入到BP网络中
-
正向传播:计算各层节点的输出:
y i k ( i = 1 , ⋯ , p k ; k = 1 , ⋯ , m ) y_i^k\quad(i=1,\cdots,p_k;k=1,\cdots,m) yik(i=1,⋯,pk;k=1,⋯,m) -
计算网络的实际输出与期望输出的误差:
e i = y i − y i m ( i = 1 , ⋯ , p m ) e_i=y_i-y_i^m\quad(i=1,\cdots,p_m) ei=yi−yim(i=1,⋯,pm) -
反向传播:从输出层方向计算到第一个隐层,按连接权值修正公式向减小误差方向调整网络的各个连接权值。
-
让 t + 1 → t t+1\rightarrow t t+1→t,取出另一组样本重复 2 - 5,直到 N 组输入输出样本的误差达到要求时为止。
BP网络得主要优缺点
优点:
- 很好的逼近特性
- 具有较强的泛化能力
- 具有较好的容错性
缺点:
- 收敛速度慢
- 局部极值
- 难以确定隐层和隐层节点的数目
BP神经网络的应用
BP神经网络在模式识别中的应用
模式识别主要研究用计算机模拟生物、人的感知,对模式信息(如图像、文字、语音等)进行识别和分类。
BP神经网络在软测试中的应用
软测量是利用一些可测变量去估计那些难以测量的变量技术。
Hopfield神经网络及其改进
离散型Hopfield神经网络
Hopfield神经网络(HNN)是全互联反馈神经网络,它的每一个神经元都和其他神经元相连接。
-
H N N = ( w , θ ) HNN=(w,\theta) HNN=(w,θ):具有 N 个神经元的离散型Hotfiled神经网络 HNN,可由一个 N × N N\times N N×N阶矩阵 w = [ w i j ] N × N w=[w_{ij}]_{N\times N} w=[wij]N×N和一个 N 维行向量 θ = [ θ 1 , θ 2 , ⋯ , θ N ] T \theta =[\theta_1,\theta_2,\cdots,\theta _N]^T θ=[θ1,θ2,⋯,θN]T 所唯一确定。
-
w i j w_{ij} wij 为从第 j j j 个神经元的输出到第 i i i 个神经元的输入之间的连接权值,表示神经元 i 与 j j j 的连接强度,且 w j i = w i j , w i i = 0 w_{ji}=w_{ij},w_{ii}=0 wji=wij,wii=0;
-
θ i \theta_i θi 表示神经元 i i i 的阈值。
-
用 v i ( k ) v_i(k) vi(k) 表示 k k k 时刻神经元所处的状态,那么神经元 i i i 的状态随时间变化的规律(又称演化率)为:
- 二值硬限器:
$$
\begin{equation}
v_i(k+1)=\left\{
\begin{aligned}
& 1 && u_i(k)\ge0\\
& 0 && u_i(k)<0
\end{aligned}
\right.
\end{equation}
$$
- 双极硬限器:
$$
\begin{equation}
v_i(k+1)=\left\{
\begin{aligned}
& 1 && u_i(k)\ge0\\
& -1 && u_i(k)<0
\end{aligned}
\right.
\end{equation}
$$
式中
$$
u_i(k)=\sum_{\substack{j=1\\j\ne i}}^nw_{ij}v_j(k)-\theta_i(1\le i\le N)
$$
-
工作方式
- 同步工作方式:神经网络中所有神经元的更新同时进行。
- 异步工作方式:在同一时刻只有一个神经元更新,而且这个神经元在网络中每个神经元都更新之前不会再次更新。神经元的更新顺序可以是随机的。
-
稳定性:稳定性是Hopfield神经网络的最重要的特性。Hopfield神经网络中的神经元相互作用,不断演化。如果神经网络在演化过程中,从某一时刻开始,神经网络中的所有神经元的状态不再改变,则称该神经网络是稳定的。Hopfield 神经网络是高维非线性动力学系统,可能有若干个稳定状态。从任一初始状态开始运动,总可以达到某个稳定状态。这些稳定状态可以通过改变各个神经元之间的连接权值得到。
连续型Hopfield神经网络及其VLSI实现
连续型Hopfiled神经网络的电子线路实现如下:
- u i u_i ui :神经元 i i i 的膜电位状态
-
v
i
v_i
vi :表示它的输出
- 输出 v i v_i vi 对输入 u i u_i ui 的影响模拟了神经元之间互连的突出特性
- C i C_i Ci:细胞膜输入电容
-
R
i
R_i
Ri:细胞膜的传递电阻
- 电容 C i C_i Ci 和电阻 R i R_i Ri 并联模拟了生物神经元输出的时间常数
- 运算放大器模拟神经元的非线性特性
由基尔霍夫电流定律得,连续型Hopfield神经网络动力学系统方程为:
1
R
u
i
+
C
i
d
u
i
d
t
=
I
i
+
∑
j
=
1
N
w
i
j
v
j
v
i
=
f
(
u
i
)
=
1
1
+
e
−
2
u
i
u
0
(
1
,
2
,
⋯
,
N
)
\frac{1}{R}u_i+C_i\frac{du_i}{dt}=I_i+\sum^N_{j=1}w_{ij}v_j\\v_i=f(u_i)=\frac{1}{1+e^{-\frac{2u_i}{u_0}}}\quad(1,2,\cdots,N)
R1ui+Cidtdui=Ii+j=1∑Nwijvjvi=f(ui)=1+e−u02ui1(1,2,⋯,N)
上式中:
- I i I_i Ii:施加在神经元 i i i 的偏置电流,表示系统外部的输入。
- w i j = 1 R i j w_{ij}=\frac{1}{R_{ij}} wij=Rij1:模拟神经元 j j j 与神经元 i i i 之间互连的突触特性。
- f ( u i ) f(u_i) f(ui):使放大器的非线性饱和特性,近似于S型函数。
连续型Hopfield神经网络模型,再简化了生物神经元性质的同时,重点突出了以下重要特性:
- 神经元作为一个输入输出变换,其传输特性具有S特性。
- 细胞膜具有时空整合作用。
- 神经元之间存在大量的兴奋和抑制性连接,这种连接主要是通过反馈来实现的。
- 具有既代表产生动作电位的神经元,又代表按渐近方式工作的神经元的能力。
因此,连续型 Hopfield 神经网络准确地保留了生物神经网络的动态和非线性特征,有助于理解大量神经元之间的协同作用是怎样产生巨大的计算能力的。连续型Hopfiled神经网络的计算能量函数
E
(
t
)
E(t)
E(t) 定义为:
E
(
t
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
w
i
j
v
i
(
t
)
v
j
(
t
)
−
∑
i
=
1
N
v
i
(
t
)
I
i
+
∑
i
=
1
N
1
R
i
∫
0
v
i
(
t
)
f
−
1
(
v
)
d
v
E(t)=-\frac{1}{2}\sum^N_{i=1}\sum^N_{j=1}w_{ij}v_i(t)v_j(t)-\sum^N_{i=1}v_i(t)I_i+\sum^N_{i=1}\frac{1}{R_i}\int^{v_i(t)}_0f^{-1}(v)dv
E(t)=−21i=1∑Nj=1∑Nwijvi(t)vj(t)−i=1∑Nvi(t)Ii+i=1∑NRi1∫0vi(t)f−1(v)dv
可证明,此能量函数的值随时间的推移不断减小,神经网络趋于某一平衡状态,平衡点就是其最小值点,反之亦然。这说明Hopfield神经网络的演变过程就是在
[
0
,
1
]
N
[0,1]^N
[0,1]N 空间内寻找极小值稳定点的过程,并在达到这些点后稳定下来。因此这种神经网络同样具有自动求极小值的计算功能。
无论是离散型Hopfiled神经网络还是连续型Hopfiled神经网络一般都不能收敛到最优点。
随机神经网络
Hopfield神经网络中,神经元状态为1是根据其输入是否大于阈值确定的,是确定性的。随机神经网络中,神经元状态为1是随机的,服从一定的概率分布。例如,服从玻尔兹曼(Boltzmann)、高斯 (Gaussian)、柯西(Cauchy)分布等,从而构成玻尔兹曼机、高斯机、柯西机等随机机。
下面主要以玻耳兹曼机为例,介绍随机神经网络。Boltzmann 机是离散型 Hopfield神经网络的一种变形,通过对离散型Hopfield神经网络加以扰动,使其以概率的形式表达,而网络的模型方程不变,只是输出值类似于Boltzmann分布,以概率分布取值。Boltzmann 机是按 Boltzmann 概率分布动作的神经网络。
-
离散型 Hopfield神经网络的输出为:
v i ( k + 1 ) = s g n ( ∑ j = 1 j ≠ i N w i j v j ( k ) − θ i ) v_i(k+1)=sgn(\sum^N_{\substack{j=1\\ j\ne i}}w_{ij}v_j(k)-\theta_i) vi(k+1)=sgn(j=1j=i∑Nwijvj(k)−θi) -
Boltzman机的内部状态:
I i = ∑ j = 1 j ≠ i n w i j v j ( k ) − θ i I_i=\sum^n_{\substack{j=1\\ j\ne i}}w_{ij}v_j(k)-\theta_i Ii=j=1j=i∑nwijvj(k)−θi -
神经元 i i i 输出值为0和1时的概率:
p i ( 1 ) = 1 1 + e − I i / T p i ( 0 ) = 1 − p i ( 1 ) p_i(1)=\frac{1}{1+e^{-I_i/T}}\\p_i(0)=1-p_i(1) pi(1)=1+e−Ii/T1pi(0)=1−pi(1)- 式中 T T T 为类似温度的扰动
-
Boltzmann的能量函数:
E = − 1 2 ∑ j ∑ j ≠ i w i j v i v j + ∑ i v i θ i E=-\frac{1}{2}\sum_j\sum_{j\ne i}w_{ij}v_iv_j+\sum_iv_i\theta_i E=−21j∑j=i∑wijvivj+i∑viθi- v i v_i vi :神经元 i i i 的状态
- θ i \theta_i θi :神经元 i i i 的阈值
- w i j w_{ij} wij:连接权
-
神经元 i i i 状态转换时网络能量的变化:
Δ E i = ∑ j w i j v j − θ i \Delta E_i=\sum_jw_{ij}v_j-\theta_i ΔEi=j∑wijvj−θi -
神经元 i i i 改变为状态 “1” 的概率:
p i = 1 1 + e x p ( − Δ E i T ) p_i=\frac{1}{1+exp(-\frac{\Delta E_i}{T})} pi=1+exp(−TΔEi)1
Hopfiled神经网络的应用
Hopfiled神经网络神经网络在联想记忆中的应用
Hopfield 神经网络联想记忆过程,就是非线性动力学系统朝某个稳定状态运行的过程。这就需要调整连接权值使得所要记忆的样本作为Hopfield神经网络的能量局部极小点。Hopfield神经网络联想记忆过程分为学习和联想两个阶段:
- 学习阶段:在给定样本的条件下,调整连接权值,使得存储的样本成为Hopfield神经网络的稳定状态。
- 联想阶段:已经调整好权值不变的情况下,给出部分不全或者受了干扰的信息,按照动力学规则改变神经元的状态,使神经网络最终变到某个稳定状态。
实现Hopfield神经网络联想记忆的关键是网络到达记忆样本能量函数极小点时,决定网络的神经元间连接权值 w i j w_{ij} wij和國值 θ i \theta_i θi等参数。按照Hebb学习规则设计Hopfield神经网络的连接权值:
-
x ( k ) ( k = 1 , 2 , ⋯ , m ) x^{(k)}(k=1,2,\cdots,m) x(k)(k=1,2,⋯,m):给定的m个样本
-
x i ( k ) x_i^{(k)} xi(k):表示第 k k k 个样本中的第 i i i 个元素
-
w i j w_{ij} wij:神经元 i i i 到神经元 j j j 的权值
-
按照以下公式设计的网络连接权值满足对称条件。可证明,按照以下公式设计网络连接权值时,Hopfield神经网络的稳定状态是给定样本。
-
当神经元输出 x i ∈ { − 1 , + 1 } x_i\in\{-1,+1\} xi∈{−1,+1}时
w i j = { ∑ k = 1 m x i ( k ) x j ( k ) i ≠ j 0 i = j \begin{equation} w_{ij}=\left\{ \begin{aligned} & \sum^m_{k=1}x_i^{(k)}x_j^{(k)} && i\ne j\\ & 0 && i=j \end{aligned} \right. \end{equation} wij=⎩ ⎨ ⎧k=1∑mxi(k)xj(k)0i=ji=j
或者
w i j ( k ) = w i j ( k − 1 ) + x i ( k ) x j ( k ) ( k = 1 , 2 , ⋯ , m ) w i j ( 0 ) = 0 w i i = 0 w_{ij}(k)=w_{ij}(k-1)+x_i^{(k)}x_j^{(k)}\quad(k=1,2,\cdots,m)\\w_{ij}(0)=0\quad w_{ii}=0 wij(k)=wij(k−1)+xi(k)xj(k)(k=1,2,⋯,m)wij(0)=0wii=0 -
当神经元输出 x i ∈ { 0 , 1 } x_i\in\{0,1\} xi∈{0,1}时
w i j = { ∑ k = 1 m ( 2 x i ( k ) − 1 ) ( 2 x j ( k ) − 1 ) i ≠ j 0 i = j \begin{equation} w_{ij}=\left\{ \begin{aligned} & \sum^m_{k=1}(2x_i^{(k)-1})(2x_j^{(k)}-1) && i\ne j\\ & 0 && i=j \end{aligned} \right. \end{equation} wij=⎩ ⎨ ⎧k=1∑m(2xi(k)−1)(2xj(k)−1)0i=ji=j
或者
w i j ( k ) = w i j ( k − 1 ) + ( 2 x i ( k ) − 1 ) ( 2 x j ( k ) − 1 ) ( k = 1 , 2 , ⋯ , m ) w i j ( 0 ) = 0 w i i = 0 w_{ij}(k)=w_{ij}(k-1)+(2x_i^{(k)-1})(2x_j^{(k)}-1)\quad(k=1,2,\cdots,m)\\w_{ij}(0)=0\quad w_{ii}=0 wij(k)=wij(k−1)+(2xi(k)−1)(2xj(k)−1)(k=1,2,⋯,m)wij(0)=0wii=0
-
-
记忆容量:在网络结构与参数一定的条件下,要保证联想功能的正确实现,网络所能存储的最大的样本数。
- 网络的记忆容量不仅与神经元个数有关,还与连接权值的设计、要求的联想范围大小、样本的性质等有关。
- 当网络要求存储的样本模式是两两正交时,可以有最大的记忆容量。
Hopfiled神经网络优化方法
- 基本思想:约束优化问题的求解过程实际上就是目标函数的极小化过程,选择合适的能量函数使其最小值对应于问题的最优解。
- 目标函数与能量函数相联系
- 可行解映射为为状态
- 最有解映射为稳定状态
- 一般步骤:
- 将求解的优化问题的每一个可行解用换位矩阵表示。
- 将换位矩阵与由 n 个神经元构成的神经网络相对应:每一个可行解所对应的换位矩阵的各元素与相应的神经元稳态输出相对应。
- 构造能量函数,使其最小值对应于优化问题的最优解,并满足约束条件。
- 用罚函数法构造目标函数,与Hopfield神经网络的计算能量函数表达式相等,确定各连接权 w i j w_ij wij 和偏置参数 I i I_i Ii 等。
- 给定网络初始状态和网络参数 A , B , C , D A,B,C,D A,B,C,D 等,使网络(可以是计算机模拟)按动态方程运行,直到达到稳定状态,并将它解释为优化问题的解。
卷积神经网络及其应用
卷积神经网络的结构
卷积神经网络(Convolutional Neural Networks,CNN)是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。
- C层为特征提取层(卷积层):
- 卷积层的作用是探测上一层特征的局部连接。
- 卷积运算是一种用邻域点按一定权重去重新定义该点值的运算。卷积实际上提供了一个权重模板。对图像用一个卷积核进行卷积运算, 实际上是一个滤波的过程。每个卷积核都是一种特征提取方式,就像是一个筛子,将图像中符合条件的部分筛选出来。
- 大部分的特征提取都依赖于卷积运算,利用卷积算子对图像进行滤波,可以得到显著的边缘特征。
- 卷积过程:用一个可训练的滤波器 f ( x ) f(x) f(x) 去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是Feature Map了),然后加一个偏置 b x b_x bx,得到卷积层 C x C_x Cx。
- S层是特征映射层(下采样层):
- 下采样层的作用是在语义上把相似的特征合并起来。
- CNN中的每一个特征提取层(C)都紧跟着一个用来求局部平均与二次提取的计算层(S)。这种特有的两次特征提取结构能够容许识别过程中输入样本有较严重的畸变。
- 下采样过程:邻域n个像素通过池化(pooling)步骤变为一个像素,然后通过标量 W x + 1 W_{x+1} Wx+1 加权,再增加偏置 b x + 1 b_{x+1} bx+1, 然后通过一个sigmoid激活函数,产生一个大概缩小 n 倍的特征映射图 S x + 1 S_{x+1} Sx+1。
局部连接
所谓局部连接,就是卷积层的节点仅仅和其前一层的部分节点相连接,只用来学习局部特征。每个神经元无需对全局图像进行感知,而只需对 局部进行感知,然后在更高层将局部的信息综合起来得到全 局信息。局部感知结构的构思理念来源于动物视觉的皮层结构,其指的是动物视觉的神经元在感知外界物体的过程中起作用的只有一部分神经元。局部连接的方式大幅减少了参数数量,加快了学习速率,同时也在一定程度上减少了过拟合的可能。
权值共享
每个神经元参数设为相同,即权值共享,也即每个神经元用同一个卷积核去卷积图像。
多卷积核
为了使特征提取更充分,可以添加多个卷积核(滤波器)以提取不同的特征。
- 每层隐层神经元的个数按卷积核的数量翻倍。
- 每层隐层参数个数仅与特征区域 大小、卷积核的多少有关。
池化
计算图像一个区域上的某个特定特征的平均值(或最大值), 这种聚合操作就叫做池化 (pooling),有时采用平均池化或者最大池化方法。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。
卷积神经网络的优点与缺点
- CNN的优点:
- 隐式地从训练数据中进行学习,避免了显式的特征抽取;
- 同一特征映射面上的神经元共享权值,网络可以并行学习,降低了网络学习的复杂性;
- 采用时间或者空间的下采样结构,可以获得某种程度的位移、尺度、形变的鲁棒性;
- 输入信息和网络拓扑结构能很好地吻合,在语音识别和图像处理方面有着独特优势。
- CNN的缺点:
- CNN的结构参数,无论是卷积层、下采样层还是分类层,都有太多的随意性或试凑性,且不能保证拓扑结构参数收敛。
- 重点放在由细尺度特征到大尺度特征的层层提取,只有前馈没有反馈。已有的认知不能帮助当前视觉感知和认知,没有 体现选择性注意。
- 要求海量训练样本,样本的均等性没有反映认知的积累性。