Matlab人工智能算法
人工神经元模型
(1)一组连接:连接强度由各连接上的值表示,权值取正表示激活,取负表示抑制
(2)一个加法器:用于求输入信号对神经元的相应突触加权之和
(3)一个激活函数:用来限制神经元输出振幅。激活函数也成压制函数,因为它将输入信号压制到允许范围之内的一定值。通常,一个神经元输出的正常幅度范围可写成单位闭区间[0,1]或者[-1,+1]
另外,可以给一个神经元模型加一个外部偏置,记为bkb_{k}bk。偏置的作用是根据其为正或为负,相应地增加或降低激活函数的网络输入。
一个人工神经元k可以用以下公式表示:
uk=∑i=1mwikxi
u_{k}=\sum^{m}_{i=1}w_{ik}x_{i}
uk=i=1∑mwikxi
yk=f(uk+bk)
y_{k}=f(u_{k}+b_{k})
yk=f(uk+bk)
式中,xix_{i}xi输入信号,wikw_{ik}wik神经元k的突触权值,m为输入信号数目,uku_{k}uk输入信号线性组合器的输出,bkb_{k}bk神经元单元的偏置(阈值),f(⋅)f(·)f(⋅)激活函数,yky_{k}yk神经元输出信号
常用的激活函数
(1)域值函数,即阶梯函数,可以把输入分为两类
f(v)={1v≥00v<0
f(v)=\left\{
\begin{aligned}
1&&v\geq0 \\
0&&v<0 \\
\end{aligned}
\right.
f(v)={10v≥0v<0
(2)分段线性函数,在(-1,+1)线性区间内的放大系数是一致的
f(v)={1v≥1v−1<v<1−1v≤−1
f(v)=\left\{
\begin{aligned}
1&&v\geq1 \\
v&&-1<v<1 \\
-1&&v\leq-1\\
\end{aligned}
\right.
f(v)=⎩⎪⎨⎪⎧1v−1v≥1−1<v<1v≤−1
(3)非线性转移函数,最常用的s型函数
f(v)=11+e−v
f(v)=\frac{1}{1+e^{-v}}f(v)=1+e−v1
有时也采用双极性s函数
f(v)=21+e−v−1
f(v)=\frac{2}{1+e^{-v}}-1f(v)=1+e−v2−1
神经网络模型
(1)前馈神经网络,在分类过程中数据只能向前输送,直到到达输出层,如BP网络
(2)反馈神经网络,从输出到输入有反馈连接
(3)自组织神经网络,自动寻找样本中的内在规律和本质属性,自组织地改变网络参数与结构
神经网络工作方式
学习\工作
(1)学习,用学习算法来调整神经元间的连接权,使得网络输出更符合实际
有导师学习算法是将一组训练集送入网络,根据网络的实际输出与期望输出差别来调整连接权
- 从样本集合中取一个样本(Ai,Bi)(A_{i},B_{i})(Ai,Bi),其中AiA_{i}Ai是输出,BiB{i}Bi是期望输出
- 计算网络的实际输出O
- 求D=Bi−OD=B_{i}-OD=Bi−O
- 根据D调整权矩阵W
- 对每个样本重复上述过程,直到对整个样本集来说,误差不超过规定范围为止
无导师学习抽取样本集合中蕴含统计特性,并以神经元之间连接权的形式存在于网络中
(2)Delta学习规则
是一种简单的导师学习算法,如果神经元实际输出比期望输出大,则减小所有输入为正的连接权重,增大所有输入为负的连接权重,反之…其数学表示为:
wij(t+1)=wij+α(di−yi)xi(t)
w_{ij}(t+1)=w_{ij}+\alpha(d_{i}-y_{i})x_{i}(t)
wij(t+1)=wij+α(di−yi)xi(t)
其中,wijw_{ij}wij表示神经元j到神经元i的连接权,did_{i}di是神经元i的期望输出,yiy_{i}yi是神经元I的实际输出,xjx_{j}xj表示神经元j的状态,如果神经元j处于激活状态,则xjx_{j}xj为1如果处于抑制状态则xjx_{j}xj为0或-1(根据激活函数而定),α\alphaα是学习速度的常数
(3)工作状态
神经元间的连接权保持不变,神经网络处于工作状态,分为分类器、预测器等使用。
BP神经网络
Back Propagation,一种按误差逆传播算法训练的多层前馈网络
BP网络能学习和储存大量的输入-输出模式映射关系,而无须事前揭示描述这种映射的数学方程
BP神经网络的训练
(1)网络的层数
增加隐含层可以提高误差的精度,一般优秀考虑增加隐含层中的神经元数,增加层数可以进一步降低误差提高精度但是增加网络权值的训练时间
(2)隐含层的神经元数
实际的做法就是取输入层的两倍,适当加上一点余量
(3)初始权值的选取
为避免每一步权值的调整方向是同向的,应将初始值设为随机数。权值的初始值应选均匀分布的小数经验值,一般取初始权值在(-1,1)之间的随机数,也可以选取[-2.4/n,2.4/n]之间的随机数,其中n为输入特征个数
(4)学习速率
一般情况倾向选较小的学习速率以保证系统的稳定性,选取0.01~0.8,误差的平方和∑e2\sum e^{2}∑e2的下降速率很快说明学习速率合适
为使整个学习过程加快,又不引起震荡,可采用变学习速率的方法,即在学习初期用较大的学习速率,随着学习过程的进行逐渐减少其值
(5)期望误差的选取
BP神经网络的学习方法
BP神经网络的学习过程主要由四部分组成:
(1)输入模式由输入层、隐含层向输出层传播计算
- 确定输入向量X:X=[x1,x2,...xn]TX=[x_{1},x_{2},...x_{n}]^{T}X=[x1,x2,...xn]T(n为输入层单元个数)
- 确定输出向量Y:Y=[y1,y2,...yn]TY=[y_{1},y_{2},...y_{n}]^{T}Y=[y1,y2,...yn]T
- 确定希望输出向量O:O=[o1,o2,...oq]TO=[o_{1},o_{2},...o_{q}]^{T}O=[o1,o2,...oq]T(q为输出层单元个数)
- 确定隐含层输出向量B:B=[b1,b2,...bp]TB=[b_{1},b_{2},...b_{p}]^{T}B=[b1,b2,...bp]T(p为输入层单元个数)
- 初始化输入层至隐含层的连接权值Wj=[wj1,wj2,...wjp]TW_{j}=[w_{j1},w_{j2},...w_{jp}]^{T}Wj=[wj1,wj2,...wjp]T(p为输入层单元个数)
- 初始化隐含层至输出层的连接权值V=[vk1,vk2,...,vkj,...vkq]TV=[v_{k1},v_{k2},...,v_{kj},...v_{kq}]^{T}V=[vk1,vk2,...,vkj,...vkq]T(n为输入层单元个数)
(2)输出误差由输出层经隐含层传向输入层
- 计算隐含层各神经元的激活值sjs_{j}sj:sj=∑i=1nwjixi−θj(j=1,2,...,p)s_{j}=\sum^{n}_{i=1}w_{ji}x_{i}-\theta_{j}(j=1,2,...,p)sj=i=1∑nwjixi−θj(j=1,2,...,p)
wjiw_{ji}wji为输入层至隐含层的连接权,θj\theta_{j}θj为隐含层单元的阈值
激活函数采用S型函数,即f(x)=11+exp(−x)f(x)=\frac{1}{1+exp(-x)}f(x)=1+exp(−x)1 - 计算隐含层j单元的输出值。将上面的激活值代入激活函数中,可得隐含层j单元的输出值为:bj=f(sj)=11+exp(−∑i=1nwjixi+θj)b_{j}=f(s_{j})=\frac{1}{1+exp(-\sum^{n}_{i=1}w_{ji}x_{i}+\theta_{j})}bj=f(sj)=1+exp(−∑i=1nwjixi+θj)1
阈值θj\theta_{j}θj在学习过程中和权值一样也不断被修正。阈值的作用反映在S型函数的输出曲线上 - 计算输出层第k个单元的激活值sks_{k}sk:sj=∑j=1pvkjbj−θks_{j}=\sum^{p}_{j=1}v_{kj}b_{j}-\theta_{k}sj=j=1∑pvkjbj−θk
- 计算输出层第k个单元的实际输出值yky_{k}yk:yk=f(sk),(t=1,2,...,q)y_{k}=f(s_{k}),(t=1,2,...,q)yk=f(sk),(t=1,2,...,q)
(3)模式顺传播与误差逆传播的计算过程反复交替循环进行
(4)判定全局误差是否趋向极小值
下面介绍9种BP神经网络参数(连接权值和节点阈值)的调整方法
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)