基于梯度提升算法的极大规摸长尾多标签分类方法

文档序号:32165828发布日期:2022-11-12 04:30阅读:35来源:国知局
基于梯度提升算法的极大规摸长尾多标签分类方法

1.本发明涉及数据挖掘领域。更具体地说,本发明涉及一种基于梯度提升算法的极大规摸长尾多标签分类方法。


背景技术:

2.极大规模多标签分类作为数据挖掘领域的一个常见的任务,依赖于极大规模的多标签数据。随着大数据的不断发展,该场景广泛存在于现实世界中,比如对于维基百科中大量的词条,每个词条有来自于互联网的文字描述内容,而为了便于检索,这些词条往往会被打上多个标签,因此整个百科库中的标签数量往往会十分巨大;又比如在电商平台上,用户在购买商品时,也可以将用户购买过或浏览过的每一个商品认为是用户的标签,而电商平台中的用户量和商品量往往都十分巨大。在如此大规模的标签数量下,很难保证每个标签拥有相同的数据量用以模型训练。实际上在现实世界的数据中,很多情况下大量的标签会拥有少量的数据,在将标签拥有的数据量进行统计并排序后,可以观察到其呈现出长尾分布的性质,这些标签被称为尾部标签,相对应的,拥有大量数据的少量标签则被称为头部标签。
3.在过去数年中,研究人员已经对极大规模多标签分类任务进行了很多研究,大部分传统方法在尽可能保证速度的同时会尽可能地提升精度,但由于算法自身限制,精度的提升往往是有限的;而随着深度学习方法的出现,虽然损失了一部分速度,但算法的精度得到了大幅度的提升。虽然传统与深度算法各有其优势,但目前的大部分算法仍然更加关注头部标签的预测,而没有考虑到大量尾部标签的预测。然而在实际情况中,这些尾部标签的精准预测却往往更加重要,例如,一个用户可能会更希望被推荐到其感兴趣的冷门商品,而不是被推荐大量的热门商品。所以在这种情况下,一种能够在尽可能保证当前算法的精度和速度的同时,却能提升算法在尾部标签上精度的方法急需等待提出。


技术实现要素:

4.本发明的一个目的是解决至少上述问题和/或缺陷,并提供至少后面将说明的优点。
5.本发明还有一个目的是提供一种基于梯度提升算法的极大规摸长尾多标签分类方法,其能够快速、准确地对大量数据进行多标签分类,并能够在尾部标签上进行更精准的分类。
6.为了实现本发明的这些目的和其它优点,第一方面,本发明提供了一种基于梯度提升算法的极大规摸长尾多标签分类方法,包括:
7.获取大量需要进行标签分类的原始文本数据;
8.采用深度学习算法对大量的原始文本数据进行一次完整的训练,获得不同的标签分别对应的样本表征,并将这次训练的模型作为预训练模型;
9.保留预训练模型中的编码器用以文本表征提取,而将其原有的分类器舍弃,添加
多层感知机作为新的弱分类器,形成改进后的训练模型;
10.采用梯度提升算法对弱分类器进行训练,将上个弱分类器损失的残差作为当前弱分类器的训练目标,以提升训练模型在尾部标签上的精度,即基于残差进行训练,作为提升步;
11.将分类损失多标签分类损失作为优化目标对整个训练模型进行全网络参数更新,作为更新步;
12.交替进行提升步和更新步的训练,使模型中的弱分类器数量达到设定值,即得到成熟的训练模型,以便能够在极大规摸长尾数据的场景下进行精准的多标签分类。
13.优选的是,所述的基于梯度提升算法的极大规摸长尾多标签分类方法,所述采用梯度提升算法对弱分类器进行训练的具体过程为:
14.初始化一个新的弱分类器,将其加入至当前训练模型中进行整体训练;
15.计算上一个弱分类器损失的残差,其中,损失的残差为损失函数的负二阶梯度;
16.基于上一个弱分类器损失的残差对当前弱分类器进行训练,具体为:保持来自预训练模型的编码器参数固定;将上一个弱分类器损失的残差作为当前弱分类器训练中使用的伪标签;采用均方误差作为优化的目标。
17.优选的是,所述的基于梯度提升算法的极大规摸长尾多标签分类方法,所述弱分类器损失的残差的计算过程为:
18.获取训练模型在上一个弱分类器上的损失,损失函数为对数损失,表达式为:
[0019][0020]
其中,n、l分别为数据的样本数量和标签数量,v
il
为编码器得到的样本的每一个标签对应的表征,f
t-1
为模型之前所有弱分类器的前馈函数集合,y
il
为标签,取值为-1或1;
[0021]
获取损失的残差,损失函数的负一阶梯度表达式为:
[0022][0023]
损失函数的负二阶梯度表达式为:
[0024][0025][0026]
所述采用均方误差作为优化目标,均方误差的表达式为:
[0027][0028]
其中,f
t
(v
il
)为当前弱分类器输出的分数,ρ
t
为当前弱分类器结果在集成中的权重。
[0029]
优选的是,所述的基于梯度提升算法的极大规摸长尾多标签分类方法,所述将分
类损失作为优化目标中,所述分类损失为二元交叉熵损失,其表达式为:
[0030][0031]
优选的是,所述的基于梯度提升算法的极大规摸长尾多标签分类方法,在所述对整个训练模型进行全网络参数更新中,所述全网络参数包含训练模型的所有可学习参数,即编码器、之前学习的所有弱分类器,当前弱分类器和每个弱分类器的权重。
[0032]
优选的是,所述的基于梯度提升算法的极大规摸长尾多标签分类方法,当采用多层感知机作为弱分类器时,神经元数量与训练轮数均作为训练模型的超参数,多层感知机隐藏层的神经元数量及其训练轮数均被降低,以保证多层感知机的表征能力足够弱,多层感知机的可学习参数在训练前采用随机初始化。优选的是,所述的基于梯度提升算法的极大规摸长尾多标签分类方法,训练预训练模型所采用的深度学习算法为attentionxml。
[0033]
第二方面,本发明提供了一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行任一项所述的方法。
[0034]
第三方面,本发明提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时,实现任一项所述的方法。
[0035]
本发明至少包括以下有益效果:
[0036]
一、本发明采用已有的深度学习算法attentionxml先进行完整的一次训练,能够保证预训练模型中的编码器相比于其它训练方式有更好的表征能力;由于在后续交替进行提升步和更新步的训练过程当中,来自预训练模型的编码器参数也会交替进行固定与训练,这保证了编码器能够适应模型的学习进程。
[0037]
二、本发明基于梯度提升算法的特殊训练机制,将其与深度学习算法进行有机结合,目的在于,保证了深度学习表征能力的前提下,利用梯度提升算法不断修正之前产生错误的特点,使训练模型能够在训练过程中不断增强对因为没有经过良好学习而被分类错误的尾部标签的学习,以便能够对尾部标签的学习进行优化,从而达到提升训练模型在尾部标签上的精度。
[0038]
三、本发明在提升步之后添加了更新步,保证了训练模型能够在每次进行梯度提升学习之后对全网络参数进行调整,在保持了提升步中所学习到知识的同时,将编码器与之前的弱分类器进行适应性调整,防止模型陷入局部最优,进一步提升了训练模型的精度。当经过一定次数的交替训练之后,模型的弱分类器数量将会达到设定值,最后所得到的成熟的模型将被保存并用作未来的预测。
[0039]
本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。
附图说明
[0040]
图1为本发明的一个实施例中基于梯度提升算法的极大规摸长尾多标签分类方法的关系示意图;
[0041]
图2为本发明的一个实施例中基于梯度提升算法的极大规摸长尾多标签分类方法
的流程示意图。
具体实施方式
[0042]
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
[0043]
如图1和图2所示,本发明实施例提供了一种基于梯度提升算法的极大规摸长尾多标签分类方法,包括下列步骤:
[0044]
s10、获取大量需要进行标签分类的原始文本数据。
[0045]
可以采集各种领域的文本数据,并不限于只能采集某一领域的文本数据。本发明实施例训练成的模型,能够便于各种相关应用场景的企业或机构快速、准确地对大量数据进行多标签分类,尤其在尾部标签上进行更精准的分类,从而提升业务的个性化和专业化程度。
[0046]
s20、采用深度学习算法对大量的原始文本数据进行一次完整的训练,获得不同的标签分别对应的样本表征,并将这次训练的模型作为预训练模型,称为预训练步。
[0047]
其中,本发明实施例采用的深度学习算法为attentionxml,attentionxml算法在文章label tree-based attention-aware deep model for high-performance extreme multi-label text classification中进行了披露,在训练时根据该算法的原始设定进行预训练,目的是利用预训练的操作来保证预训练模型能够学习到最好的编码器。已有研究表明,目前的大多数用以增强尾部标签学习的算法都会在不同程度上对模型自身编码器的表征能力产生负面影响,从而降低模型在头部标签上的精度。因此采用原始模型先进行预训练可以尽可能保证编码器有相比于其他训练方式更好的表征能力,在后续的步骤中,来自预训练模型的编码器参数将会交替进行固定与训练,以保证编码器能够适应模型的学习进程。
[0048]
s30、保留预训练模型中的编码器用以文本表征提取,而将其原有的分类器舍弃,添加多层感知机作为新的弱分类器,形成改进后的训练模型。
[0049]
其中,当采用多层感知机作为弱分类器时,神经元数量与训练轮数均作为训练模型的超参数,为在训练前人为设置的参数,与常见设置相比,多层感知机隐藏层的神经元数量及其训练轮数均被降低,以保证多层感知机的表征能力足够弱。多层感知机的可学习参数在训练前采用随机初始化。
[0050]
s40、采用梯度提升算法对弱分类器进行训练,将上个弱分类器损失的残差作为当前弱分类器的训练目标,以提升训练模型在尾部标签上的精度,即基于残差进行训练,作为提升步。
[0051]
梯度提升算法属于传统的集成学习算法,由于其易用性和高精度在真实应用场景下备受欢迎,即使在深度学习已经被广泛应用的今天,很多企业与机构仍然选择使用梯度提升相关模型来部署自己的服务。梯度提升算法的名字与其自身的训练特点相关,不同于常规分类算法采用真实标签作为模型训练的目标。梯度提升算法在训练每个弱分类器时,采用上个分类器损失的梯度,通常也被称为残差,作为当前分类器的训练目标,在每次训练一个弱分类器时,则是在对上个分类器所产生的错误进行进一步修正,故可以被看做是基于梯度对模型进行的提升过程。本发明实施例基于梯度提升的特殊的训练机制,将其与深
度学习算法进行有机结合,目的是在保证深度学习表征能力的前提下,利用梯度提升算法不断修正之前产生错误的特点,使模型能够在训练过程中不断增强对因为没有经过良好学习而被分类错误的尾部标签的学习,从而达到提升模型在尾部标签上的精度。
[0052]
所述采用梯度提升算法对弱分类器进行训练的具体过程为:
[0053]
s41、初始化一个新的多层感知机弱分类器,将其加入至当前训练模型中进行整体训练。
[0054]
s42、计算上一个弱分类器损失的残差作为训练中使用的伪标签,其中,损失的残差为损失函数的负二阶梯度。
[0055]
为了计算残差,首先要获得训练模型在上个弱分类器上的损失,由于训练模型所完成的任务为分类任务,因此其损失函数为对数损失。对其求一阶导,则得到其梯度,而残差即为负梯度,通常情况下,使用负一阶梯度作为目标则足以进行模型训练,而本发明实施例中,为了使训练模型更快地收敛并得到更好的结果,采用负二阶梯度并得到对应的优化目标。
[0056]
其中,所述弱分类器损失的残差的计算过程为:
[0057]
获取训练模型在上一个弱分类器上的损失,损失函数为对数损失,表达式为:
[0058][0059]
其中,n、l分别为数据的样本数量和标签数量,v
il
为编码器得到的样本的每一个标签对应的表征,f
t-1
为训练模型之前所有弱分类器的前馈函数集合,y
il
为标签,取值为-1或1;
[0060]
获取损失的残差,损失函数的负一阶梯度表达式为:
[0061][0062]
损失函数的负二阶梯度表达式为:
[0063][0064][0065]
s43、基于上一个弱分类器损失的残差对当前弱分类器进行训练,具体为:保持来自预训练模型的编码器参数固定,仅进行前馈以得到样本的每一个标签表征;将上一个弱分类器损失的残差作为当前弱分类器训练中使用的伪标签;本发明实施例与梯度提升算法的操作保持一致,采用均方误差作为优化的目标。
[0066]
其中,均方误差的表达式为:
[0067][0068]
其中,f
t
(v
il
)为当前弱分类器输出的分数,ρ
t
为当前弱分类器结果在集成中的权
重。
[0069]
s50、将二元交叉熵损失作为优化目标对整个训练模型进行全网络参数更新,作为更新步。
[0070]
其中,所述将二元交叉熵损失作为优化目标,二元交叉熵损失的表达式为:
[0071][0072]
其中,在所述对整个训练模型进行全网络参数更新中,所述全网络参数包含模型的所有可学习参数,即编码器、之前学习的所有弱分类器,当前弱分类器和每个弱分类器的权重。
[0073]
需要说明的是,传统的梯度提升算法通常情况下所面对的都是固定的数据输入,比如结构化的表格数据或处理好的特定表征等,因此在训练过程中只需要不断训练新的弱分类器并添加到模型中,之前学习好的模型并不需要进行变化,也即不断重复提升步即可。但在本发明实施例所提出的方法中,提升步的训练非常依赖于模型的编码器部分,如果在训练中全程固定编码器部分的参数,必然会使模型的编码器在学习中变得与弱分类器不再适合,从而导致模型的精度下降;如果仅更新编码器,则以往学习到的弱分类器也会变得与编码器不适合,在每一次提升步之后添加对于全网络的参数更新是一个很好的解决方案。因此,本发明实施例沿用梯度提升算法的训练方式,采用“残差”优化的方式对弱分类器进行学习,在学习过程中仅更新当前新添加的弱分类器的参数,而保持模型的编码器和其余已经学习好的弱分类器的参数不变。这种“残差”优化的方式则类似于修改模型优化目标对于尾部标签的权重,相当于提升了训练过程中模型对于尾部标签的注意,进而提升模型在尾部标签上的精度。而与传统的梯度提升算法不同,本实施例方法在每个提升步之后添加更新步,采用常见的二元交叉熵损失作为优化目标对整个模型进行优化,以保证整个网络的参数能够进行端到端的更新,从而保证编码器和其余弱分类器的参数能够随着训练的进行产生适应性的变化,防止模型陷入局部最优解,进一步提升模型的精度。
[0074]
s60、交替进行提升步和更新步的训练,使训练模型中的弱分类器数量达到设定值,即得到成熟的训练模型,保存并用作未来的预测,能够在极大规摸长尾数据的场景下进行精准的多标签分类。
[0075]
本发明又一实施例提供了一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行任一项所述的方法。
[0076]
本发明又一实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时,实现任一项所述的方法。
[0077]
为了证明本发明实施例所提出的分类方法的确是有效的,本发明实施例进行了一些相关的对比实验,主要的对比实验有两个,结果分别呈现在表1与表2中,下面具体说明两个实验的设置以及在目前的实验结果下本发明实施例得到的结论。
[0078]
第一个实验在整体上对不同方法在不同数据集上的结果进行了比较。首先,在数据集的选择上,本发明实施例选取了不同规模大小的数据集,以验证所得到的训练模型在不同数据状态下的效果。选取了三种规模的数据集,其中,eur-lex和wiki10-31k的训练样
本数及标签的数量相比于其他数据集而言均比较小;wiki-500k与amazon-3m数据集则二者均比较大;amazoncat-13k较为特殊,其训练样本数很大,但标签的数量则相对较小。在方法的选择上,目前的常用方法有传统方法和深度学习方法之分,其中,传统方法中又包含三种更为精细的类别,分别为基于嵌入的方法(annexml)、基于树的方法(fastxml、pfastrexml)以及一对多方法(dismec、parabel、bonsai);而对于深度学习方法,本发明实施例对比的方法一个是本发明实施例改进的方法attentionxml,另一个则是基于效果出色的预训练模型transformer的lightxml。为了对不同类型的方法进行公平的对比,同时为了更好地验证模型在尾部标签上的效果,本发明实施例采用pfastrexml中提出的指标psp@k,该指标的具体计算方式如下
[0079][0080]
其中p
l
为对于标签l的倾向性分数,定义为
[0081][0082]nl
是标签为l的样本数量,a和b是基于数据集的特定参数,c=(logn-1b+1a。在这样的设置下,psp@k会给予尾部标签更大的比重,也即psp@k指标能够更好地显示方法在尾部标签上的性能,该指标越大,则模型效果越好。
[0083]
在相同的环境设置下,本发明实施例在上述数据集上运行了所提到的基线模型,得到的结果如表1所示,其中,最好的结果用粗体表示,第二好的结果用下划线表示。可以看到的是,本发明实施例提出的分类方法boostxml(boostxml指本发明实施例所述的方法)在eur-lex和wiki10-31k数据集上的表现要明显好于其余方法,因而证明了boostxml方法的有效性;而在wiki-500k数据集上,boostxml方法也取得了第一或者第二的效果。但是值得注意的是,在amazoncat-13k和amazon-3m数据集上,boostxml方法的效果则基本都是第二的效果,这是因为pfastrexml方法独特的设计使其能够在amazon系列的数据集上更好地起到作用。但即便如此,boostxml方法仍然基本上超越了其余深度学习方法,明显缩小了深度学习方法与pfastrexml的差距。通过上述实验结果可以看出,本发明实施例提出的boostxml方法相较于已有的其他算法,不仅有着更好的效果,也能够处理不同类型的数据,拥有更好的泛用性,因而可以真正运用到实际应用中。
[0084]
表1
[0085]
[0086]
但是,在提出psp@k指标的文章中提到,该指标并非完全用来验证模型在尾部标签上的效果,因此还不能完全地说明本发明实施例提出的boostxml方法是否的确更好地学习了尾部标签。因此为了进一步地说明boostxml方法相比于其他深度学习方法在尾部标签上的效果,本发明实施例进一步设计了实验对此进行验证。
[0087]
该实验首先将标签根据其样本数量多少按比例分割为三部分,其中,前10%的标签为多样本部分(即头部标签),中间80%为少样本部分(即尾部标签),而最后10%为单样本部分(十分极端的尾部标签,仅有单个样本)。在同样的设置下,本发明实施例将训练好的模型在不同部分的标签上分别进行验证,验证的结果如表2所示。从结果中可以看到,在多样本部分上,lightxml方法几乎在所有数据集上都取得了最好的效果,这是因为其使用的transformer编码器是目前最强的文本特征提取器,能够很好的提升模型在头部标签上的精度;但同样因为其强大的数据拟合能力,在训练时模型甚至可能会过度拟合头部标签,从而导致其在尾部标签上的性能不佳。相比于lightxml在头部标签上的良好标签,本发明实施例提出的boostxml方法则在少样本部分甚至是单样本部分上的效果大部分都要优于其余两种方法,这进一步证明了boostxml方法的确更好地学习了尾部标签。在很多应用场景下,模型对尾部标签是否能进行更好地分类更加关系到用户对于应用的体验,而boostxml方法则很好地强化了模型在尾部标签上的标签,从而能够更好地提升用户的体验。
[0088]
表2
[0089][0090]
这里说明的模块数量和处理规模是用来简化本发明的说明的。对本发明的基于梯度提升算法的极大规摸长尾多标签分类方法的应用、修改和变化对本领域的技术人员来说是显而易见的。
[0091]
如上所述,根据本发明实施例提供的一种基于梯度提升算法的极大规摸长尾多标签分类方法,能够快速、准确地对大量数据进行多标签分类,并能够在尾部标签上进行更精准的分类。
[0092]
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用。它完全可以被适用于各种适合本发明的领域。对于熟悉本领域的人员而言,可容易地实现另外的修改。因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1