我应该规范化神经网络中的输入吗?

Should I normalize the inputs in my Neural Network?

首先是一些上下文。

我正在进行一个非常雄心勃勃的项目,制作一个能够以相当高的水平下国际象棋的神经网络。我可能不会成功,但我这样做主要是为了学习如何处理这种机器学习。

在不同的神经网络在几局国际象棋比赛中相互较量后,我决定使用遗传算法来训练网络以微调权重。

每个神经元利用双曲正切 (-1, 1) 对处理后的数据进行归一化,但在进入网络之前尚未对输入进行归一化。

我从长颈鹿国际象棋引擎中获得了一些灵感,尤其是输入。

它们看起来像这样:

第一层:

.....

第二层仍与第一层相同:

...

...

第三层,和前两层在同一层。数据仅在下一层抽象后才进入 "crosstalk"。

...

你懂的。

如果你不知道这里有一个糟糕的 Paint 表示我的意思:

问题是:我应该在神经网络读取输入数据之前对其进行归一化吗?

我觉得压缩数据可能不是一个好主意,但我真的没有能力做出决定性的决定。

我希望这里有人能就这个问题启发我,如果你认为我应该规范化数据,我希望你能提出一些这样做的方法。

谢谢!

您不需要规范化网络内部的任何内容。机器学习的重点是训练权重和偏差以学习 non-linear 函数,在您的示例中它是静态国际象棋评估。因此,您的第二个规范化蓝色垂直条(靠近最终输出)是不必要的。

注意: Hidden layers 是比 abstraction layer 更好的术语,所以我将使用它来代替。

隐藏层之前的其他规范化是可选的,但建议使用。这也取决于我们谈论的输入

长颈鹿论文第 18 页写道:

"Each slot has normalized x coordinate, normalized y coordinate ..."

国际象棋有 64 个方格,如果没有归一化,范围将为 [0,1,....63]。这是非常离散的,范围比其他输入高得多(稍后会详细介绍)。将它们规范化为更易于管理且与其他输入具有可比性的东西确实有意义。该论文没有说明 究竟如何 它被规范化,但我不明白为什么 [0...1] 范围不起作用。 对国际象棋方格(或坐标)进行归一化是有意义的

棋盘上是否有皇后等其他输入是真还是假,因此不需要归一化。例如,长颈鹿论文在第 18 页写道:

... whether piece is present or absent ...

显然,您不会将其标准化。

回答你的问题

  • 如果您像在 Giraffe 中一样表示 计件层,则不需要标准化。但是,如果您更喜欢 [0..8] 中的离散表示(因为国际象棋中可能有 9 个皇后),您可能需要归一化。
  • 如果您用国际象棋方块表示棋子位置层,您应该像长颈鹿一样进行归一化。
  • Giraffe 没有规范化 Piece Attack Defense Layer 可能它将信息表示为 the lowest-valued attacker and defender of each square。不幸的是,这篇论文没有明确说明这是如何完成的。您的实施可能需要规范化,因此请运用您的常识。

在没有任何事先假设哪些特征与模型更相关的情况下,您应该将它们归一化为可比较的比例。

已编辑

让我回答你的评论。归一化不是正确的术语,你说的是激活函数(https://en.wikipedia.org/wiki/Activation_function)。归一化和激活函数不是一回事。