通过强化学习提取主干词的方法及装置
技术领域
本说明书一个或多个实施例涉及机器学习领域,尤其涉及利用强化学习的方式提取句子中的主干词的方法和装置。
背景技术
计算机执行的自然语言处理和文本分析,例如意图识别,事件抽取等,已经应用到多种技术场景中,例如智能客服。在智能客服中,需要对用户的描述问题进行意图识别,进而将其匹配到知识库中的知识点,从而自动地回答用户的问题。然而,用户在进行问题描述时,特别是通过语音进行问题描述,例如电话交互沟通时,经常有一些口语描述,比如『嗯』『啊』『那个』『哦』『就是』等等,或者包含一些非重点的,不必要的词语。这就需要把句子中主要的词,即主干词提取出来,以便后续做语义分析和意图识别。在进行事件抽取时,也需要排除一些停用词,提取出主干词,从而优化事件提取的效果。
因此,希望能有改进的方案,可以有效地对句子中的主干词进行提取,从而优化文本分析效果。
发明内容
本说明书一个或多个实施例描述了一种利用强化学习系统提取主干词的方法和装置。通过实施例中的方法和装置,利用强化学习的方式进行主干词提取的训练,从而减少人工标注成本,提高主干词提取效率,优化文本分析效果。
根据第一方面,提供了一种通过强化学习提取主干词的方法,包括:
利用句子样本集,训练用于句子分类的分类网络;
利用当前策略参数下的策略网络,对所述句子样本集中的第一样本句子进行主干词提取,获得第一主干词集合,并根据所述第一样本句子中的词语数目和所述第一主干词集合中的词语数目,确定当前的第一损失;
利用所述分类网络对由所述第一主干词集合构成的第一备选句子进行分类处理,获得所述第一备选句子的第一分类结果,并根据所述第一分类结果以及所述第一样本句子的分类标签,确定当前的第二损失;
根据所述当前的第一损失和当前的第二损失,确定当前的总损失;
在总损失减小的方向,至少更新所述策略网络,以用于从待分析句子中提取主干词。
在一个实施例中,策略网络包括第一嵌入层,第一处理层和第二处理层,所述利用策略网络对所述句子样本集中的第一样本句子进行主干词提取包括:
在所述第一嵌入层,获得所述第一样本句子中的各个词的词嵌入向量;
在所述第一处理层,根据所述词嵌入向量,确定所述各个词作为主干词的概率;
在所述第二处理层,至少根据所述概率,从所述各个词中选择至少一部分词,构成所述第一主干词集合。
在一个进一步的实施例中,在所述第二处理层,从所述各个词中选择概率值大于预设阈值的词,构成所述第一主干词集合。
根据一种实施方式,分类网络包括第二嵌入层和第三处理层,所述利用所述分类网络对由所述第一主干词集合构成的第一备选句子进行分类处理包括:
在所述第二嵌入层,获得所述第一备选句子对应的句子嵌入向量;
在所述第三处理层,根据所述句子嵌入向量,确定所述第一备选句子的第一分类结果。
在一种实施方式中,策略网络和/或分类网络基于循环神经网络RNN。
在一个实施例中,上述方法还包括,确定所述总损失减小的方向,包括:
分别利用N组策略参数下的所述策略网络处理所述第一样本句子,获得对应的N个主干词集合,并分别确定N个第一损失;
利用所述分类网络,对所述N个主干词集合分别对应的N个备选句子进行分类处理,获得N个分类结果,并分别确定N个第二损失;
根据N个第一损失和N个第二损失,确定对应的N个总损失,以及所述N个总损失的均值;
确定损失值小于等于所述均值的至少一个第一总损失,以及损失值大于所述均值的至少一个第二总损失;
基于所述至少一个第一总损失和所述至少一个第二总损失,确定所述总损失减小的方向。
进一步的,在一个实施例中,上述N个分类结果是利用同一组分类参数下的所述分类网络,对所述N个备选句子分别进行分类处理而获得;在这样的情况下,所述N个总损失对应于所述N组策略参数;
此时,确定所述总损失减小的方向,包括:
确定所述至少一个第一总损失对应的至少一组第一策略参数相对于当前策略参数的梯度的累积,作为正方向;
确定所述至少一个第二总损失对应的至少一组第二策略参数相对于当前策略参数的梯度的累积,作为负方向;
将所述正方向与所述负方向的相反方向叠加,作为所述总损失减小的方向。
进一步的,在上述情况下,可以在所述总损失减小的方向,更新所述策略网络中的当前策略参数。
在另一实施例中,所述N个分类结果是利用M组分类参数下的所述分类网络,对所述N个备选句子进行分类处理而获得,其中M<=N;在这样的情况下,所述N个总损失对应于N个参数集,其中第i参数集包括第i组策略参数,和处理第i备选句子时所述分类网络对应的分类参数;
此时,确定所述总损失减小的方向包括:
确定所述至少一个第一总损失对应的至少一组第一参数集相对于当前策略参数的梯度的累积,作为第一正方向;
确定所述至少一个第二总损失对应的至少一组第二参数集相对于当前策略参数的梯度的累积,作为第一负方向;
将所述第一正方向与所述第一负方向的相反方向叠加,作为第一调整方向;
确定所述至少一个第一总损失对应的至少一组第一参数集相对于当前分类参数的梯度的累积,作为第二正方向;
确定所述至少一个第二总损失对应的至少一组第二参数集相对于当前分类参数的梯度的累积,作为第二负方向;
将所述第二正方向与所述第二负方向的相反方向叠加,作为第二调整方向;
将所述第一调整方向和第二调整方向的总和作为所述总损失减小的方向。
进一步的,在上述情况下,可以在所述第一调整方向,更新所述策略网络的当前策略参数;在所述第二调整方向,更新所述分类网络的当前分类参数。
根据一种实施方式,上述方法还包括:
将待分析的第二句子输入所述策略网络;
根据所述策略网络的输出,确定所述第二句子中的主干词。
根据第二方面,提供了一种通过强化学习提取主干词的装置,包括:
分类网络训练单元,配置为利用句子样本集,训练用于句子分类的分类网络;
第一确定单元,配置为利用当前策略参数下的策略网络,对所述句子样本集中的第一样本句子进行主干词提取,获得第一主干词集合,并根据所述第一样本句子中的词语数目和所述第一主干词集合中的词语数目,确定当前的第一损失;
第二确定单元,配置为利用所述分类网络对由所述第一主干词集合构成的第一备选句子进行分类处理,获得所述第一备选句子的第一分类结果,并根据所述第一分类结果以及所述第一样本句子的分类标签,确定当前的第二损失;
总损失确定单元,配置为根据所述当前的第一损失和当前的第二损失,确定当前的总损失;
更新单元,配置为在总损失减小的方向,至少更新所述策略网络,以用于从待分析句子中提取主干词。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
根据本说明书实施例提供的方法和装置,通过强化学习的方式,进行主干词提取的学习和训练。更具体的,采用actor-critic方式的强化学习系统进行主干词提取,其中在强化学习系统中,策略网络作为actor,用于主干词提取;分类网络作为critic,用于对句子进行分类。可以利用现有的句子样本库作为训练预料训练分类网络,从而避免主干词标注的人工成本。经过初步训练的分类网络即可对策略网络提取的主干词构成的句子进行分类,如此评估主干词提取的效果。通过对策略网络和分类网络的输出结果均设置损失,根据总损失反复训练策略网络和分类网络,可以得到理想的强化学习系统。如此,可以在无需主干词人工标注的情况下,训练得到理想的网络系统,实现对主干词的有效提取。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出采用Actor-Critic方式的深度强化学习系统的示意图;
图2为本说明书披露的一个实施例的强化学习系统示意图;
图3示出根据一个实施例的训练用于主干词提取的强化学习系统的方法流程图;
图4示出根据一个实施例的策略网络的结构示意图;
图5示出根据一个实施例的分类网络的结构示意图;
图6示出在一种训练方式下确定总损失减小方向的步骤流程图;
图7示出根据一个实施例的装置示意图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
如前所述,在多种文本分析场景中,都需要对句子的主干词进行提取。为了能够自动地进行主干词提取,在一种方案中,可以通过有监督的机器学习方法来训练主干词提取模型。根据常规的监督学习方法,为了训练这样的主干词提取模型,就需要大量人工标注的标注数据,这些标注数据需要对句子中各个词是否为主干词进行标注,人工成本很大。
根据本说明书实施例的构思,采用强化学习的方式进行主干词提取,降低人工标注成本,优化主干词提取效果。
如本领域技术人员所知,强化学习是一种基于序列行为的反馈,进行的无标注的学习策略的方法。一般地,强化学习系统包括智能体和执行环境,智能体通过与执行环境的交互和反馈,不断进行学习,优化其策略。具体而言,智能体观察并获得执行环境的状态(state),根据一定策略,针对当前执行环境的状态确定要采取的行为或动作(action)。这样的行为作用于执行环境,会改变执行环境的状态,同时产生一个反馈给智能体,该反馈又称为奖励分数(reward)。智能体根据获得的奖励分数来判断,之前的行为是否正确,策略是否需要调整,进而更新其策略。通过反复不断地观察状态、确定行为、收到反馈,使得智能体可以不断更新策略,最终目标是能够学习到一个策略,使得获得的奖励分数累积最大化。
存在多种算法来进行智能体中策略的学习和优化,其中Actor-Critic方法是用于强化学习的一种策略梯度方法。图1示出采用Actor-Critic方式的深度强化学习系统的示意图。如图1所示,系统包括作为actor的策略模型和作为critic的评估模型。
策略模型从环境获得环境状态s,根据一定策略,输出在当前环境状态下要采取的动作a。评估模型获取上述环境状态s,以及策略模型输出的动作a,对策略模型在状态s下采取动作a的本次决策进行打分,并将该打分反馈给策略模型。策略模型根据评估模型的打分来调整策略,以期获得更高的打分。也就是说,策略模型训练的目标是,获得评估模型的尽可能高的打分。另一方面,评估模型也会不断调整其打分方式,使得打分更好的反映环境反馈的奖励分数r的累积。
如此,反复训练评估模型和策略模型,使得评估模型的打分越来越准确,越来越接近环境反馈的奖励,于是,策略模型采取的策略也越来越优化合理,得到更多的环境的奖励。
基于以上的特点,根据本说明书的实施例,通过采用Actor-Critic方式的强化学习系统进行主干词提取。
图2为本说明书披露的一个实施例的强化学习系统示意图。如图2所示,用于主干词提取的强化学习系统包括策略网络100和分类网络200。策略网络100用于从句子中提取主干词,它对应于图1所示的策略模型,作用为Actor;分类网络200用于对句子进行分类,它对应于图1所示的评估模型,作用为Critic。策略网络100和分类网络200均为神经网络。
为了对策略网络100和分类网络200进行训练,可以采用具有句子分类标签的样本句子。
在训练过程中,将样本句子(对应于环境状态s)输入到策略网络100。通过一定策略,策略网络100从该样本句子中提取出若干主干词,形成主干词集合(相当于采取的一个动作a),该主干词集合可以对应于一个主干句。
分类网络200获取主干词集合,并对该主干词集合对应的主干句子进行分类,得到分类结果。通过比对该分类结果与原始样本句子的分类标签,来评估该主干词集合提取得是否正确。
可以分别为策略网络100的主干词提取过程和分类网络200的分类过程设置损失(图中的损失1和损失2),基于该损失反复训练策略网络100和分类网络200,使得损失更小,分类更准。如此训练得到的策略网络100,就可以用于对待分析的句子进行主干词提取。
下面描述以上系统的训练过程和处理过程。
图3示出根据一个实施例的训练用于主干词提取的强化学习系统的方法流程图。可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。如图3所示,该方法包括:步骤31,利用句子样本集,训练用于句子分类的分类网络;步骤32,利用当前策略参数组下的策略网络,对句子样本集中的第一样本句子进行主干词提取,获得第一主干词集合,并根据所述第一样本句子中的词语数目和所述第一主干词集合中的词语数目,确定当前的第一损失;步骤33,利用所述分类网络对由所述第一主干词集合构成的第一备选句子进行分类处理,获得所述第一备选句子的第一分类结果,并根据所述第一分类结果以及所述第一样本句子的分类标签,确定当前的第二损失;步骤34,根据当前的第一损失和当前的第二损失,确定当前的总损失;步骤35,在总损失减小的方向,至少更新所述策略网络,以用于从待分析句子中提取主干词。下面描述以上各个步骤的具体执行方式。
如以上结合图2所述,策略网络100用于从句子中提取主干词,分类网络200用于对句子进行分类,进而评估策略网络提取主干词的质量。这两个神经网络互相交互,需要反复进行训练,才可以获得理想的网络参数。为了促进模型尽快收敛,在第一阶段,单独训练分类网络200,使其可以实现基本的句子分类。
因此,首先,在步骤31,利用句子样本集,训练用于句子分类的分类网络。
句子分类,或称为文本分类,是文本分析中的常见任务,因此,已经存在大量丰富的样本语料,可以用于进行分类训练。因此,在步骤31,可以从已有语料库中获取一些句子样本,构成句子样本集,这里的句子样本包括原始句子,以及为该原始句子添加的分类标签。利用这样的具有分类标签的句子样本构成的句子样本集,就可以训练句子分类网络。训练的方式可以采用经典的监督训练的方式进行。
如此,通过步骤31,可以得到初步训练的分类网络,该分类网络可以用于对句子进行分类。在此基础上,就可以利用上述分类网络对策略网络进行评估,从而训练强化学习系统。
具体地,在步骤32,利用当前策略参数组下的策略网络,对句子样本集中的任意的一个样本句子,下文称为第一样本句子,进行主干词提取,获得对应的主干词集合,称为第一主干词集合。
可以理解,初始地,策略网络中的策略参数可以是随机初始化的;随着策略网络的训练,策略参数会不断调整和更新。当前的策略参数组可以是初始状态下随机的参数组,也可以是训练过程中,某一状态下的策略参数。策略网络的一组策略参数可以认为对应于一种策略。相应的,在步骤32,策略网络根据当前策略,对输入的第一样本句子进行处理,从中提取出主干词。
在一个实施例中,策略网络可以包括多个网络层,通过该多个网络层实现主干词提取。
图4示出根据一个实施例的策略网络的结构示意图。如图4所示,策略网络100可以包括,嵌入层110,第一处理层120和第二处理层130。
嵌入层110获得样本句子,对于句子中的各个词,计算其词嵌入向量。例如,对于第一样本句子,将其分词后可以得到词序列{W1,W2,…,Wn},其中包括n个词。嵌入层针对每个词Wi计算对应的词嵌入向量Ei,于是得到{E1,E2,…,En}。
第一处理层120根据以上的词嵌入向量,确定各个词作为主干词的概率。例如,对于n个词的词嵌入向量{E1,E2,…,En},确定各个词的作为主干词的概率{P1,P2,…,Pn}。
第二处理层130根据上述概率,从各个词中选择至少一部分词,作为主干词,构成主干词集合。在一个实施例中,预先设置一个概率阈值。第二处理层从各个词中,选出概率大于上述阈值的词,作为主干词。
以上嵌入层110、第一处理层120和第二处理层130中各层网络参数的整体,构成策略参数。
在一个实施例中,策略网络100采用循环神经网络RNN。更具体的,可以通过RNN实现以上的嵌入层110,从而在进行各个词的词嵌入时,考虑词的时序影响。第一处理层120和第二处理层130可以通过全连接处理层实现。
在其他实施例中,策略网络100也可以采用不同的神经网络架构,例如基于RNN改进的长短期记忆LSTM神经网络,GRU神经网络,或者深度神经网络DNN,等等。
通过以上的策略网络,可以对样本句子进行主干词提取。例如,对于第一样本句子中的n个词,策略网络通过当前策略,从中选择了m个词(m<=n)作为主干词,这m个主干词表示为{w1,w2,…,wm}。如此,得到主干词集合。
在得到主干词集合的基础上,可以通过一个损失函数,下文称为第一损失函数,衡量主干词提取过程的损失,下文称为第一损失,记为LK(Loss_Keyword)。也就是,在步骤32,在获得第一主干词集合的基础上,根据第一样本句子中的词语数目和第一主干词集合中的词语数目,确定当前的第一损失。
在一个实施例中,第一损失函数被设定为,提取的主干词的数目越少,损失值越低;主干词数目越多,损失值越高。在一个实施例中,还可以根据提取的主干词相对于样本句子的占比来确定第一损失,占比越高,损失值越大,占比越小,损失值越低。这都是考虑到,希望训练完成的理想状态下,策略网络100可以从原始句子中排除尽量多的无用词,保留尽可能少的词作为主干词。
例如,在一个例子中,第一损失函数可以设置为:
LK=Num_Reserve/Num_Total
其中,Num_Reserve为作为主干词保留下来的词语数目,即主干词集合中的词语数目,Num_Total为样本句子中的词语数目。
在以上例子中,假定第一样本句子中包含n个词,策略网络通过当前策略,从中选择了m个词,那么当前的第一损失为LK=m/n。
接下来,在步骤33,利用分类网络对由第一主干词集合构成的第一备选句子进行分类处理,获得第一备选句子的第一分类结果。
可以理解,通过步骤31的初步训练,确定出了分类网络的初步分类参数,这样的分类网络可以用于对句子进行分类。此外,在步骤32,策略网络100可以输出针对第一样本句子提取的第一主干词集合,该第一主干词集合可以对应一个备选句子,即第一备选句子。该第一备选句子可以理解为,对第一样本句子排除停用词、无意义词,仅保留主干词后得到的句子。相应的,在步骤33,可以用分类网络对该第一备选句子进行分类处理,得到分类结果。
在一个实施例中,分类网络可以包括多个网络层,通过该多个网络层实现句子分类。
图5示出根据一个实施例的分类网络的结构示意图。如图5所示,分类网络200可以包括,嵌入层210,全连接处理层220。
嵌入层210获得策略网络100输出的主干词集合,对于各个词,计算其词嵌入向量,进而计算出该主干词集合所构成的备选句子的句子嵌入向量。例如,对于第一主干词集合{w1,w2,…,wm},可以分别计算各个词的词嵌入向量{e1,e2,…,em},然后基于各个词嵌入向量,得到第一备选句子的句子嵌入向量Es。在不同实施例中,句子嵌入向量可以通过对各个词嵌入向量进行拼接、平均等运算而得到。
接着,全连接处理层220根据以上的句子嵌入向量Es,确定第一备选句子的分类结果,即第一分类结果。
以上嵌入层210和全连接处理层220中各层网络参数的整体,构成分类参数。
与策略网络100类似的,分类网络200可以采用循环神经网络RNN来实现。更具体的,可以通过RNN实现以上的嵌入层210。在其他实施例中,分类网络200也可以采用不同的神经网络架构,例如LSTM神经网络,GRU神经网络,或者深度神经网络DNN,等等。
在对备选句子进行分类后,可以通过另一个损失函数,下文称为第二损失函数,衡量分类过程的损失,下文称为第二损失,记为LC(Loss_Classify)。也就是,在步骤33,在获得第一分类结果的基础上,根据该第一分类结果以及第一样本句子的分类标签,确定当前的第二损失。
在一个实施例中,第二损失函数被设定为,基于交叉熵算法确定第二损失LC。在其他实施例中,也可以通过其他形式和其他算法的损失函数,基于分类结果和分类标签之间的差异,确定出第二损失LC。相应的,通过上述第二损失函数,基于本次分类得到的第一分类结果,以及第一样本句子对应的分类标签之间的比对,可以确定出本次分类的分类损失,即当前的第二损失。
在确定出第一损失和第二损失的基础上,在步骤34,根据当前的第一损失和当前的第二损失,确定当前的总损失。
总损失可以理解为,整个强化学习系统的损失,包括策略网络提取主干词过程的损失,和分类网络进行分类过程的损失。在一个实施例中,总损失定义为,上述第一损失和第二损失的加和。在另一实施例中,还可以为第一损失和第二损失各自赋予一定权重,将总损失定义为,第一损失和第二损失的加权求和。
根据总损失的定义方式,基于本次提取主干词对应的当前的第一损失,以及本次分类对应的当前的第二损失,可以确定出当前的总损失。
基于这样的总损失,就可以对强化学习系统进行训练,训练的目标是使得总损失尽可能小。根据以上第一损失、第二损失和总损失的定义方式,可以理解,总损失尽可能小意味着,在策略网络100排除尽量多的无用词、提取尽量少的主干词的同时,不改变句子的含义,因而分类网络200的句子分类结果尽量接近原始句子的分类标签。
为了达到总损失减小的目的,在步骤35,在总损失减小的方向,更新强化学习系统。更新强化学习系统至少包括,更新策略网络100,还可以包括,更新分类网络200。
以上总损失减小的方向的确定方式,以及强化学习系统的更新方式,在不同训练方式下、不同训练阶段中可以有所不同,下面分别进行描述。
根据一种训练方式,为了确定出总损失减小的方向,在策略网络100中用不同策略分别处理多个样本句子,得出对应的多个主干词句子,以及对应的多个第一损失;然后利用分类网络200对各个主干词句子进行分类,得出对应的多个分类结果,以及对应的多个第二损失。于是,得到对多个样本句子进行处理的多个总损失。比较当前损失与多个总损失,将多个总损失中比当前损失小的总损失所对应的网络参数相对于当前网络参数的梯度,确定为总损失减小的方向。
根据另一种训练方式,为了确定出总损失减小的方向,对同一样本句子进行多次处理得到多个总损失,基于这样的多个总损失,确定总损失减小的方向。图6示出在该训练方式下确定总损失减小方向的步骤流程图。
为了探索出更多更好的策略,在策略网络100中,可以在当前策略的基础上加入一定随机性而产生N个策略,这N个策略对应于N组策略参数。结合图4所示的网络结构,可以对嵌入层的嵌入算法加入随机扰动,得到新的策略;可以对第一处理层中确定主干词概率的算法进行变动,得到新的策略;也可以对概率选择的规则算法,例如对概率阈值进行变动,得到新的策略。通过以上各种变动方式的组合,可以得到N种策略,对应于N组策略参数。
相应的,在步骤61,分别利用上述N组策略参数下的策略网络处理第一样本句子,获得对应的N个主干词集合。并且,可以根据如前所述的第一损失函数,分别确定出N个第一损失。
然后,在步骤62,利用分类网络200,对所述N个主干词集合分别对应的N个备选句子进行分类处理,获得N个分类结果。并且,根据前述的第二损失函数,分别确定N个分类结果对应的N个第二损失。
在步骤63,根据N个第一损失和N个第二损失,确定对应的N个总损失,记为L1,L2,…,Ln。并且,还可以确定出上述N个总损失的均值La。
在步骤64,确定损失值小于等于均值的至少一个第一总损失,以及损失值大于均值的至少一个第二总损失。换而言之,将上述N个总损失划分为,小于等于均值La的总损失,称为第一总损失,以及大于均值La的总损失,称为第二总损失。
在步骤65,基于上述第一总损失和第二总损失,确定总损失减小的方向。更具体而言,上述第一总损失由于损失较小,可以对应于正向学习的方向,上述第二总损失由于损失较大,可以对应于负向学习的方向。因此,在步骤65,综合正向学习的方向,和负向学习方向的反方向,可以得到总的学习方向,即总损失减小的方向。
对于以上的训练方式,在不同的训练阶段,也可以有不同的具体执行方式。
如前所述,在整个强化学习系统训练的第一阶段,单独训练分类网络,如步骤31所示。为了加速模型的收敛,在一个实施例,在接下来的第二阶段,固定住上述分类网络,仅训练和更新策略网络;然后,在第三阶段,同时训练更新策略网络和分类网络。下面分别描述第二阶段和第三阶段,图6流程的执行方式。
具体的,在第二阶段中,分类网络被固定,也就是分类网络中的分类参数不变,不进行调整。那么相应的,在图6的步骤62中,是利用同一组分类参数下的分类网络,对前述N个备选句子进行分类处理,也就是基于同样的分类方式进行分类,得到了所述N个分类结果。
由于分类参数不变,在这样的情况下,步骤63中确定的N个总损失,实际上对应于策略网络的N个策略,进而对应于N组策略参数。也就是,第i个总损失Li,对应于第i组策略参数PSi。
然后在步骤64,在确定出第一总损失和第二总损失的基础上,确定出第一总损失对应的第一策略参数,以及第二总损失对应的第二策略参数。
换而言之,如果总损失Li小于等于均值La,则将该总损失归为第一总损失,相应的策略参数组PSi则归为第一策略参数;如果总损失Li大于均值La,则将该总损失归为第二总损失,相应的策略参数组PSi则归为第二策略参数。
接下来,在步骤65,通过以下方式确定总损失减小的方向:
确定至少一组第一策略参数相对于当前策略参数的梯度的累积,作为正方向;确定至少一组第二策略参数相对于当前策略参数的梯度的累积,作为负方向;将所述正方向与所述负方向的相反方向叠加,作为总损失减小的方向。
这是由于,第一策略参数对应于损失值小于等于平均值的总损失,或者说,损失值较小的总损失,因此,可以认为第一策略参数所对应的策略选择方向是正确的,是系统学习的“正样本”,应该进行正向学习;而第二策略参数对应于损失值大于平均值的总损失,是损失值较大的总损失,因此,可以认为第二策略参数所对应的策略选择方向是错误的,是系统学习的“负样本”,应该进行反向学习。
一般地,损失值小于等于平均值的第一总损失可以是多个,相应的,第一策略参数可以是多组第一策略参数。该多组第一策略参数有可能对样本句子不同位置的主干词提取有不同的效果,因此,在一个实施例中,对该多组第一策略参数均进行正向学习,确定各组第一策略参数相对于当前策略参数的梯度,将其进行累积,得到上述正方向。
相应的,第二策略参数也可以是多组第二策略参数。在一个实施例中,对该多组第二策略参数均进行负向学习,确定各组第二策略参数相对于当前策略参数的梯度,将其进行累积,得到上述负方向。
最后,将负方向取反,与正方向进行叠加,作为总损失减小的方向。
以上总损失减小的方向可以表示为:
其中,PSi为第一策略参数,PSj为第二策略参数,θ为当前策略参数。
在一个具体例子中,假定N=10,其中L1-L6小于损失均值,为第一总损失,相应的策略参数组PS1-PS6为第一策略参数;假定L7-L10大于损失均值,为第二总损失,相应的策略参数组PS7-PS10为第二策略参数。
在一个实施例中,分别计算PS1-PS5这6组策略参数相对于当前策略参数的梯度,将其进行累积,得到上述正方向;分别计算PS7-PS10这4组策略参数相对于当前策略参数的梯度,将其进行累积,得到上述负方向,进而得到总损失减小的方向。
如此,在系统训练的第二阶段的一个实施例中,通过以上方式确定出总损失减小的方向。于是,在图3的步骤35,在总损失减小的方向,更新策略网络100中的当前策略参数组。
通过不断执行以上过程,在分类网络200的分类方式不变的情况下,探索更多的主干词提取策略,并不断更新、优化策略网络100中的策略参数,从而针对性的训练策略网络100。
在策略网络的训练达到一定训练目标之后,强化学习系统的训练可以进入第三阶段,同时训练和更新策略网络100和分类网络200。下面描述在第三阶段,图6的执行方式。
在第三阶段,在步骤61,仍然利用N组不同的策略参数下的策略网络处理第一样本句子,获得对应的N个主干词集合,这N个主干词集合可以对应于N个备选句子。
然而,不同的是,在第三阶段中,分类网络不固定,也就是说,分类网络中的分类参数也可以进行调整。那么相应的,在步骤62中,是利用M组不同的分类参数下的分类网络,对步骤61得到的N个备选句子进行分类处理,得到N个备选句子对应的N个分类结果。其中,M<=N。
在M=N的情况下,相当于,对于N个备选句子,分别采用了M=N种不同的分类方法(对应于N组分类参数)进行分类;在M<N的情况下,相当于,对前述N个备选句子进行分类所采用的分类参数,不完全相同。
接着在步骤63,根据N个第一损失和N个第二损失,确定对应的N个总损失。
需要理解的是,在以上得到N个分类结果的过程中,策略网络和分类网络的网络参数均发生了变化。此时,N个总损失对应于N个参数集,其中第i参数集Si包括第i组策略参数PSi,和处理第i备选句子时分类网络对应的分类参数CSi。换而言之,上述参数集是策略网络100和分类网络200的网络参数的整体集合。
此外,与前述类似的,可以确定出N个总损失的均值La。然后,在步骤64,将上述N个总损失划分为,小于等于均值La的第一总损失,以及大于均值La的第二总损失。
并且,在确定出第一总损失和第二总损失的基础上,可以相应确定出第一总损失对应的第一参数集,以及第二总损失对应的第二参数集。
换而言之,如果总损失Li小于等于均值La,则将该总损失归为第一总损失,相应的参数集Si则归为第一参数集;如果总损失Li大于均值La,则将该总损失归为第二总损失,相应的参数集Si则归为第二参数集。
接下来,在步骤65,通过以下方式确定总损失减小的方向:
确定至少一组第一参数集相对于当前策略参数的梯度的累积,作为第一正方向;确定至少一组第二参数集相对于当前策略参数的梯度的累积,作为第一负方向;将第一正方向与第一负方向的相反方向叠加,作为第一调整方向,即策略参数优化方向;
确定至少一组第一参数集相对于当前分类参数的梯度的累积,作为第二正方向;确定至少一组第二参数集相对于当前分类参数的梯度的累积,作为第二负方向;将第二正方向与第二负方向的相反方向叠加,作为第二调整方向,即分类参数优化方向。
以上确定总损失减小的方向,也就是参数调整方向的构思与第二阶段相同,也就是,将损失值较小的总损失所对应的参数集,即第一参数集,作为系统学习的“正样本”,进行正向学习;将损失值较大的总损失所对应的参数集,即第二参数集,作为系统学习的“负样本”,进行反向学习。学习时,对于策略网络和分类网络,分别确定各自对应的策略参数和分类参数的调整优化方向。
具体的,对于策略网络的策略参数,其调整方向的确定与第二阶段类似,只是计算梯度时,是计算整个参数集相对于当前策略参数的梯度。一般的,参数集中策略参数和分类参数是两套相互独立的参数,因此,实际梯度运算中,仍然是通过计算参数集中的策略参数部分相对于当前策略参数的梯度,获得前述的第一正方向和第一负方向,进而确定出第一调整方向,即策略参数优化方向。
以上第一调整方向可以表示为:
其中,Si为第一参数集,Sj为第二参数集,θ为当前策略参数。
对于分类网络中的分类参数,其调整方向的确定与策略参数相似,具体地,计算第一参数集相对于当前分类参数的梯度的累积,作为第二正方向;计算第二参数集相对于当前分类参数的梯度的累积,作为第二负方向;将第二正方向与第二负方向的相反方向叠加,作为分类优化方向。如前所述,由于策略参数和分类参数通常相互独立,在实际梯度运算中,可以通过计算各个参数集中的分类参数部分相对于当前分类参数的梯度,获得前述的第二正方向和第二负方向,进而确定出第二调整方向,作为分类参数优化方向。
以上第二调整方向可以表示为:
其中,Si为第一参数集,Sj为第二参数集,σ为当前分类参数。
于是,可以将第一调整方向和第二调整方向的总和,作为总损失减小的方向,即整个系统的调整方向。
如此,在系统训练的第三阶段的一个实施例中,通过以上方式确定出总损失减小的方向。于是,在图3的步骤35,在总损失减小的方向,更新强化学习系统包括,按照上述第一调整方向,更新策略网络100中的当前策略参数,按照上述第二调整方向,更新分类网络中的当前分类参数。如此,在第三阶段,同时训练策略网络和分类网络。
可以理解,尽管以上实施例中描述了在第一阶段单独训练分类网络之后,在第二阶段固定住分类网络,单独训练策略网络,然后在第三阶段,同时训练策略网络和分类网络的训练过程,但是,在其他实施例中,也可以在第一阶段之后,跳过第二阶段而直接进入第三阶段,同时训练策略网络和分类网络。
通过不断训练策略网络和分类网络,可以探索、确定出更优化的主干词提取策略以及分类算法,不断优化整个强化学习系统,使得系统的总损失不断减小,实现训练目标。在达成训练目标的情况下,策略网络可以准确地提取出尽量少的主干词,以使得句子表达更加精炼,同时不影响句子的含义,也就是不影响该句子的语义分类结果。
在实现训练目标的情况下,就可以将训练得到的策略网络用于主干词提取。在这样的情况下,可以将待分析的句子输入给策略网络,策略网络利用训练得到的策略参数,对该句子进行处理。根据策略网络的输出,就可以确定该句子中的主干词。这些主干词的集合可以对应于一个主干句子,用于后续的意图识别,语义匹配等进一步文本分析,优化后续文本分析的效果。
综合以上,通过强化学习的方式,进行主干词提取的学习和训练。在强化学习系统中,策略网络作为actor,用于主干词提取;分类网络作为critic,用于对句子进行分类。可以利用现有的句子样本库作为训练预料训练分类网络,从而避免主干词标注的人工成本。经过初步训练的分类网络即可对策略网络提取的主干词构成的句子进行分类,如此评估主干词提取的效果。通过对策略网络和分类网络的输出结果均设置损失,根据总损失反复训练策略网络和分类网络,可以得到理想的强化学习系统。如此,可以在无需主干词人工标注的情况下,训练得到理想的网络系统,实现对主干词的有效提取。
根据另一方面的实施例,还提供一种通过强化学习提取主干词的装置。该装置可以部署在任何具有计算、处理能力的设备或平台上。图7示出根据一个实施例的装置示意图。如图7所示,该装置700包括:
分类网络训练单元71,配置为利用句子样本集,训练用于句子分类的分类网络;
第一确定单元72,配置为利用当前策略参数下的策略网络,对所述句子样本集中的第一样本句子进行主干词提取,获得第一主干词集合,并根据所述第一样本句子中的词语数目和所述第一主干词集合中的词语数目,确定当前的第一损失;
第二确定单元73,配置为利用所述分类网络对由所述第一主干词集合构成的第一备选句子进行分类处理,获得所述第一备选句子的第一分类结果,并根据所述第一分类结果以及所述第一样本句子的分类标签,确定当前的第二损失;
总损失确定单元74,配置为根据所述当前的第一损失和当前的第二损失,确定当前的总损失;
更新单元75,配置为在总损失减小的方向,至少更新所述策略网络,以用于从待分析句子中提取主干词。
在一个实施例中,策略网络包括第一嵌入层,第一处理层和第二处理层。第一确定单元72具体配置为:
在所述第一嵌入层,获得所述第一样本句子中的各个词的词嵌入向量;
在所述第一处理层,根据所述词嵌入向量,确定所述各个词作为主干词的概率;
在所述第二处理层,至少根据所述概率,从所述各个词中选择至少一部分词,构成所述第一主干词集合。
进一步的,在一个实施例中,在所述第二处理层,从所述各个词中选择概率值大于预设阈值的词,构成所述第一主干词集合。
在一个实施例中,分类网络包括第二嵌入层和第三处理层,第二确定单元73具体配置为:
在所述第二嵌入层,获得所述第一备选句子对应的句子嵌入向量;
在所述第三处理层,根据所述句子嵌入向量,确定所述第一备选句子的第一分类结果。
根据一种实施方式,所述策略网络和/或所述分类网络基于循环神经网络RNN。
在一种实施方式中,第一确定单元72还配置为,分别利用N组策略参数下的所述策略网络处理所述第一样本句子,获得对应的N个主干词集合,并分别确定N个第一损失;
所述第二确定单元73还配置为,利用所述分类网络,对所述N个主干词集合分别对应的N个备选句子进行分类处理,获得N个分类结果,并分别确定N个第二损失;
所述总损失确定单元74还配置为,根据N个第一损失和N个第二损失,确定对应的N个总损失,以及所述N个总损失的均值;
以及,确定损失值小于等于所述均值的至少一个第一总损失,以及损失值大于所述均值的至少一个第二总损失。
此外,更新单元75包括方向确定模块751以及更新模块752。其中,方向确定模块751配置为,基于所述至少一个第一总损失和所述至少一个第二总损失,确定所述总损失减小的方向;更新模块752配置为,根据方向确定模块751确定的方向,执行网络更新。
更具体的,在一个实施例中,第二确定单元73配置为:利用同一组分类参数下的所述分类网络,对所述N个备选句子分别进行分类处理,获得所述N个分类结果;在这样的情况下,所述N个总损失对应于所述N组策略参数;
如此,所述方向确定模块751配置为:
确定所述至少一个第一总损失对应的至少一组第一策略参数相对于当前策略参数的梯度的累积,作为正方向;
确定所述至少一个第二总损失对应的至少一组第二策略参数相对于当前策略参数的梯度的累积,作为负方向;
将所述正方向与所述负方向的相反方向叠加,作为所述总损失减小的方向。
与此相应的,在一个实施例中,更新模块752配置为:在所述总损失减小的方向,更新所述策略网络中的当前策略参数。
在另一实施例中,第二确定单元73配置为:利用M组分类参数下的所述分类网络,对所述N个备选句子进行分类处理,获得所述N个备选句子对应的N个分类结果,其中M<=N;在这样的情况下,所述N个总损失对应于N个参数集,其中第i参数集包括第i组策略参数,和处理第i备选句子时所述分类网络对应的分类参数;
此时,所述方向确定模块751配置为:
确定所述至少一个第一总损失对应的至少一组第一参数集相对于当前策略参数的梯度的累积,作为第一正方向;
确定所述至少一个第二总损失对应的至少一组第二参数集相对于当前策略参数的梯度的累积,作为第一负方向;
将所述第一正方向与所述第一负方向的相反方向叠加,作为第一调整方向;
确定所述至少一个第一总损失对应的至少一组第一参数集相对于当前分类参数的梯度的累积,作为第二正方向;
确定所述至少一个第二总损失对应的至少一组第二参数集相对于当前分类参数的梯度的累积,作为第二负方向;
将所述第二正方向与所述第二负方向的相反方向叠加,作为第二调整方向;
将所述第一调整方向和第二调整方向的总和作为所述总损失减小的方向。
与此相应的,在一个实施例中,所述更新模块752配置为:
在所述第一调整方向,更新所述策略网络的当前策略参数;
在所述第二调整方向,更新所述分类网络的当前分类参数。
根据一种实施方式,所述装置700还包括预测单元(未示出),配置为:
将待分析的第二句子输入所述策略网络;
根据所述策略网络的输出,确定所述第二句子中的主干词。
通过以上装置,利用深度强化学习系统,实现主干词的提取。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2和图4所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图3和图6所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。