gpt4 book ai didi

machine-learning - 我应该标准化神经网络中的输入吗?

转载 作者:行者123 更新时间:2023-11-30 08:46:35 26 4
gpt4 key购买 nike

首先一些背景信息。

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

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

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

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

它们看起来有点像这样:

第一层:

  • 剩余白棋子数量(0-8)

  • 剩余黑棋子数量(0-8)

  • 剩余白骑士数量(0-2)

  • 剩余黑骑士数量(0-2)

...

第二层仍与第一层处于同一水平:

  • Pawn 1 的位置(可能有 2 个值,x[0-7] 和 y[0-7])
  • 棋子 2 的位置

...

  • 皇后 1 的位置
  • 女王 2 的位置

...

第三层,与前两层位于同一层。数据只会在下一个抽象层之后“串扰”。

  • Pawn1 攻击的棋子的值(范围在 0-12 左右)
  • 被 Pawn2 攻击的棋子的数值

...

  • Bishop1 攻击的棋子值(value)

你明白了。

如果你不知道,这里有一个糟糕的 Paint 表达方式来表达我的意思:

Neural Net Representation

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

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

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

谢谢!

最佳答案

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

注意: 隐藏层是比抽象层更好的术语,因此我将使用它。

隐藏层之前的其他标准化是可选的,但建议使用。它还取决于我们正在谈论的输入

长颈鹿论文在第 18 页写道:

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

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

其他输入(例如棋盘上是否有皇后)是真还是假,因此不需要标准化。例如,Giraffe论文第18页写道:

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

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

回答您的问题

  • 如果您像 Giraffe 一样表示计件数层,则不需要标准化。但如果您更喜欢 [0..8] 中的离散表示(因为国际象棋中可能有 9 个皇后),您可能需要标准化。
  • 如果您用国际象棋方 block 表示棋子位置层,您应该像长颈鹿一样进行标准化。
  • Giraffe 不会标准化片断攻击防御层,它可能将信息表示为每个方格中值(value)最低的攻击者和防御者。不幸的是,该论文没有明确说明这是如何完成的。您的实现可能需要标准化,因此请运用您的常识。

如果没有任何事先假设哪些特征与模型更相关,您应该将它们标准化为可比的缩放比例。

已编辑

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

关于machine-learning - 我应该标准化神经网络中的输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42264684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com