罗 兵 刘海潮 封皓君
(海军工程大学电子工程学院 武汉 430033)
随着信息技术的发展以及现代部队作战指挥模拟化、信息化水平的提升,各类卫星、雷达、电抗、技侦、作战基础数据,以及来自互联网、社交媒体的开源情报不断累积,军事信息也已初具规模,如何有效地处理和利用这些军事信息是一个值得研究的问题[1~3]。经典万维网上的数据可供更便捷的访问途径,然而目前的自然语言处理水平还难以理解人类语言,导致这些信息集成和关联途径受限。在联合作战背景下,军事信息来源广泛,单纯靠人工去识别有用的信息工作量巨大。
目前,军事领域的相关关联信息仍然以专家规则库为主,对多源异构信息的关联能力明显不足,无法做到从更广泛的语义角度自主发现信息间的关联,极大制约了战场信息服务作战部队,从而掌握信息优势的效能。为此,在联合作战环境下,需要更迫切地针对接入的各类异构信息,进行内容自主理解识别,并建立信源之间的关联,以支撑指挥员形成更为完整的战场理解,为指挥员等战场角色提供更精准高效的战场信息服务。
现有工作主要考虑将大数据挖掘技术和推荐技术应用到军事信息的处理上。王寿鹏等深入挖掘军事领域的海量数据并分析大数据挖掘技术在军事领域的应用[4]。程远国等提出一种发现雷达探测、电子对抗侦察等不同专业侦察数据集中的目标同现模式挖掘算法[5]。吕曹芳等建立了军事情报中非结构化文本情报数据处理方法,结合军事情报的特点,提出了军事情报中数据挖掘的框架模型,探讨中文文本下的军事情报挖掘方法[6]。李永波在军事情报分析中引入文本挖掘技术,采用关联分析分类方法,对大量的文本情报进行分类,明显提高了情报分析效益[7]。黄志良等介绍了推荐技术在军事情报领域的方法和应用,成为情报服务领域的研究重点之一[8]。
目前,军事情报挖掘主要基于关联规则建立海量信息间的内部联系,从而快速提取出其中的关键信息。Agrwal等提出经典的 Apriori[9]算法可用于关联规则挖掘,该算法使用逐层搜索的策略,由频繁k项集不断探索k+1项集。Han等提出FP-growth[10]算法,旨在从事务集中挖掘频繁项集,其核心思想是将数据库转换成一棵存放压缩的频繁模式信息的FP-tree,然后在此之中挖掘频繁项集。然而其树形结构需要大量的内存,当数据量达到一定规模时很难实际应用。Luo等提出一种稀疏布尔矩阵分布式频繁挖掘算法FISM[11],该算法将项集作为矩阵的行,将事务作为矩阵的列。从矩阵中很容易得到项集的支持度,之后只需对所有项集进行“与”运算即可,虽然该算法降低了输入和输出的消耗,只需完成一次扫描,但当项集的数量巨大时,项集之间的“与”运算量也变得十分巨大。除此之外,牛海玲等人提出的AMRDD算法[12]同样引入矩阵计算,从而减少扫描事务数据库的次数,同时该算法还应用局部剪枝和全局剪枝方法缩减生成候选频繁项集的数量来提升算法效率。Lu等提出的基于Spark的改进Apriori算法[13]也是基于类似原理,对数据的存储结构进行优化来进一步提升算法的效率。曹冠平等构建分布式作战实验数据关联规则挖掘框架[14],将分布式并行处理技术运用到作战实验数据关联规则挖掘中,构建分布式作战实验数据关联规则挖掘框架,从而提升挖掘效率。通过分布式并行处理技术更好地处理海量数据,并且通过挖掘得到的关联规则能够很好地反映作战要素间的相互联系。
文章提出一种面向指挥员关注的基于强化学习的聚类推荐模型,通过强化学习从指挥员历史已读内容的语义信息中解析出指挥员的关注方向,并使用聚类模型为其进行信息推荐。这一模型在利用历史信息的基础上,根据指挥员反馈调整优化学习模型,进行面向指挥员的个性化推荐,通过将指挥员的个性化关注融入学习模型,实现了从无差别信息共享到考虑角色关注的个性化关联目标。
强化学习主要由智能体(Agent)、环境(Envi⁃ronment)、状态(State)、动作(Action)、奖励(Re⁃ward)组成。
环境的转变会随着智能体执行不同动作而转变,这一些列要素会构成一种全新的状态。在这种状态下,环境会随之产生一种正奖励或负奖励。依据不同奖励,智能体会随之选择不同策略执行下一动作,并执行下一轮循环过程。
通过这种强化学习方式,智能体可以被训练出一定的学习能力,了解在什么状态下应执行什么样的动作使得自身获得最大奖励。作为一套通用的学习框架,强化学习理论可用来解决通用人工智能的问题,因此强化学习也被称为通用人工智能的机器学习方法。强化学习的基本流程如图1所示。
图1 强化学习基本流程
如图所示,将当前处于时刻t的状态记为St,智能体Agent将执行某动作记为At,这时候该动作At改变了当前状态并使得智能体在下一时刻t+1到达新的状态St+1,此时环境产生了反馈奖励记为Rt+1将返回给智能体。此时再基于St+1和Rt+1执行新的动作At+1,如此反复迭代地执行交互过程。上述过程的最终目的是让智能体最大化累积奖励(Cumula⁃tive Reward),公式为累积奖励G:
强化学习的最终目标是寻找一种最优策略,从而最大化长期累积奖励。作为一套通用的学习框架,强化学习可以看作通用人工智能的未来。
Q-Learning[15]是早期最为经典的强化学习方式。但是Q-Learning用二维数组来存储(动作空间×状态空间)中更新的数字,对于状态空间为连续的情景下只能将其建模为离散空间然后进行最优值的寻找,需要大量的存储空间,并且缺乏通用性,无法处理没有见到过的情况。DQN[16]则是采用神经网络来摆脱二维数组的存储、处理方式,从而克服了Q-Learning中的缺点。
然而,强化学习与深度学习结合仍会带来部分问题,主要包括以下四点:1)深度学习需要大量的带标签的样本进行监督学习,强化学习只有回报(Reward)返回值,并且带有噪声、延迟、稀疏等问题;2)深度学习的样本独立、强化学习前后状态相关;3)深度学习目标分布固定,强化学习的状态分布持续变化;4)使用非线性网络表示值函数时出现不稳定现象。针对以上问题,分别考虑采用构造标签、经验池、双网络等方式进行改进。
面向指挥员关注的强化学习聚类推荐模型旨在通过指挥员近期关注的内容,学习指挥员的行为模式,进而从指挥员还未查看的文档中,根据指挥员的行为模式来筛选出指挥员关注的相关信息并且推送给指挥员。因此,本文将根据指挥员行为特征来进行建模,模型主要学习过程是指挥员的行为模式,最终聚类结果则表示为指挥员在当前行为模式下可能会关注的结果,系统工作流程如图2所示。
图2 系统工作流程
若是多个指挥员关注领域有着明显的不同,或者是多个指挥员关注的信息之间耦合性较少,则可以同时学习多个指挥员的行为习惯。同样地,考虑到每篇新文档最终都会被分到一个聚类结果中,并且只能分类到一个聚类结果中,若是多个指挥员之间关注的信息之间有较高的耦合,有可能会出现两个指挥员都应该关注同一信息,但是最终只推送给一个指挥员的情况,因此可以考虑独立地对一个指挥员的行为模式进行学习,从而保证所有相关信息都能被推送给该指挥员。
学习指挥员的近期行为模式,主要是学习指挥员最近的关注方向,因此需要理解指挥员阅读内容中的语义信息,再通过强化学习,从已读内容的语义信息中解析出关注方向,从而学习到指挥员的行为模式。因此,首先需要对信息进行一定的预处理。
本文将每篇文档内容去停用词,去除掉语气词、助词等无关词的影响,然后采用表示学习的方法,训练Doc2Vec模型将去停用词之后的文档Em⁃bedding表示为400维的向量。同时如果有指挥员的相关信息(如部门)等有助于学习指挥员习惯的信息,同样可以采用one-hot的方法进行Embedding表示,与每篇文档的Embedding向量进行拼接,最终形成指挥员独有的向量表示。用户特征的Em⁃bedding维数应当与文档维度相适应,若用户特征维度过低则很难捕捉到特征信息,若用户特征维度过高则会影响文档特征的捕捉。我们试图从文档语义内容中捕捉到指挥员的行为模式,该特征只是用来辅助以及完善行为模式的补充信息。因此我们在原始模型中将每个用户唯一的Embedding表示为40维的向量,拼接在文档特征之前,从而组成一个440维的向量。我们将所有拼接向量组成一个长度为文档个数的长度,作为强化学习的初始环境(Environment)。
在内容预处理阶段我们发现有许多内容几乎完全相同的文档内容,因为其来源相同,只是经过不同人进行二次转发,其内容完全重合,因此为了更好地训练模型,我们不对重复的文档进行多次训练。
本文采用强化学习方法对指挥员行为模式进行学习,主要依赖对指挥员已读内容进行聚类,因此需要将强化学习中的状态(State)建模为当前聚类结果,即在采取一系列动作(Action)后将哪些文档聚在了同一个类中。而环境(Environment)则是我们在第一步内容预处理中得到的包含指挥员信息的Embedding结果,动作(Action)即为当前环境下将哪些文档放在同一个类中,回报(Reward)为当前把这些文档聚在一起所带来的收益。每一轮最终的聚类结果是聚类成指定个数的类别(如果有n位指挥员则聚类为n+1类)。
最初,Embedding的文档个数为n,则状态为有n个类,辅以DQN网络并采取相关动作决定将哪两个类(c1,c2)进行合并。此时新的状态为有n-1个类,且(c1,c2)在同一类中。定义回报函数:(R=当前正确的属于同一类的文档个数-之前正确属于同一类的文档个数-类长度惩罚),基于此获得当前的回报。此处类长度惩罚是为了避免出现所有文档都聚在一个类中的情况,若不加类长度惩罚,所有文档聚在同一个类中仍然可以得到较高的回报。类长度惩罚定义为:P×(同一类中用户数-1),其中P为用户指定的惩罚常量。并且为了优化DQN的部分问题,文章引入经验池,即每次都从经验池中选取一定量的样本进行训练,因此我们还需每步都将(当前状态,动作,回报,下一状态)存入经验池。通过不断训练使网络学习如何取得最高的回报,从而使得网络能够学习到指挥员的行为模式。
我们在预处理中得到了初始的环境,将此环境输入到网络中。其中有两个构成完全一样的网络,都是输入层维度为440维,输出为100维度,三层全连接层,输出维度为2,每层输出都采用RELU进行处理。最初的学习率和贪婪度可以根据需要设置较高,然后根据训练过程逐步进行缩小。记两个网络分别为目标网络、评估网络。将状态输入到评估网络,由评估网络的输出决定合并哪两个类,评估网络输出合并两个类所能得到的Q值,选择Q值最大的进行合并。评估网络得到的Q值估计与目标网络的Q值估计进行比较,然后根据误差的方向传播来更新评估网络,并在一定的步数之后用评估网络的参数更新目标网络。在使用DQN时损失函数为
此时,s、s′、a、a′分别为当前状态、下一状态、当前动作、下一动作。Q(s ,a)为采取当前动作的Q值,Q*(s ,a)为更新后的Q值。
显然损失函数是基于Q-Learning的第二项确定的,两个公式意义相同,因此可以使用当前的Q值来逼近Target Q值,并通过RMSporp(也可以采用SGD、Adam等)方法来进行误差的反向传递,训练网络。
数据集:为了验证本文提出的方法,作者从网上爬取了3500条新闻,并人工模拟了10个不同的指挥员,分别为每个新闻标注为是否是关注的新闻类型。每个指挥员的关注点互不相同,例如节日新闻、军事冲突新闻等,但这些关注点可能在部分新闻上有重叠,即存在某些新闻被多个不同的指挥员关注。最终,我们从中按指挥员关注类别均匀随机地划分出2500条新闻作为我们模型的训练集,剩下1000条未用于训练的新闻用于测试。
实验方法:训练集包含2500条新闻和10个指挥员的关注信息,我们用其训练得到最终的模型。对于测试集中的1000条新闻,我们分别决定是否将其推荐给指挥员以及具体推荐给某一个指挥员。考虑到存在某些新闻被多个不同的指挥员关注,只要这些新闻被推荐给了任意一个正确的指挥员,我们就认为其推荐结果准确。
因为存在10个关注点互不相同的指挥员,模型最终的聚类结果有11个类,多出来的一类用来存放不在任意一个指挥员关注列表内的新闻,最终,各指挥员被推送信息的准确率如图3所示。
图3 模型验证结果
由结果可知,推荐正确率从0.79~0.88不等。从平均实验结果来看,测试集中共有850条新闻被准确推荐到了特定的指挥员,平均准确率高达0.85,表明了模型针对具体指挥员进行推荐的有效性。
为了更直观地体现模型对具体指挥员进行个性化推荐的性能,我们给出数据集中的几个案例进行具体的说明和分析。
模型的部分训练数据如表1所示,表示不同指挥员关注的不同新闻,可以视为指挥员各自的行为模式。鉴于新闻文本的长度,在此我们仅列出了每条新闻的标题,而事实上整条新闻的内容都是参与模型训练的。可以看到,指挥员A主要关注关税、贸易战等内容,而指挥员B则对各国政府大选更为关注,不同指挥员各司其职,在各自擅长的领域处理事务。面对互联网上海量的未读新闻或情报,显然不能让指挥员人工地查看哪些是自己所关注的。
表1 部分训练数据
用划分出来的训练集对模型进行充分的训练之后,我们在测试集上对模型进行了个性化推荐的测试,表2中是几条用作测试的新闻以及我们模型为其进行的推荐结果。第一条是关税相关的新闻,我们将其准确地推荐给了主要关注这一方面的指挥员A。同理,第二条新闻有关大选结果,是指挥员B重点关注的内容。而第三个案例是军事行动类别的新闻,是其他指挥员关注的内容,不应该推送给指挥员A或者指挥员B。而现有的基于关联规则的方法,很容易将美国和指挥员A相关联,从而将第三条新闻推送给指挥员A,因为指挥员A关注关税和贸易战,而近期的相关新闻大多与美国相关。
表2 部分测试结果
本文提出了一种面向指挥员关注的基于强化学习的聚类推荐模型,通过强化学习从指挥员历史已读内容中学习行为模式,并使用聚类模型为其进行个性化的信息推荐。对真实世界新闻内容的实验结果表明,该模型针对具体指挥员进行推荐不失为一种有效方案。