我有一个元素列表,关于它们的信息很少。这些元素是有序的,我需要找到正确的顺序。我所能做的就是提交一个包含假设完整订单的查询并获得一个分数(介于 0 和 1 之间),该分数代表我的订单与真实订单的距离,没有关于订单的哪一部分正确/不正确的任何信息。
这似乎是一个标准的问题,但我找不到相关信息。
编辑:为简单起见,假设给定假设排序的分数是正确配对排序的百分比(与真实的未知排序相比)。所以如果你给出相反的顺序,你会得到一个 0,如果你给出真正的顺序,你会得到 1。 是否有一种策略/算法可以根据过去的答案生成查询,以最大限度地减少学习时间并最大限度地提高得分?
我认为学习对算法进行排名应该有所帮助,但它们的公式似乎与我需要的相去甚远,尽管我可能遗漏了一些东西。我也在看一些强化学习算法
但是,我们将不胜感激任何引用/提示/帮助。
谢谢。
最佳答案
这主要是关于如何思考问题的方法。
您需要了解距离的计算方式。考虑这个问题的一种方法是将其视为组合空间中的问题。如果您有 n 个元素,那么想象一个 n 维空间,其中空间中的每个点代表元素的排序。这些点之一是“正确”的最佳分数。
你有一个从空间中任何(有效)点到给定正确点的距离度量。问题是:您如何才能找到“正确”的答案。
梯度下降解决方案可能会奏效。应用于此问题时,它将从一个随机点开始,考虑各个方向上的简单“步骤”(通过交换值),然后朝最能提高分数的方向移动。问题是解决方案空间可能具有广泛分散在解决方案空间中的局部最优值,这意味着“局部”方法(例如步进)可能会被局部最优值所愚弄。但它可能会起作用。
另一种方法可能是像这样的蛮力。从全零向量开始并测量它的分数。然后测试每个位置的第一个值,选择得分最小的位置。我的直觉是,当值处于正确位置时,评分指标将最小化。然后,重复彼此的值。
关于algorithm - 学习元素的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39933744/