一种在线训练模型的方法和设备
技术领域
本申请涉及网络技术领域,特别是涉及一种在线训练模型的方法和设备。
背景技术
离线机器学习算法是利用批量离线数据训练模型,对很多应用来说,由于离线数据量很,大离线模型训练比较耗时。当完成离线模型训练时,模型往往已过期,无法捕获最新的数据变化。在线训练实时数据源源不断的进入在线训练系统,然后进行模型更新,能有效捕获最新的数据变化。
现有的在线算法有以下几种:
FTL算法(Follow The Leader):是一种经典的在线算法它的核心思想选择过去所有回合中累计损失代价和最小的策略:
FTRL算法(Follow The Regularized Leader):FTL算法对部分问题无效,其原因
是每次更新的ωt抖动太大,导致最终无法收敛。FTRL算法是FTL算法上的一个改进,在FTRL
算法中的损失函数中加入了Regularization来解决这个问题最小化R(ω)可把ω限定在一
个较小的空间。FTRL的更新方案是:R(ω)是
Regularization函数,不同的Regularization函数将给出不同的Regret上限。所述FTRL的
Regret上限为:
技术人员还提出了一种利用在线学习预测CTR(Click Through Rate,广告点记
率)的方法,实验数据表明该方法效果明显,其使用的算法是FTRL-Proximal算法(一种针对
CTR预测的应用探讨的机器学习演算法)来实现逻辑回归在线训练,其预测函数为FTRL-Proximal算法中的损失函数为L(p,y)=-y*log(p)-(1-y)*log(1-p)。
学习训练的目标函数为:
其中,g是L(p,y)的导数,即g=(p-y)x,定义根据实验经验一般设置a根据数据集设置。在上述目标函数中1范数用来产生稀疏解,强凸2范数产生较低的算法Regret时加入了每次更新不要离之前结果太远的约束,试验数据表明该方法比较有效。
在实现本申请的过程中,发明人发现现有技术至少存在如下问题:
FTRL-Proximal算法架构单机串序处理能力有限,远不能够满足海量实时数据训练学习的需求,如:淘宝众多实时推荐场景QPS(Query Per Second,一秒处理的请求的数量)都远超过其处理能力。并且,海量的实时数据有的具有分布不均匀的特点,QPS在不同时间段差别巨大,用于训练模型的正负样本比例在不同的应用场景中差别也很大,在买家和卖家中存在作弊行为,以上因素均会使得数据噪声较大,直接使用原始数据训练模型,实验效果并不好。
发明内容
本申请提供一种在线训练模型的方法和设备,利用Storm实时流式计算框架和参数服务器parameter Server架构,在原有算法基础上实现并行化,实现了超大规模数据的实时并行处理,有效提高实时在线学习推荐系统规模。
本申请提出一种在线训练模型的方法,其特征在于,所述方法包括以下步骤:
一种在线训练模型的方法,其特征在于,应用于包括多个处理器的系统中,所述方法包括:
所述处理器根据在线数据的正负样本,以及正负样本的不同权重得到流式的模型均值;
所述处理器将根据所述流式的模型均值得到处理结果发送到服务器,以使所述服务器对所述处理结果进行整合得到训练模型;
其中,所述多个处理器之间使用异步并行的处理方式对在线数据进行处理。
所述处理器根据在线数据的正负样本,以及正负样本不同的权重得到流式的模型均值,具体包括:
所述处理器根据在线数据的正负样本,以及正负样本不同的权重来得到目标函数;其中,正样本的权重大于负样本的权重;
所述处理器根据所述目标函数得到模型参数;
所述处理器将所述模型参数进行投影;
所述处理器根据投影后的模型参数得到流式的模型均值。
所述处理器根据所述目标函数得到模型参数,具体为:
所述处理器使用在线数据初始时刻的离线模型参数对所述目标函数进行初始化约束,以使所述处理器得到模型参数;或,
所述处理器使用在线数据初始时刻的离线模型参数对所述目标函数进行自适应离线约束,以使所述处理器得到模型参数。
所述处理器使用在线数据初始时刻的离线模型参数通过公式:
对目标函数进行初始化约束;
其中,为初始化函数;或,
所述处理器使用在线数据初始时刻的离线模型参数通过公式:
对目标函数进行自适应离线约束;
其中,为自适应性离线函数;
模型参数的初始值为0,所述ω0为在线数据初始时刻的离线模型参数。
所述处理器将所述模型参数进行投影,具体为:
所述处理器将t+1时刻的模型参数ωt+1投影到特定子空间,得到投影后的模型参数ωt+1,以使所述处理器对t+1时刻的模型参数ωt+1进行修正。
所述处理器使用t+1时刻的模型参数ωt+1通过公式:
将t+1时刻
的模型参数ωt+1投影到欧拉子空间内。
所述处理器根据投影后的模型参数得到流式的模型均值,具体为:
所述处理器通过t+1时刻的投影后的模型参数ωt+1得到t+1时刻的流式的模型均值,以使所述处理器根据t+1时刻的流式的模型均值对t+1时刻对相应的对象预测打分,并根据所述t+1时刻的流式的模型均值得到相应的处理结果。
所述处理器使用t+1时刻的投影后的模型参数ωt+1通过公式:得到t+1时刻的流式的模型均值;
其中,初始时刻的流式的模型均值W0为0。
一种处理器设备,其特征在于,应用于包括多个处理器的系统中,所述设备包括:
处理模块,用于根据在线数据的正负样本,以及正负样本的不同权重得到流式的模型均值;
发送模块,用于将根据所述流式的模型均值得到处理结果发送到服务器,以使所述服务器对所述处理结果进行整合得到训练模型;
其中,所述多个处理器之间使用异步并行的处理方式对在线数据进行处理。
所述处理模块,具体用于:
根据在线数据的正负样本,以及正负样本不同的权重来得到目标函数;其中,正样本的权重大于负样本的权重;其中,正样本的权重大于负样本的权重;
根据所述目标函数得到模型参数;
将所述模型参数进行投影;
根据投影后的模型参数得到流式的模型均值。
所述处理模块根据所述目标函数得到模型参数,具体为:
所述处理模块使用在线数据初始时刻的离线模型参数对所述目标函数进行初始化约束或自适应离线约束,以使所述处理器得到模型参数。
所述处理器将所述模型参数进行投影,具体为:
所述处理模块将t+1时刻的模型参数ωt+1投影到特定子空间,得到投影后的模型参数ωt+1,以使所述处理器对t+1时刻的模型参数ωt+1进行修正。
所述处理模块根据投影后的模型参数得到流式的模型均值,具体为:
所述处理模块通过t+1时刻的投影后的模型参数ωt+1得到t+1时刻的流式的模型均值,以使所述处理器根据t+1时刻的流式的模型均值对t+1时刻对相应的对象预测打分,并根据所述t+1时刻的流式的模型均值得到相应的处理结果。
本申请中在FTRL-Proximal算法基础上将多个处理设备实现并行化,实现了超大规模数据的实时并行处理,有效提高实时在线学习推荐系统规模,并对FTRL-Proximal算法提出了一系列的改进:1、采用模型参数投影子空间方法,克服异常数据对实时推荐的扰动;2、采用流式的模型参数均值而非最新参数值进行CTR预估的策略;3、有效的融入先验知识调节正负样本权重;4、将在线数据初始时刻的离线模型参数作为在线学习模型启动初始值,实现实时推荐热启动。通过上述几种优化方法更精确、高效描述大数据用户实时消费趋势与偏好。优化后的FTRL-Proximal算法具有较好的离线指标和在线性能表现。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对本申请或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中的一种在线训练模型的方法流程图;
图2为本申请实施例中的一种Parameter Server异步并行处理架构图;
图3为本申请实施例中的一种Parameter Server异步并行处理流程图;
图4为本申请实施例中一种处理器设备的结构示意图;
图5为本申请实施例中一种正样本权重对AUC的影响示意图;
图6为本申请实施例中一种负样本权重对AUC的影响示意图;
图7为本申请实施例中一种lambda3控制初始时刻的离线模型参数的权重对AUC的影响的示意图;
图8为本申请实施例中一种模型参数投影到欧拉子空间后对AUC的影响的示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的其他实施例,都属于本申请保护的范围。
本申请中利用Storm实时流式计算框架和parameter Server架构,在原有算法基础上实现并行化,实现了超大规模数据的实时并行处理,有效提高实时在线学习推荐系统规模。
如图1所述,为本申请实施例中的一种在线训练模型的方法流程图,所述方法应用于包括多个处理器的系统中,其中,所述多个处理器之间使用异步并行的处理方式对在线数据进行处理,所述方法包括以下步骤:
步骤101,所述处理器根据在线数据的正负样本,以及正负样本的不同权重得到流式的模型均值。
所述处理器根据在线数据的正负样本,以及正负样本不同的权重得到流式的模型均值,具体包括:
所述处理器根据在线数据的正负样本,以及正负样本不同的权重来得到目标函数;其中,正样本的权重大于负样本的权重;
所述处理器对FTRL-Proximal算法中的损失函数的正负样本赋予不同的权重,以使所述处理器根据所述损失函数得到更加准确的目标函数;其中,正样本的权重略大于负样本的权重。
原始的FTRL-Proximal算法中,正负样本的权重是一样的,虽然其对大数据经过预处理,但是,正负样本的比例差距还是比较大,在本申请中尝试给正负样本赋予不同的权重。由于正样本数据较少,尝试增加正样本的权重,减少负样本的权重,这个权重最终反映在FTRL-Proximal算法中的损失函数上,例如:FTRL-Proximal算法中的损失函数为其中,Si是样本权重。在本申请中优化后的FTRL-Proximal算法对FTRL-Proximal算法中的损失函数进行一阶泰勒展开,用负梯度表示损失,在本申请中把权重作用在梯度上。
本申请通过上述处理发现增加正样本的权重或减少负样本的权重会增加AUC(Area under the Curve of ROC(receiver operating characteristic curve,接受者操作特性曲线)ROC曲线下面积,曲线下部的面积总和被称为AUC,AUC常常做为模型参数优劣的评价指标,AUC值越大的分类器,说明其有效的区分随机选择的正样本和负样本的能力越高,正确率越高)的值,这与预期一致。正负样本权重对AUC的影响如图5和图6所示。
所述处理器获取在线数据的正负样本,并对正负样本赋予不同的权重来得到目标函数后,所述处理器根据在线数据的正负样本,以及正负样本的不同权重得到流式的模型均值,还包括:
所述处理器根据所述目标函数得到模型参数,所述方法具体包括:
所述处理器使用在线数据初始时刻的离线模型参数对所述目标函数进行初始化约束,以使所述处理器得到更加准确的模型参数。
由于在线训练还有冷启动的问题,因此可以考虑利用在线数据初始时刻的离线模型参数缓解冷启动,并在某种程度上对在线模型参数进行修正,实现利用在线数据初始时刻的离线模型参数的方法有两种:
方法一:
处理器在线数据初始时刻的离线模型参数放在优化后的目标函数中进行初始化约束,以使所述处理器得到更加准确的模型参数。
具体的,所述处理器使用在线数据初始时刻的离线模型参数通过公式:
对目标函数进行初始化约束;
其中,为初始化函数。
在本申请中,为优化后的目标函数添加初始化函数以使得到的模型参数不要偏离离线模型参数太远,此时,模型参数的更新公式为:
且z
的初始值为:z0,i=-λ3w0,i,这种方法验证有效,超参数lambda3控制初始时刻的离线模型参
数的权重对AUC的影响如图7所示。
方法二:
所述处理器使用在线数据初始时刻的离线模型参数对所述目标函数进行自适应离线约束,以使所述处理器得到更加准确的模型参数。
具体的,所述处理器使用在线数据初始时刻的离线模型参数通过公式:
对目标函数进行自适应离线约束;
其中,为自适应性离线函数。
在优化后的目标函数中添加上述自适应性离线函数,这个方法在训练过程中可以不断强化离线模型参数的约束,能够在新的数据变化趋势和离线模型参数之间平衡。
以上两种方法中,模型参数的初始值为0,所述ω0为在线数据初始时刻的离线模型参数;所述公式具体为:通过t时刻的模型参数ωt得到t+1时刻的模型参数ωt+1。
所述处理器在得到模型参数后,针对模型参数实时更新抖动较大的问题,所述处理器根据在线数据的正负样本,以及正负样本的不同权重得到流式的模型均值,还包括:
所述处理器将所述模型参数进行投影。
具体的,所述处理器将t+1时刻的模型参数ωt+1投影到特定子空间,得到投影后的模型参数ωt+1,以使所述处理器对t+1时刻的模型参数ωt+1进行修正。
具体的,所述处理器使用t+1时刻的模型参数ωt+1通过公式:
将t+1时刻的模型参数ωt+1投影到欧拉子空间内。
由于在线训练不能保证输入样本具有稳定的分布,数据噪音比较大,对模型稳定性和准确性有较大的干扰,并且,不同的投影半径,太小的半径使得模型表达能力不足,太大的半径和没有约束基本一样。在本申请中将模型参数投影到欧拉子空间后FTRL-Proximal算法有较快速的收敛性和较好的AUC指标,将模型参数投影到欧拉子空间后对AUC的影响如图8所示。
在得到投影后的模型参数后,所述处理器根据在线数据的正负样本,以及正负样本的不同权重得到流式的模型均值,还包括:
所述处理器根据投影后的模型参数得到流式的模型均值。
具体的,所述处理器通过t+1时刻的投影后的模型参数ωt+1得到t+1时刻的流式的模型均值,以使所述处理器根据t+1时刻的流式的模型均值对t+1时刻对相应的对象预测打分。
所述处理器使用t+1时刻的投影后的模型参数ωt+1通过公式:得到t+1时刻的流式的模型均值Wt+1;其中,初始时刻的流式的模型均值W0为0。
本申请中为了减少在线预测时模型参数的不稳定性,模型投影可按照原始算法进行,预测打分使用当前模型参数的流式的模型均值进行预测,采用流式数据求均值的方法计算当前模型的流式的模型均值。,其中Wt+1是t+1时刻的流式的模型均值,Wt是t时刻的流式的模型均值。本申请中使用特征流式的模型均值求下一时刻流式的模型均值,由于每个样本只包含一小部分特征,每个特征在样本出现的频率是不一样的,这样求得的均值使AUC平均有1.53%的提升。
步骤102,所述处理器将根据所述流式的模型均值得到处理结果发送到服务器,以使所述服务器对所述处理结果进行整合得到训练模型。
具体的,如图2所示的一种Parameter Server异步并行处理流程图,不同的处理器之间采用异步并行共同对在线数据进行处理,即不同处理器共同处理所有的在线数据,但是处理器之间在处理数据时是互不影响的,例如:处理器1在处理完当前的在线数据后会继续处理当前其他处理器没有处理的在线数据,处理器1不会等待其他处理器同样也完成了当前的在线数据后,一起再对当前其他没有处理的在线数据进行分配进行处理。
由于,所有的处理器会将处理结果发送给服务器,因此,在处理器处理完当前的在线数据后需要通过服务器获知当前在线数据还没有被其他处理器所处理的在线数据,具体的,所述服务器为Parameter Server,基于Parameter Server异步并行处理架构如图2所示,整个模型参数分为多个参数局部映像保存在Parameter Server中并被多个client机器共享;数据有多个client机器并行处理,每个client把自己的最新状态发送给ParameterServer,并从Parameter Server中获取全局的最新信息,共享的Parameter Server起到全局信息同步作用,client与client之间是完全异步操作。
其中,Parameter Server架构不是具体的算法,是一种异步并行算法架构,对于不同的应用需要设计不同算法。在FTRL-Proximal串行算法中,模型更新由如下两个步骤完成,步骤1:zt+1,i=zt,i+gi-σi*ωi,步骤2:其中,gi-σi*ωi是模型参数z的更新增量,是模型参数n的更新增量。在基于Parameter Server的并行算法中,如图3所示,本申请可以在Parameter Server中保存全局模型参数z和n(详见上文FRTL-Proximal串行算法伪代码),每个client并行异步处理不同的数据,得到不同的模型副本,然后把本地z和n的模型增量发给Parameter Server。Parameter Server收到client的增量后进行全局合并,然后把最新的全局模型发送给Client。在这个异步并行算法中各个client异步并行地处理不同的数据,得到不同的模型副本,各个client之间直接没有任何耦合,任意client的Crash都不会影响其它client正常运行,也不会影响整个模型的训练,这种架构是很鲁棒的。另外为了减少Client与Parameter Server之间的通信,为了平衡全局模型更新的实效性,每个client处理一批数据后才把模型增量同步到Parameter Server,批量数据的大小可以结合时间窗口和一个经验阈值进行设置,这样全局模型能够比较及时的更新,每个client也能比较及时的同步到其他client的更新信息,通讯量也得到控制。
本申请中在FTRL-Proximal算法基础上将多个处理设备实现并行化,实现了超大规模数据的实时并行处理,有效提高实时在线学习推荐系统规模,并对FTRL-Proximal算法提出了一系列的改进:1、采用模型参数投影子空间方法,克服异常数据对实时推荐的扰动;2、采用流式的模型参数均值而非最新参数值进行CTR预估的策略;3、有效的融入先验知识调节正负样本权重;4、将在线数据初始时刻的离线模型参数作为在线学习模型启动初始值,实现实时推荐热启动。通过上述几种优化方法更精确、高效描述大数据用户实时消费趋势与偏好。改进后的FTRL-Proximal算法具有较好的离线指标和在线性能表现。。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
基于与上述方法同样的申请构思,本申请还提出了一种在线训练模型的设备,应用于包括多个处理器的系统中,如图4所述,该设备包括:
处理模块41,用于根据在线数据的正负样本,以及正负样本的不同权重得到流式的模型均值。
发送模块42,用于将根据所述流式的模型均值得到处理结果发送到服务器,以使所述服务器对所述处理结果进行整合得到训练模型。
其中,所述多个处理器之间使用异步并行的处理方式对在线数据进行处理。
其中,所述处理模块,具体用于:
根据在线数据的正负样本,以及正负样本不同的权重来得到目标函数;其中,正样本的权重大于负样本的权重;
根据所述目标函数得到模型参数;
将所述模型参数进行投影;
根据投影后的模型参数得到流式的模型均值。
所述处理模块根据所述目标函数得到模型参数,具体为:
优选的,所述处理模块使用在线数据初始时刻的离线模型参数对所述目标函数进行初始化约束,以使所述处理器得到更加准确的模型参数。
所述处理模块使用在线数据初始时刻的离线模型参数通过公式:
对目标函数进行初始化约束;
其中,为初始化函数。
优选的,所述处理模块使用在线数据初始时刻的离线模型参数对所述目标函数进行自适应离线约束,以使所述处理器得到更加准确的模型参数。
所述处理模块使用在线数据初始时刻的离线模型参数通过公式:
对目标函数进行自适应离线约束;
其中,为自适应性离线函数。
其中,模型参数的初始值为0,所述ω0为在线数据初始时刻的离线模型参数。
所述处理器将所述模型参数进行投影,具体为:
所述处理模块将t+1时刻的模型参数ωt+1投影到特定子空间,得到投影后的模型参数ωt+1,以使所述处理器对t+1时刻的模型参数ωt+1进行修正。
所述处理模块通过公式:
将t+1时刻
的模型参数ωt+1投影到欧拉子空间内。
所述处理模块根据投影后的模型参数得到流式的模型均值,具体为:
所述处理模块通过t+1时刻的投影后的模型参数ωt+1得到t+1时刻的流式的模型均值,以使所述处理器根据t+1时刻的流式的模型均值对t+1时刻对相应的对象预测打分。
所述处理模块通过公式:得到t+1时刻的流式的模型均值;
其中,初始时刻的流式的模型均值W0为0。
本申请中在FTRL-Proximal算法基础上将多个处理设备实现并行化,实现了超大规模数据的实时并行处理,有效提高实时在线学习推荐系统规模,并对FTRL-Proximal算法提出了一系列的改进:1、采用模型参数投影子空间方法,克服异常数据对实时推荐的扰动;2、采用流式的模型参数均值而非最新参数值进行CTR预估的策略;3、有效的融入先验知识调节正负样本权重;4、将在线数据初始时刻的离线模型参数作为在线学习模型启动初始值,实现实时推荐热启动。通过上述几种优化方法更精确、高效描述大数据用户实时消费趋势与偏好。改进后的FTRL-Proximal算法具有较好的离线指标和在线性能表现。。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本申请的保护范围。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以集成于一体,也可以分离部署;可以合并为一个模块,也可以进一步拆分成多个子模块。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本申请的几个具体实施例,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。