我想升级我的进化模拟器以使用赫布学习,就像这个一样。我基本上希望小生物能够学会寻找食物。我已经通过基本的前馈网络实现了这一点,但我在理解如何使用赫布学习时遇到了困难。赫布学习的基本原理是,如果两个神经元一起激活,它们就会连接在一起。
因此,权重更新的方式如下:
weight_change = learning_rate * input * output
我找到的关于这如何有用的信息非常稀少,我不明白其中的道理。
在我的当前模拟器版本中,当生物吃到食物时,动作和输入(移动、眼睛)之间的权重会增加,我无法理解这如何转换到这个新模型中。因为这里只有输入和输出这两个参数,无法判断它做得对不对!基本上,如果一个输入激活了某个方向的移动,无论生物是否在吃东西,权重都会持续增加!
我是否错误地应用了赫布学习?仅供参考,我使用的是Python。
回答:
赫布定律
是关联学习
的一个绝妙见解,但它只是其中的一部分。你是对的,按照你所做的实现,如果不加以控制,权重只会持续增加。关键是要加入某种形式的归一化或限制过程。这在Oja规则的维基页面上有很好的说明。我建议你加入一个突触后分裂归一化
步骤,这意味着你要将一个权重除以所有汇聚到同一突触后神经元的权重之和(即,所有汇聚到一个神经元的权重之和固定为1
)。
你想要做的事情可以通过构建一个利用赫布学习
的网络来实现。我不太确定你传递到系统中的输入是什么,或者你是如何设置的。但你可以看看LISSOM
,这是SOM(自组织映射)的赫布扩展。
在这种类型的层中,通常所有神经元都可能相互连接。你传入输入向量,并让网络中的活动稳定下来,这需要一些稳定步骤。然后你更新权重。你在训练阶段这样做,训练结束时,输入空间中的关联项目倾向于在输出映射中形成分组活动区域。
还值得注意的是,大脑是高度互连和高度递归的(即,有前馈、反馈、横向互连、微电路,还有很多其他东西…)。