机器学习笔记之LMS算法
来源:互联网 发布:python r语言 编辑:程序博客网 时间:2024/05/21 06:18
对于一个基本的神经网络结构,我们可以容易得出其性能参数并求得最小值,但是需要求矩阵的逆矩阵,这在大规模神经网络的情况下显然是不可行的,所以我们需要找到一种算法来求得性能参数曲面的最小值。关于LMS算法的理论推导就不贴在这了,有兴趣可以参考Martin T.Hagan等人编著的神经网络设计这本书,里面讲的很详细。
下面就以上图所示模型为例,贴出LMS算法核心部分的伪代码:
for n=1:k //以两输入为例 a(n) =w1(n)*p1(n)+w2(n)*p2(n); //a(n)为实际神经元输出 e(n)=t(n)-a(n); //e为误差,即期望输出与实际输出之差 w1(n+1)=w1(n)+2*alpha*e(n)*p1(n); //关于这两个式子可以参考教材推导过程 w2(n+1)=w2(n)+2*alpha*e(n)*p2(n); end
下面将LMS算法应用于一个实际例子中(信号的预测)
y(k)=sin(kπ/5)
如图所示,该结构为一个信号预测网络,由y(k-1)与y(k-2)预测y(k)的值
可求得性能参数空间
MATLAB程序代码如下:
clc;clear; close all; [h1,h2]=meshgrid(-2:0.1:4,-4:0.1:2);J=0.5*h1.^2+0.5*h2.^2+0.809*h1.*h2-0.809*h1-0.309*h2+0.5;figure(1)contour(h1,h2,J);xlabel('w1');ylabel('w2');title('误差性能曲面');hold onw1(1) = 0;w2(1) = 0;alpha=0.5; for n=1:43 y(n) = sin(n*pi/5);endfor n=3:43 //做了40次迭代 t(n-2) = y(n); v1(n-2) =w1(n-2)*y(n-1)+w2(n-2)*y(n-2); e(n-2)=t(n-2)-v1(n-2); w1(n-1)=w1(n-2)+2*alpha*e(n-2)*y(n-1); w2(n-1)=w2(n-2)+2*alpha*e(n-2)*y(n-2); endplot(w1,w2,'-')hold offfigure(2)plot(w1)hold onplot(w2,'r')hold offtitle('权重变化曲线')figure(3)plot(v1,'r')hold onplot(y)hold offtitle('输出与期望信号对比图')
结果如下:
图上蓝色线为每次迭代后权值的坐标值,该性能参数曲面的最小值在(1.6179,-0.9999)处,所以可由图得出该算法是收敛的。
由图可得,w1和w2分别收敛于最小值坐标处。
该图可以得出,输出信号逐渐逼近期望信号。
1 0
- 机器学习笔记之LMS算法
- 机器学习简单实验(LMS算法)
- 记一下机器学习笔记 最小均方(LMS)算法
- 机器学习小组知识点2:最小均方算法(LMS)
- 机器学习第5章第2节 : LMS算法
- LMS算法学习总结
- 机器学习第5章第3节 : LMS的学习率退火算法
- 机器学习笔记之遗传算法(GA)
- 机器学习笔记之K近邻算法
- 机器学习笔记之AdaBoost算法
- 机器学习笔记之K-近邻算法
- 机器学习笔记之Logistic回归算法
- 机器学习笔记之Kmeans算法
- 机器学习笔记之反向传播算法
- 【机器学习笔记之四】Adaboost 算法
- 机器学习笔记之逻辑回归算法
- 自回归模型的LMS学习曲线-神经网络与机器学习笔记3
- 机器学习算法笔记
- AsyncTask的分析与运用
- Linux学习篇之~unit10
- node.js 之express入门学习
- mysql中左连接,右连接,内连接查询,以及与where之间关系
- Linux2.6.32 PCB内tast_struct的简述
- 机器学习笔记之LMS算法
- PBR:应用于虚幻引擎4贴图和材质创建的启示
- webservice(三)
- 用svnkit验证svn url username password 的正确性
- JAVA正则Pattern和Matcher及replaceAll
- SSL policy requires SSL for control channel.
- define宏定义中的#,##,@#及/符号
- <<Magento2 命令行安装及演示数据>>系列
- android 自定义view实现推箱子小游戏。