2008年1月6日星期日

回顾解决LMS收敛问题的过程

新的一年到了,2007年最后困扰我的LMS收敛问题总算是解决了,这是lp和我共同努力的结果,回顾一下其中曲折的过程,作为继续前进的动力吧~~
发现问题:在细调优化参数阶段,把通过GA优化的参数作为输入,用93个点的数据对其使用LMS方法进行进一步的细调,这主要是考虑到GA算法在最优点附近不容易找到最优点,而LMS方法对于局部优化问题更加擅长。但是用这些数据进行LMS后,误差反而增大了!!
问题1:数据集问题。开始怀疑是不是数据集的问题,针对不同的规则参数,似乎应该也将数据分为相同组再进行LMS。按照这个思路对数据集进行了处理,结果依然。
问题2:学习方程式问题。因为前面请lp求过一个参数的偏导数,发现少了一项B,于是怀疑是不是因为从k到k+1的学习方程式有误导致的。后来请lp对所有的方程式都验算了一遍,发现有两个错误,两个正确,但是即使错误的也只是影响了学习速度,修正后还是不能收敛。
问题3:误差函数。在和lp解释整个过程时,突然发现采用的误差函数居然加了绝对值,而误差函数的值是用在学习方程式里的,也就是说LMS方法中下降方向完全被我抹杀了!发现这个问题后十分的激动,认为问题就此解决了,但结果却让人吃惊,还是不能收敛!!
问题4:学习速率。我开始怀疑LMS是否一定能收敛。查阅资料的结果是只要学习步长足够小,肯定能收敛!那么是不是我的学习步长不够小呢?目前我的学习速率lambda是0.002,似乎已经很小了,不过考虑到是93组数据进行LMS后的综合步长,可以将lambda再减小一点。0.0002,不行!0.00002,还是不行!豁出去了,写个2e-6试试,ok的啦!成功~~
成功的喜悦过后,开始仔细观察误差(平均和最大)值的变化,嗯,都在减小,虽然减小的速率都很慢,但一直在减小,可见是收敛的!不过达到设定条件(两次LMS之间误差变化小于0.005)后,发现细化前后的误差变化不大,是否有不要进行这样的细调呢?先保留着吧,把整个算法实现出来再讨论这个问题~

1 条评论:

Unknown 说...

我把学习速率调到了0.00000001,花了两个小时,总算收敛了~~深深的伤不起!