导师想让用强化学习解决一个问题,我就去学习如何使用matlab的reinforcement learning toolbox。从4月18开始真正学习,从完全摸不着头脑,到渐渐有所顿悟,再到莫名其妙,再到满头问号……为什么学习就不收敛呢,为什么呢,为什么呢……
我都怀疑使用强化学习是不是个错误,Reward的设计是不是就不对。但导师说,先把问题简单化,看看到底能不能收敛。
今天一边跑代码,一边去网上查找相关资料,看到别人对强化学习的总结,了解到“也许逻辑上正确但实验就是不收敛”的存在可能性,也了解到自己对强化学习只是看到了皮毛,根本就是一个门外汉啊。感觉自己都已经和强化学习纠缠到这么长时间了,也许应该发扬不放弃的精神,再进一步深入学习或发散学习,理解一下reward sharping, Bellman Equation。特别是导师经常说的Bellman Equation,我觉得还是有必要去学习一下。
在我写日更的时候,终于有件高兴的事发生,那就是最新的测试竟然收敛了!而我觉得收敛的原因可能是我把测试的环境设置成大范围的网络,且终点不挨着边界。天啊!我都想去吃个大餐犒劳一下我快要崩溃的心灵了。这都是什么问题啊,就因为边界所以才一直在两个位置来回震荡、不收敛?突然感觉自己更崩溃了……
多做了几次测试,发现在个别位置还是存在震荡的情况,认真分析了一下原因,然后根据自己的测试修改了reward的设计。训练后,真的就收敛了……再测试小范围网络,同样没有问题。看来真的是Reward的设计问题。网友诚不欺我啊,“设计不好的reward一般都会导致网络不收敛”。
明天再做进一步的测试!
网友评论