APP下载

面向大规模数据主题建模的方差减小的随机变分推理算法

2018-08-28刘张虎程春玲

计算机应用 2018年6期
关键词:变分方差滑动

刘张虎,程春玲

(南京邮电大学计算机学院,南京210003)

(*通信作者电子邮箱lzh1562202171@163.com)

0 引言

潜在狄利克雷分配(Latent Dirichlet Allocation,LDA)[1]受到了越来越多的关注,它已被公认为是最成功的主题建模方法之一。LDA模型通过推断隐含变量的后验分布可以对文档进行分析和探索。标准的推理方法主要包括马尔可夫蒙特卡罗(Markov Chain Monte Carlo,MCMC)[2-3]和变分学习(Variational Learning)[4]方法。但是这些传统方法都是批次学习的框架,在每次迭代更新全局参数时,它们必须要访问整个语料库,因此在对大规模文本数据进行建模时,参数计算是十分困难的;这些传统方法也无法对以数据流形式输入的数据集进行在线处理,因为它们无法一次获取并存储整个数据集的数据。

为了解决这些困难,一些学者使用并行计算以加快LDA的推理过程。然而,并行计算需要配置并行硬件,对于数据通信来说代价是十分昂贵的。除了并行计算,一些学者试图将这些批量方法扩展为在线方法,使得它们适用于处理大规模数据和数据流形式的数据。Canini等[5]通过在线MCMC算法使用的先前分析的词,以简化主题分配的采样;Patterson等[6]开发了一个可扩展的MCMC算法,可以由渐近后验分布来产生样本。然而MCMC算法难以判断马尔可夫链的收敛性,且需要预先设置采样次数,这些问题在实际应用中都影响了算法的效率和准确性。Hoffman等[7]基于变分学习开发了一个用于LDA的在线变分贝叶斯算法,基于在线随机优化与自然梯度步骤,可收敛到变分贝叶斯(Variational Bayes,VB)目标函数的局部最优,它可以有效地分析以数据流形式到达的文档。为提高处理大规模数据集的效率,Hoffman等[8]在在线变分贝叶斯算法[7]的基础上提出了随机变分推理(Stochastic Variational Inference,SVI),使用随机优化来优化变分目标,对随机梯度进行噪声估计。它从数据中逐次推理子采样,分析子采样,并且以减小的学习速率更新参数。SVI现已被应用于许多类型的模型,包括主题模型[9]、统计网络分析[10]、过程因子分析[11]和高斯过程[12]等。但是由于大规模文本文档数据的高维,SVI从随机数据样本而不是从整个数据库计算得到随机梯度,随机梯度的噪声通常比较大,噪声使其偏离真实梯度,导致随机梯度和真实梯度的方差较大,因此算法的迭代过程可能需要花费大量时间,导致收敛变慢,性能变差。

针对SVI算法在处理大规模数据集时噪声影响收敛速度的问题,本文基于 SVI算法框架,提出方差减小的 SVI(Varience Reduced SVI,VR-SVI)算法,用于主题模型的参数推断。本文主要工作如下:1)为减小SVI算法中噪声的影响,采用滑动窗口的方法处理随机采集的数据集,针对滑动窗口重新计算随机梯度中噪声项的值,并以新的噪声项来构建新的随机梯度,得出全局变分参数的更新规则;2)给出分析VRSVI算法中随机梯度方差减小的过程,证明VR-SVI算法的有效性,同时分析算法的收敛性;3)在大型语料库上进行实验,验证算法方差减小的效果,并评估滑动窗口大小对算法的影响,在此基础上进一步作对比实验,比较分析VR-SVI算法和现有的算法性能。

1 相关工作

随机变分推理扩展了变分推理算法,使复杂的概率模型适用于分析海量数据集,其主要思想是使用随机梯度优化,通过重复地对数据子采样产生带有噪声的梯度来迭代更新参数。针对该算法噪声导致随机梯度方差较大的问题,本文从随机优化的角度对相关解决方案进行调研。

随机优化中的平均梯度(Average Gradient,AG)[13]和随机平均梯度(Stochastic Average Gradient,SAG)[14]等方法能够取得更快的收敛效果,已成功应用在许多问题中。但是,AG和SAG并不能完全适用于SVI。首先,SVI更新是用前一个参数和新的噪声项的凸组合来更新变分参数,它具有将参数保持在可行空间中的特性;而AG遵循随机梯度序列的平均值,不具有这种特性。第二,SAG迭代更新全梯度中的子集项,需要存储迭代过程中的所有渐变梯度;而在SVI算法的大多数应用中,每个数据点都有一个目标梯度,若使用SAG,所需要的存储空间代价太大。受随机平均梯度的思想启发,Johnson等[15]在优化算法中提出一种随机方差减小梯度(Stochastic Variance Reduced Gradient,SVRG)的方法来减小随机梯度的方差,SVRG的主要思想是在原有单个样本的梯度计算中引入一个修正量,该修正量是由所有样本梯度的平均值组成的,和仅使用单个样本梯度的标准随机优化算法相比,修正后的梯度可以明显减小方差。与SAG不同的是,SVRG不需要存储目标函数的梯度,减小了内存开销。Xiao等[16]提出一种新的近邻随机梯度法Prox-SVRG,将正则化项和损失函数分开考虑,保持正则化项不变,仅对损失项的梯度进行优化,利用SVRG方法,采用多阶段方案逐步减少随机梯度的方差,但是该方法和SVRG一样,仍需要用全梯度来修正单个样本梯度,从而迭代过程中不得不多次遍历所有样本,虽然减小方差的效果明显,但和批处理算法一样,需要大量的计算时间。朱小辉等[17]在SVRG的基础上考虑求解非光滑损失问题随机优化算法COMID(Composite Objective MIrror Descent)的方差减小问题,在COMID中引入减小方差的策略,得到一种随机优化算法α-MDVR。相比SVRG,α-MDVR每次迭代时只使用部分样本来修正梯度,因此虽有更快的实际收敛速率,但是其方差的减小效果却达不到SVRG中使用全部样本时的效果。Reddi等[18]探索了SVRG方法应用于求解非凸优化问题的情况,证明了对于非凸优化问题,SVRG非渐近收敛速率可以比随机梯度下降(Stochastic Gradient Descent,SGD)更快,并在非凸问题的子类上分析出SVRG可以线性收敛到全局最优。

另外,通过其他优化方法也可平滑随机梯度中的噪声,减小随机梯度方差,从而加快算法的收敛过程。Ouyang等[19]采用动量项来平滑随机梯度的噪声,并提出在线LDA的扩展形式,即动量在线LDA(Momentum Online LDA,MOLDA)。动量是以前迭代过程的梯度的加权和,每一个随机梯度都包含了采样所得到的样本信息,这样加权和就可以包含整个数据集所有信息,同时可以用动量参数来控制不同随机梯度的权值,最终可使得全局变分参数达到局部最优解。但是这种方法的动量参数是固定常量,无法随着迭代过程根据样本对随机梯度的权值做出相应调整,这会限制其收敛速度。Wang等[20]提出了一个方差减小随机梯度优化(Variance Reduction for Stochastic Gradient Optimization,VRSGO)总体框架来处理随机梯度优化算法中的噪声,它是一个解决普遍存在于不同模型的所有随机梯度优化算法中的噪声梯度问题的通用方法。VRSGO使用低阶信息来构建控制变量,然后使用这些控制变量来减小随机梯度的方差。虽然VRSGO可以减小方差,但是其前提是需要构建合适的控制变量,如果构建的控制变量难以计算的话,这种方法会使每次迭代计算的代价变得很高。

2 改进算法VR-SVI

首先介绍应用于LDA模型的传统的批次变分推理方法[1]以及 Hoffman等[8]提出的 SVI算法,并对其过程进行分析,然后在SVI的基础上提出本文的改进算法VR-SVI。

2.1 用于LDA的批次变分推理

LDA模型中,词的生成过程如下:首先从一个Dirichlet分布得出主题下词的分布βk~Dirichlet(η)。然后对于每个文档D,可采样文档中的主题分布θd~Dirichlet(α),对于文档中的每个单词,生成词的主题zd,n~ Multinomial(θd),从主题中生成单词 wd,n~ Multinomial(βzd,n)。该模型具有以下联合概率分布:

其中:β是全局参数;θ和 z是局部参数。将最小化散度KL((q(β,θ,z))‖(p(β,θ,z,w))) 转化为最大化 L(q(β,θ,z)),使用期望最大化(Expectation Maximization,EM)算法求解 L(q(β,θ,z)) 中的参数,L(q(β,θ,z)) 被称为证据下界(Evidence Lower BOund,ELBO),且有:

在每次EM迭代中,首先对于语料库的每个文档,迭代更新局部变分参数,获得每个文档最优的Φ和γ,更新规则如下:

然后更新全局变分参数λ,更新规则如下:

2.2 用于LDA的SVI

传统的批次变分算法必须在更新全局变分参数之前先计算所有文档的局部变分参数,这导致对大规模文档和在线文档流的计算量会非常大。Hoffman等[8]提出的随机变分推理方法使用随机梯度下降算法加快LDA模型的变分推理过程,具体方法如下:对于第t次EM迭代,随机采集语料库的样本Bi{1,2,…,D}。对于样本 Bi中的每个文档,按照式(3)、(4)迭代更新局部变分参数Φ和γ,然后计算出全局变分参数λ的随机梯度,计算式如下:

其中M是样本中文档的数目。为方便说明,令:

最后计算全局变分参数λ,给定一个减小的学习率ρt<1,可得到λ的更新规则:=+。

2.3 VR-SVI算法

随机变分推理在每次迭代时,只采集语料库的部分文档来对参数进行计算,这提高了算法效率,相比传统的变分推理方法,随机变分推理更适用于大规模数据以及在线数据的分析。然而使用该方法时需要考虑样本的大小,如果太小,样本中包含的信息相对整个数据集的信息太少,这会导致随机梯度产生较大的噪声;如果太大,则会导致随机变分推理向批次变分推理靠近,需要遍历较大的样本空间,失去其快速运算的优势。由于向随机梯度中引入了噪声,随机梯度具有较大的方差,可能导致算法花费大量时间跳转,使算法收敛变慢,甚至可能收敛到坏的解。为减小噪声影响,本文提出一种方差减小的随机变分推理(VR-SVI)算法,引入滑动窗口的概念,在迭代过程中采用滑动窗口方法降低随机梯度的噪声,减小随机梯度的方差,使得随机梯度的方向和值尽可能接近真实梯度,从而提高随机变分推理算法的性能。

定义1 单位数据Bt。对原始数据集进行分组,随机采样的每组数据Bt={d1,d2,…,dM}作为一个单位数据。

定义2 滑动窗口SW。对于正整数R(R∈N*),文档集D={B1,B2,…,BR}进入到窗口大小为R的窗口SW中,窗口每次迭代时会向前移动1个单位数据大小的位置,该窗口SW即为滑动窗口。

由2.2节对SVI过程的描述可知,由于SVI算法采取随机采集部分样本来更新局部变分参数的方式,使得随机梯度噪声较大,具体表现为式(6)中的噪声项。不同于传统批次变分推理重复使用所有样本来计算随机梯度,SVI算法在每次迭代时,采集部分样本计算随机梯度,在更新全局变分参数后,只使用一次的样本会被丢弃,这使随机梯度偏离真实梯度。本文使用滑动窗口SW保留迭代采集的样本,对于t次迭代,当 t≤ R 时,Bt进入窗口 SW,D={B1,B2,…,Bt} 直到构成滑动窗口SW;当t>R时,将滑动窗口SW的最左边t-R项单位数据移出,新采集的Bt进入滑动窗口,构成新的滑动窗口数据集。在保持随机变分推理高效率的同时,扩大用来计算噪声项所包含的样本信息。

当滑动窗口SW保留过去采集的样本信息后,便可使用滑动窗口中各单位数据噪声项的加权和,取代当前迭代的单位数据的噪声项。由于每个数据单位都是随机采集,且在原始数据集中,它们各自的状态都是相同的,可对滑动窗口内各数据单位的影响同等看待,因此各噪声项的权重均取1/R,计算得到新的噪声项的值,其计算公式为:

由式(8)可以看出,相比SVI,滑动窗口变相扩大了样本信息,以此改进噪声项的计算方法,可以减小随机梯度的噪声,使采用滑动窗口计算得到的噪声项更加接近批次变分推理中的值,噪声变小使得该随机梯度相较于SVI算法会更偏向真实梯度,随机梯度的方差相比SVI也会减小,最终算法收敛速度会变快;而且当滑动窗口后移时,窗口样本信息相应改变,下一个噪声项的计算包含了上一次采集的样本信息,这使得噪声得以平滑。

为避免重复计算滑动窗口每个单位数据的噪声项,而导致的时间复杂度的增加,VR-SVI算法可以在每次迭代时,存储当前Bt的噪声项用于下次迭代计算,所以算法需要花费滑动窗口大小的空间代价来存储窗口中单位数据的噪声项。VR-SVI算法的伪代码如算法1所示。

算法1 VR-SVI算法。

输入 原始数据集的文档数目D,样本B的文档数目M,学习率ρt,超参数α和η;

输出 局部变分参数Φ和γ,全局变分参数λ。

初始化λ(0)、α和η,迭代计数变量t=0,学习率ρt,滑动窗口队列SW,窗口大小R

Repeat

从数据集中随机采样M篇文档

Bt={1,2,…,M}

If t<R

滑动窗口SW←SW+Bt

Else

SW ← SW - SWt-R

SW←SW+Bt

初始化 γd,k=1,k ∈ {1,2,…,K}

Repeat

For d ∈ Bt,且 n ∈ {1,2,…,N}

使用式(4) 计算 γd,k

Until局部变分参数Φ和γ收敛

For k∈ {1,2,…,K}

If t<R

Else

Until全局变分参数λ收敛

3 算法分析

本章首先分析本文提出的算法可在SVI基础上实现随机梯度方差减小的目标。其次,由于滑动窗口大小需要手动取值,本章从算法角度分析R值大小对算法的影响,并在下面用实验来详细描述其对算法的真实影响。最后,根据滑动窗口内样本数据的交叉情况,对算法收敛性进行分析。

3.1 方差减小分析

由式(8)、(10)、(12) 可以得到:

将式(13)中的项展开得到:

由于滑动窗口的R次迭代中,SVI中随机梯度的方差变化极小,可看作不变,E[(-)2] =E[(-)2]。可得:

结合式(13)、(15)、(17),则有:

由以上推理过程可以得知,本文提出的VR-SVI算法中随机梯度与全梯度的方差是SVI算法的1/R,与真实梯度的方差也小于SVI算法中的方差,这表明本文提出的方法可达到减小方差、快速收敛的目的。

3.2 R值大小的影响分析

对于R值的取值,若R=1,意味着VR-SVI算法中滑动窗口中的数据和SVI算法每次迭代时采集的样本数据相同,那么VR-SVI算法随机梯度的方差相比SVI没有减小;若R>1,算法的方差将会减小,由式(17)可以看出,随着R值的增大,VR-SVI算法的方差减小效果越好;当R增大到一定数值时,由于样本包含信息增多,方差减小的效果将到达一个瓶颈。另外,由算法过程可以看出R值的增大并未使得算法的时间复杂度增加,但算法需要存储最近的值来计算平均值,所需存储空间会随着R值的增大而增大。

为进一步选取确定窗口大小R值,根据式(18)计算得到平方偏差(Square Bias,SB)、方差(Variance,VAR)和平方误差(Square Error,SE):

其中:平方偏差通常随着R值增大而增加。因为该偏差可以保持R次迭代的记忆,所以能显示复杂的时间演变,如果在平滑梯度上失去其对初始状态的记忆,则通常带有较大偏差。通常在迭代R次后,方差会变得近似平稳。平方误差的值则恰好是平方偏差和方差之和的近似值。由于平滑梯度的长时间记忆,可以将“惯性”与R值相关联。R值越大,VAR越小,其惯性越大。而在一个非局部最优化的优化设置中,惯性太多是有害的,会有最终陷入局部最佳状态的危险。在涉及LDA典型参数K=102和V=104情况下,权衡以上三个指标,选择100以内的R值可产生最小的均方误差。

3.3 收敛性分析

LDA模型目标函数是非凸的,本文提出的VR-SVI算法是基于用于LDA模型的SVI算法改进而来,需要判定算法是否能收敛到最优解。由式(10)可以看出,VR-SVI算法的随机梯度和SVI算法中的随机梯度相比,变化的是噪声项。在特殊情况下,它可以用来近似SVI算法中的期望值,如果滑动窗口中的单位数据都是对完全不相交的文档进行采样,那么VR-SVI算法的随机梯度与SVI使用R×M尺寸样本得到的随机梯度没有差别,即E[]≈E[],则有E[]=E[-+ η +]≈E[-+η+=E[]。给定学习率ρt,算法可以收敛到最优解[7]。而在一般情况下,如果滑动窗口中的数据存在采集样本交叉的情况,由4.1节可知,VR-SVI算法采用平均噪声项的方法可平滑SVI算法的噪声影响,随机梯度方差减小,即E[(- gt)2]≤E[(- gt)2],给定学习率ρt,算法同样可以收敛到最优解,由于噪声平滑后的随机梯度可以更接近真实梯度,算法的收敛速度会更快。

4 实验与结果分析

本章对提出的VR-SVI算法的性能进行实验验证。首先,在文档集上验证本文提出方差减小算法的有效性,并与SVI算 法[8]、Prox-SVRG 算 法[16]以 及 mini-batch SVRG 算法[18]作对比;其次,分析R值的不同取值对算法性能的影响,并讨论如何选取R值;最后,对LDA模型分别应用VR-SVI、SVI、Prox-SVRG和mini-batch SVRG算法,在大型文档集上评估算法性能。本文实验中所涉及的参数设置利用了相关文献[8,16,18]中的实验结果,选择目标函数下降最快的一组参数作为本文的实验参数,具体在以下实验中给出。

实验环境为4个节点组成的Hadoop集群,每个节点配置为Intel i5 1.8 GHz CPU、4 GB内存和500 GB硬盘。节点之间通过千兆交换机相连,运行Ubuntu 16.04.3 LTS和 Apache Hadoop 2.6.0。基于MapReduce并行计算框架设计并实现了VR-SVI算法,算法的处理步骤如下:

1)为各个数据点分配文档,该过程的并行化由Map函数执行。Map函数的输入输出的数据格式分别为〈文档序号,局部参数〉和〈窗口序号,噪声项〉。运行过程中Map函数通过计算得到基于收敛的局部参数的噪声项,输出结果。

2)计算各个数据点的均值来更新噪声项,该过程的并行化由Reduce函数执行。Reduce函数输入输出的数据格式为〈窗口序号,噪声项〉和〈窗口序号,全局参数〉。在运行过程中Reduce函数把数据按照其被分配的窗口进行整合,使得属于同一窗口的数据被同一个Reduce函数接收,然后计算噪声项的均值,进而得到全局参数。

Map-Reduce算法内容如下。

VR-SVI::Map(each mapper)。

输入 样本B的文档数目M,超参数α和η;

输出 键值对〈窗口序号,噪声项〉。

随机采样M篇文档

Repeat

For d ∈ Bt,且 n ∈ {1,2,…,N}

使用式(4) 计算 γd,k

Until局部变分参数Φ和γ收敛

For k∈ {1,2,…,K}

VR-SVI::Reduce(each reducer)。

输入 键值对〈窗口序号,噪声项〉;

输出 键值对〈窗口序号,全局参数〉。

For窗口序号相同的键值对〈窗口序号,噪声项〉

实验数据集存放在分布式文件系统中,两个数据集均可以从UC Irvine Machine Learning Repository网站获得,下载地址 为 http://archive.ics.uci. edu/ml/machine-learningdatabases/bag-of-words/。表1给出文档集的详细信息。

表1 文档集描述Tab.1 Document set description

4.1 方差减小效果对比实验

本实验的目的是验证VR-SVI算法的实际方差减小效果,并与 SVI、Prox-SVRG以及 mini-batch SVRG算法进行对比。算法中的样本Bi的大小设置为M=300,主题数设置为K=100,超参数α =0.5,η =0.01,学习率固定为ρ=10-3。3种算法方差比较的结果如图1所示,横坐标表示算法的迭代次数t,纵坐标表示算法的方差var,即每次迭代时所用梯度与真实梯度之间差值的平方,图中结果是每个算法运行10次得到的平均值,VR-SVI(10)、VR-SVI(20)和VR-SVI(30)分别表示R值为10、20和30的VR-SVI算法。

由图1可以看出,VR-SVI算法的方差减小程度明显优于SVI和mini-batch SVRG算法,但比Prox-SVRG算法的方差减小效果要差。同时,随着R值的增大,VR-SVI算法方差减小的效果超过mini-batch SVRG,更接近Prox-SVRG算法,原因是Prox-SVRG算法每次迭代时都是使用全部样本计算梯度的,而VR-SVI算法每次迭代时只是使用窗口中的样本计算梯度,减少了计算次数,不过随着R值的增大,窗口内的样本数量增加,其计算得到的梯度更加接近真实梯度,方差减小的效果也会越好。

图1 算法方差减小比较Fig.1 Comparison of algorithms on variance reduction

4.2 R值对算法的影响

由于VR-SVI算法是基于滑动窗口计算随机梯度,R值的变化对应滑动窗口大小的变化,本实验在两个数据集上研究R值的不同取值对算法实际性能的影响,提出对R值的合理设置。实验采取的算法性能评价指标是词汇似然度(likelihoodpw)[14,20-21],将文档集分为将数据集划分成 10 份,每次是其中的4份作为训练集Dtrain训练模型,剩余的6份作为测试集Dtest检测模型性能。再将测试集平均分为wd1和wd2两个部分。对数据集进行交叉验证,执行10次,计算wd2中在wd1和Dtrain条件下词的预测对数似然,取平均值。对wd1有较好的预测分布应该能够给出对wd2更高的对数似然,意味着算法性能更好。likelihoodpw计算方法如下:

其中:|wd2|表示wd2中的词汇数量。对p(wd2|wd1,Dtrain)的估计如下:

不同R值的VR-SVI算法的likelihoodpw变化如图2所示。其中,由3.2节的分析,R值分别取100内的5个数值,算法在两个数据集上有效运行时间的最大值设为10 h,纵坐标表示likelihoodpw的值。

图2 不同R值的likelihoodpw变化趋势比较Fig.2 Comparison of likelihoodpwvariation trend with different R values

由图2可以看出,在两个数据集上可以观察到非常相似的趋势,较大的R值表现优于较小值。对于Wikipedia,R=30和R=60时,likelihoodpw的值最大,两者表现几乎相同;对于New York Times,R=30和R=60时,likelihoodpw的值的分数较大,且明显超过其他R值的表现。随着R值增大,算法达到收敛的运行时间也在变长。事实上,在每次迭代中,VR-SVI的随机梯度实际上由R×M文件生成。随机梯度的质量主要取决于这些文件与整个语料库之间的信息差异,这种差异可用词频来大致地评估,每个词的词频等于其数目除以出现的词的总数。表2显示了在随机迭代中,Wikipedia中不同R值的五个随机词的单词频率,可以发现在R=30和R=60时的单词频率接近真实值,R=30和R=60时的差异明显小于其他R值的差异,这种情况也和在Wikipedia上实验的结果相近。考虑到R=60时,算法花费的时间以及空间代价相对较大,可以选取R=30作为4.3节实验的参数设置。

表2 Wikipedia中不同R值的五个随机单词的词频 %Tab.2 Word frequencies for five random words with different R values in Wikipedia %

4.3 算法性能比较

本节在大型文档集上对比 VR-SVI、SVI、Prox-SVRG和mini-batch SVRG算法性能。由4.2节可得,VR-SVI算法中R值设置为30,实验采取的算法性能评价指标是likelihoodpw,实验的其余参数M=300,主题数为K=100,超参数α =0.5、η =0.01,学习率固定为ρ=10-3。每个算法应用于LDA主题模型,各运行10 次,取平均值。图3为VR-SVI、SVI、Prox-SVRG及mini-batch SVRG算法在LDA模型中运行的性能likelihoodpw随时间变化的趋势。

图3 不同算法的likelihoodpw变化趋势比较Fig.3 Comparison of likelihoodpwvariation trend of different algorithms

由图3可以看出,相比SVI和mini-batch SVRG,VR-SVI的likelihoodpw值在所有情况下都明显比较大;对于Prox-SVRG,VR-SVI的likelihoodpw值很接近,这表明本文所提的算法对平滑SVI中随机梯度的噪声有积极的影响,其性能接近于使用全梯度来修正单个样本梯度的Prox-SVRG算法,实现了更好的性能。而且由两个数据库上得到的likelihoodpw的变化趋势可以看出,VR-SVI能够比其他算法更快地收敛。对于Wikipedia语料库,VR-SVI在约2 h后收敛,但是SVI在约4 h后才收敛,mini-batch SVRG和Prox-SVRG在约3 h后收敛;对于New York Times语料库,VR-SVI约2 h后收敛,但SVI、Prox-SVRG和mini-batch SVRG均在约4 h后才开始收敛。总的说来,本实验进一步验证了,相比SVI、Prox-SVRG以及mini-batch SVRG算法,VR-SVI算法能够有效地减少随机梯度的噪声,并且获得更快的收敛速度,其拥有更好的综合性能以及更高的效率。

5 结语

针对主题模型处理大规模文档应用中平滑噪声并达到快速收敛的目标,本文基于随机变分推理的思想提出了一种可以减小梯度方差的算法VR-SVI,该算法设置了一个滑动窗口,主动平滑随机梯度的噪声,为算法中随机梯度的构建和全局变分参数的更新提供了一个新思路。在处理随机梯度的噪声时,该算法兼顾了方差减小的效果和算法的效率,从而使得算法能够达到快速收敛,提高算法性能。然而,VR-SVI算法为保证计算效率,在对随机梯度的噪声进行平滑时,需要保存滑动窗口中迭代得到的R个噪声项,虽有利于对随机梯度的重新计算,但导致少部分的内存占用。另外,本文仅在大规模数据集上对R值大小的影响进行了实验,如何快速有效地判定滑动窗口R值的大小也成为一个关键问题。因此,下一步的工作是研究更加高效的R值选取方式,使其能够针对数据集进行适应变化,并将所设计的方法用于主题模型处理大规模数据集上,检验其有效性。

猜你喜欢

变分方差滑动
用于弯管机的钢管自动上料装置
概率生成模型变分推理方法综述
概率与统计(2)——离散型随机变量的期望与方差
多项式变分不等式解集的非空紧性和估计
针对移动端设计的基于滑动响应方式的验证码研究
Big Little lies: No One Is Perfect
方差生活秀
揭秘平均数和方差的变化规律
方差越小越好?
工程师使用Matlab的变分方法