如何处理卷积神经网络中除图像之外的其他输入信息?

数据挖掘 机器学习 深度学习 神经网络 卷积神经网络
2022-02-23 06:31:46

我尝试将棋盘游戏的游戏状态转换为卷积神经网络的输入。卷积神经网络很有用,因为玩家必须在棋盘上放置物品,而卷积神经网络可以利用这种空间结构。因此,我可以用每个玩家的二进制特征平面来很好地描述棋盘(如果棋盘上有项目,则为 1,如果没有,则为 0)。

玩家不仅可以放置物品,还可以收集卡片。一个玩家最多可以拥有五种不同卡类型中的 19 张。一个玩家有多少张牌以及它们是什么类型,对于神经网络来说是重要的信息,但我无法用另一个特征平面来描述这一点。这与空间结构无关。那么如何给卷积神经网络提供这样的附加信息,例如玩家有 6 张 A 类型的牌作为输入?

也有玩家可以放置他的物品的“地方”。这些地方有一个从 2 到 12 的数字(可以说这个地方有多好)。我可以用特征平面再次描述这些地方。但我想知道网络是否能很好地区分像 6 和 7 这样的两个数字?我可以想象它可以更好地区分一和零。

1个回答

我认为这里有三个问题:

如何将非空间信息融入网络?

当组合不同的信息模态时,一种典型的方法是在内部表示级别上进行,即:在flatten卷积之后丢失空间信息(通常通过操作)的点。您可以让 MLP 处理您的额外信息,并将结果与​​卷积层通过连接两者获得的表示相结合。

如何将卡片表示为网络的输入?

为了表示用户拥有的卡片,您可以将它们表示为离散元素(即令牌),就像通常在神经网络中处理文本一样。这样,您可以使用嵌入层,它将接收卡片的索引作为输入。由于用户可以拥有任意数量的卡片,因此您可以使用 LSTM。为了表示“卡片收集的结束”,您可以有一个特殊的标记,还有一个表示“填充”,这对于创建具有不同数量卡片的小批量很有用。

如何表示这些地方?

您应该决定这些是更好地表示为离散值还是连续值。或者也许只是尝试两种选择并选择表现最好的一种。对于连续特征,您可以按照您的建议添加另一个特征位置。对于离散特征,您只需一个嵌入层,然后将输出连接到其他通道。

更新:一些澄清:

  • “token”是 NLP 中使用的术语,指的是离散的值,也就是说,它可以取的值的数量是有限的,通常很小。在您的情况下,卡片令牌可以采用的不同值是 19。通常,我们通过它们在所有可能值列表中占据的索引来引用令牌。

  • 为了表示神经网络中的离散值,我们通常将每个不同的值表示为一个固定大小的向量。

  • 嵌入表只是一个具有固定大小向量的表,用于表示您的离散元素。嵌入层通常是网络架构中的第一个。它接收令牌索引作为输入并输出它们的关联向量。嵌入表的条目在反向传播过程中更新。

  • 您不会“将 MLP 与卷积网络连接起来”,而是将它们的输出连接起来。具体来说,一旦计算了最后一个卷积层的输出,您通常会将其“展平”,这意味着您移除空间信息并将输出张量元素放置在单维向量中。该向量是您与 MLP 的输出连接的,它也是一个单维向量(除了小批量维度)。