好的,我通过一些试错方法设置了一个神经网络。接下来要进行反向传播。但为了做到这一点,我需要计算输出上的误差。
我在测试区域设置的情况如下。我有一辆车,位于迷宫的一个角落,需要导航到迷宫的另一个角落。输入包括:
- 前方墙壁的距离
- 车辆左侧墙壁的距离
- 车辆右侧墙壁的距离
- 车辆的全局X位置
- 车辆的全局Y位置
输出包括:
- 车辆向前行驶的速度
- 车辆转向的速度
所有输入和输出显然都归一化在-1到+1之间。车辆只能向前移动,所以-1表示0速度,+1表示最大速度。(我知道速度有点无用,但我好奇它是否能发现最大速度会更快到达目的地,或者在无法快速转弯时是否会自动减速以应对拐角)
所以我所知道的是,我希望车辆从当前位置到达迷宫的终点位置,而不需要自己担心其他任何事情。
回到这个脚本的误差计算部分。我阅读并遵循的所有指南,都要求计算与输出的误差。也就是说,output - ideal = error
问题在于,为了让它到达迷宫出口,我不知道在那个点上转向或速度的理想方式是什么。
在我看来,这可能意味着两件事之一:1. 有其他我不知道的方法来处理误差,或者有某种数学方法来计算误差。2. 我对神经网络的期望过高,输入/输出太少,或者要求它做一些它永远无法做到的事情。因此,我永远无法计算出正确的误差。
任何能帮助我解决这个误差问题的人都会受到欢迎!否则请解释我做错了什么,或者如何改进任务或输入/输出。
提前感谢!
回答:
你混淆了两件事。你读到的是关于神经网络的监督训练。而你试图解决的问题不是监督学习,而是强化学习。在这种设置下,你无法访问“理想”答案。你只能或多或少地说当前状态是好/坏(比如到达迷宫出口是一个好位置,而离得很远就是坏位置)。要么专注于监督学习问题,然后你使用的资源是合适的,要么坚持你的迷宫问题并转向强化学习。