一种基于强化学习算法和GAN模型的用户软件行为模拟系统
及其工作方法
技术领域
本发明涉及一种基于强化学习算法和GAN模型的用户软件行为模拟系统及其工作方法,属于计算机用户操作行为分析领域。
背景技术
测试环境的真实度体现在网络环境支撑、网络行为、用户个体行为等方面。在真实的网络环境下,多数用户使用桌面应用程序而在链路上产生相应的网络流量,而且典型的网络应用程序使用的协议多是自行设计而不公开的,因此这些协议是很难进行流量模拟的。随着知识图谱、数据挖掘、智能Agent等技术的发展,网络测试环境对更多样、效果更逼真的行为模拟方法提出了迫切的要求。国内的网络测试床很少涉及该层次的研究与实现。目前,用户操作软件的行为可以分为两种,一种是用户粗粒度行为,这种行为主要在乎模拟的结果并不关心模拟的过程。另一种是细粒度行为,这种行为更在乎模拟的过程。实现用户行为模拟对网络测试环境尤为重要。
国内外对实现用户行为模拟大致分为两个方法,第一种方法是通过编写脚本的形式来实现特定功能的模拟,这种方式利用脚本对鼠标位置和键盘输入进行控制,进而完成对一组操作序列的模拟,该方式需要的工作量十分的大,每一组操作序列都需要单独的脚本,想要实现多数软件的多种组合操作相对较为困难,而且适应性差,可扩展性差。第二种方法是通过分析用户的操作习惯、访问习惯,对用户行为的习惯建模来学习用户的行为规律,一次性生成用户的行为操作序列。但是目前并没有生成此序列之后如何转化为用户操作软件的行为的方法。
发明内容
针对现有技术的不足,本发明提供了一种基于强化学习算法和GAN模型的用户软件行为模拟系统。
本发明还提供了一种基于强化学习算法和GAN模型的用户软件行为模拟系统的工作方法。该方法首先对用户软件间行为序列进行收集和预处理,经预处理之后的数据符合用户软件间的行为模拟模块的输入格式;然后用强化学习算法以最短的时间生成指定功能的软件内完整的操作序列;最后使用GAN模型模拟用户软件间的行为。
术语解释:
1.GAN:Generative Adversarial Networks,生成式对抗网络,是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。模型通过框架中(至少)两个模块:生成器和判别器的互相博弈学习产生相当好的输出。
本发明的技术方案为:
一种基于强化学习算法和GAN模型的用户软件行为模拟系统,包括软件间操作序列收集与提取模块、用户软件内操作序列模拟模块和用户软件间行为模拟模块,
软件间操作序列收集与提取模块用于收集软件间原始操作数据,对数据进行过滤和去重,再对数据进行结构化处理,生成结构化数据集;
用户软件内操作序列模拟模块利用强化学习算法生成用户软件内完整操作序列,并模拟用户软件内操作行为;
基于软件间操作序列收集与提取模块得到的结构化数据集,用户软件间行为模拟模块利用用GAN网络生成用户软件间的行为序列,并模拟用户软件间的行为。
上述基于强化学习算法和GAN模型的用户软件行为模拟系统的工作方法,用于生成软件内和软件间的用户行为序列,模拟用户软件内和用户软件间的行为,具体步骤包括:
(1)使用软件间操作序列收集与提取模块对软件间操作序列进行收集,对数据进行过滤和去重,再对数据进行结构化处理,生成结构化数据集;
(2)在用户软件内操作序列模拟模块中,使用强化学习算法生成用户软件内完整操作序列,进行用户软件内操作序列模拟;
(3)基于步骤(1)生成的结构化数据集,使用GAN网络生成用户软件间的行为序列,进行用户软件间的行为模拟。
根据本发明优选的,步骤(3)中,所述GAN网络包括生成器和判别器,
生成器用于估计真实样本数据的分布,使用服从某一概率分布的样本输入到生成器;生成器利用该随机样本产生一个假数据,将其送入判别器;
判别器的输入包括真实数据和生成器生成的数据,根据输入的数据尝试预测输入数据是真实数据和生成器生成的数据,判别器使用Sigmoid函数解决二元分类问题;
在训练过程中固定生成器或判别器,更新判别器或生成器的网络权重,交替迭代;
当固定生成器的时候,对判别器进行优化,若输入来自于真实数据,判别器优化网络结构使自己输出为真;若输入来自于生成器生成的数据,则判别器优化网络结构使输出为假;
当固定判别器的时候,生成器优化自己的网络使生成器输出尽可能和真实数据一样的样本,并且使得生成的样本经过判别器之后,判别器输出为真,在这个过程中,双方都尽可能的优化自己,从而形成竞争对抗,直到达到动态的平衡,即针对生成器生成的数据,判别器无法判别其是否来自真实数据;
所述GAN网络输入的数据为步骤(1)生成的结构化数据集;用户软件间行为序列由GAN网络中训练后的生成器生成。
本模块采用GPU运算、深度学习数值计算开源软件库tensorflow实现。对于判别器,输入来自两部分:真实数据和生成器生成的假数据,输出是真和假。对于生成器,输入为服从某一概率分布的样本,输出为生成的伪数据。
本发明使用GAN网络的好处在于,训练的模型只用到了反向传播,而不需要马尔可夫链,并且生成器的更新不直接依赖数据样本而是使用判别器进行反向传播,因而生成的伪行为序列会更加真实。
根据本发明优选的,步骤(2)中,使用强化学习算法生成用户软件内完整操作序列,进行用户软件内操作序列模拟;将软件中可以点击的菜单或者按钮定义为动作,点击事件过后的软件状态定义为状态集S中的一员,将通过点击软件打开之后定义为软件的初始状态S;每当软件处于初始状态,用户点击当前可以访问的菜单按钮将其添加到动作集A,那么软件便会转移到新的状态;将新的状态同样也加入到状态集S,周而复始便得到一个软件所有的状态与动作,同时得到状态行为转移矩阵,状态行为转移矩阵中行表示状态,列表是行为;具体过程为:
2-1:输入预先设定的迭代次数T、状态集S、动作集A、步长α、衰减因子γ和探索率ε;
2-2:初始化价值函数Q(S,A),设定价值函数Q(S,A)的终止状态为Q(S,A)等于0;Q(S,A)表示算法从中学习到的知识,是一个状态行为转移矩阵,行表示状态,列表示行为;
2-3:初始化状态S为状态集S中第一个状态序列;
2-4:当前状态S使用∈-贪婪法选择出动作A,并执行该动作;其中ε-贪婪法指在每一步以ε的概率选择在当前状态下最好的动作;
2-5:步骤2-4中的动作完成后,得到新状态S1和奖励R,在新的状态下使用贪婪法选择出动作A1;其中贪婪法指每一步选择都采取在当前状态下最好的动作;
2-7:令S=S1
2-8:若状态S不是终止状态,则重复步骤2-4到步骤2-8,记录该次迭代过程中,经过的路径和需要的时间,经过的路径即操作序列,所需要的时间即操作时间;其中路径可表示为:状态1-动作1-状态2-动作2-…-…-状态n;
若状态S是终止状态,则进行下一轮迭代,重复步骤2-3到2-8;
2-9:若迭代次数等于预先设定的迭代次数,则迭代结束,得到某个软件内的操作序列和操作时间以及状态行为转移矩阵。
价值函数Q(S,A)用来寻找在某个状态下的最好的动作,使得最终获得的累计奖励最大。使用强化学习可以在用户操作的环境中主动学习并获得所需要的反馈,能够学习到在动态环境中可执行的策略,可以在单个软件内的模拟可以实现自动操作。
根据本发明优选的,步骤(1)中,对软件间的操作序列进行收集,对数据进行过滤和去重,再对数据进行结构化处理,生成结构化数据集,具体步骤为:
1-1、对软件间的操作序列进行收集,并将得到的原始数据存储在数据库中;
1-2、从数据库中取出原始数据,按照定义的过滤规则逐条地检查原始数据,执行过滤和去重,完成对数据的清洗;定义的过滤规则主要有快照重复的过滤,从而保留关键的状态;鼠标无效点击事件,过滤无效动作,空数据,系统进程数据等。
1-3、按照设定的窗口长度对步骤1-2清洗后的数据进行切片、填充;切片是指对清洗后的数据按照设定的窗口长度来进行分割,填充是指在分割过程中针对不满足设定的窗口长度的片段进行内容填充;
1-4、对步骤1-3得到的数据进行结构化处理,产生完整的结构化数据集。
根据本发明优选的,步骤1-2中,所述过滤规则用于滤除空数据、重复数据和系统进程;
步骤1-4中,结构化处理的过程为:通过分析进程名和执行路径中的信息,确定每一条数据所属的应用软件,将原始数据转为由软件id表示的定长切片的软件间操作序列,从而完成对数据的结构化处理。
本发明的有益效果为:
1.本发明提出的一种基于强化学习算法和GAN模型的用户软件行为的模拟系统可以为网络靶场、政府、科研机构等单位和个人提供生成用户行为模拟序列的功能,能够更加真实地模拟用户行为。
2.使用GAN网络输出生成的用户软件间行为序列,训练的模型只用到了反向传播,而不需要马尔可夫链,并且生成器的更新不直接来袭数据样本而是使用判别器进行反向传播,因而生成的伪行为序列会更加真实。
3.用户软件内操作序列模拟模块中,使用强化学习算法能够以最短的时间生成指定功能的软件内完整的操作序列。
4.使用软件间操作序列收集与提取模块收集用户软件间的真实数据,并进行过滤处理、提取信息并转换为结构化数据,提高了后期算法的处理能力。不仅利用了真实用户数据来生成行为序列,还将行为转化为了可执行的操作。
附图说明
图1为本发明提供的基于强化学习算法和GAN模型的用户软件行为模拟系统的结构示意图。
图2为软件间操作序列收集与提取模块的程序流程图。
图3为Q-Learning算法的程序流程图。
图4为GAN模型模拟用户软件间的行为的结构示意图。
具体实施方式
下面结合实施例和说明书附图对本发明做进一步说明,但不限于此。
实施例1
一种基于强化学习算法和GAN模型的用户软件行为模拟系统,如图1所示,包括软件间操作序列收集与提取模块、用户软件内操作序列模拟模块和用户软件间行为模拟模块,
软件间操作序列收集与提取模块用于收集软件间原始操作数据,对数据进行过滤和去重,再对数据进行结构化处理,生成结构化数据集;
用户软件内操作序列模拟模块利用强化学习算法生成用户软件内完整操作序列,并模拟用户软件内操作行为;
基于软件间操作序列收集与提取模块得到的结构化数据集,用户软件间行为模拟模块利用用GAN网络生成用户软件间的行为序列,并模拟用户软件间的行为。
实施例2
实施例1提供的一种基于强化学习算法和GAN模型的用户软件行为模拟系统的工作方法,用于生成软件内和软件间的用户行为序列,模拟用户软件内和用户软件间的行为,具体步骤包括:
(1)使用软件间操作序列收集与提取模块对软件间操作序列进行收集,如图2所示,对数据进行过滤和去重,再对数据进行结构化处理,生成结构化数据集;
步骤(1)中,对软件间的操作序列进行收集,对数据进行过滤和去重,再对数据进行结构化处理,生成结构化数据集,具体步骤为:
1-1、对软件间的操作序列进行收集,并将得到的原始数据存储在数据库中;
1-2、从数据库中取出原始数据,按照定义的过滤规则逐条地检查原始数据,执行过滤和去重,完成对数据的清洗;定义的过滤规则主要有快照重复的过滤,从而保留关键的状态;鼠标无效点击事件,过滤无效动作,空数据,系统进程数据等。
步骤1-2中,过滤规则用于滤除空数据、重复数据和系统进程;
1-3、按照设定的窗口长度对步骤1-2清洗后的数据进行切片、填充;切片是指对清洗后的数据按照设定的窗口长度来进行分割,填充是指在分割过程中针对不满足设定的窗口长度的片段进行内容填充;
1-4、对步骤1-3得到的数据进行结构化处理,产生完整的结构化数据集。
步骤1-4中,结构化处理的过程为:通过分析进程名和执行路径中的信息,确定每一条数据所属的应用软件,将原始数据转为由软件id表示的定长切片的软件间操作序列,从而完成对数据的结构化处理。
(2)在用户软件内操作序列模拟模块中,使用强化学习算法生成用户软件内完整操作序列,进行用户软件内操作序列模拟;
步骤(2)中,如图3所示,使用强化学习算法生成用户软件内完整操作序列,进行用户软件内操作序列模拟;将软件中可以点击的菜单或者按钮定义为动作,点击事件过后的软件状态定义为状态集S中的一员,将通过点击软件打开之后定义为软件的初始状态S;每当软件处于初始状态,用户点击当前可以访问的菜单按钮将其添加到动作集A,那么软件便会转移到新的状态;将新的状态同样也加入到状态集S,周而复始便得到一个软件所有的状态与动作,同时得到状态行为转移矩阵,状态行为转移矩阵中行表示状态,列表是行为;具体过程为:
2-1:输入预先设定的迭代次数T、状态集S、动作集A、步长α、衰减因子γ和探索率ε;
2-2:初始化价值函数Q(S,A),设定价值函数Q(S,A)的终止状态为Q(S,A)等于0;Q(S,A)表示算法从中学习到的知识,是一个状态行为转移矩阵,行表示状态,列表示行为;
2-3:初始化状态S为状态集S中第一个状态序列;
2-4:当前状态S使用∈-贪婪法选择出动作A,并执行该动作;其中ε-贪婪法指在每一步以ε的概率选择在当前状态下最好的动作;
2-5:步骤2-4中的动作完成后,得到新状态S1和奖励R,在新的状态下使用贪婪法选择出动作A1;其中贪婪法指每一步选择都采取在当前状态下最好的动作;
2-7:令S=S1
2-8:若状态S不是终止状态,则重复步骤2-4到步骤2-8,记录该次迭代过程中,经过的路径和需要的时间,经过的路径即操作序列,所需要的时间即操作时间;其中路径可表示为:状态1-动作1-状态2-动作2-…-…-状态n;
若状态S是终止状态,则进行下一轮迭代,重复步骤2-3到2-8;
2-9:若迭代次数等于预先设定的迭代次数,则迭代结束,得到某个软件内的操作序列和操作时间以及状态行为转移矩阵。
价值函数Q(S,A)用来寻找在某个状态下的最好的动作,使得最终获得的累计奖励最大。使用强化学习可以在用户操作的环境中主动学习并获得所需要的反馈,能够学习到在动态环境中可执行的策略,可以在单个软件内的模拟可以实现自动操作。
(3)基于步骤(1)生成的结构化数据集,使用GAN网络生成用户软件间的行为序列,进行用户软件间的行为模拟。
步骤(3)中,如图4所示,GAN网络包括生成器和判别器,
生成器用于估计真实样本数据的分布,使用服从某一概率分布的样本输入到生成器;生成器利用该随机样本产生一个假数据,将其送入判别器;
判别器的输入包括真实数据和生成器生成的数据,根据输入的数据尝试预测输入数据是真实数据和生成器生成的数据,判别器使用Sigmoid函数解决二元分类问题;
在训练过程中固定生成器或判别器,更新判别器或生成器的网络权重,交替迭代;
当固定生成器的时候,对判别器进行优化,若输入来自于真实数据,判别器优化网络结构使自己输出为真;若输入来自于生成器生成的数据,则判别器优化网络结构使输出为假;
当固定判别器的时候,生成器优化自己的网络使生成器输出尽可能和真实数据一样的样本,并且使得生成的样本经过判别器之后,判别器输出为真,在这个过程中,双方都尽可能的优化自己,从而形成竞争对抗,直到达到动态的平衡,即针对生成器生成的数据,判别器无法判别其是否来自真实数据;
GAN网络输入的数据为步骤(1)生成的结构化数据集;用户软件间行为序列由GAN网络中训练后的生成器生成。
本模块采用GPU运算、深度学习数值计算开源软件库tensorflow实现。对于判别器,输入来自两部分:真实数据和生成器生成的假数据,输出是真和假。对于生成器,输入为服从某一概率分布的样本,输出为生成的伪数据。
本发明使用GAN网络的好处在于,训练的模型只用到了反向传播,而不需要马尔可夫链,并且生成器的更新不直接依赖数据样本而是使用判别器进行反向传播,因而生成的伪行为序列会更加真实。