Jos*_*ell 2 machine-learning neat biological-neural-network neural-network
我不了解 NEAT 算法如何获取输入,然后根据连接基因输出数字,我熟悉在固定拓扑神经网络中使用矩阵来前馈输入,但是,由于 NEAT 中的每个节点都有自己的数字连接数,并且 \xe2\x80\x99t 不一定连接到每个其他节点,我不\xe2\x80\x99t 理解,经过大量搜索,我可以\xe2\x80\x99t 找到 NEAT 如何根据输入。
\n\n有人可以解释它是如何工作的吗?
\n这也是我在实现我自己的算法版本时遇到的一个问题。
您可以在 NEAT 用户页面中找到答案:https://www.cs.ucf.edu/~kstanley/neat.html,其中作者说:
如何激活具有任意拓扑的网络?
激活函数 bool Network::activate() 给出了具体信息。当然,其实现与简单的分层前馈网络有很大不同。每个节点将前一个时间步的所有传入节点的激活相加。(该函数还处理特殊的“时间延迟”连接,但在我们发布的任何实验中,当前版本的 NEAT 均未使用该连接。)理解它的另一种方法是认识到激活不会一直从在单个时间步内从输入层到输出层。在单个时间步长中,激活仅从一个神经元传播到下一个神经元。因此,激活从输入到输出需要几个时间步长。如果你想一想,这就是它在真实大脑中的工作方式,信号到达你的眼睛需要一段时间才能到达皮层,因为它会经过多个神经连接。
因此,如果进化网络之一不是前馈的,则网络的输出将在不同的时间步长中发生变化,这在连续控制问题中特别有用,其中环境不是静态的,但在分类问题中也存在问题。作者还给出了这样的回答:
在针对分类问题获取输出之前,如何确保网络稳定?
廉价而肮脏的方法是连续激活 n 次,其中 n>1,并希望隐藏节点没有太多循环或长路径。
正确的(而且非常好的)方法是检查从一个时间步到下一时间步的每个隐藏节点和输出节点,并查看是否没有任何变化,或者至少在某个增量内没有变化。一旦满足这个标准,输出就必须稳定。
请注意,在某些情况下输出可能并不总是稳定。此外,对于连续控制问题,不要检查稳定性,因为网络永远不会“稳定”,而是不断对不断变化的环境做出反应。通常,稳定化用于分类问题或棋盘游戏。
| 归档时间: |
|
| 查看次数: |
2143 次 |
| 最近记录: |