我正在写我的学士论文。
我的主题是强化学习。设置:
通过测试以训练正弦功能来确认网络正常工作。 它可以近似。好。有些价值无法达到理想的价值,但这已经足够了。 用单个值训练它时,它总是会收敛。
这是我的问题:
我尝试教我的网络一个简单游戏的Q值功能, 接球: 在这个游戏中,它只需要接住一个从随机位置和任意角度掉落的球。 抓到+1 如果失败则为-1
我的网络模型有1个隐藏层,其中神经元的范围从45-180(我测试了这个数字没有成功)
它使用100k内存中的32个样本进行重放,学习速率为0.0001 它学习50000帧,然后测试10000帧。这发生10次。 输入来自最近4帧的PlatformPosX,BallPosX,BallPosY
伪代码:
选择动作(贪婪)
执行操作,
存储状态操作CurrentReward。在内存中完成
如果处于学习阶段:重播
我的问题是:
它的动作有时会以一定的差异开始裁剪为0或1。 从来没有像平台会紧随其后那样理想的政策。
编辑: 抱歉,便宜的信息... 我的质量功能由以下人员培训: 奖励+ Gamma(nextEstimated_Reward) 所以打折。
答案 0 :(得分:2)
您为什么可能希望它起作用?
您的训练几乎不能逼近一维函数。现在您期望它能够解决涉及微分方程的12维函数吗?您应该首先验证,选择的训练参数是否完全符合多维函数的训练要求。
鉴于您提供的详细信息,您的培训似乎也不适合。它几乎不可能成功地接住球,即使它成功了,您也大多会因为随机输出而获得回报。当打击垫只能通过有限的可能动作组及时到达目标时,只有输入和输出之间存在相关性。
然后可以选择输入。不需要您的模型自行区分。相关输入应该是x,y,dx,dy。优选地,甚至x,y相对于垫的位置而不是世界。应该有一个更好的融合机会。即使只是学习使x最小。
使用绝对世界坐标几乎注定要失败,因为这将要求培训涵盖可能的输入组合的整个范围。而且网络要足够大,甚至可以存储所有组合。请注意,网络不是在学习实际功能,而是在学习每组可能的输入近似值。即使理想的解决方案实际上只是一个线性方程,激活函数的非线性特性也使得无法以广义形式来学习未绑定输入。