P=r×q外星输入 MATLAB工具箱中实现外星学习与设计的函数为 learnos. m,其调用过程如下: dw=learnos(W, A, P, Ir) W=W十 下面给出外星的一个例题。 [例8.2]下面有两元素的输入矢量以及与它们相关的四元素目标矢量,试设计一个外星 网络实现有效的矢量的获得,外星没有偏差。 =[10 T=[0.18260.6325 0.36510.3162 0.54770.3162 0.73030.6325] 很显然,此例题为内星[例8.1的反定义 该网络的每个目标矢量强迫为网络的输出,而输入只有0或1。网络训练的结果是使其 权矩阵趋于所对应的输入为1时的目标矢量 同样网络被零权值初始化 R, Q]=size(P) S, Q]=size(T) W=zeros(S, R) max epoch=10; 下面根据外星学习规则进行训练 for epoch= l: max epoch for q=1: Q A=T(:,q) dw=learnos(W, P(:,q),A, Ir) W=W十dW 旦训练完成,当外星工作时,对设置于输入为1的矢量,将能够回忆起被记忆在网络
6 P=r×q 外星输入。 MATLAB 工具箱中实现外星学习与设计的函数为 learnos.m,其调用过程如下: dW=learnos(W,A,P,lr); W=W 十 dW; 下面给出外星的一个例题。 [例 8.2]下面有两元素的输入矢量以及与它们相关的四元素目标矢量,试设计一个外星 网络实现有效的矢量的获得,外星没有偏差。 P=[1 0]; T=[0.1826 0.6325; 0.3651 0.3162; 0.5477 0.3162; 0.7303 0.6325]; 很显然,此例题为内星[例 8.1]的反定义。 该网络的每个目标矢量强迫为网络的输出,而输入只有 0 或 1。网络训练的结果是使其 权矩阵趋于所对应的输入为 1 时的目标矢量。 同样网络被零权值初始化: [R,Q]=size(P); [S,Q]=size(T); W=zeros(S,R); max_epoch=10; 1r=0.3; 下面根据外星学习规则进行训练 for epoch=1:max_epoch for q=1:Q A=T(:,q); dW=learnos(W,P(:,q),A,lr); W=W 十 dW; end end 一旦训练完成,当外星工作时,对设置于输入为 1 的矢量,将能够回忆起被记忆在网络
中的第一个目标矢量的近似值 >A=pureline(W*Ptest) 0.1774 0.3548 0.5322 0.7097 由此可见,此外星已被学习来回忆起了第一个矢量。事实上,它被学习来回亿出在[例 8.1中学习识别出的那个矢量。即上述外星的权值非常接近于例8.1中已被识别的矢量。 内星与外星之间的对称性是非常有用的。对一组输入和目标来训练一个内星层与将其输 入与目标相对换,来训练一个外星层的结果是相同的,即它们之间的权矩阵的结果是相互转 置的。这一事实,被后来应用到了AR网络中。 8.1.3科荷伦学习规则 科荷伦学习规则是由内星规则发展而来的。对于其值为0或1的内星输出,当只对输出 为1的内星权矩阵进行修正,即学习规则只应用于输出为1的内星上,将内星学习规则中的 a取值1,则可导出科荷伦规则为 △wg=·(pjw) 科荷伦学习规则实际上是内星学习规则的一个特例,但它比采用内星规则进行网络设计 要节省更多的学习,因而常常用来替代内星学习规则。 在 MATLAB工具箱中,在调用科荷伦学习规则函数 learnk m时,一般通过先寻找输出 为1的行矢量i,然后仅对与i相连的权矩阵进行修正。使用方法如下 i=find(A==1): dw=learnk(W, P,i, Ir): W=Wtd 般情况下科荷伦学习规则比内星学习规则能够提高训练速度1到2个数量级
7 中的第一个目标矢量的近似值: 》Ptest=[1]; 》A=pureline(W*Ptest) A= 0.1774 0.3548 0.5322 0.7097 由此可见,此外星已被学习来回忆起了第一个矢量。事实上,它被学习来回亿出在[例 8.1]中学习识别出的那个矢量。即上述外星的权值非常接近于[例 8.1]中已被识别的矢量。 内星与外星之间的对称性是非常有用的。对一组输入和目标来训练一个内星层与将其输 入与目标相对换,来训练一个外星层的结果是相同的,即它们之间的权矩阵的结果是相互转 置的。这一事实,被后来应用到了 ARTl 网络中。 8.1.3 科荷伦学习规则 科荷伦学习规则是由内星规则发展而来的。对于其值为 0 或 1 的内星输出,当只对输出 为 1 的内星权矩阵进行修正,即学习规则只应用于输出为 1 的内星上,将内星学习规则中的 ai 取值 1,则可导出科荷伦规则为: (6.6) 科荷伦学习规则实际上是内星学习规则的一个特例,但它比采用内星规则进行网络设计 要节省更多的学习,因而常常用来替代内星学习规则。 在 MATLAB 工具箱中,在调用科荷伦学习规则函数 learnk.m 时,一般通过先寻找输出 为 1 的行矢量 i,然后仅对与 i 相连的权矩阵进行修正。使用方法如下: i=find(A==1); dW=learnk(W,P,i,1r); W=W 十 dW; 一般情况下科荷伦学习规则比内星学习规则能够提高训练速度 1 到 2 个数量级