我目前正在开发一个AI来预测视频游戏中1v1比赛的赢家。问题是我不知道数据(输入和标签)应该以何种形式存在。目前我有以下数据:
- 比赛的日期(有第0天)
- 玩家1的名字
- 玩家1的国家
- 玩家2的名字
- 玩家2的国家
- 赢家
我也可以获得比赛的得分,但有时是三局两胜,有时是五局三胜,所以我不知道这些数据是否可靠。
基于我现有的数据,我的两个主要问题是:
- 如果我只是颠倒玩家列,AI是否可能预测出两种不同的结果?
- 如果是,我怎样才能避免这种情况?
- 我如何告诉AI,我想要的预测只是我展示给它的两个玩家之一,而不是其他玩家?
提前感谢,我非常感激
回答:
你的数据似乎是分类数据,尽管我不完全明白你所说的玩家1和玩家2是什么意思。你有玩家的名字还是某种技能集?
神经网络或任何AI算法都是处理数字的。它们对现实世界一无所知,比如日子名称(星期一、星期二等)或国家名称。你需要做的就是在这些现实世界的问题和数字之间建立映射。
它们是分类数据(不能取连续值),你可以将日子从0映射到N。对于国家,你可以做同样的事情,每个国家可以有一个独特的ID。但你必须小心,如果在推理过程中模型接收到训练中不存在的日子或国家,模型会将其视为未知。因此,你要么添加所有相关国家,要么如果你无法预先知道这一点,你可以为未知国家和日子添加标签-1。每个特征你都会有一个列,每行代表一场比赛。在列中,你需要为那个特定特征和比赛对应相应的ID,然后你可以将这些数据传递给AI。顺便说一下,不同特征使用相同的ID/数字是可以的。(所以你可以用1代表星期二,而在另一列中1可以代表瑞士)对你问题的回答:
-
是的,理论上这是可能发生的。如果你有足够的样本和一个好的模型,模型本身可能会学会这一点。
-
如果你能做到,你可以向模型输入相对值而不是绝对值。例如,如果你有关于玩家的某些技能集属性/分数,你可以基于这些分数的差异来创建你的数据。例如,玩家1的射击得分为80,玩家2为78。你可以设置一个射击列,在那里你放入值80-78,那么模型就知道玩家1比玩家2高2分,或者如果相反,你可以放入-2,那么模型就知道玩家2在那个类别中比玩家1高2分。另一种方法是在训练数据中让每场比赛出现两次,第二次时玩家的顺序颠倒。模型也可能从数据中学会这一点。
-
这很容易做到,你的模型输出的不是玩家的ID或与玩家相关的东西。你的问题是一个二元分类问题。你的模型在任何情况下都应该输出0或1。0表示玩家1获胜,1表示玩家2获胜,然后你可以自己将这个输出转换为玩家。