首先是一些背景。
我正在进行一个非常有抱负的项目,使神经网络能够以相当的水平玩国际象棋。我可能没有成功,但我主要是为了学习如何进行这种机器学习。
我决定在不同的神经网络在几场国际象棋比赛中相互争斗后,我想用遗传算法训练网络来微调权重。
每个神经元利用双曲正切(-1,1)在数据处理后对数据进行标准化,但在进入网络之前尚未对输入进行标准化。
我从长颈鹿国际象棋引擎中获得了一些灵感,特别是输入。
它们看起来有点像这样:
第一层:
剩余白色棋子数(0-8)
剩余黑棋子数(0-8)
剩下的白骑士数量(0-2)
剩下的黑骑士人数(0-2)
...
第二层仍与第一层处于同一水平:
...
...
第三层,再次与前两层相同。在下一层抽象之后,数据才会“串扰”。
...
你明白了。
如果你在这里没有一个可怕的Paint表示我的意思:
问题是:我应该在输入数据被神经网络读取之前对其进行标准化吗?
我觉得压缩数据可能不是一个好主意,但我真的没有能力做出决定性的电话。
我希望这里有人能够启发我的主题,如果你认为我应该对数据进行规范化,我希望你能提出一些方法。
谢谢!
答案 0 :(得分:1)
您不需要规范化内部网络中的任何内容。机器学习的重点是训练权重和偏见以学习非线性函数,在你的例子中它是静态的国际象棋评估。因此,您的第二个标准化蓝色垂直条(在最终输出附近)是不必要的。
注意: Hidden layers
是一个比abstraction layer
更好的术语,所以我会改用它。
隐藏图层之前的其他标准化是可选的,但建议使用。它还取决于我们正在谈论的输入。
长颈鹿论文在第18页写道:
“每个插槽都有标准化的x坐标,标准化的y坐标......”
国际象棋有64个方格,没有标准化,范围将是[0,1,...... 63]。这是非常离散的,范围远远高于其他输入(稍后更多)。将它们规范化为更易于管理且与其他输入相当的东西是有意义的。本文没有说它是如何完全标准化,但我不明白为什么[0 ... 1]范围不起作用。 规范棋方(或坐标)是有意义的。
其他输入,例如板上是否有王后是真还是假,因此不需要归一化。例如,长颈鹿论文在第18页写道:
......无论是存在还是缺席......
显然,你不会将其标准化。
回答您的问题
Piece Attack Defense Layer
可能它代表的信息为the lowest-valued attacker and defender of each square
。不幸的是,该文件没有明确说明如何做到这一点。您的实现可能需要规范化,因此请使用您的常识。如果没有任何先验假设哪些特征与模型更相关,则应将它们标准化为可比较的缩放。
<强> EDITED 强>
让我回答你的评论。规范化不是正确的术语,你所说的是激活函数(https://en.wikipedia.org/wiki/Activation_function)。规范化和激活功能不是一回事。