Closed. This question needs to be more
focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅关注
editing this post的一个问题。
2年前关闭。
Improve this question
我正在做一个简单的学习模拟,屏幕上有多种生物。他们应该使用简单的神经网络来学习饮食。它们有4个神经元,每个神经元都沿一个方向激活运动(从鸟类的角度看,它是一个2D平面,因此只有四个方向,因此需要四个输出)。他们唯一的输入是四个“眼睛”。当时只有一只眼睛可以 Activity ,并且基本上可以用作指向最近物体(绿色食物块或另一种生物)的指针。
因此,可以将网络想象成这样:
生物体看起来是这样的(在理论上和实际模拟中,它们都是眼睛周围的红色方块):
这就是它的外观(这是一个旧版本,眼睛仍然不起作用,但是很相似):
现在,我已经描述了我的总体想法,让我深入探讨问题的实质...
初始化 |
首先,我创造一些生物和食物。然后,将其神经网络中的所有16个权重都设置为随机值,如下所示:weight = random.random()* threshold * 2。阈值是一个全局值,它描述每个神经元激活(“发射”)所需的输入量。通常设置为1。 学习 |
默认情况下,神经网络中的权重每降低1%。但是,如果某个有机体实际上设法吃了东西,那么最后有效输入与输出之间的联系就会得到加强。 但是,这是一个大问题。我认为这不是一个好方法,因为他们实际上并没有学到任何东西!只有那些初始体重随机设定为有益的人才有机会吃东西,然后他们的体重才能增强!那些连接建立不好的人呢?他们只会死,不会学习。
如何避免这种情况?我想到的唯一解决方案是随机增加/减少权重,以便最终有人得到正确的配置,并偶然吃点东西。但是我发现这种解决方案非常粗糙和丑陋。你有什么想法?
编辑:谢谢您的回答!它们中的每一个都是非常有用的,有些则更相关。我决定使用以下方法:
将所有权重设置为随机数。 随时间减少权重。 有时会随机增加或减少体重。单位越成功,权重的改变就越少。新当有机体吃东西时,增加相应输入和输出之间的权重。