并行计算

卷积层:计算量大,参数少

数据并行是把训练数据分成多份,在不同机器训练,然后参数更新到parameter server;
 
数据并行是指对训练数据做切分,同时采用多个模型实例,对多个分片的数据并行训练。要完成数据并行需要做参数交换,通常由一个参数服务器(Parameter Server)来帮助完成。在训练的过程中,多个训练过程相互独立,训练的结果,即模型的变化量ΔW需要汇报给参数服务器.数据并行有同步模式和异步模式之分。
全连接层:计算量小,参数多

模型并行会把模型分区,分配到不同的机器分别运行(按功能,层次),因为参数间存在依赖关系,需要调度器;

模型并行将模型拆分成几个分片,由几个训练单元分别持有,共同协作完成训练。当一个神经元的输入来自另一个训练单元上的神经元的输出时,产生通信开销。多数情况下,模型并行带来的通信开销和同步消耗超过数据并行,因此加速比也不及数据并行。但对于单机内存无法容纳的大模型来说,模型并行是一个很好的选择


数据并行的训练程序太多时,不得不减小学习率,以保证训练过程的平稳;模型并行的分片太多时,神经元输出值的交换量会急剧增加,效率大幅下降。因此,同时进行模型并行和数据并行也是一种常见的方案。
 
模型平均
 

   在这个场景中,我们有4个独立的worker,每个worker都有一个随机初始化的模型。为了简化情况,假设我们可以直接从损失函数E(θ)中获得梯度。在模型平均中,每个worker只在自己本地的local模型中应用梯度下降,而不与其他worker通信。在一个epoch结束之后,如中间的图所示,对这些模型进行平均以产生一个central model。在下一个epoch,central model将被用作所有worker的初始模型。

持续更新

http://blog.csdn.net/xiaoyezi_1834/article/details/51605048

https://www.cnblogs.com/ranjiewen/p/5938944.html

 
 

过拟合:http://blog.csdn.net/heyongluoyao8/article/details/49429629

原文地址:https://www.cnblogs.com/hozhangel/p/7891540.html