玩遗传算法进化的神经网络的跳棋变得对输入数据变化过于敏感

数据挖掘 机器学习 神经网络 深度学习 过拟合 遗传算法
2021-10-12 23:48:55

我最近开始了一个非常雄心勃勃的项目,我不得不说它比我预期的要好得多,我成功地从头开始编写了一个神经网络,可以在非常可接受的水平下玩跳棋。

虽然我有一个问题阻止我拥有更强大的 AI,我想有些人会称之为过度拟合,我不确定这个术语在这种情况下是否正确。

主要问题是,经过一定数量的世代后,权重变得如此之大,以至于董事会状态的最小变化都会极大地改变对它的评估,从而有效地限制了任何类型的细微分析。

更多信息:

神经网络结构:

输入层是一系列独立的层,它们将电路板的一部分作为输入(1、0.5、-0.5 和 -1 是从电路板上获取的输入)。

我使用了 2 个隐藏层,每个隐藏层大约 30 个和 10 个节点,输出节点是对板的评估。

遗传算法

随机生成 30 个神经网络,权重从 -0.2 到 0.2,它们与随机对手进行 20 场比赛,并据此对它们进行评分(-2 分表示失败,-1 表示平局 [120 步没有赢家],1 分表示失败)一场胜利)。

保留 15 个最好的并将其复制/粘贴到 15 个最差的之上,然后使用以下等式对新网络的每个权重进行变异:

m=mer0.9

w=wmr

在哪里m是从 0.05 开始的特定权重的突变参数,r是一个随机标准高斯数,并且w是重量。

我希望这里有人可以帮助我弄清楚如何防止重量在 40 代左右后失控。

1个回答

完全披露,我根本不是遗传算法方面的专家,所以对此持保留态度。

首先,我不确定r参数输入w=wmr说得通。你说它是一个随机的标准高斯数,这意味着它可以完全改变w. 这似乎很糟糕。我理解正确吗?

除此之外,回答你控制失控权重的实际问题:我会在每次迭代后重新规范化权重,例如除以它的范数:w=w/||w||. 这将允许权重移动,但会防止它们爆炸。