自适应神经网络滤波器
ADALINE(自适应线性本主题中讨论的神经元网络类似于感知器,但它们的传递函数是线性的,而不是硬限制的。这使得它们的输出可以取任何值,而感知器的输出只能为0或1。ADALINE和感知器都只能解决线性可分问题。然而,这里是LMS(最小均方)学习规则,它比感知器强大得多学习规则,是用的。LMS或Widrow-Hoff学习规则最小化均方误差,从而将决策边界尽可能远离训练模式。
在本节中,您将设计一个自适应线性系统,该系统在运行时对环境的变化做出响应。线性网络根据新的输入和目标向量在每个时间步进行调整,可以找到最小化网络对最近输入和目标向量的和平方误差的权重和偏差。这种网络常用于差错消除、信号处理和控制系统。
这一领域的开创性工作是由Widrow和Hoff完成的,他们将自适应线性元素命名为ADALINE。关于这个问题的基本参考文献是Widrow, B.和S.D. Sterns,自适应信号处理,纽约,Prentice-Hall, 1985年。
本节还考虑了自组织和竞争网络的自适应训练。
自适应功能
介绍功能适应
,它在训练过程中逐渐改变网络的权重和偏差。
线性神经元模型
线性神经元R输入如下所示。
该网络与感知器具有相同的基本结构。唯一的区别是线性神经元使用线性传递函数,命名为purelin
.
线性传递函数通过简单地返回传递给神经元的值来计算神经元的输出。
α=purelin(n) =purelin(Wp+b) =Wp+b
这个神经元可以被训练为学习其输入的仿射函数,或者找到非线性函数的线性近似。当然,线性网络不能用来进行非线性计算。
自适应线性网络结构
下面显示的ADALINE网络有一层年代神经元连接到R通过权重矩阵输入W.
这种网络有时被称为MADALINE for Many adaline。注意,右边的图定义了一个年代长度输出向量一个.
Widrow-Hoff规则只能训练单层线性网络。然而,这并不是一个很大的缺点,因为单层线性网络与多层线性网络一样有能力。对于每一个多层线性网络,都有一个等效的单层线性网络。
单一ADALINE(线性层)
考虑一个有两个输入的ADALINE。该网络的示意图如下图所示。
权重矩阵W在这种情况下只有一行。网络输出为
α=purelin(n) =purelin(Wp+b) =Wp+b
或
α=w1, - 1p1+w1、2p2+b
像感知机一样,ADALINE有一个决定边界这是由净输入的输入向量决定的n是零。为n= 0方程Wp+b= 0指定这样的决策边界,如下所示(由[HDB96])。
右上角灰色区域的输入向量导致输出大于0。左下白色区域的输入向量导致输出小于0。因此,ADALINE可用于将对象分为两类。
然而,只有当对象是线性可分的时候,ADALINE才能以这种方式对对象进行分类。因此,ADALINE具有与感知器相同的局限性。
您可以使用以下命令创建一个类似于所示的网络:
网络=线性层;Net = configure(Net,[0;0],[0]);
要配置的两个参数的大小表明该层将有两个输入和一个输出。正常情况下火车
为你做这个配置,但这允许我们在训练前检查重量。
默认情况下,网络权重和偏差设置为零。您可以使用以下命令查看当前值:
W = net。Iw {1,1} w = 0 0
而且
B = net。b{1}b=0
您还可以为权重和偏差分配任意值,例如权重为2和3,偏差为−4:
网Iw {1,1} = [2 3];网b{1}=-4;
您可以为特定的输入向量模拟ADALINE。
P = [5;6);A = sim(net,p) A = 24
总而言之,您可以使用linearlayer
,调整它的元素作为你想要的,并模拟它sim卡
.
最小均方误差
就像感知器学习规则一样最小均方误差(LMS)算法是监督训练的一个例子,它为学习规则提供了一组期望网络行为的示例。
在这里p问是网络的输入,和t问对应的目标输出。当每个输入应用于网络时,网络输出将与目标进行比较。误差计算为目标输出与网络输出之间的差值。目标是使这些误差之和的平均值最小化。
LMS算法调整ADALINE的权重和偏差,以使均方误差最小化。
幸运的是,ADALINE网络的均方误差性能指标是一个二次函数。因此,性能指标将有一个全局最小值,一个弱最小值,或没有最小值,这取决于输入向量的特征。具体来说,输入向量的特征决定了是否存在唯一解。
有关本主题的详情,请参阅[HDB96].
LMS算法(learnwh)
自适应网络将使用LMS算法或基于近似最陡下降过程的Widrow-Hoff学习算法。在这里,自适应线性网络是在正确行为的例子上训练的。
本文中详细讨论了这里所示的LMS算法线性神经网络.
W(k+ 1) =W(k) + 2αe(k)pT(k)
b(k+ 1) =b(k) + 2αe(k)
自适应滤波(adapt)
ADALINE网络,很像感知器,只能解决线性可分问题。然而,它是在实际应用中应用最广泛的神经网络之一。自适应滤波是其主要应用领域之一。
抽头延迟线
为了充分利用ADALINE网络,您需要一个新的组件,即被抽接的延迟线。这样的延迟线如下图所示。输入信号从左边进入,然后通过N1延迟。抽头延迟线(TDL)的输出是一个N-维向量,由当前时刻的输入信号、之前的输入信号等组成。
自适应滤波器
您可以将抽接的延迟线与ADALINE网络结合起来以创建自适应滤波器如下图所示。
滤波器的输出由
在数字信号处理中,这种网络被称为有限脉冲响应过滤器(WiSt85].看看用于生成和模拟这种自适应网络的代码。
自适应滤波器示例
首先,定义一个新的线性网络linearlayer
.
假设线性层只有一个神经元,有一个输入和0、1和2个延迟的点击延迟。
Net =线性层([0 1 2]);Net =配置(Net,0,0);
您可以指定任意数量的延迟,如果愿意,还可以省略一些值。它们必须按升序排列。
你可以给出不同的权重和偏差值
网Iw {1,1} = [7 8 9];网b{1}=[0];
最后,将延迟输出的初始值定义为
PI = {1 2};
这些顺序从左到右对应于图中从上到下的延迟。这就完成了网络的设置。
要设置输入,假设输入标量按顺序到达:首先是值3,然后是值4,然后是值5,最后是值6。可以通过将值定义为花括号内单元格数组的元素来指示此序列。
P = {3 4 5 6};
现在,你有了一个网络和一系列的输入。模拟网络,看看它的输出是时间的函数。
[a,pf] = sim(net,p,pi)
这个模拟产生一个输出序列
A [46] [70] [94] [118]
的延迟输出的最终值
Pf [5] [6]
这个例子非常简单,你可以不用计算器来检查它,以确保你理解输入、延迟的初始值等。
刚刚定义的网络可以用函数进行训练适应
产生特定的输出序列。假设,例如,您希望网络产生10、20、30、40的值序列。
T = {10 20 30 40};
您可以从上面使用的初始延迟条件开始,训练已定义的网络来执行此操作。
让网络适应10次数据传递。
因为我= 1:10[净,y, E, pf, af) =适应(网、p、t,π);结束
这段代码返回最终的权重、偏差和输出序列,如图所示。
WTS = net。IW{1,1} wts = 0.5059 3.1053 5.7046偏差=净。b{1}b我一个年代=-1.5993 y y = [11.8558] [20.7735] [29.6679] [39.0036]
据推测,如果运行额外的传递,输出序列将更接近所需的值10、20、30和40。
因此,自适应网络可以被指定,模拟,并最终训练适应
.然而,自适应网络的突出价值在于其用于执行特定功能,如预测或噪声消除。
预测的例子
假设您想要使用an预测平稳随机过程下一个值的自适应滤波器,p(t).您可以使用下图所示的网络来进行预测。
要预测的信号,p(t),从左边进入一个抽头延迟线。的前两个值p(t)可作为抽头延迟线的输出。网络使用适应
在每个时间步上改变权重,使误差最小化e(t)在最右边。如果此错误为0,则网络输出一个(t)正好等于p(t),并且该网络已经正确地完成了预测。
给出平稳随机过程的自相关函数p(t),可以计算误差曲面、最大学习率和权重的最优值。当然,通常情况下,您没有关于随机过程的详细信息,因此无法执行这些计算。这种缺失对网络来说无关紧要。在初始化和运行后,网络在每个时间步进行自适应,使误差最小化,在较短的时间内就能预测输入p(t).
[第十章]HDB96]提出了这个问题,进行了分析,并给出了训练过程中的重量轨迹。网络可以毫不费力地自己找到最优权重。
您也可以试试这个例子nnd10nc
看一个自适应噪声消除程序的例子。这个例子允许您选择一个学习率和动力(见多层浅层神经网络与反向传播训练),并显示学习轨迹,以及原始信号和取消信号随时间的变化。
噪声消除示例
想象一下飞机上的飞行员。当飞行员对着麦克风说话时,驾驶舱内的引擎噪音就会与语音信号相结合。这种额外的噪音使得乘客听到的信号质量很低。目标是获得一个包含飞行员声音的信号,而不是引擎噪音。你可以用消去噪声自适应滤波器:获取发动机噪声样本并将其作为自适应滤波器的输入。
如上图所示,自适应训练神经线性网络来预测飞行员/发动机的组合信号米来自引擎信号n.发动机信号n不告诉自适应网络任何关于飞行员的声音信号包含米.然而,发动机信号n是否提供了网络信息,它可以用来预测发动机对飞行员/发动机信号的贡献米.
网络尽最大努力输出米自适应。在这种情况下,网络只能预测飞行员/发动机信号中的发动机干扰噪声米.网络错误e等于米,即飞行员/发动机信号,减去预测的污染发动机噪声信号。因此,e只包含飞行员的声音。线性自适应网络自适应学习消除发动机噪声。
这种自适应噪声抵消通常比经典滤波器做得更好,因为它从信号中减去而不是过滤掉信号中的噪声米.
试一试自适应噪声消除这是一个自适应噪声消除的例子。
多神经元自适应滤波器
你可能想在一个自适应系统中使用多个神经元,所以你需要一些额外的符号。你可以使用一个抽头延迟线年代线性神经元,如下图所示。
或者,您也可以用缩写形式表示这个网络。
如果你想要显示更多被拨动的延迟线的细节,并且没有太多的延迟,你可以使用下面的符号:
这里,一个被抽接的延迟线发送给权重矩阵:
电流信号
之前的信号
信号在那之前就延迟了
您可以有一个更长的列表,如果需要,可以省略一些延迟值。唯一的要求是延迟必须从上到下以递增的顺序出现。