BP算法实现步骤(软件):
1)初始化
2)输入训练样本对,计算各层输出
3)计算网络输出误差
4)计算各层误差信号
5)调整各层权值
6)检查网络总误差是否达到精度要求
满足,则训练结束;不满足,则返回步骤2)
3、多层感知器(基于BP算法)的主要能力:
1)非线性映射:足够多样本->学习训练
能学习和存储大量输入-输出模式映射关系。只要能提供足够多的样本模式对供BP网络进行学习训练,它便能完成由n维输入空间到m维输出空间的非线橡液性映射。
2)泛化:输入梁肆物新样本(训练时未有)->完成正确的输入、输出映射
3)容错:个别样本误差不能左右对权矩阵的调整
4、标准BP算法的缺陷:
1)易形成局部极小(属贪婪算法,局部最优)而得不到全局最优;
2)训练次数多使得学习效率低下,收敛速度慢(需做大量运算);
3)隐节点的选取缺乏理论支持;
4)训练时学习新样本有遗忘旧样本趋势。
注3:改进算法—增加动量项、自适应调整学习速率(这个似乎不错)及引入雹春陡度因子
基追踪(basis pursuit)算法是一种用来求解未知参量L1范数最小化的等式约束问题的算法。基追踪是通常在信号处理中使用的一种对已知系数稀疏化的手段。将优化问题中的L0范数转化为L1范数的求解就是基追踪的基本思想。
比如我原先有一个优化问题:
min ||x||_0(就是L0范数的最小值)subject to y=Ax。
这个||x||_0,就是表示x中有多少个非零元素;那么我们要求min ||x||_0,就是想知道含有最多0元素的那个解x是什么。
但是呢,L0范数有非凸性,不怎么好求解,这时我们就转而求解L1范数的优化问题。
那么,基追踪算法就是磨备转而求解
min||x||_1(就是L1范数的最小值)subject to||y-Ax||_2=0(2范数)
这个||x||_1,就是x的绝对值;那么我们要求min||x||_1,就是求绝对值最小的那个解x是什么。
更通俗一点来讲,比如我要求一个线性方程组
Ax=b
x就是我们要求的未知量。这个A矩阵不是个方阵,是个欠定矩阵,那么就导致这个线性方程组会有若干组解瞎升毁。那么我们到底要哪组解好呢?
如果在一般情况下,可以直接用最小二乘法来获得一组最小二乘解,就是x=(A'A)^(-1)A'b。但是我们现在利用基追踪,就是想要来获得一组含0元素最多的解。
那么我们为什么希望我们获得的解里面0元素越多越好呢?这就要谈到“稀疏化”了。所谓稀疏化,就是希望我获得的这个解放眼望去全是0,非0元素稀稀疏疏的。这样在大样本或者高维数的情况下,计算速度不会太慢,也不会太笑桐占计算机的内存。当然,所谓稀疏解是有一定精度误差的,想要提高计算速度,必然会损失一点精度,这是不可避免的。
可以参考:Stephen Byod 的<Distributed Optimization and Statistical Learning via the ADMM>41页
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)