如何利用希伯来语学习?
artificial-intelligence
machine-learning
neural-network
4
0

我想升级我的进化模拟器以使用Hebb学习,就像这样一个 。我基本上希望小动物能够学习如何寻找食物。我通过基本的前馈网络实现了这一目标,但是我一直坚持了解如何通过Hebb学习来做到这一点。赫布学习的基本原理是,如果两个神经元一起发射,它们会连接在一起。

因此,权重是这样更新的:

weight_change = learning_rate * input * output

我所发现的有关如何有用的信息非常匮乏,我不了解。

在我当前的模拟器版本中,当生物吃掉一块食物时,动作和输入(运动,眼睛)之间的权重会增加,而我看不到如何将其转化为新模型。在这里根本没有空间可以判断它是对还是错,因为只有参数是输入和输出!基本上,如果一个输入激活一个方向的运动,无论生物是否在吃东西,重量都会不断增加!

我是否以错误的方式应用Hebb学习?仅供参考,我正在使用Python。

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

尽管作为一般概念的Hebbian学习构成了许多学习算法(包括反向传播)的基础,但您使用的简单线性公式却非常有限。权重不仅无限增加,即使网络已经学习了所有模式,网络也可以完美地仅学习正交(线性独立)模式。

线性Hebbian学习甚至在生物学上都不可行。生物神经网络比您的神经网络大得多,并且高度非线性,包括神经元和神经元之间的突触。在大型非线性网络中,您的图案接近正交的机会更高。

因此,如果您坚持使用神经网络,我建议在权重中添加神经元的隐藏层并引入非线性,例如权重建议,以及在激发神经元时-在这里,您可以使用S形函数,像tanh (是的,将负值用于“不点火”是很好的,因为它可以减轻重量)。以其广义形式,Hebbian规则可以表示为

weight_change = learning_rate * f1(input, weight) * f2(output, target_output)

其中f1f2是一些函数。在您的情况下,没有target_output ,因此f2可以忽略它。

为了使您的隐藏层中的神经元激发,从而在输入和输出之间建立联系,您可以将权重初始化为随机值。

但是神经网络真的有必要,甚至适合您的问题吗?您考虑过简单的相关性吗?我的意思是,赫布推导了他的规则来解释学习如何在生物系统中发挥作用,而不是作为最佳的机器学习算法。

收藏
评论

Hebbs lawassociative learning的绝妙见解,但这只是其中的一部分。而且您是对的,已按部就班地实施,并且不加选择地增加权重只会不断增加。关键是添加某种形式的规范化或限制过程。 Oja规则的Wiki页面对此进行了很好的说明。我建议您做的是在post-synaptic divisive normalisation步骤中添加,这意味着您将权重除以会聚在同一突触后神经元上的所有权重之和(即,所有权重在神经元固定为1 )。

您可以通过构建利用Hebbian learning的网络来完成您想做的事情。对于您作为系统输入传递的内容或设置方式,我不太确定。但是您可以看一下LISSOM ,它是SOM(自组织地图)的希伯来语扩展。

在这种类型的层中,通常所有神经元都可以互连。您传入输入向量,并允许网络中的活动稳定下来,这是一些稳定步骤。然后,您更新权重。您可以在训练阶段进行此操作,在此阶段的最后,输入空间中的关联项目将倾向于在输出映射中形成分组的活动补丁。

还值得注意的是,大脑是高度互连的,并且具有高度递归的功能(即,有前馈,反馈,横向互连,微电路以及许多其他功能。)

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号