建立神经网络来计算棋盘游戏的分数

数据挖掘 机器学习 神经网络 深度学习
2022-02-27 15:47:32

我希望能够通过在棋盘游戏上拍照来计算每个玩家在棋盘游戏中的得分。我这样做是出于爱好,而不是出于大学或专业目的。我会在和朋友一起玩的时候使用它,也希望这能帮助我建立一些关于 ML 的知识。

我计划通过监督学习来做到这一点。给游戏拍很多照片,然后告诉机器正确的输出是什么。比赛得分不是直截了当的事情。玩家可以控制不同的领土。如果玩家在那里有单位,即使有敌方建筑物,领土也是控制者。游戏是镰刀。根据我之前对 ML 的了解,我知道您提供给机器学习的图像中的图像(例如角度)的微小变化可能会使其无法识别它们。

问题(我不希望有人告诉我该怎么做,而是哪种方法更好,以便我可以阅读更多相关信息):

  1. 在这种情况下,监督学习是最好的选择吗?
  2. 我计划为不同的情况构建许多微神经网络——识别谁控制了一个领域以及哪个领域(哪个领域似乎很难);单独的网络以识别某些玩家领土上是否有资源(这似乎很难,因为资源的组合可能从 0 到多个;我是否应该放置不同的资源组合(+它们的数量)并拍摄许多照片?) . 有很多组合。我不能对他们每个人都拍照。
2个回答

从理论上讲,您可以拍摄许多照片并将这些照片映射到每个玩家的得分。但是,我建议不要这样做。首先,您需要大量图片,并且可能无法涵盖所有​​可能的游戏场景。其次,游戏评分是离散的,而传统的神经网络会将其视为回归。这意味着您的输出可能很接近,但很少完全符合金钱(并且您需要四舍五入)。但是,您可以尝试预测谁目前获胜并将其转变为分类问题。

现在回到预测点。由于已经存在基于棋盘的复杂计分系统,因此试图让神经网络自行解决是相当愚蠢的。相反,我建议您实现积分系统,并让神经网络将棋盘的图片转换为棋盘的数据表示。你的系统会做这样的事情:

def scoring_system(board):
    // Insert logic here
    return points

def your_neural_network(image):
    // Your code
    return board

points = scoring_system(your_neural_network(image))

因此,您需要解决多个问题,而不是让这成为回归问题:

  • 物体检测(碎片在哪里)
  • 对象分类(是什么类型的作品?)
  • 图像分割(棋盘在哪里,有哪些区域)等。

现在这些位中的一些可以用传统的计算机视觉解决,但神经网络也可以装备精良。

我认为您应该使用预训练的神经网络进行图像识别并调整权重以检测您需要的单个对象。

之后,您需要将其与一些好的老式脚本结合起来手动计算分数。

深度学习并不神奇,对于少于 100 张游戏图片的情况更是如此。如果您设法拍摄了大量的照片,那么也许我们会进行不同的讨论!