向 NN 从业者提问。我想将 Azul 棋盘游戏状态编码为 NN 的输入,让我们暂时专注于 2 玩家变体。
桌子上有 5 个圆形“工厂”(图片上有 7 个,忽略它)。每个可以保留 4 个 5 种颜色的瓷砖。棋盘的中心也可以容纳多达 15 个棋子。不同编码的优缺点是什么?以下是我的想法:
每个工厂都有五个整数计数器,一个用于每种瓷砖颜色。单个工厂的样本编码:
[3,1,0,0,0]
每个工厂都有 20 个二进制标志,每种颜色四个。单个标志编码给定颜色的瓷砖的存在。单厂样本编码:
[1,1,1,0, 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]
每个工厂有 20 个二进制标志,每种颜色四个,但只能为给定颜色设置一个标志,并且升起标志的位置编码给定颜色的瓷砖数量。单厂样本编码:
[0,0,1,0, 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]
每个工厂都有 4 个枚举字段,每个字段有 6 个可能的值(5 种颜色 + 空)。单个工厂的样本编码:
[red, red, red, blue]
或[Empty,Empty,Empty,Empty]
(注意:编码模式也将覆盖棋盘的中心,最多 15 个图块,如前所述。当然玩家的棋盘也会被编码,但我不想问太宽泛的问题)
我想训练 NN 玩 Azul,这意味着它需要正确处理给定回合中使用的瓷砖数量(理论上最多 15 个,实践中 2-4 个),因为它还需要指示将所有这些放在哪里瓷砖到玩家板的位置。
根据您的经验,哪种编码最有前途?或者也许有一些我没有想到的更好的方法?还是说不出来或者没关系?