在多线程训练神经网络时没有数据访问同步是正常现象吗?

我查看了经典的word2vec源码,如果我理解正确的话,在多线程训练神经网络时(针对矩阵syn0, syn1, syn1neg)并没有数据访问同步。这是正常的训练做法,还是一个bug?


回答:

可能出乎意料的是,这其实是正常的。关于这一点的开创性工作是2011年的’Hogwild’论文:

https://papers.nips.cc/paper/4390-hogwild-a-lock-free-approach-to-parallelizing-stochastic-gradient-descent

其摘要如下:

随机梯度下降(SGD)是一种在各种机器学习任务中能够达到最先进性能的流行算法。最近几位研究者提出了并行化SGD的方案,但所有这些方案都需要破坏性能的内存锁定和同步。本文旨在通过新的理论分析、算法和实现,展示SGD可以无需任何锁定地实现。我们提出了一种名为Hogwild的更新方案,允许处理器访问共享内存,并可能覆盖彼此的工作。我们展示了当相关优化问题是稀疏的,即大多数梯度更新只修改决策变量的小部分时,Hogwild能够达到近乎最优的收敛速度。我们通过实验证明,Hogwild的性能比使用锁定的替代方案高出一个数量级。

事实证明,SGD受到同步访问的影响比线程覆盖彼此工作的影响更大……而且一些结果甚至似乎暗示,在实践中,额外的“干扰”可能对优化进展有净收益。

Related Posts

为什么我们在K-means聚类方法中使用kmeans.fit函数?

我在一个视频中使用K-means聚类技术,但我不明白为…

如何获取Keras中ImageDataGenerator的.flow_from_directory函数扫描的类名?

我想制作一个用户友好的GUI图像分类器,用户只需指向数…

如何查看每个词的tf-idf得分

我试图了解文档中每个词的tf-idf得分。然而,它只返…

如何修复 ‘ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602]’?

我在制作一个用于情感分析的逻辑回归模型时遇到了这个问题…

如何向神经网络输入两个不同大小的输入?

我想向神经网络输入两个数据集。第一个数据集(元素)具有…

逻辑回归与机器学习有何关联

我们正在开会讨论聘请一位我们信任的顾问来做机器学习。一…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注