cor*_*zza 25 artificial-intelligence machine-learning neural-network evolutionary-algorithm
我想升级我的进化模拟器以使用Hebb学习,就像这一样.我基本上希望小动物能够学习如何找到食物.我通过基本的前馈网络实现了这一点,但我仍然坚持理解如何使用Hebb学习.Hebb学习的基本原理是,如果两个神经元一起发射,它们就会连在一起.
所以,权重更新如下:
weight_change = learning_rate * input * output
Run Code Online (Sandbox Code Playgroud)
我发现的关于它如何有用的信息是非常稀缺的,我不明白.
在我当前版本的模拟器中,当一个生物吃掉一块食物时,动作和输入(动作,眼睛)之间的权重会增加,我无法看到它如何转化为这个新模型.在这里没有空间来判断它是否正确或错误,因为唯一的参数是输入和输出!基本上,如果一个输入激活一个方向的运动,无论该生物是否在吃东西,重量都会继续增加!
我是以错误的方式应用Hebb学习吗?仅供参考,我正在使用Python.
fra*_*xel 19
Hebbs law
是一个出色的见解associative learning
,但它只是图片的一部分.而且你是对的,按照你的方式实施,如果不加以控制,体重就会不断增加.关键是要添加某种形式的规范化或限制过程.Oja规则的维基页面很好地说明了这一点.我建议你做的是增加post-synaptic divisive normalisation
一步,这意味着你将权重除以收敛于同一突触后神经元的所有权重的总和(即收敛于神经元上的所有权重的总和固定在1
).
您可以通过构建利用的网络来完成您想要做的事情Hebbian learning
.我不太确定你输入到系统中的内容是什么,或者你是如何设置的.但你可以看看LISSOM
哪个是SOM的Hebbian扩展,(自组织地图).
在这种层中,通常所有神经元可以相互连接.您传入输入向量,并允许网络中的活动稳定下来,这是一些安定步骤.然后更新权重.您可以在训练阶段执行此操作,最后,输入空间中的关联项将倾向于在输出映射中形成分组活动补丁.
值得注意的是,大脑是大规模互联的,并且是高度递归的(即前馈,反馈,横向互连,微电路以及许多其他东西......).