【问题标题】:Should the neurons in a neural network be asynchronous?神经网络中的神经元应该是异步的吗?
【发布时间】:2016-11-10 01:44:14
【问题描述】:

我正在设计一个神经网络,并试图确定是否应该以这样一种方式编写它,即每个神经元在 Erlang 中都是它自己的“进程”,或者我是否应该使用 C++ 并在一个线程中运行一个网络(我仍然会通过在自己的线程中运行每个网络的实例来使用我所有的内核)。

对于 Erlang 提供的异步神经元,是否有充分的理由放弃 C++ 的速度?

【问题讨论】:

    标签: machine-learning erlang neural-network artificial-intelligence


    【解决方案1】:

    我不确定我是否理解您要执行的操作。人工神经网络本质上由节点之间连接的权重表示。节点本身并不是孤立存在的。它们的值仅在给定输入时通过前向传播算法计算(至少在前馈网络中)。

    更新权重的反向传播算法绝对是可并行化的,但这似乎不是您所描述的。

    【讨论】:

    • 这更多地属于评论而不是答案。创建出色答案的提示:stackoverflow.com/help/answering
    • 在我正在阅读的一本书中,网络由一组神经元组成,每个神经元都是向其他神经元发送信号的 Erlang 进程。输出不是通过外部算法计算的,而是随着输入通过网络传播而计算的。 (参见 Erlang 神经进化手册)
    • @Joe 是的,Neuroevolution Through Erlang 是一本很棒的书,但是,主要缺失的一点是,Gene Sher 已经将这些 受生物启发的 TWEANN 类 ANN 但您忘记提及的是,除了基于权重的惩罚最小化器之外,它们还具有在拓扑“维度”中进化的能力。这是 Gene Sher 架构的一个重要特征。
    【解决方案2】:

    在神经网络 (NN) 中拥有神经元的用处在于,拥有一个多维矩阵,用于处理您想要处理的系数(训练它们、改变它们、一点一点地调整它们,以便它们适合很好地解决您要解决的问题)。在这个矩阵上,您可以应用数值方法(经过验证且有效),以便在可接受的时间内找到可接受的解决方案。

    恕我直言,使用 NN(即使用反向传播训练方法),目标是拥有一个在运行时/预测时和训练时都有效的矩阵。

    我不明白使用异步神经元的意义。它会提供什么?它会解决什么问题?

    也许您可以清楚地解释将它们异步解决什么问题?

    我确实在颠倒您的问题:您希望通过传统 NN 技术的异步性获得什么?

    【讨论】:

    • 经过进一步研究,似乎有一些主要好处是 A) 能够将系统扩展到任何规模(十亿个神经元无法在我的笔记本电脑上运行)B) 没有同步/心跳引导网络(例如尖峰神经网络)
    • 好的,但是拥有数十亿个神经元的巨大风险在于它只会过度拟合您的训练数据,并且不会泛化到您的领域 - 甚至没有考虑到训练这种模型的时间。我不明白你所说的同步/心跳是什么意思。我开始怀疑您是否确实在尝试对生物神经网络进行建模——这与机器学习/人工智能神经网络完全不同。
    • 第一段完全错误或写得很糟糕:NN 的用处在于您可以使用一些巧妙的数学技巧来实现它们?你确定这就是你想说的?我会说它们很有用,因为它们是很好的函数逼近器。
    • 是的,我坚持,这就是我真正想说的。例如,我说的是用于快速训练 NN 的 BackPropagation 技术。一旦神经网络被训练,那么是的,你得到你所指的函数逼近器(我称之为预测阶段),当然这是神经网络对产生结果有用的地方;-) 但是如果神经网络不能在合理的时间内训练,那么它们根本没有用处
    【解决方案3】:

    这取决于您的用例:神经网络计算模型和您的执行环境。这是 Plotnikova 等人最近的一篇论文(2014 年),该论文使用“Erlang 和平台 Erlang/OTP 以及预定义的参与者模型函数的基本实现”和作者开发的一个新模型,他们将其描述为“一个神经元 - 一个过程”使用“引力搜索算法”进行训练:

    http://link.springer.com/chapter/10.1007%2F978-3-319-06764-3_52

    简要引用他们的摘要,“本文开发了该算法的异步分布式修改并展示了实验结果。所提出的架构显示了具有不同环境参数的分布式系统(高性能集群和本地网络)的性能提升慢速互连总线)。”

    此外,这里的大多数其他答案都引用了一个使用矩阵运算作为训练和模拟基础的计算模型,本文的作者对此进行了比较,“这种情况下的神经网络模型[即基于矩阵运算]变得完全数学及其原始性质(来自神经网络的生物原型)迷失了”

    测试在三种类型的系统上运行;

    1. IBM 集群表示为 15 个虚拟机。
    2. 部署到本地网络的分布式系统表示为 15 台物理机。
    3. 混合系统基于系统 2,但每台物理机有四个处理器内核。

    他们提供了以下具体结果,“所呈现的结果证明了引力搜索的良好分布能力,特别是对于大型网络(801 和更多神经元)。加速度几乎线性地取决于节点数。如果我们使用 15 个节点,我们可以获得大约八倍的训练过程加速。”

    最后,他们总结了他们的模型,“该模型包括三个抽象级别:NNET、MLP 和 NEURON。这种架构允许在一般级别上封装一些一般特征,在特殊级别上封装一些特定于所考虑的神经网络特征。异步消息级别之间的传递允许区分训练和模拟算法的同步和异步部分,从而提高资源的使用。”

    【讨论】:

      【解决方案4】:

      这取决于你追求什么。

      第二代神经网络是同步的。它们在输入输出的基础上无延迟地执行计算,并且可以通过强化或反向传播进行训练。这是目前流行的 ANN 类型,如果您尝试通过机器学习解决问题,并且有大量文献和示例可供使用,则最容易上手。

      第三代神经网络(所谓的“Spiking Neural Networks”)是异步的。信号作为尖峰事件的连锁反应通过网络在内部传播,并且可以创建interesting patterns and oscillations depending on the shape of the network。虽然他们更紧密地模拟了生物大脑,但它们也是 harder to make use of in a practical setting

      【讨论】:

        【解决方案5】:

        我认为 NN 的异步计算可能证明有利于(识别)性能。事实上,结果可能与使用dropout 相似(可能不太明显)。

        但是异步 NN 的直接实现会慢得多,因为对于同步 NN,您可以使用线性代数库,它充分利用了矢量化或 GPU。

        【讨论】:

          猜你喜欢
          • 2017-02-19
          • 2016-09-02
          • 2017-09-11
          • 1970-01-01
          • 2017-05-21
          • 1970-01-01
          • 1970-01-01
          • 2016-09-08
          • 1970-01-01
          相关资源
          最近更新 更多