前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Self-building Neural Networks 代码

Self-building Neural Networks 代码

作者头像
CreateAMind
发布2023-09-13 20:47:09
2190
发布2023-09-13 20:47:09
举报
文章被收录于专栏:CreateAMind

https://github.com/ndr09/SBM

抽象:

在生命的第一阶段,大脑在通过称为突触发生的过程学习的同时发育。神经元相互生长和相互作用,形成突触。然而,最终大脑会修剪这些突触。虽然以前的工作侧重于独立学习和修剪,但在这项工作中,我们提出了一个生物学上合理的模型,由于Hebb学习和修剪的结合,旨在模拟突触发生过程。这样,在学习如何解决任务的同时,代理将其经验转化为特定的网络结构。即,网络结构在任务执行期间自行构建。我们称这种方法为自建神经网络(SBNN)。

我们将我们提出的SBNN与传统神经网络(NN)在OpenAI的三个经典控制任务上进行了比较。结果表明,我们的模型总体上比传统神经网络表现更好。此外,我们观察到在我们的模型中,随着修剪率的增加,性能衰减比NN更小。最后,我们执行验证测试,在学习阶段未见过的任务上测试模型。在这种情况下,结果表明SBNN比传统NN更能适应新任务,尤其是当超过80%的权重被修剪时。

概念

‧计算方法→神经网络;遗传算法;人工生命;‧计算理论→学习模型

关键词

神经网络、可塑性、修剪、神经进化

1简介

自然大脑是我们所知道的最复杂的系统之一。

它可以执行复杂的任务并以目前任何现代人工智能(AI)系统无法达到的效率适应新情况。这些性能源自一个持久的进化过程,该过程协调了大量在不同规模上起作用的不同元素。

例如,一些细胞必须通过交换三磷酸腺苷(ATP)为其他细胞提供能量。相反,其他分子用于调节细胞间通讯。在细胞水平上,干细胞必须专门分化为胶质细胞或神经元细胞。

最终,这些细胞生长并建立连接,构成我们的大脑。这个过程称为突触发生[44],然后是第二个过程,该过程修剪不太相关的突触[3,41]。人们认为,这个修剪阶段是大脑如此高效的主要原因之一[8,26,38]。

在这项工作中,我们关注最后一个方面:大脑神经元的生长和组织。具体来说,我们感兴趣的是将成长和组织与代理人在任务期间的经验联系起来,就像在自然大脑中发生的那样。为了模拟这个过程,我们结合了文献中两种众所周知的机制。

首先,我们考虑一个神经网络(NN),在其之上我们应用突触可塑性机制,该机制根据代理在任务期间的经验改变NN的突触。在这种情况下,我们采用HebbianLearning[5],这是一种从自然神经元中汲取灵感的与任务无关的可塑性模型。

其次,我们在我们的模型中包含了一种基于全局幅度算法[2,17]的修剪机制。然而,我们以这样一种方式修改该算法,以决定不仅要修剪多少(即多少突触),而且还决定何时修剪。

我们将生成的模型称为自建神经网络(SBNN),因为它能够根据智能体在其生命周期中感知到的经验来构建自己的结构。

我们在OpenAI的三个经典控制任务中测试了我们提出的SBNN,以展示该模型在性能方面的能力以及网络结构如何根据任务而不同。在一组单独的实验中,我们还评估了SBNN的泛化能力。

2相关工作

如前一节所述,我们的SBNN基于两种机制:可塑性和修剪。关于第一个,可塑性是一种局部学习机制,它调节神经元的生长及其对刺激的适应,它还负责记忆机制[36,43]。

一种生物学上合理的可塑性模型是Hebb模型[5,20],它源于这样一种直觉,即如果经常使用突触,则应该加强它。换句话说,如果突触前神经元更频繁地激活突触后神经元,则连接将变得更相关[6]。基于这个想法,已经开发了不同的赫布模型[9,12,40,42]。在这里,我们特别考虑所谓的ABCD模型,该模型已被证明可以有效地优化多个控制任务中的代理[10、29、34、35、39]。

另一方面,修剪是一个更高层次的过程,它对认知发展至关重要。例如,据估计,在青春期,人类会失去大约40%的突触,而不会降低记忆力或认知能力[3]。

在AI社区中,修剪最近在尝试提高性能和鲁棒性方面引起了很多关注,特别是在深度神经网络[7、14–16、22、27、31]的背景下。此外,其他一些工作已经收集了可塑性这一事实的证据

可以有效地被视为隐式修剪的一种形式,特别是在突触连接可以通过这种方式使它们的值饱和以获得权重的准二元掩码的情况下[10、25、32、33]。然而,在这些作品中,没有采用明确的修剪机制。

3方法

如前所述,我们的目标是构建一个可以模拟突触发生过程的网络。在本节中,我们将介绍该网络的结构及其行为。然后,我们简要描述了我们实验中使用的优化过程和经典控制任务。我们使用这些环境来衡量所提出的SBNN的性能,并证明它们如何在手头任务期间(并取决于)改变其结构。

3.1Hebbian学习Hebbian

3.2剪枝机制

3.3自建神经网络

代码:https://github.com/ndr09/SBM

依赖:Software for Complex Networks

  • Release:
  • 3.2rc0.dev0
  • Date:
  • Apr 28, 2023

NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks. It provides:

  • tools for the study of the structure and dynamics of social, biological, and infrastructure networks;
  • a standard programming interface and graph implementation that is suitable for many applications;
  • a rapid development environment for collaborative, multidisciplinary projects;
  • an interface to existing numerical algorithms and code written in C, C++, and FORTRAN; and
  • the ability to painlessly work with large nonstandard data sets.

With NetworkX you can load and store networks in standard and nonstandard data formats, generate many types of random and classic networks, analyze network structure, build network models, design new network algorithms, draw networks, and much more.

完整论文请阅读原文

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023/04/30 19:31:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CreateAMind 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档