我们可以将问题分解如下:
首先,如果您在平面上有两个点并将这些点的坐标提供给神经网络(例如,向量<x0,y0,x1,y1>)并在标签上训练它,即实际距离(例如,(x0−y0)2+(x1−y1)2−−−−−−−−−−−−−−−−−−√),它应该能够以任意接近的准确度学习这种关系。
接下来,如果您有一个与您描述的图像相似的图像,并通过不同的神经网络(例如,CNN)提供它,并且您使用两个点的点作为标签(再次<x0,y0,x1,y1>),那么它应该能够再次以任意接近的准确度学习这种关系。
当然,没有理由在两个单独的神经网络中这样做,所以我们可以将两个端到端的模型结合起来,形成一个以图像为输入,距离为输出的模型。
但是,此模型需要在标记数据上进行训练,因此您需要自己生成数据或标记图像。
但是,如果您希望它以较少监督的方式学习缩小距离的概念,则需要使用强化学习。在这种情况下,您必须设置一个环境来激励代理减少距离。如果一个动作缩短了距离,这可能就像获得奖励一样简单。
另一种方法是使用未来的奖励来激励代理。也就是说,它的奖励不仅来自下一个即时状态的结果,还来自下一个可能状态的贡献,以及之后的那个,等等。这就是 Deep Q-Learning 背后的理念,我在这个 notebook 中实现了一个简单的示例(与您所描述的非常相似)。
所以,现在的问题是:这个实现除了随机移动直到它走上成功之路之外,是否做了其他事情?
在您的示例中,您谈到了在代理到达目标时对其进行奖励。但在我所描述的情况下,它通过更接近目标(通过 Q 函数或直接来自环境)获得了回报。它可以通过学习一些抽象的距离概念来做到这一点(可以在监督版本中说明)。
当人类了解到这一点时,其确切原因是相同的:人类通过对未来奖励的感觉朝着那个方向前进而获得奖励。
我想说,只要有足够的训练和数据,强化学习就可以轻松学习这个概念。至于棋盘上存在的其他奖励(例如,“最小化棋盘的熵并尝试获得奖励”),您需要考虑您要问的是什么。你宁愿代理最小化距离还是最大化奖励?因为,一般来说,它不能两者兼得。如果您正在寻找两者之间的某种平衡,那么实际上您只是在重新定义奖励以同时考虑距离。