神经网络的理论基础
神经网络的分类:根据神经网络的连接方式,大致可以分为前向网络、反馈网络和自组织网络三种形式。考试只涉及前两种。
神经网络学习算法:按照有无监督可分为有监督学习(Supervised Learning)、无监督学习(Unsupervised Learning)和再励学习(Reinforcement Learning)三种。
(注:书中原文是导师学习,鉴于这个说法实在是不能让人接受,且网上更多采用监督为supervised的翻译方式)
有监督学习时,网络的输出和期望的输出进行比较,根据两者之间的差异调整网络的权值,最终使差异变小。无监督学习时,输入模式进入网络后,网络按照预先指定的规则自动调整权值,使网络最终具有模式分类等功能。而再励学习是介于二者的一种学习方式。
Heeb学习规则:Hebb学习规则是一种联想式学习算法。两个神经元同时处于激发状态时,它们之间的连接强度将得到加强,即
$$ w_{ij}(k+1)=w_{ij}(k)+I_iI_j $$
式中,$w_{ij}(k)$为连接从神经元$i$到神经元$j$的当前权值;$I_i$和$I_j$分别为神经元$i$和神经元$j$的激活水平。
Hebb学习规则是一种无监督学习方法,它只根据神经元连接之间的激活水平改变权值,因此这种方法又称为相关学习或并联学习。
Delta(${\delta}$)学习规则:假设误差准则函数为
$$ E=\frac{1}{2}\sum_{p=1}^P (d_p-y_p)^2\ =\sum_{p=1}^P E_p $$
式中,$d_p$代表期望输出;$y_p$代表网络的实际输出,$y_p=f(W^TX_p)$,$W$为网络所有权值组成的向量,即$W=(w_o,w_1,\cdots,w_n)^T$;$X_p$为输入模式,即$X_p=(x_{p0},x_{p1},\cdots,x_{pn})^T$,训练样本数为$p=1,2,\cdots,P$
神经网络学习的目的是通过调整权值$W$使得误差准则函数最小,采用梯度下降法来实现权值调整,即
$$ {\Delta W}=\eta(-\frac{\partial E}{\partial W_i})\\ \frac{\partial E}{\partial W_i}=\sum_{p=1}^P \frac{\partial E_p}{\partial W_i} $$
其中
$$ E_p=\frac{1}{2}(d_p-y_p)^2 $$
令网络输出的为${\theta}_p=W^TX_p$,则
$$ \frac{\partial E_p}{\partial W_i}=\frac{\partial E_p}{\partial {\theta}_p}\frac{\partial {\theta}_p}{\partial W_i}=\frac{\partial E_p}{\partial y_p}\frac{\partial y_p}{\partial {\theta}_p}X_{ip}=-(d_p-y_p)f^\prime({\theta}_p)X_{ip} $$
神经网络的特征
- 能逼近任意非线性函数
- 信息的并行式分布式处理与存储
- 可以多输入、多输出
- 便于用于超大规模集成电路(VISI)或光学集成电路系统实现,或用现有的计算机技术实现
- 能进行学习,以适应环境的变化
神经网络三要素
- 神经元(信息处理单元)的特性
- 神经元之间相互连接的拓扑结构
- 为适应环境而改善性能的学习规则
神经网络控制的研究领域
- 基于神经网络的系统辨识
- 神经网络控制器
- 神经网络与其他算法相结合
- 优化计算
单神经元网络
对于上面的模型,$u_i$为神经元的内部状态,${\theta}_i$为阈值,$x_j$为输入信号,$j=1,\cdots,n,w_{ij}$表示从单元$u_j$到单元$u_i$的连接权系数,$s_i$为外部输入信号。模型用数学语言可描述为
$$ net_i=\sum_j w_{ij}x_j+s_j-{\theta}_i\\ u_i=f(net_i)\\ y_i=g(u_i)=h(net_i) $$
通常情况下,取$g(u_i)=u_i$,即$y_i=f(net_i)$
常用的神经元非线性特性有以下3种:
阈值型
$$ f(net_i)= \begin{cases} 1, & net_i>0 \\ 0, & net_i{\leq}0 \end{cases} $$
分段函数型
$$ f(net_i)= \begin{cases} 0, & net_i{\leq}net_{i0} \\ knet_i, & net_{i0}<net_i<net_{i1}\\ f_{max}, & net_i{\ge}net_{i1}\\ \end{cases} $$
函数型(Sigmoid为例)
$$ f(net_i)=\frac{1}{1+e^{-\frac{net_i}{T}}} $$
BP神经元网络
Rumelhart
等提出了误差反向传播神经网络,简称BP网络(Back Propagation),这是一种单向传播的多层前向网络。
误差反向传播的学习算法简称BP算法,其基本思想是梯度下降法,采用梯度搜索技术,使网络的实际输出值与期望输出值的误差均方值最小。
BP网络的特点
- BP网络是一种多层网络,包括输入层、隐层和输出层
- 层与层之间采用全连接方式,同一层神经元之间不连接
- 权值通过${\delta}$学习算法进行调节
- 神经元激发函数为S函数
- 学习算法由正向传播和反向传播组成
- 层与层之间的连接是单向的,信息的传播是双向的
BP网络的结构
BP网络的逼近
$k$为神经网络的迭代步骤,$u(k)$和$y(k)$为逼近器的输入。BP为网络逼近器,$y(k)$为被控对象的实际输出,$y_n(k)$为BP网络的输出。将系统输出$y(k)$及输入$u(k)$的值作为逼近器BP的输入,将系统输出与网络输出的误差作为逼近器的调整信号。
BP算法的学习过程由正向传播和反向传播组成。在正向传播过程中,输入信息从输入层经隐含层逐层处理,并传向输出层,每层神经元(节点)的状态只影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转至反向传播,将误差信号按连接通路反向计算,由梯度下降法调整各层神经元的权值,使误差信号减小。
前向传播阶段:计算网络的输出
隐层神经元的输入为所有输入的加权之和,即
$$ x_k=\sum_i w_{ij}x_i $$
隐层神经元的输出$x^\prime_j$采用S函数激发$x_j$,得
$$ x^\prime_j=f(x_j)=\frac{1}{1+e^{-x_j}} $$
则
$$ \frac{\partial x^\prime_j}{\partial x_j}=x^\prime_j(1-x^\prime_j) $$
(自己拿笔推一下,此处没有打错)
输出层神经元的输出为
$$ y_n(k)=\sum_j w_{j0}x^\prime_j $$
网络输出与理想网络的误差为
$$ e(k)=y(k)-y_n(k) $$
误差性能指标函数为
$$ E=\frac{1}{2}e(k)^2 $$
反向传播阶段:采用$\delta$学习算法,调整各层之间的权值
根据梯度下降法,输出层及隐层的连接权值$w_{j2}$学习算法为
$$ {\Delta}w_{j0}=-\eta \frac{\partial E}{\partial w_{j0}}=\eta \cdot e(k) \cdot \frac{\partial y_n}{\partial w_{j0}}=\eta \cdot x^\prime_j $$
式中,$\eta$为学习速率,$\eta\in[0,1]$
$k+1$时刻网络的权值为
$$ w_{j0}(k+1)=w_{j0}(k)+\Delta w_{j2} $$
隐层及输入层连接权值$w_{ij}$学习算法为
$$ \Delta w_{ij}=-\eta \frac{\partial E}{\partial w_{ij}}=\eta \cdot e(k) \cdot \frac{\partial y_n}{\partial w_{ij}} $$
式中,
$$ \frac{\partial y_n}{\partial w_{ij}}=\frac{\partial y_n}{\partial x_j} \cdot \frac{\partial x^\prime_j}{\partial x_j} \cdot \frac{\partial x_j}{\partial w_{ij}}=w_{j0} \cdot \frac{\partial x^\prime_j}{\partial x_j} \cdot x_i=w_{j0} \cdot x^\prime_j(1-x^\prime_j) \cdot x_i $$
k+1时刻网络的权值为
$$ w_{ij}(k+1)=w_{ij}(k)+\Delta w_{ij} $$
为了避免权值的学习过程发生振荡、收敛速度慢,需要考虑上次权值变化对本次权值变化的影响,即加入动量因子$\alpha$,此时的权值为
$$ w_{j0}(k+1)=w_{j0}(k)+\Delta w_{j0} + \alpha(w_{j0}(k)-w_{j0}(k-1))\\ w_{j0}(k+1)=w_{ij}(k)+\Delta w_{ij} + \alpha(w_{ij}(k)-w_{ij}(k-1)) $$
式中,$\alpha$为动量因子,$\alpha\in[0,1]$
BP网络的优缺点
优点:
- 只要有足够多的的隐层和隐层节点,BP网络可以逼近任意的非线性映射关系
- BP网络的学习算法属于全局逼近算法,具有较强的泛化能力
- BP网络输入输出之间的关联信息分布地存储在网络的连接权中,个别神经元的损坏只对输入输出关系有较小的影响,因为BP网络具有较好的容错性
缺点:
- 待寻优的参数多,收敛速度慢
- 目标函数存在多个极值点,按梯度下降法进行学习,很容易陷入局部最小值
- 难以确定隐层及隐层节点的书目,需要经验法试凑
BP网络的逼近仿真
使用BP网络逼近对象
$$ y(k)=u(k)^3+\frac{y(k-1)}{1+y(k-1)^2} $$
采样时间取$1ms$,输入信号为$u(k)=0.5sin(6\pi t)$,网络结构为$2-6-1$,权值$W_1,W_2$的初始值取$[-1,1]$之间的随机值,取$\eta=0.5,\ \alpha=0.05$
Matlab仿真如下:
%BP逼近
xite=0.50;
alfa=0.05;
w2=rands(6,1);
w2_1=w2;w2_2=w2_1;
w1=rands(2,6);
w1_1=w1;w1_2=w1;
dw1=0*w1;
x=[0,0]';
u_1=0;
y_1=0;
I=[0,0,0,0,0,0]';
Iout=[0,0,0,0,0,0]';
FI=[0,0,0,0,0,0]';
ts=0.001;
for k=1:1:1000
time(k)=k*ts;
u(k)=0.50*sin(3*2*pi*k*ts);
y(k)=u_1^3+y_1/(1+y_1^2);
for j=1:1:6
I(j)=x'*w1(:,j);
Iout(j)=1/(1+exp(-I(j)));
end
%辨识器输出
yn(k)=w2'*Iout;
%误差估计
e(k)=y(k)-yn(k);
w2=w2_1+(xite*e(k))*Iout+alfa*(w2_1-w2_2);
for j=1:1:6
FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;
end
for i=1:1:2
for j=1:1:6
dw1(i,j)=e(k)*xite*FI(j)*w2(j)*x(i);
end
end
w1=w1_1+dw1+alfa*(w1_1-w1_2);
yu=0;
for j=1:1:6
yu=yu+w2(j)*w1(1,j)*FI(j);
end
dyu(k)=yu;
x(1)=u(k);
x(2)=y(k);
w1_2=w1_1;w1_1=w1;
w2_2=w2_1;w2_1=w2;
u_1=u(k);
y_1=y(k);
end
figure(1);
plot(time,y,'r',time,yn,'b');
xlabel('times');ylabel('y and yn');
figure(2);
plot(time,y-yn,'r');
xlabel('times');ylabel('error');
figure(3);
plot(time,dyu);
xlabel('times');ylabel('dyu');
BP网络模式识别
在神经网络模式识别中,根据标准的输入输出模式对,采用神经网络学习算法,以标准的模式作为学习样本进行样本训练,通过学习调整神经网络的链接权值。当训练要求满足后,得到的神经网络权值构成了模式识别的知识库,利用神经网络并行推理算法便可对所需要的输入模式进行识别。
神经网络模式识别具有较强的鲁棒性,当待识别的输入模式与训练样本中的某个输入模式相同时,神经网络识别的结果就是与训练样本中相对应的输出模式;
当待识别的输入模式与训练样本中所有输入模式都不完全相同时,则可得到与其相近样本相对应的输出模式;
当待识别的输出模式与样本训练中所有的输入模式相差较远时,就不能得到正确的识别结果,此时可将这一模式作为新的样本进行训练,使神经网络获取新的知识,并存储到网络的权值矩阵中,从而增强网络的识别能力。
BP网络的训练过程如下:
正向传播是输入信号从输入层经隐层传向输出层,若输出层得到了期望的输出,则学习算法结束;否则,转至反向传播。
学习算法与前文的逼近类似。
BP网络模式识别仿真
4名同学做了一个小实验,各自提供了自己的身高、体重、性别和班级干部,数据如下:
编号 | 身高(cm) | 体重(kg) | 性别 | 是否班干部 |
---|---|---|---|---|
1 | 1.71 | 51 | 男 | 是 |
2 | 1.72 | 45 | 女 | 否 |
3 | 1.80 | 70 | 男 | 否 |
4 | 1.60 | 50 | 男 | 否 |
低于1.70m为1,55kg以上为1,女性为1,是班干部为1,否则为0,请你设计一个BP神经网络来区分这4个人,设计该神经网络,绘制其结构图,并给出权值调整算法。测试样本如下:
输入1 | 输入2 | 输入3 | 输入4 | 输出1 | 输出2 |
---|---|---|---|---|---|
0.98 | 0 | 0 | 0 | ||
0 | 0.97 | 0 | 0.01 | ||
0 | 0.02 | 0.987 | 0 | ||
0 | 0 | 0 | 0.968 | ||
0.25 | 0.25 | 0.25 | 0.25 | ||
0.3 | 0.2 | 0.5 | 0 | ||
1 | 0 | 0 | 0 | ||
0 | 1 | 0 | 0 | ||
0 | 0 | 1 | 0 | ||
0 | 0 | 0 | 1 |
使用神经网络工具箱“nnstart”,按照提示键入参数即可。
训练的模型选择 Matlab Matrix-Only Function ,然后调用这个函数即可。
不得不吐槽一句,现在用的这本教材某些章节编的是真的烂。前面BP的部分还好,到了RBF这块儿就开始乱来了。真正要弄明白还得去CSDN和wiki,可惜国内很多专业课的教材都这样,写的一知半解不说,答案的配套做的还差。以下部分参照了博客园:禅在心中:RBF(径向基)神经网络、知乎:RBF神经网络和BP神经网络有什么区别?和书本中的其他部分。
RBF神经网络
径向基函数(Radial Basis Function,RBF)神经网络是由J.Moody
和C.Darken
提出的一种神经网络,RBF网络中的激活函数采用的是高斯基函数。
相比于BP网络,RBF网络是局部逼近的神经网络,速度更快,且不易于陷入局部最小问题。
首先要知道什么叫径向基函数
径向基函数是一个取值仅仅依赖于离原点距离的实值函数,也就是$\phi(x)=\phi(\lVert x \rVert)$,或者还可以是到任意一点$C$的距离,$C$点称为中心点,也就是$\phi(x,c)=\phi(\lVert x-c \rVert)$。
任意一个满足$\phi(x)=\phi(\lVert x \rVert)$特性的函数$\phi$都叫做径向基函数,标准的一般使用欧氏距离(也叫做欧式径向基函数),尽管其他距离函数也是可以的。
最常用的径向基函数是高斯核函数 ,形式为
$$ k(\lVert x-xc \rVert)=exp(-\frac{\lVert x-x_c \rVert^2}{2\sigma^2}) $$
其中$x_c$为核函数中心,$\sigma$为函数的宽度参数,控制了函数的径向作用范围。
RBF网络结构与算法
RBF网络结构与算法
多输入单输出的RBF网络的结构如上所示。
RBF网络的基本思想是:用RBF作为隐单元的“基”构成隐含层空间,这样就可以将输入矢量直接映射到隐空间,而不需要通过权连接。
当RBF的中心点确定以后,这种映射关系也就确定了。而隐含层空间到输出空间的映射是线性的,即网络的输出是隐单元输出的线性加权和,此处的权即为网络可调参数。
其中,隐含层的作用是把向量从低维度的$x$映射到高维度的$h$,这样低维度线性不可分的情况到高维度就可以变得线性可分了,主要就是核函数的思想。
这样,网络由输入到输出的映射是非线性的,而网络输出对可调参数而言却又是线性的。网络的权就可由线性方程组直接解出,从而大大加快学习速度并避免局部极小问题。
在RBF神经网络中,$x=[x_1\ x_2\ \cdots x_n]^T$为网络输入,$h_j$为隐含层第$j$个神经元的输出,即
$$ h_j=exp(-\frac{\lVert x-c_j \rVert^2}{2b^2_j})\ ,j=1,2,\cdots,m $$
式中,$c_j=[c_{j1},\cdots,c_{jm}]$为第$j$个隐层神经元的中心点向量值。
高斯基函数的宽度向量为
$$ b=[b_1,\cdots,b_m]^T $$
式中,$b_j>0$为隐含层神经元$j$的高斯基函数的宽度
网络的权值为
$$ w=[w_1,\cdots,w_m]^T $$
RBF网络的输出为
$$ y_m(t)=w_1h_1+w_2h_2+\cdots+w_mh_m $$
由于RBF网络只调节权值,因此,RBF网络较BP网络具有算法简单、运行时间快的有点。但由于RBF网络中输入空间到输出空间是非线性的,而隐含空间到输出空间是线性的,因而非线性能力不如BP网络。
RBF网络的逼近
$$ E(t)=\frac{1}{2}(y(t)-y_m(t))^2 $$
按梯度下降法,权值按以下方式调节
$$ \Delta w_j(t)=-\eta\frac{\partial E}{\partial w_j}=\eta(y(t)-y_m(t))h_j\\ w_j(t)=w_j(t-1)+\Delta w_j(t) + \alpha(w_j(t-1)-w_j(t-2)) $$
式中,$\eta\in(0,1)$为学习速率,$\alpha\in(0,1)$为动量因子
在RBF网络设计中,需要注意的是$c_j$和$b$的值需要在网络输入的有效的映射范围内,否则高斯基函数将不能保证实现有效的映射,导致RBF网络失效。如果将$c_j$和$b$的初始值设计在有效的范围内,则只调节网络的权值便可实现RBF网络的有效学习。
RBF网络的逼近仿真
假设对以下模型进行逼近
$$ G(s)=\frac{133}{s^2+25s} $$
网络结构为$2-5-1$,取$x(1)=u(t),x(2)=y(t),\alpha=0.05,\eta=0.5$。网络的初始权值取0到1之间的随机值。
考虑到网络的第一个输入范围为$[0,1]$,离线测试可得第二个输入范围为$[0,10]$,取高斯基函数的参数取值为
$$ c_j= \begin{bmatrix} -1 & -0.5 & 0 & 0.5 & 1\\ -10 & -5 & 0 & 5 & 10 \end{bmatrix}^T\ ,b_j=1.5,\ j=1,2,3,4,5 $$
网络输入为$u(t)=sint$,仿真中只调节权值$w$,取固定的$c_j$和$b$,Matlab程序如下:
%控制器
function [sys,x0,str,ts]=s_function(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 3,
sys=mdlOutputs(t,x,u);
case {2, 4, 9 }
sys = [];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 0;
sys=simsizes(sizes);
x0=[];
str=[];
ts=[];
function sys=mdlOutputs(t,x,u)
persistent w w_1 w_2 b ci
alfa=0.05;
xite=0.5;
if t==0
b=1.5;
ci=[-1 -0.5 0 0.5 1;
-10 -5 0 5 10];
w=rands(5,1);
w_1=w;w_2=w_1;
end
ut=u(1);
yout=u(2);
xi=[ut yout]';
for j=1:1:5
h(j)=exp(-norm(xi-ci(:,j))^2/(2*b^2));
end
ymout=w'*h';
d_w=0*w;
for j=1:1:5 %Only weight value update
d_w(j)=xite*(yout-ymout)*h(j);
end
w=w_1+d_w+alfa*(w_1-w_2);
w_2=w_1;w_1=w;
sys(1)=ymout;
%被控对象
function [sys,x0,str,ts]=s_function(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case {2, 4, 9 }
sys = [];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 2;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 0;
sys=simsizes(sizes);
x0=[0,0];
str=[];
ts=[];
function sys=mdlDerivatives(t,x,u)
sys(1)=x(2);
sys(2)=-25*x(2)+133*u;
function sys=mdlOutputs(t,x,u)
sys(1)=x(1);
高级神经网络
这一章的所有内容都不会考推导,只会出点概念题,主要就是考察某个模型的特点是什么,优点在哪儿。
模糊RBF网络
模糊系统和神经网络的比较如下所示:
模糊系统 | 神经网络 | |
---|---|---|
获取知识 | 专家经验 | 算法实例 |
推理机制 | 启发式搜索 | 并行计算 |
推理速度 | 低 | 高 |
容错性 | 低 | 非常高 |
学习机制 | 归纳 | 调整权值 |
自然语言实现 | 明确 | 不明显 |
自然语言灵活性 | 高 | 低 |
网络结构
第一层:输入层
该层的各个节点与输入量的各个分量连接,将输入量传到下一层。对该层的每个节点$i$的输入输出表示为
$$ f_1(i)=x_i $$
第二层:模糊化层
采用高斯型函数作为隶属函数,$c_{ij}$和$b_j$分别是第$i$个输入变量和第$j$个模糊集合的隶属函数的均值和标准差,即
$$ f_2(ij)=exp(net_j^2)\\ net_j^2=-\frac{(f_1(i)-c_{ij})^2}{b_j^2} $$
第三层:模糊推理层,实现规则的前提推理,该层的每个节点相当于一条规则
该层通过与模糊化层的连接完成模糊规则的匹配,各个节点之间实现模糊运算,即通过各个模糊节点的组合得到相应的点火强度。每个节点$j$的输出为该节点所有输入信号的乘积,即
$$ f_3(j)=\prod_{j=1}^N f_2(i,j) $$
式中,$N=\prod_{i=1}^N N_i$,$N_i$为输入层中第$i$个输入隶属函数的个数,即模糊化层节点数。
第四层:输出层,实现规则前提与结论的推理及规则间的推理。
$$ f_4(l)=W \cdot f_3=\sum_{j=1}^N w(l.j)\cdot f_3(j) $$
式中,$l$为输出层节点的个数,$W$为输出层节点与第三层各节点的连接权矩阵。
逼近推理参照前文RBF的逼近部分。
小脑模型神经网络
小脑模型神经网络(Cerebellar Model Articulation Controller,CMAC)是一种表达复杂非线性函数的表格查询型自适应神经网络,改网络可以通过学习算法改变表格的内容,具有信息分类存储的能力。
CMAC把系统的输入状态作为一个指针,把相关信息分布式地存入一组存储单元中,它本质上是一种用于映射复杂关系非线性函数的查表技术。具体做法是将输入空间分成许多分块,每个分块制定一个实际存储器位置;每个分块学习到的信息分布式地存储到相邻分块的位置上;存储单元数通常比所考虑问题的最大可能输入空间的分块数量少得多,故实现的是多对一的映射,即多个分块映射到 同样一个存储器地址上。
其优越性体现在:
- 它是基于局部学习的神经网络,它把信息存储在局部结构上,使每次修正的权很少,在保证函数非线性逼近性能的前提下,学习速度快,适合于实时控制
- 具有一定的泛化能力,即所谓相近输入产生相近输出,不同输入给出不同输出
- 连续(模拟)输入、输出能力
- 寻址编程方式,在利用串行计算机仿真时,它可使回响速度加快
- 作为非线性逼近器,它对学习数据出现的次序不敏感
Hopfield网络
J.J.Hopfield
利用非线性动力学系统理论中的能量函数方法研究反馈人工神经网络的稳定性,提出了Hopfield神经网络。
基本的Hopfield神经网络是一个由非线性元件构成的全连接型单层反馈系统。每一个神经元将自己的输出通过连接权传送给所有其他的神经元,同时又都接受所有其他神经元传递过来的信息。
Hopfield神经网络是一个反馈型神经网络,网络中的神经元在$t$时刻的输出状态实际上间接地与自己的$t-1$时刻的输出状态有关,其状态变化可以用差分方程来描述。反馈型网络一个重要特点是它具有稳定状态,当网络达到稳定状态时,也就是它的能量函数达到最小的时候。
Hopfield神经网络工作时,各个神经元的连接权值是固定的,更新的只是神经元的输出状态。其运行规则为:首先从网络中随机选取一个神经元$u_i$进行加权求和,再计算$u_i$第$t+1$时刻的输出值,除$u_i$意外所有的神经元的输出值保持不变,直到网络进入稳定状态。
虚线框内为一个神经元,$u_i$为第$i$个神经元的状态输入,$R_i$和$C_i$分别为输入电阻和输入电容,$I_i$为输入电流,$w_{ij}$为第$j$个神经元到第$i$个神经元的连接权值,$v_i$为神经元的输出,是 神经元状态变量$u_i$的非线性函数。
(推导的话自己翻书吧 反正也不考)
神经网络控制
神经网络用于控制的优越性主要表现为
- 神经网络能处理那些难以用模型或规则描述的对象;
- 神经网络采用并行分布式信息处理方式,具有很强的容错性;
- 神经网络在本质上是非线性系统,可以实现任意非线性映射,神经网络在非线性控制系统中具有很大的发展前途;
- 神经网络具有很强的信息综合能力,它能够同时处理大量不同类型的输入,能够很好滴解决输入信息之间的互补性和冗余性问题;
- 神经网络的硬件实现愈趋方便,大规模集成电路技术的发展为神经网络的硬件实现提供了技术手段,为神经网络在控制中的应用开辟了广阔的前景。
神经网络控制在理论和时间上,以下问题是研究的重点:
- 神经网络的稳定性与收敛性问题;
- 神经网络控制系统的稳定性与收敛性问题;
- 神经网络学习算法的实时性;
- 神经网络控制器和辨识器的模型和结构。
神经网络控制的结构
神经网络控制器可分为两类:一类为神经控制,它是以神经网络为基础而形成的独立智能控制系统;另一类为混合神经网络控制,它是利用神经网络学习和优化能力来改善传统控制的智能控制方法,如自适应神经网络控制等。
神经网络监督控制
通过对传统控制器进行学习,然后用神经网络控制器逐渐取代传统控制器的方法,成为神经网络监督控制。神经网络控制器通过对传统控制器的输出进行学习,在线调整网络的权值,使反馈控制输入$u_p(t)$趋近于零,从而使神经网络控制器逐渐在控制作用中占据主导地位,最终取消反馈控制器的作用。一旦系统出现干扰,反馈控制器将重新起作用。
神经网络直接逆控制
神经网络直接逆控制就是将被控对象的神经网络逆模型直接与被控对象串联起来,以便使期望输出与对象实际输出之间的传递函数为1。则将此网络作为前置控制器后,被控对象的输出为期望输出
神经网络直接逆控制的可用性在相当程度上取决于泥模型的准确经度。由于缺乏反馈,简单连接的直接逆控制缺乏缺乏鲁棒性。为此,一般使其具有在线学习能力,即作为泥模型的神经网络连接权能够在线调整。
神经网络自适应控制
与传统自适应控制相同,神经网络自适应控制也分为神经网络自校正控制和神经网络模型参考自适应控制两种。自校正控制根据系统正向或逆模型的结果调节控制器内部参数,使系统满足给定的指标,而在模型参考自适应控制中,闭环控制系统的期望性能由一个稳定的参考模型来描述。
神经网络自校正控制
直接自校正控制与直接逆控制类似,而间接自校正结构如下所示。
假设被控对象为单变量仿射非线性系统
$$ y(t)=f(y_t)+g(y_t)u(t) $$
若利用神经网络对非线性函数$f(y_t)$和$g(y_t)$进行逼近,得到$\hat f(y_t)$和$\hat g(y_t)$,则常规控制器为
$$ u(t)=\frac{r(t)-\hat f(y_t)}{\hat g(y_t)} $$
式中,$r$为$t$时刻的期望输出值
神经网络模型参考自适应控制
直接模型参考自适应控制中控制器的作用是使被控对象与参考模型输出之差最小;
间接模型参考自适应控制识别器NNI向神经网络控制器NNC提供对象的Jacobain信息,用于其学习。
好深奥但不影响我膜拜大佬
大神,膜拜一下,这些我都看不懂