所有文章 > 正文

盘点4种随机因子图模型学习算法

作者: 方展鹏

时间: 2019-06-14 14:13

随机因子图模型的学习算法相比于传统的因子图模型的学习算法,需要从抽样的子图G1, G2, ..., GN中学习出模型的参数θ,因此进行什么顺序对子图进行学习,按照什么策略对模型的参数进行更新,都是需要考虑的问题。

为此,本文提出了四种不同的学习算法对模型的参数进行学习。


批量学习算法

第一种学习算法是批量学习算法,算法的流程如算法4所示。该学习算法首先将抽样的子图平均分布到各个计算节点,然后每次迭代都将当前模型的参数θ独立地代入到各个子图当中,并行地计算出所有子图的梯度▽1, ▽2, ..., ▽N,最后根据这些梯度值,批量地对模型的参数θ 进行更新。


该算法有效地利用了并行计算的优势,将参数学习过程中计算量最大的边缘概率计算部分通过并行的方式进行提速。同时,该算法不需要大量的通信, 在每次迭代过程中,各个计算节点只需与主计算节点交换两次与模型参数θ大小同阶的信息,就能完成所需的信息交互。

信念更新学习算法

第二种学习算法是信念更新学习算法,算法的流程如算法5所示。该算法的思想是在进行LBP算法时,并非在每个抽样子图上独立地进行,而是依次在原始因子图G的某个局部,也就是抽样子图G1, G2, ..., GN上进行信念值的迭代计算。这样做的好处是在进行信念传递计算时,就利用到了各个子图的信息。举例来说,当在一个子图Gk 上进行信念传递的计算时,由于其信念值之前已经 在G1, G2, ..., Gk−1上进行了计算,因此也利用到了之前的子图的信息,从而得到更加准确的值。

而算法5则是对上面串行算法的一个并行化计算的改进,该算法把子图分成C组,每组中有B个子图,这样的话需要串行执行C次迭代,但是在每次迭代时都是并行地对B个子图的信念并行地进行计算,从而提高了计算的效率。


该算法的优势在于在计算信念时已经充分地利用了不同子图上的信息,在对一个抽样子图进行信念计算时,实际上也利用了其它子图上的信息,从而使得计算出来的信念值更加准确。但是该算法也有其劣势所在,就是在对于每组的子图进行完信念传递的计算之后,主计算节点和其余各个计算节点之间需要通信来更新各个顶点的信念值,交互的信息量和因子图的顶点数目同阶,明显大于批量学习算法的数据通信量。


基于块的随机批量学习算法

第三种学习算法是基于块的随机批量学习算法,算法的流程如算法6所示。

该算法的主体框架与批量学习算法类似,也是在每个子图上独立地执行LBP算法得出边缘概率,计算出在各个子图上的梯度,然后对参数θ进行更新。但是该算法与随机批量学习算法的区别在于它参照了随机梯度下降算法(Stochastic Gradient Descent)[45]的思想,不是批量地进行梯度的更新,而是将N个抽样的子图G1, G2, ..., GN看成N个训练样例,在每次迭代,将N个子图按照一个随机的顺序进行排列,在根据排列的第i个子图更新了参数θ之后,再将θ代入到第i + 1个子图上进行梯度的计算。根据[45],随机梯度下降法在训练样例的数目较多时, 其收敛速度要比批量更新快。

为了并行化地实现该算法,我们在主计算节点维护一个长度为N的子图顺序序列,设一共p个计算节点,编号为0, 1, ..., p − 1。我们在计算序列的第i个子图时,会将其分配到编号为i mod p的计算节点进行计算,并给它传递由前i p个子图更新得出的模型参数。

基于组的随机批量学习算法

第四种学习算法是基于组的随机批量学习算法,算法的流程如算法7所示。

该算法结合了批量更新的思路和随机梯度下降的思路。具体而言,该算法将N个子图G1, G2, ..., GN分成C组,然后将C组子图看成C 个训练样例,按照随机梯度下降的思想,在每次迭代将C组子图的顺序打乱,然后依次计算各组子图的梯度。在计算完一组子图的梯度之后,批量地对参数θ 进行依次更新,然后再将θ代入到下一组子图中进行计算。由于该算法具有批量更新的部分,因此并行化实现并不复杂,只需在对每组子图进行LBP算法和边缘概率计算时,将子图分布到各个计算节点上,进行并行计算即可。

[45] Bottou L, Bousquet O. 13 The Tradeoffs of Large-Scale Learning. Optimization for Machine Learning, 2011. 351

[关于转载]:本文为“AMiner”官网文章。转载本文请联系原作者获取授权,转载仅限全文转载并保留文章标题及内容,不得删改、添加内容绕开原创保护,且文章开头必须注明:转自“AMiner”官网。谢谢您的合作。






二维码 扫码微信阅读
推荐阅读 更多