伪逆法
RBF(Radial Basis Function)径向基函数神经网络的学习算法
RBF网络需要学习的参数有3个:基函数的中心ci,方差σi以及隐含层与输出层间的权值Wi,根据径向基函数中心选取方法的不同,最常见的学习方法有:自组织选取中心法、正交最小二乘法等方法。
自组织学习过程中确定ci和σi的方法是聚类方法。聚类方法就是把样本聚成几类,以类中心作为各RBF函数的中心,常用的方法有k均值聚类法。
权值W的学习算法可用LMS(最小均方误差)方法、也可直接用伪逆法或最小二乘法求解。其中LMS权值W的调整规则为:
这里X(n)为隐含层输出;w(n)为权值向量;d(n)为期望输出;η为学习速率;n为迭代次数。
RBF神经网络结构简单,其设计比普通前向网络训练要省时得多。如果隐层神经元的数目足够,每一层的权值和阈值正确,那么RBF函数网络就完全能够精确地逼近任意函数,方便地存储和表征照明计算、建筑电气计算所需的大量非线性数据。
势函数:
势函数的构造是人工势场方法中的关键问题,典型的势函数构造方法:P(θ)=f{d(θ,θ0),[dR(θ),O],dT}(1),式中 θ,θ0——机器人当前位姿与目标位姿矢量;d(θ,θ0)——θ与θ0间的某种广义距离函数;dR(θ),O——当前位姿下机器人与障碍物间的最小距离;dT——给定的门限值;P(θ)分别为变量d(θ,θ0)和dR(θ),O的单调递增函数和单调递减函数。从机器人的起始位姿开始沿着P(θ)的下降方向进行搜索可使机器人在避开障碍物的前提下向目标位姿运动。
基于二次准则函数的H-K算法较之于算法的优点
HK算法的思想很朴实,就是在最小均方误差准则下求得权矢量。
它相对于感知器算法的优点在于,它适用于线性可分和非线性可分的情况。
对于线性可分的情况,给出最优权矢量,
对于分线性可分的情况,能够判别出来,以退出迭代过程。
 感知器(Perceptron)
感知器是由美国计算机科学家罗森布拉特(F.Roseblatt)于1957年提出的。感知器可谓是最早的人工神经网络。单层感知器是一个具有一层神经元、采用阈值激活函数的前向网络。通过对网络权值的训练,可以使感知器对一组输人矢量的响应达到元素为0或1的目标输出,从而实现对输人矢量分类的目的。图4.1给出了单层感知器神经元模型图。
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步
图4.1  感知器神经元模型
其中,每一个输入分量严pj(j=1,2…,r)通过一个权值分量wj,进行加权求和,并作为阈值函数的输人。偏差b的加入使得网络多了一个可调参数,为使网络输出达到期望的目标矢量提供了方便。感知器特别适合解决简单的模式分类问题。F.Roseblatt已经证明,如果两类模式是线性可分的(指存在一个超平面将它们分开),则算法一定收敛。
感知器特别适用于简单的模式分类问题,也可用于基于模式分类的学习控制中。
感知器实际上是在MP模型的基础上加上学习功能,使其权值可以调节的产物。罗森布拉特研究了单层的以及具有一个隐含层的感知器。但在当时他只能证明单层感知器可以将线性可分输入矢量进行正确划分,所以本书中所说的感知器是指单层的感知器。多层网络因为要用到后面将要介绍的反向传播法进行权值修正,所以把它们均归类为反向传播网络之中。
4.1  感知器的网络结构
感知器的网络是由单层的s个感知神经元,通过一组权值{ωij}(i=1,2…s;j=l,2…r)与r个输入相连组成。对于具有输入矢量Pr×q和目标矢量Ts×q的感知器网络的简化结构,如图4.2所示。
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步
图4.2 感知器简化结构图
根据网络结构,可以写出第i个输出神经元(i=1,2,…,s)的加权输入和ni及其输出ai为:
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步                              (4-1)
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步                           (4-2)
感知器的输出值是通过测试加权输入和值落在阈值函数的左右来进行分类的,即有:
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步                (4-3)
阈值激活函数如图4.3所示。
由图4.3可知:当输入ni十bi大于等于0,即有ni≥-bi时,感知器的输出为1,否则输出ai为0。利用偏差bi的使用,使其函数可以左右移动,从而增加了一个自由调整变量和实现网络特性的可能性。
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步
图4.3 阈值激活函数
4.2 感知器的图形解释
由感知器的网络结构,我们可以看出感知器的基本功能是将输入矢量转化成0或1的输出。这一功能可以通过在输人矢量空间里的作图来加以解释。为了简单起见,以下取s=1,即输出为一个节点的网络的情况来进行作图解释。
由感知器的输从输出的关系式(4.3)可知,感知器的输出只有1或0两个状态,其他值由W*P+b的值大于、等于或小于零来确定。当网络的权值W和b确定后,在由各输入矢量pj(j=1,2…,r)为坐标轴所组成的输入矢量空间里,可以画出W*P+b=0的轨迹,对于任意给定的一组输入矢量P,当通过感知器网络的权值W和b的作用,或落在输入空间W*P+b=0的轨迹上,或落在W*P+b=0轨迹的上部或下部,而整个输入矢量空间是以W*P+b=0为分割界,即不落在W*P+b=0轨迹上的输入矢量,不是属于W*P+b>0,就是使W*P+b<0。因而感知器权值参数的设计目的,就是根据学习法则设计一条W*P+b=0的轨迹,使其对输入矢量能够达到期望位置的划分。
以输入矢量r=2为例,对于选定的权值w1、w2和b,可以在以p1和p2分别作为横、纵坐标的输入平面内画出W*P+b=w1 p1十w2 p2十b=0的轨迹,它是一条直线,此直线上的及其线以上部分的所有p1、p2值均使w1 p1十w2 p2十b>0,这些点若通过由w1、w2和b构成的感知器则使其输出为1;该直线以下部分的点则使感知器的输出为0。所以当采用感知器对不同的输入矢量进行期望输出为0或1的分类时,其问题可转化为:对于已知输入矢量在输人空间形成的不同点的位置,设计感知器的权值W和b,将由W*P+b=0的直线放置在适当的位置上使输入矢量按期望输出值进行上下分类。(几何图形)
阈值函数通过将输入矢量的r维空间分成若干区域而使感知器具有将输入矢量分类的能力。输出矢量的0或1,取决于对输入的分类。
图4.4给出了感知器在输入平面中的图形,从中可以清楚看出:由直线W*P十b=0将由输人矢量p1和p2组成的平面分为两个区域,此线与权重矢量W正交可根据偏差b进行左右平移。直线上部的输人矢量使阈值函数的输入大于0,所以使感知器神经元的输出为1。直线下部的输入矢量使感知器神经元的输出为0。分割线可以按照所选的权值和偏差上下左右移动到期望划分输入平面的地方。
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步
图4.4输入矢量平面图(此图横坐标有问题)
感知器神经元不带偏差时,得到的是通过原点的分类线。有些可以用带偏差解决的问题,不带偏差的网络则解决不了。
熟悉图形解释有助于我们理解和掌握感知器的工作原理。当然在实际应用时,权值的求解全都是由计算机来完成的。
4.3  感知器的学习规则
学习规则是用来计算新的权值矩阵W及新的偏差B的算法。感知器利用其学习规则来调整网络的权值,以便使该网络对输人矢量的响应达到数值为0或1的目标输出。
对于输入矢量P,输出矢量A,目标矢量为T的感知器网络,感知器的学习规则是根据以下输出矢量可能出现的几种情况来进行参数调整的。
1) 如果第i个神经元的输出是正确的,即有:ai=ti,那么与第i个神经元联接的权值wij和偏差值bi保持不变;
2)如果第i个神经元的输出是0,但期望输出为1,即有ai=0,而ti=1,此时权值修正算法为:新的权值wij为旧的权值wij加上输人矢量pj;类似的,新的偏差bi为旧偏差bi加上它的输入1;
3)  如果第i个神经元的输出为1,但期望输出为0,即有ai=1,而ti=0,此时权值修正算法为:新的权值wij等于旧的权值wij减去输入矢量pj;类似的,新的偏差bi为旧偏差bi减去1。
由上面分析可以看出感知器学习规则的实质为:权值的变化量等于正负输入矢量。具体算法总结如下。
对于所有的i和j,i=l,2,…,s;j=1,2,…,r,感知器修正权值公式为:
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步  (4-4)
用矢量矩阵来表示为
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步            (4-5)
此处,E为误差矢量,有E=T-A。
感知器的学习规则属于梯度下降法,该法则已被证明:如果解存在,则算法在有限次的循环迭代后可以收敛到正确的目标矢量。
上述用来修正感知器权值的学习算法在MATLAB神经网络工具箱中已编成了子程序,成为一个名为1earnp.m的函数。只要直接调用此函数,即可立即获得权值的修正量。此函数所需要的输人变量为:输入、输出矢量和目标矢量:P、A和T。调用命令为:
[dW,dB]=learnp(P,A,T);
4.4  网络的训练
要使前向神经网络模型实现某种功能,必须对它进行训练,让它逐步学会要做的事情,并把所学到的知识记忆在网络的权值中。人工神经网络权值的确定不是通过计算,而是通过网络的自身训练来完成的。这也是人工神经网络在解决问题的方式上与其他方法的最大不同点。借助于计算机的帮助,几百次甚至上千次的网络权值的训练与调整过程能够在很短的时间内完成。
感知器的训练过程如下:
在输入矢量P的作用下,计算网络的实际输出A,并与相应的目标矢量T进行比较,检查A是否等于T,然后用比较后的误差量,根据学习规则进行权值和偏差的调整;重新计算网络在新权值作用下的输入,重复权值调整过程,直到网络的输出A等于目标矢量T或训练次数达到事先设置的最大值时训练结束。
若网络训练成功,那么训练后的网络在网络权值的作用下,对于被训练的每一组输入矢量都能够产生一组对应的期望输出;若在设置的最大训练次数内,网络未能够完成在给定的输入矢量P的作用下,使A=T的目标,则可以通过改用新的初始权值与偏差,并采用更长训练次数进行训练,或分析一下所要解决的问题是否属于那种由于感知器本身的限制而无法解决的一类。
感知器设计训练的步骤可总结如下:
1)对于所要解决的问题,确定输入矢量P,目标矢量T,并由此确定各矢量的维数以及确定网络结构大小的神经元数目:r,s和q;
2)参数初始化:
a)赋给权矢量w在(—l,1)的随机非零初始值;
b)给出最大训练循环次数max_epoch;
3)网络表达式:根据输人矢量P以及最新权矢量W,计算网络输出矢量A;
4)检查:检查输出矢量A与目标矢量T是否相同,如果是,或已达最大循环次数训练结束,否则转入5);
5)学习:根据(4.5)式感知器的学习规则调整权矢量,并返回3)。
4. 5 感知器神经网络应用的局限性
由于感知器神经网络在结构和学习规则上的限制,其应用也有一定的局限性。
首先,感知器的输出只能取0或1。
其次,单层感知器只能对线性可分的向量集合进行分类。
4. 6 感知器神经网络设计实例
下面给出例题来进一步了解感知器解决问题的方式,掌握设计训练感知器的过程。
[例4.1]考虑一个简单的分类问题。
设计一个感知器,将二维的四组输入矢量分成两类。
输入矢量为:P=[-0.5  -0.5   0.3  0;
-0.5   0.5  -0.5  1];
目标矢量为:T=[1.0  l.0  0  0],
解:
通过前面对感知器图解的分析可知,感知器对输入矢量的分类实质是在输入矢量空间用W*P十b=0的分割界对输人矢量进行切割而达到分类的目的。根据这个原理,对此例中二维四组输人矢量的分类问题,可以用下述不等式组来等价表示出:
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步
实际上可以用代数求解法来求出上面不等式中的参数w1、w2和w3。经过迭代和约简,可得到解的范围为:
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步
一组可能解为:
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步
而当采用感知器神经网络来对此题进行求解时,意味着采用具有阈值激活函数的神经网络,按照问题的要求设计网络的模型结构,通过训练网络权值W=[w11,w12]和b,并根据学习算法和训练过程进行程序编程,然后运行程序,让网络自行训练其权矢量,直至达到不等式组的要求。
鉴于输入和输出目标矢量已由问题本身确定,所以所需实现其分类功能的感知器网络结构的输人节点r,以及输出节点数,已被问题所确定而不能任意设置。
根据题意,网络结构图如图4.5所示。
第04讲 感知器(Perceptron) - zzz - 追逐春天的脚步
图4.5 网络结构图
由此可见,对于单层网络,网络的输入神经元数r和输出神经元数s分别由输入矢量P和目标矢量T唯一确定。网络的权矩阵的维数为:Ws×r,Bs×1权值总数为s×r个,偏差个数为s个。
在确定了网络结构并设置了最大循环次数和赋予权值初始值后,设计者可方便地利用MATLAB,根据题意以及感知器的学习、训练过程来编写自己的程序。下面是对[例4.1]所编写的网络权值训练用的MATLAB程序:
P=[-0.5 -0.5 0.3 0; -0.5 0.5 -0.5 1];     T=[1 1 0 0];
[R Q]=size(P);       [S Q]=size(T);
W=rands(S, R);      B=rands(S, 1);
max_epoch = 20;
A=hardlim(netsum(W*P, B));
for epoch=1:max_epoch
if all (A==T)
break;
end
% 格式: [dw db]=learnp(p1, e1)、 [dw db]=learnp(p1, a1, t1).
e = T-A;
[dW, dB] = learnp(P(:,1+mod(epoch-1,Q)), e(1+mod(epoch-1,Q)))
W = W + dW;
B = B + dB;
A = hardlim(netsum(W*P, B));
end
clf;
plotpv(P,T);
% plot the deviding line/plane: W*P'+b=0
if (R==2)                       % 二维样本绘图
x1=[-2:0.1:4];
x2=-(W(1)*x1+B)/W(2);
hold on;
plot(x1,x2,'-b','LineWidth',2);
end
以上就是根据前面所阐述的感知器训练的三个步骤:表达式、检查和学习而编写的MATLAB网络设计的程序。
4.7  感知器的局限性
由于感知器自身结构的限制,使其应用被限制在一定的范围内。所以在采用感知器解决具体问题时,必须时刻考虑到其特点。一般来说,感知器有以下局限性:
1)由于感知器的激活函数采用的是阀值函数,输出矢量只能取0或1,所以只能用它来解决简单的分类问题;
2)感知器仅能够线性地将输入矢量进行分类。如果用一条直线或一个平面把一组输入矢量正确地划分为期望的类别,则称该输入/输出矢量是对线性可分的,否则为线性不可分。那么,利用感知器将永远也达不到期望输出的网络权矩阵。所以用软件设计感知器对权值进行训练时,需要设置一个最大循环次数。如果在达到该最大循环次数后,还没有达到期望的目标,训练则停止,以便不使不可分的矢量占用无限循环的训练时间。不过应当提醒的是,理论上已经证明,只要输人矢量是线性可分的,感知器在有限的时间内总能达到目标矢量;
3)感知器还有另外一个问题,当输入矢量中有一个数比其他数都大或小得很多时,可能导致较慢的收敛速度。
感知器在解决实际问题时,必须在输入矢量是线性可分时才有效,这是很难得到的情形。虽然感知器有上述局限性,但它在神经网络研究中有着重要的意义和地位。它提出了自组织自学习的思想。对能够解决的问题有一个收敛的算法,并从数学上给出了严格的证明。对这种算法性质的研究仍是至今存在的多种算法中最清楚的算法之一。因此它不仅引起了众多学者对人工神经网络研究的兴趣,推动了人工神经网络研究的发展,而且后来的许多种网络模型都是在这种指导思想下建立起来并改进推广的。

机器学习练习记录(1):伪逆法、势函数、基于二次准则的H-K函数、感知器法相关推荐

  1. 机器学习:伪逆矩阵法

    机器学习:例1:伪逆矩阵法 伪逆矩阵是逆矩阵的广义形式.由于奇异矩阵或非方阵的矩阵不存在逆矩阵,但在matlab里可以用函数pinv(A)求其伪逆矩阵.基本语法为X=pinv(A),X=pinv(A, ...

  2. java 矩阵包求伪逆_Coursera-ML-AndrewNg-Notes

    第2周 [TOC] 四.多变量线性回归(Linear Regression with Multiple Variables) 4.1 多维特征 参考视频: 4 - 1 - Multiple Featu ...

  3. 7.2 伪逆和线性方程 $A\mathbf{x}=\mathbf{b}$

    7.2 伪逆和线性方程 Ax=bA\mathbf{x}=\mathbf{b}Ax=b 矩阵 444 个空间的正交基 1.根据 Avi=σiuiA\mathbf{v}_i = \sigma_i\math ...

  4. 学习笔记DL007:Moore-Penrose伪逆,迹运算,行列式,主成分分析PCA

    2019独角兽企业重金招聘Python工程师标准>>> Moore-Penrose伪逆(pseudoinverse). 非方矩阵,逆矩阵没有定义.矩阵A的左逆B求解线性方程Ax=y. ...

  5. 矩阵的逆、伪逆、左右逆,最小二乘,投影矩阵

    主要内容: 矩阵的逆.伪逆.左右逆 矩阵的左逆与最小二乘 左右逆与投影矩阵 一.矩阵的逆.伪逆.左右逆 1.矩阵的逆 定义: 设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: A ...

  6. 数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)

    文章目录 一.实验目的 二.实验仪器 三.实验原理 四.实验内容 1.逆滤波:选择MATLAB文件夹中的foggy图像作为实验图像. (1)生成退化函数: (2)复原 (a)直接逆滤波 (b)修正函数 ...

  7. (数学概念)矩阵的逆、伪逆、左右逆,最小二乘,投影矩阵

    主要内容: 矩阵的逆.伪逆.左右逆 矩阵的左逆与最小二乘 左右逆与投影矩阵 一.矩阵的逆.伪逆.左右逆 1.矩阵的逆 定义: 设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: A ...

  8. 线性代数笔记34——左右逆和伪逆

    原文 | https://mp.weixin.qq.com/s/PRQQvSfmipxPBeF80aEQ1A 一个矩阵有逆矩阵的前提是该矩阵是一个满秩的方阵.然而很多时候遇到的都是长方矩阵,长方矩阵是 ...

  9. 正规方程详解以及矩阵的伪逆

    正规方程 引入: 我们知道在多元线性回归里面,可以使用梯度下降算法来进行迭代,进而求出最合适的参数向量.但是梯度下降有诸多不便,所以可以在一些情况下考虑用正规方程代替梯度下降,我的另一篇文章里有用py ...

最新文章

  1. 老赵谈IL(3):IL可以看到的东西,其实大都也可以用C#来发现
  2. alert获取输入框内容_实用开源:Web 聊天工具的富文本输入框
  3. Swift - 文本输入框内容改变时响应,并获取最新内容
  4. Spark action算子案例
  5. Visual Studio下Qt调用IDL
  6. C语言 abort 函数 - C语言零基础入门教程
  7. IOC容器特性注入第六篇:利用MVC注入点,把容器启动
  8. 免费的数据库建模工具
  9. Java 对 lang3中Complex类的封装,使之支持BigDecimal
  10. 常用技巧性CSS:颜色渐变,截断英文单词,阴影文字.
  11. 基于盐+Sha算法的安全密码保护机制
  12. [IOS]——播放器AVPlayer的实现
  13. 中国计算机学会 信息学奥赛,信息学奥赛指南ll家长篇〈一〉
  14. elixir 规格_六家使用Elixir的著名公司-以及为什么做出改变
  15. python cox模型_Forest plot(森林图) | Cox生存分析可视化
  16. 博客显示ip签名图片html代码,如何制作显示IP的签名图片
  17. 【云学习笔记】二、免费云服务器与免费域名组合打造自己的个人空间
  18. ChemDraw使用不了怎么办
  19. mysql读写分离踩坑记
  20. strchr()函数的详解与实现

热门文章

  1. selenium:你必须知道的七件事
  2. Spring security Demo
  3. Vivado [Place 30-574]
  4. 淘宝商品详情API接口、获得淘宝商品详情接口调用示例
  5. 两个forEach 外层循环一次内层也相应循环一次的实现
  6. 【时序列】时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 详细理解python sm.tsa.seasonal_decompose
  7. c mysql项目案例_C语言项目案例分析 目录
  8. 什么是美股盘前交易?美股盘前交易特点有哪些?
  9. aws lambda_AWS Lambda不是魔术可靠性棒
  10. 一名前端开发工程师的离职邮件,字里行间都是痛!