您的位置:首页 > 理论基础 > 计算机网络

自回归模型的LMS学习曲线-神经网络与机器学习笔记3

2016-12-08 21:41 309 查看
对于自回归模型x(n)=ax(n−1)+ϵ(n)

a=0.99, σ2ϵ=0.02,σ2x=0.995

利用这个模型参数一组标准数据,然后使用LMS方法求解这个模型中的参数a

为了得到LMS学习曲线,我们将求解过程重复100次,并且每次产生不同的标准数据用于求解,得到100次学习后第n步的平均最小方差∑100i=1e2/100 ,来画学习曲线。

python代码如下:

import numpy as np
import matplotlib.pyplot as plt;
plt.close('all');
N=10000;#递归5000次
#生成方差为0.02,期望为0的噪音
var=0.02
eta = 0.001
sigma=np.sqrt(var)
#sigma=var;
E=[]
W=[]
ERR=[]
n=100 #外部迭代100次
for iter in range(0, n):
#产生随机数
np.random.seed(iter)
e=np.random.normal(0,sigma,N)
xi=[0]
for i in range(0,N):
xi.append(0.99*xi[i]+e[i])

#LMS学习过程
ee = []
xi0=0;k=0;M=5000; xi=xi[5000:N]
x0=k*xi0;
ee.append(xi[0]-x0)
k+=eta*ee[0]*x0;
for i in range(1, M):
xp=xi[i-1]*k;
ee.append(xi[i]-xp)
k+=eta*xi[i-1]*ee[i];

W.append(k)
E.append([eei**2 for eei in ee])
print iter
for p in range(0,len(E[0])):
sum=0
for q in range(0,len(E)):
sum+=E[q][p]
sum/=len(E)
ERR.append(sum)

plt.figure()
plt.semilogy(ERR)
plt.show()


运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息