0

我正在寻找创造性的方法来加快我的神经网络的训练时间,并可能减少消失梯度。我正在考虑将网络分解到不同的节点上,在每个节点上使用分类器作为反向传播“助推器”,然后将节点堆叠在一起,每个节点之间的连接稀疏(在没有以太网的情况下,我可以尽可能多地逃脱)饱和使其毫无意义)。如果我这样做,我不确定我是否必须在节点之间保持某种状态并在同一个示例上同步训练(可能会破坏加速过程的目的),或者我可以简单地训练相同的数据但异步。我想我可以,并且权重空间仍然可以更新并沿着节点之间的稀疏连接传播,即使它们在不同的示例上进行训练,但不确定。

4

1 回答 1

2

可以按照您的建议去做,但是对于一个人来说,这是一项艰巨的工作。我知道的最新示例是“DistBelief”框架,由 Google 的一个大型研究/工程团队开发——请参阅http://static.googleusercontent.com/media/research.google上的 2012 NIPS 论文.com/en//archive/large_deep_networks_nips2012.pdf

简而言之,DistBelief 方法对神经网络中的单元进行分区,以便集群中的每个工作机器负责整个架构的一些不相交的子集。理想情况下,选择分区以最小化所需的跨机器通信量(即,通过网络图的最小切割)。

工作人员在本地为他们的网络部分执行计算,然后根据需要向其他工作人员发送跨越机器边界的链接的更新。

参数更新由单独的“参数服务器”处理。工作人员将梯度计算发送到参数服务器,并定期从服务器接收更新的参数值。

整个设置异步运行并且运行良好。由于计算的异步性质,给定计算的参数值可能是“陈旧的”,但它们通常不会太远。而且加速非常好。

于 2015-08-09T17:03:31.967 回答