本发明属于深度学习和数据挖掘领域,具体涉及一种基于强化学习的规则知识学习模型及应用。
背景技术:
:关联规则是形如x→y的蕴涵式,其中,x和y分别称为关联规则的先导(antecedent或left-hand-side,lhs)和后继(consequent或right-hand-side,rhs)。其中,关联规则xy,存在支持度和信任度。深度学习(英语:deeplearning)是机器学习的分支,是一种以人工神经网络为架构,对数据进行表征学习的算法。深度学习是机器学习中一种基于对数据进行表征学习的算法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。强化学习(英语:reinforcementlearning,简称rl)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。这个方法具有普适性,因此在其他许多领域都有研究,例如博弈论、控制论、运筹学、信息论、仿真优化、多主体系统学习、群体智能、统计学以及遗传算法。在运筹学和控制理论研究的语境下,强化学习被称作“近似动态规划”(approximatedynamicprogramming,adp)。在最优控制理论中也有研究这个问题,虽然大部分的研究是关于最优解的存在和特性,并非是学习或者近似方面。在经济学和博弈论中,强化学习被用来解释在有限理性的条件下如何出现平衡。从大规模数据中挖掘对象之间的隐含关系被称为关联分析(associateanalysis)或者关联规则学习(associaterulelearning),其可以揭示数据中隐藏的关联模式,帮助人们进行市场运作,决策支持等。目前常用的方法是数据挖掘领域的经典算法关联规则挖掘,主要流程是先挖掘频繁项,再从这些频繁项中产生关联规则。关联规则挖掘简单实用,可解释性强,但在挖掘频繁项过程中无法剪枝,在挖掘特定规则的过程中会花费大量时间挖掘无关频繁项。技术实现要素:本发明的目的是提供一种基于强化学习的规则提取方法及应用,利用该规则提取方法能够实现高效率的规则提取,还提供了一种利用该规则提取方法进行产品的场景划分方法。本发明的技术方案为:一种基于强化学习的规则提取方法,包括:基于强化学习构建规则知识学习模型,所述规则知识学习模型包括用于提取规则的智能体和用于计算规则的分类结果的分类网络;利用训练完毕的智能体获得属性项、属性值以及对应的应用场景组成的候选规则,若分类器分类结果与输入场景一致则输出候选规则;根据设定的最小支持度阈值和最小置信度阈值对候选规则进行筛选,提取最终的规则。优选地,所述智能体包括嵌入模块,记忆模块以及动作模块,其中:所述嵌入模块用于将由属性项、属性值组成的pv对应的输入向量进行维度映射,输出向量至记忆模块;所述记忆模块采用双向lstm网络,用于对输入的向量进行计算,输出对应时间步的隐状态向量至动作模块;所述动作模块采用全连接层用于根据隐状态向量和候选规则中对应的场景向量生成是否选择pv输出的概率值,并根据该概率值选择对应的pv的输入向量输入至分类网络。优选地,所述分类网络包括单向lstm网络和全连接层,其中:所述单向lstm网络用于计算输入向量的对应时间步的隐状态向量并输出至全连接层;所述全连接层根据隐状态向量计算分类结果。优选地,所述分类网络在训练过程中,根据多标签分类交叉熵函数计算所有规则的损失之和,利用基于梯度下降的优化算法迭代求解直至损失值收敛。优选地,所述智能体在训练过程中,分类网络根据奖励函数反馈奖励值至智能体,根据奖励值更新智能体的网络参数。一种产品的场景划分方法,按照上述的基于强化学习的规则提取方法提取获得规则,该规则包含属性项、属性值以及对应的应用场景,根据该规则、商品的属性项和属性值,将产品划分到对应的应用场景中。预先有技术相比,本发明具有的有益效果为:若使用通用的规则生成算法,在频繁项挖掘阶段需要耗费大量时间挖掘无关的频繁项,而本发明能够避免耗时巨大的频繁项挖掘过程,在时间效率上更优。本发明可以在训练阶段通过控制智能体的动作来控制生成规则body部分的长度,可以更好地满足规则长度应尽量短的要求。在产品的场景划分应用中,产品的pv对与场景之间存在差异,若将其视为同种数据项,用通用的规则挖掘算法学习,就舍弃了产品pv对与场景之间的挂载关系信息以及差异,而本发明可以考虑到产品pv对与场景之间的差异以及挂载关系信息,且生成的规则应满足body部分为pv对,head部分为单个场景的形式。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。图1是实施例提供的规则知识学习模型的结构示意图;图2是实施例提供的fasttext结构的结构示意图;图3是实施例提供的商品场景示例图。具体实施方式为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。实施例提供了一种基于强化学习的规则提取方法,包括以下步骤:(1)基于强化学习构建规则知识学习模型,所述规则知识学习模型包括用于提取规则的智能体和用于计算规则的分类结果的分类网络;(2)获得属性项、属性值以及对应的应用场景组成的候选规则,利用所述规则知识学习模型计算候选规则的分类结果;(3)根据预设的分类结果以及设定的最小支持度对候选规则进行筛选,提取最终的规则。下面针对每个步骤进行说明。步骤(1)中,如图1所示,规则知识学习模型两个部分,一个用于对pv输出动作的智能体和一个用于能够返回奖励值的fasttext模型。智能体由三个模块组成:输入模块inputmodule,记忆模块memorymodule和动作模块actionmodule。输入模块包括属性项嵌入层propertyembedding,属性值嵌入层valueembedding以及场景嵌入层lifestyleembedding,propertyembedding和valueembedding拼接起来当作当前pv的embedding,作为memorymodule的输入;记忆模块则由一个双向lstm组成,利用lstm网络的记忆功能,让每个时间步输出的隐状态都能包含上下文的信息;动作模块则包含一个单向lstm和一个全连接层,网络输入包含记忆模块在当前时间步的输出,智能体在上一次输出的动作以及当前商品所对应的场景的向量表示。具体地,规则知识学习模型的构建过程为:(a)预训练一个fasttext网络作为分类网略,训练方式为多标签文本分类,fasttext网络包括一个嵌入层,采用单向lstm网络和一个softmax全连接层,模型结构图如图3所示,图中x即pv。预训练时,会训练属性项嵌入层和属性值嵌入层。采用fasttext的原因是使用fasttext进行文本分类的同时也会产生词的嵌入表示,可以作为生成词向量的工具。采用多标签文本分类的原因是一个商品可能会挂载到多个场景,对应到文本分类任务,就是一个样本会有多个标签,所以这里就把挂载数据构造成了一个多标签分类任务。单个样本的损失函数定义如下,这里n表示标签的个数,yi表示样本是否属于当前类,pi表示当前标签对应的概率值,由sigmoid计算后得到。整体损失函数定义如下,这里t表示样本的长度,yi表示当前动作,pi表示当前动作对应的概率值,由sigmoid计算后得到。最小化损失函数的优化过程可以采用任意基于梯度下降的优化算法进行优化,直到模型收敛。(b)构造一个嵌入层、双向lstm网络以及后面的一个全连接层作为智能体。双向lstm网络作为记忆模块,记忆模块输出的隐状态向量经过全连接层后被投影到场景嵌入的向量空间,然后与场景嵌入做点乘求和计算,最后用sigmoid将计算结果压缩到0到1之间。对于规则知识学习模型,输入数据包括pv和lifestyle,其中是one-hot的属性项向量输入进属性项嵌入(propertyembedding)的矩阵后的输出,是one-hot的属性值向量输入进值嵌入(valueembedding)的矩阵后的输出,是one-hot的场景向量输入进场景嵌入(lifestyleembedding)的矩阵后的输出,而one-hot输入向量都在数据预处理阶段生成,dp,dv,dl分别表示对应向量的维度,在输入进智能体前,p和v会拼接在一起作为单个pv的向量。以第t步为例,智能体的记忆模块在第t步的输入是当前pv的向量,而智能体的记忆模块是一个双向lstm,则记忆模块输出的隐状态向量由两个方向的隐状态拼接而成,具体如下:具体的,单向lstm的每个单元包括以下公式:ft=σ(wf·[ht-1,xt]+bf)it=σ(wi·[ht-1,xt]+bi)ot=σ(wo·[ht-1,xt]+bo)ct=ftoct-1+itotanh(wc·[ht-1,xt]+bc)ht=ototanh(ct-1)其中是一个激活函数,可以将值压缩到0到1之间。也是一个激活函数,可以将值压缩到-1到1之间。这里dh表示lstm单元输出的隐层的维度。两个方向的隐状态向量拼接起来就是记忆模块输出的当前pv的隐特征向量,被输入进动作模块。(c)智能体的动作空间就是[0,1],0表示当前pv被筛掉,1表示当前pv被选中作为规则的body部分,智能体采取动作的方式为基于策略的(policy-based)。智能体的计算结果即智能体采取动作1的概率,也就是若输出的值为0.7,则智能体有0.7的概率输出动作1,0.3的概率输出动作0。智能体依次输出一个动作序列,再选出pv序列中对应动作为1的pv生成一个子序列,作为分类网络的输入。动作的作用是输出动作,这里本文采用的是一个单向lstm和一个全连接层,单向lstm的作用是让动作在当前时间步t时刻输出action时,能够考虑到0到t-1时刻的信息,用公式表达如下:h′t=lstm([ht;at-1])其中at-1是上一个时间步输出的动作的one-hot表示,这里将其与记忆模块在t时间步输出的拼接起来作为动作模块的输入。而全连接层的作用则是将h′t映射到场景嵌入l的特征空间,再与l进行点乘求和,用公式表达如下:pt=sigmoid(f(h′t)*l)#(5.4)输出的pt即动作模块在时间步t输出动作1的概率。智能体在接受到每个pv对时,都会输出一个action,取值为0或1。总体来说,智能体以pvsequence为输入,输出一个同样长度的actionsequence。在得到动作时,选择按概率采样而不是取最大是因为智能体模型是基于策略的(policy-based)。训练智能体时,损失函数就是似然函数,属性项嵌入层和属性值嵌入层的参数是固定的,只有场景嵌入层会得到训练。(d)分类网络根据输入输出一个分类结果,根据奖励函数返回奖励用于智能体更新参数。具体过程为:首先,将中输出动作为1的pv筛选出来,形成一个新的pv子序列,输入进对应的嵌入层,得到pv向量,然后对其进行求均值得到该pv序列的特征向量,具体表达式为hm=mean([p;v])最后这个特征向量被输入进softmax分类器,输出一个概率向量,表示各类的概率值。p=softmax(f(hm))从上面得到的概率向量中取概率最大的那个类,若当前类与输入的lifestyle一致,则分类器反馈给智能体一个奖励,否则反馈给智能体一个惩罚。奖励函数定义如下,由于实际使用的规则body长度一般不会超过5,应让智能体在保证选择正确的同时尽量选择更少更准确的pv作为body,同时为了避免智能体“作弊”选择较多的pv来得到更多奖励,本文在奖励函数中加入了智能体输出1的动作的个数,鼓励智能体选择尽量少的pv作为规则的body部分(e)在模型训练完毕后,智能体对所有商品及其对应的场景都输出一个子序列,此时智能体采取动作的策略不是依概率采样,而是选择概率最大的动作。将子序列输入分类器,若分类器分类正确,则将子序列作为规则的body部分,对应场景作为head部分,输出一条备选规则。应用例在电商实际应用中,每个商品都会被挂载到若干个场景,以图结构中的节点形式存在。商品由结构化信息表示,以键值对(property:value,简称pv)形式存在。场景(lifestyle)的价值则在于打通商品实体之间的联通,提供跨域的实体搭配,因此新的商品必须要通过规则库中的规则挂载到特定的场景才能进入电商的运营体系。商品场景的样例如图1所示。规则的作用则包括挂载新的商品以及为已有的商品新增挂载场景,目前规则库中的规则主要由人工构造,通过审核之后才能进入规则库,商品场景挂载的规则特点是body部分只由pv组成,head部分只包含单个场景。规则的形式如下:lifestyle←(p1,v1),…,(pn,vn)人工构造规则的方法效率低,人工成本高,因此商品场景挂载规则学习任务就是利用算法从现有的商品场景数据中生成规则,提高规则生成的效率,降低人工成本。现有规则库中的规则样例如表1所示,由于商品挂载是一个重召回的应用场景,也就是规则库中的规则应可以让商品挂载到尽量多的场景,所以要求算法生成的规则在具备足够的对人的可解释性的同时body部分应尽量短,也就是规则lifestyle←(p1,v1),…,(pn,vn)中的n要尽量小。表1商品规则示例headbody(场景,化妆品)(色号,101),(品牌,阿玛尼)(场景,女装)(尺码,s),(风格,知性)(场景,散步)(风格,舒适),(产品词,布鞋)单个商品包含20到50个pv对,挂载到的场景不低于5个。规则的body部分由1到5个pv构成,head部分则是单个场景。若有新的商品包含了某条规则body部分所有的pv,则就可以把该商品挂载到head部分所包含的场景。图3表示一条商品场景挂载数据,它包括当前商品包含的pv和挂载到的场景。首先利用嵌入层,将商品的pv以及一个它挂载到的场景映射成向量,然后将pv的向量拼接起来作为智能体记忆模块的输入,维度为300,这样商品包含的pv经过记忆模块的处理就变成了一个维度为600的隐状态向量ht,然后再将隐状态向量与上一个时间步动作模块输出的动作拼接起来作为动作模块的输入(第0的时间步拼接的动作为0),动作模块的lstm输出一个维度为600的隐状态向量h′t,经过全连接层变换之后变成一个300维的特征向量,与维度为300的场景嵌入向量l点积求和后生成一个1维的值,经过sigmoid计算后被压缩到0到1之间作为智能体输出动作1的概率。对图3所示的数据,输入场景为“散步”时,智能体采取动作为1的pv子序列为(开口深度,浅口)和(风格,简约),且fasttext网络将该子序列成功分类到“散步”的类别,因此,模型输出的一条备选规则为:散步<=(开口深度,浅口),(风格,简约)。再将这条备选规则在原始数据集中计算支持度和置信度,满足阈值要求,因此该规则被模型作为输出规则。模型的属性项嵌入向量维度限制在200维,即dp=200,属性值嵌入向量维度限制在100维,即dv=100,场景嵌入向量维度限制在300维,即dl=300。智能体记忆模块的双向lstm网络输出的隐状态向量维度为600维,即dh=600,全连接层的维度为600*300。fasttext网络的全连接层维度为300*n,n为数据中包含的场景的个数。模型相关所有参数都用区间(-1,1)为均匀分布随机初始化,包括所有全连接层的w以及lstm中的wf,wi,wo,wc,bf,bi,bo,bc,wl。优化方法采用adam算法,智能体和fasttext网络训练设置一致,优化批次大小(batchsize)设置为512,学习率设置为3e-4。迭代的最大次数为100次。设定最小支持度阈值为0.5,最小置信度阈值为0.001。根据预设的分类结果以及设定的最小支持度对候选规则进行筛选,提取最终的规则如表2所示:表2以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。当前第1页12