一种基于强化学习的Windows窗体应用程序自学习智能机器
人及其工作方法
技术领域
本发明涉及一种基于强化学习的Windows窗体应用程序自学习智能机器人及其工作方法,属于机器人技术领域。
背景技术
随着信息技术的普及,计算机应用软件得到了迅速发展,在一定程度上提高了社会信息化水平,逐渐成为推动我国经济发展的重要产业之一。应用软件是计算机软件的主要分类之一,是为针对用户特殊应用目的所撰写的计算机应用程序。应用软件的类别一般可以分为工业自动化软件、业务软件、内容访问软件、仿真软件、教育软件、多媒体开发软件、产品工程软件等。如今主流的操作系统有Windows、Linux以及MacOS,由于应用程序的开发和运行使用是基于操作系统之上的,同一种应用程序无法实现跨系统安装,同时不同的操作系统之间的应用程序的相互移植的成本太高。目前三大操作系统中Windows系列操作系统在市场中仍然是主导地位,所以,对于基于Windows平台开发的应用层序进行研究是具有意义的。
目前,大部分的Windows窗体应用程序开发使用MFC(微软基础类库),是一种微软公司提供的类库,其中是使用C++对Windows API进行封装,并且其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC可以使用面向对象的方法来调用Windows API,使得开发应用程序更加敏捷和高效,同时在开发过程中提供文档架构视图结构和活动文档的应用程序架构。但是,MFC的一些类的封装十分的复杂,不利于开发人员的调试。另外,MFC的很多类依赖于应用程序向导生成的代码,使得在使用VisualC++中其他类型的应用程序向导生成的工程中添加MFC支持的难度大大增加。
国内目前对于Windows用户软件进行智能分析的研究工作还处于初始阶段,一般研究人员手动去操作工程软件,以此来研究软件各个可操作序列。同时,在商业软件中,需要测试人员去手动编写针对软件操作的测试用例。以上方法都需要大量的成本,并且执行效率较低。
发明内容
针对现有技术的不足,本发明提供了一种基于强化学习的Windows窗体应用程序自学习智能机器人;
本发明还提供了上述智能机器人的工作方法;
本发明智能机器人通过读取下发的任务配置,使用强化学习,对Windows窗口应用软件进行用户行为的自主学习,对软件的用户行为学习完毕后自主进行用户的行为模拟,从而达到自主学习自主模拟软件的目的。本发明可以生成学习知识库,该技术大大推动相关研究的发展。
术语解释:
1、动作action,这里以windows系统预装的“记事本”窗体应用为例,首先记事本界面如图4 所示。在软件窗口中,可以看到windows的窗体软件的顶部一般分布着该软件的一些功能按钮,用户在使用该软件的时候,会通过鼠标的点击来对按钮进行点击,这里可以把用户点击的事件看作一个动作,即action,使用数学符号A来表示动作集合。此时,在任意时间t(t=1,2,3,…,n)中,按钮点击事件,或者说是动作,表示成at。以上,在窗体软件中,可以进行的动作软件中所有可以点击的按钮。
2、环境E,窗体软件环境是指该窗体软件启动后,通过界面或者窗口,给用户提供交互的环境environment,记为E。通过一个转移矩阵来描述这个窗体软件的环境,转移矩阵在本质上是表示动作和状态之间的转换状态。
3、状态state,在启动软件后,没有实施动作At时,整个软件环境是E。在用户实施动作At之后,整个记事本软件的会改变界面,这里一般是通过激发出全新的菜单或者弹出窗口界面,此时环境E产生改变,这种对于用户的改变可以定义为状态state,即用户通过At,与环境E交互之后,产生的软件环境的改变,这种改变则为state,在任意时间t(t=1,2,3,…,n)中,改变的state记为St。
4、智能机器人,Agent,软件自学习机器人,看作为一种用户的代理Agent。提出一种模仿用户来对软件进行学习的Agent。这里的学习是指,在真实的用户使用软件场景中,用户在初次接触到一个没用使用过的软件时,用户会自己去探索使用该软件的使用,通过使用组件熟悉软件使用的方法,用户探索和熟悉软件的过程,称为学习过程。基于这一点,目的是提出一种窗体软件代理 Agent,来模仿用户进行软件的学习,辅助和替代用户面对全新软件耗时的学习过程。
5、知识库K,Agent通过学习软件,会建立知识库K,这里的知识库是Agent的学习经验,学习经验的表现形式是以该软件一系列的操作序列来表示的。操作序列的定义为:Agent通过自我学习软件过程L,知识是从一个state通过action到达另一个state的序列。
6、回报R,Agent学习窗体软件的过程是一个自学习的过程,所谓的自学习是基于强化学习理论的,强化学习不同于监督学习或者非监督学习等其他的训练方式。自学习中没有训练集,也没有测试集,Agent整个学习的过程完全是自我探索窗体软件,Agent做出类似用户的动作action,软件反馈一个状态state和一个奖励reward,Agent在学习的过程中驱动自己不断探索学习的动力就是最大化这个奖励值。这里的回报reward定义为R,即转移到某个状态state或者执行了某个动作 action之后转移至某个状态state所获得的值R。在任意时间t(t=1,2,3,…,n)中,返回的reward记为rt。
本发明的技术方案为:
一种基于强化学习的Windows窗体应用程序自学习智能机器人,包括学习任务下发模块、学习任务解析模块、自学习模块、知识库构建模块;
所述学习任务下发模块用于下发任务配置文件;将下发的任务配置文件存储在所述任务配置文件库中;模拟机器人会自动接收该任务配置文件。该模块是模拟机器人的输入模块。所述任务配置文件包括需要进行学习的目标软件名称、目标软件中的按钮集合及目标软件的安装路径;目标软件中的按钮集合包括该目标软件的按钮的逻辑顺序,即点击一个按钮后激发新的弹出窗口或者菜单,新的弹出窗口或者菜单中又有新的按钮,目标软件中的按钮集合是一个记录软件的逻辑集合;智能机器人接收到配置文件,分别对以上各个配置信息进行解析,将解析后的信息作为自主学习阶段的参数。
所述学习任务解析模块用于接收到任务配置文件,分别对需要进行学习的目标软件名称、目标软件中的按钮集合及目标软件的安装路径进行解析,将解析后的信息作为自学习模块的参数。由于从任务下发模块接收到配置文件可以是多种格式的文件,其中文件的数据是多种格式,所以需要对文件进行解析,这里的解析后的信息,包括对不同的文件格式按照文件规则进行编码以及格式转换,将其转换成计算机能够处理的机器码。
所述自学习模块用于接收解析后的信息并选取学习策略后对目标软件进行自学习;
所述知识库构建模块用于存储所述自学习模块自学习后获取的知识。
进一步优选的,所述任务配置文件的文本格式包括.csv、.txt、.json、.inf。
上述Windows窗体应用程序自学习智能机器人的工作方法,包括步骤如下:
(1)所述学习任务下发模块下发任务配置文件;
(2)所述学习任务解析模块接收到所述学习任务下发模块下发的任务配置文件,分别对需要进行学习的目标软件名称、目标软件中的按钮集合及目标软件的安装路径进行解析,将解析后的信息作为自学习模块的参数;解析后的信息是指配置文件信息按照计算机内部文件编码规则转换成计算机识别的机器码;学习任务解析模块中,由于从学习任务下发模块接收到的数据是多种格式,所以需要对文件进行解析,将其转换成机器人代理能够处理的信息,其组成是对任务配置文件进行接收然后进行信息的转换。
(3)所述自学习模块接收解析后的信息并选取学习策略后对目标软件进行自学习,并自学习后获取的知识存储在所述自学习模块中。
根据本发明优选的,步骤(3)中,接收解析后的信息并选取学习策略,是指:对于小型软件,例如音乐播放器,记事本,浏览器等,这些小型软件的按钮和菜单相对较少,选用Off-policy学习策略中Q-learning算法的学习策略;对于大型软件,例如Word,WPS等,这些软件的按钮数量庞大,并且菜单数量很多,选用On-policy学习策略中SARSA算法的学习策略。
根据本发明优选的,步骤(3)中,通过Off-policy学习策略中Q-learning算法对目标软件进行自学习,Q-learning算法是一种无模型的强化学习算法,Q-learning算法的目的是学习一种策略,该策略告诉智能机器人在什么情况下该采取什么样的动作,并且具有处理随机过渡和奖励的问题。对于有限的马尔可夫决策过程(FMDP),Q-learning算法最终都会发现一个最优的策略,即从当前的状态开始,它将在所有的连续步骤中最大化总奖励的期望值,Q-learning算法可以为任何给定的 FMDP确定最佳的行动策略。其中Q代表返回用于更新奖励的函数,其代表在给定状态下执行的动作的“质量”。包括步骤如下:
A、Q表初始化:在自学习开始之前,Q表中状态对应的值使用q值表示,q值全为0;
最终目标动作操作的奖励r是20,其它每一次动作操作的奖励rt为-1;其它的超参数ε,γ和α初始值在配置文件中用户自定义规定;
自学习模块在进行目软件探索和学习的时候,根据记忆和下一次的动作来不断地更新记忆,Q 表来进行记忆的存储和更新;
q值表示状态价值函数Q(S,A)的值;一开始Agent没有进行学习,所以q值初始值为0;
由于Q-learning是一种迭代算法,因此在第一次更新发生之前,它会隐式假定一个初始条件。高初始值,可以鼓励探索:无论选择哪种操作,更新规则都将使其具有比其他替代方法更低的值,从而增加其选择可能性。第一次奖励r可用于重置初始条件。根据这个想法,第一次采取行动时,奖励就用来设定Q。这样可以在确定性奖励固定的情况下立即学习。与采用任何初始条件(AIC) 的模型相比,包含初始条件的重置(RIC)的模型可以更好地预测参与者的行为。RIC在重复的二元选择实验中似乎与人类行为一致。
B、状态st下,t时刻智能机器人实施一个动作at,观察奖励rt,进入新的状态st+1,进行Q表的迭代更新,如式(I)所示:
Qnew(st,at)←Q(st,at)+α·[rt+γ·maxQ(st+1,at)-Q(st,at)] (I)
式(I)中,在学习过程中,实施动作之后,对于状态st和动作at给定的q值Q(st,at)被新值 Qnew(st,at)所迭代更新,Qnew(st,at)包括两部分组成,α为学习率,α为0,表示不会学习任何知识,α为1,表示旧的值被丢弃;α的取值范围为[0,1],rt表示在t时刻执行动作at的奖励,γ表示折扣因子,折扣因子为0时,仅考虑当前的奖励,而折扣因子接近1则可以争取长期的高奖励。γ的取值范围为[0,1],maxQ(st+1,at)是指智能机器人在选择未来的动作和状态所产生的q值;表示如果智能机器人一直选择最大奖励动作,那么智能机器人将继续执行相同的动作,并且不会尝试其他任何动作;
也许其他一些未尝试的动作会比这更好。探索因子的引入可以解决这个问题,探索因子将使 Q-learning算法在预定百分比的时间内选择随机动作。如果智能机器人Agent在进行迭代q值的过程中,即学习的过程中,如果每次都采取当前状态效用最大的动作,会有更好的选择一直没有被探索到的情况,智能机器人Agent一直会被困在以往的经验之中,这里通俗的来说就是智能机器人 Agent通过探索,每次只点击具有最大回报的的按钮,这时智能机器人Agent的记忆只记住了这些最大的按钮,所以受这种记忆的影响,智能机器人Agent探索的效率会下降。而假若Agent在这里每次随机选取一个动作,因为探索了太多无用的状态而导致收敛缓慢,这里是指智能机器人Agent 每次随机任意点击按钮的软件,整个学习的过程就会变长,虽然最后是学习到了如何达到目标。
智能机器人不断使用ε-greedy策略来选取对自己奖励最大的未来动作,ε-greedy策略如式(Ⅱ) 所示:
rt+γ·maxQ(st+1,at) (II)
式(Ⅱ)中,rt+γ·maxQ(st+1,at)是现实中智能机器人在选择未来的动作和状态所产生的q 值,式(Ⅱ)是迭代公式,而rt+γ·maxQ(st+1,at)-Q(st,at)是现实与估计值的差距,整个迭代的过程就是根据未来状态下的奖励来对当前状态的修正;
智能机器人在没有到达学习终点,即没有学习到目标的动作,就一直使用ε-greedy策略来一直迭代执行整个学习过程,一旦学习到达学习终点,式(Ⅱ)不再迭代,学习过程结束;整个过程中,每次迭代的值都更新到智能机器人的记忆中即Q表中。
根据本发明优选的,Q-learning算法的状态价值函数Q(S,A)如式(Ⅲ)所示:
式(Ⅲ)中,S指的是整个软件的状态的集合,A指的是整个软件的按钮动作集合,
指的是奖励的集合,整个式子表明Q(S,A)是由一个软件的状态和动作,以及两者相应的奖励回报
共同决定的。价值函数在Q-learning具有决定性的作用,因为它是自学习的核心,具体是作用域Q值得迭代。
Q-learning算法是选择一个动作一直往下走,直到一个学习周期结束在进行学习。
根据本发明优选的,步骤(3)中,通过On-policy学习策略中SARSA算法对目标软件进行自学习,包括步骤如下:
a、T表初始化:在自学习开始之前,Q表中状态对应的值使用T值表示,T值全为0;
自学习模块在进行目软件探索和学习的时候,根据记忆和下一次的动作来不断地更新记忆,Q 表来进行记忆的存储和更新;
T值表示状态价值函数Q(S,A)的值;
b、状态st下,t时刻智能机器人实施一个动作at,观察奖励rt,进入新的状态st+1,进行Q表的迭代更新,如式(Ⅳ)所示:
式(Ⅳ)中,λ是指学习率,是一个在0到1之间的数,该值的大小决定了智能机器人从估计和现实之间的误差有多少学习到,r
t代表软件环境返回的回报奖励,
代表折扣率,是一个在0 到1之间的数,T(s
t,a
t)是指智能机器人在选择未来的动作和状态所产生的T值;
智能机器人与所给的软件环境交互并根据所采取的操作来更新策略,是一种策略学习,状态动作的T值根据学习率λ调整错误进行更新,同时也是由上一次旧的T值和采取策略未来的T值两部分组成,其余各参数和Q-learning类似。
智能机器人在没有到达学习终点,即没有学习到目标的动作,就一直使用式(Ⅳ)迭代执行整个学习过程,一旦学习到达学习终点,式(Ⅳ)不再迭代,学习过程结束;整个过程中,每次迭代的值都更新到智能机器人的记忆中即T表中。
智能机器人对窗体软件学习完毕后,会把所学习到的知识记录下来,建立成知识库,类似于人类对某种课程进行学习后的归纳总结。智能机器人的知识是目标软件的状态以按钮动作的之间的正确关系。
本发明的有益效果为:
本发明可以对所有的Windows窗体应用程序进行自主学习,这种学习完全是机器人自主选择学习策略,自主归纳知识,对知识进行组织构建。可以有效地为网络安全科研人员研究互联网用户的软件行为提供有效的基础;在一定程度上为互联网群体和个体用户的行为提供研究和实验基础。有效地为研究人员和软件开发人员提供快速取得Windows窗体软件有效操作序列的方法。为军队保密单位和商业公司的软件测试工作提供有效基础。实用范围包括软件服务提供商,网络安全科研人员实验与研究、网络靶场,军用软件测试,能在其任何时间、任何地点提供Windows窗体应用程序自学习智能机器人,应用前景十分广泛。
附图说明
图1为本发明基于强化学习的Windows窗体应用程序自学习智能机器人的结构框图;
图2为本发明基于强化学习的Windows窗体应用程序自学习智能机器人的工作方法的总体流程框图;
图3为本发明基于强化学习的Windows窗体应用程序自学习智能机器人的工作方法的详细流程图;
图4为“记事本”窗体应用界面示意图;
图5为智能机器人对窗体软件自学习过程示意图;
图6格式菜单示意图;
图7字体按钮弹窗示意图。
具体实施方式
下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。
实施例1
一种基于强化学习的Windows窗体应用程序自学习智能机器人,如图1所示,包括学习任务下发模块、学习任务解析模块、自学习模块、知识库构建模块;
学习任务下发模块用于下发任务配置文件;将下发的任务配置文件存储在所述任务配置文件库中;模拟机器人会自动接收该任务配置文件。该模块是模拟机器人的输入模块。任务配置文件包括需要进行学习的目标软件名称、目标软件中的按钮集合及目标软件的安装路径;目标软件中的按钮集合包括该目标软件的按钮的逻辑顺序,即点击一个按钮后激发新的弹出窗口或者菜单,新的弹出窗口或者菜单中又有新的按钮,目标软件中的按钮集合是一个记录软件的逻辑集合;智能机器人接收到配置文件,分别对以上各个配置信息进行解析,将解析后的信息作为自主学习阶段的参数。学习任务解析模块用于接收到任务配置文件,分别对需要进行学习的目标软件名称、目标软件中的按钮集合及目标软件的安装路径进行解析,将解析后的信息作为自学习模块的参数。由于从任务下发模块接收到配置文件可以是多种格式的文件,其中文件的数据是多种格式,所以需要对文件进行解析,这里的解析后的信息,包括对不同的文件格式按照文件规则进行编码以及格式转换,将其转换成计算机能够处理的机器码。自学习模块用于接收解析后的信息并选取学习策略后对目标软件进行自学习;知识库构建模块用于存储所述自学习模块自学习后获取的知识。
任务配置文件的文本格式包括.csv、.txt、.json、.inf。
实施例2
实施例1所述Windows窗体应用程序自学习智能机器人的工作方法,如图2、图3所示,包括步骤如下:
(1)学习任务下发模块下发任务配置文件;
(2)学习任务解析模块接收到学习任务下发模块下发的任务配置文件,分别对需要进行学习的目标软件名称、目标软件中的按钮集合及目标软件的安装路径进行解析,将解析后的信息作为自学习模块的参数;解析后的信息是指配置文件信息按照计算机内部文件编码规则转换成计算机识别的机器码;学习任务解析模块中,由于从学习任务下发模块接收到的数据是多种格式,所以需要对文件进行解析,将其转换成机器人代理能够处理的信息,其组成是对任务配置文件进行接收然后进行信息的转换。
(3)自学习模块接收解析后的信息并选取学习策略后对目标软件进行自学习,并自学习后获取的知识存储在所述自学习模块中。步骤(3)中,接收解析后的信息并选取学习策略,是指:对于小型软件,例如音乐播放器,记事本,浏览器等,这些小型软件的按钮和菜单相对较少,选用 Off-policy学习策略中Q-learning算法的学习策略;对于大型软件,例如Word,WPS等,这些软件的按钮数量庞大,并且菜单数量很多,选用On-policy学习策略中SARSA算法的学习策略。
智能机器人对窗体软件自学习过程如图5所示,用户执行action“字体”,软件环境返回全新状态state——一个新的窗口,观察发现,state中包含t+2时刻action,用户在t+2时刻在进行其他的 action,以此类推。本发明设计的Agent的工作的过程就是类似于真实用户这种学习操作的过程。例如,真实场景下,在某时刻t用户点击了记事本中的“格式”按钮,此时,action为“格式”,点击“格式”后,会出现如图6。
此时弹出了包含“自动换行”、“字体”按钮的菜单,这便是实施action“格式”后,环境E给用户一个全新的state——包含“自动换行”、“字体”按钮的菜单,并且这个state中又包含下一时刻t+1的action——“自动换行”、“字体”。假设t+1用户点击了“字体”按钮,如图7所示。
通过Off-policy学习策略中Q-learning算法对目标软件进行自学习,Q-learning算法是一种无模型的强化学习算法,Q-learning算法的目的是学习一种策略,该策略告诉智能机器人在什么情况下该采取什么样的动作,并且具有处理随机过渡和奖励的问题。对于有限的马尔可夫决策过程 (FMDP),Q-learning算法最终都会发现一个最优的策略,即从当前的状态开始,它将在所有的连续步骤中最大化总奖励的期望值,Q-learning算法可以为任何给定的FMDP确定最佳的行动策略。其中Q代表返回用于更新奖励的函数,其代表在给定状态下执行的动作的“质量”。包括步骤如下:
A、Q表初始化:在自学习开始之前,Q表中状态对应的值使用q值表示,q值全为0;
最终目标动作操作的奖励r是20,其它每一次动作操作的奖励rt为-1;其它的超参数ε,γ和α初始值在配置文件中用户自定义规定;
自学习模块在进行目软件探索和学习的时候,根据记忆和下一次的动作来不断地更新记忆,Q 表来进行记忆的存储和更新;
q值表示状态价值函数Q(S,A)的值;一开始Agent没有进行学习,所以q值初始值为0;
由于Q-learning是一种迭代算法,因此在第一次更新发生之前,它会隐式假定一个初始条件。高初始值,可以鼓励探索:无论选择哪种操作,更新规则都将使其具有比其他替代方法更低的值,从而增加其选择可能性。第一次奖励r可用于重置初始条件。根据这个想法,第一次采取行动时,奖励就用来设定Q。这样可以在确定性奖励固定的情况下立即学习。与采用任何初始条件(AIC) 的模型相比,包含初始条件的重置(RIC)的模型可以更好地预测参与者的行为。RIC在重复的二元选择实验中似乎与人类行为一致。
对于Q表的更新,其实就是Agent一个自学习的思维过程。人类在进行软件探索和学习的时候,即根据自己脑中的记忆和下一次的探索来不断的更新自己的记忆,Agent在这里也是用同样的机制,是利用一张Q表来进行记忆的存储和更新,这张Q表的结构是一个二维表,如表1所示。
表1
B、状态st下,t时刻智能机器人实施一个动作at,观察奖励rt,进入新的状态st+1,进行Q表的迭代更新,如式(I)所示:
Qnew(st,at)←Q(st,at)+α·[rt+γ·maxQ(st+1,at)-Q(st,at)] (I)
式(I)中,在学习过程中,实施动作之后,对于状态st和动作at给定的q值Q(st,at)被新值 Qnew(st,at)所迭代更新,Qnew(st,at)包括两部分组成,α为学习率,α为0,表示不会学习任何知识,α为1,表示旧的值被丢弃;α的取值范围为[0,1],rt表示在t时刻执行动作at的奖励,γ表示折扣因子,折扣因子为0时,仅考虑当前的奖励,而折扣因子接近1则可以争取长期的高奖励。γ的取值范围为[0,1],maxQ(st+1,at)是指智能机器人在选择未来的动作和状态所产生的q值;表示如果智能机器人一直选择最大奖励动作,那么智能机器人将继续执行相同的动作,并且不会尝试其他任何动作;
也许其他一些未尝试的动作会比这更好。探索因子的引入可以解决这个问题,探索因子将使 Q-learning算法在预定百分比的时间内选择随机动作。如果智能机器人Agent在进行迭代q值的过程中,即学习的过程中,如果每次都采取当前状态效用最大的动作,会有更好的选择一直没有被探索到的情况,智能机器人Agent一直会被困在以往的经验之中,这里通俗的来说就是智能机器人 Agent通过探索,每次只点击具有最大回报的按钮,这时智能机器人Agent的记忆只记住了这些最大的按钮,所以受这种记忆的影响,智能机器人Agent探索的效率会下降。而假若Agent在这里每次随机选取一个动作,因为探索了太多无用的状态而导致收敛缓慢,这里是指智能机器人Agent 每次随机任意点击按钮的软件,整个学习的过程就会变长,虽然最后是学习到了如何达到目标。
智能机器人不断使用ε-greedy策略来选取对自己奖励最大的未来动作,ε-greedy策略如式(Ⅱ) 所示:
rt+γ·maxQ(st+1,at) (II)
ε-greedy是用在决策上的一种策略,比如ε=0.9时,就说明有90%的情况会按照Q表的最优值选择行为,10%的时间使用随机选行为。
γ是对未来reward的衰减值。γ类似于Agent的眼睛,想象Q-learning的Agent天生近视眼, γ=1时,Agent有了一副合适的眼镜,在s1看到的Q是未来没有任何衰变的奖励,也就是Agent 能清清楚楚地看到之后所有步的全部价值,但是当γ=0,Agent没了眼镜,只能摸到眼前的reward, 同样也就只在乎最近的大奖励,如果γ从0变到1,眼镜的度数由浅变深,对远处的价值看得越清楚,所以机器人渐渐变得有远见,不仅仅只看眼前的利益,也为自己的未来着想。
式(Ⅱ)中,rt+γ·maxQ(st+1,at)是现实中智能机器人在选择未来的动作和状态所产生的q 值,式(Ⅱ)是迭代公式,而rt+γ·maxQ(st+1,at)-Q(st,at)是现实与估计值的差距,整个迭代的过程就是根据未来状态下的奖励来对当前状态的修正;智能机器人在没有到达学习终点,即没有学习到目标的动作,就一直使用ε-greedy策略来一直迭代执行整个学习过程,一旦学习到达学习终点,式(Ⅱ)不再迭代,学习过程结束;整个过程中,每次迭代的值都更新到智能机器人的记忆中即Q表中。
Q-learning算法的状态价值函数Q(S,A)如式(Ⅲ)所示:
式(Ⅲ)中,S指的是整个软件的状态的集合,A指的是整个软件的按钮动作集合,
指的是奖励的集合,整个式子表明Q(S,A)是由一个软件的状态和动作,以及两者相应的奖励回报
共同决定的。价值函数在Q-learning具有决定性的作用,因为它是自学习的核心,具体是作用域Q值得迭代。
Q-learning算法是选择一个动作一直往下走,直到一个学习周期结束在进行学习。
举个例子,假设Agent的最终目标是学习出“格式”-“字体”-“确定”的知识,Agent的学习过程应该是这样的。这里为了方便解释,修改Q表中动作和状态的下标,方便阐述例子的过程。
Agent和真实用户一样,只能看到当前软件环境所反馈的软件状态,所以在下表2中,当处在软件启动状态s1的时候,Agent是看不见将来状态下的动作,即“帮助”、“自动换行”、“字体”、“确定”、“取消”等动作的,以后的状态下的动作选择也遵循这个规则,表2中Agent看不见的使用灰色标注。
根据Q表的估计,此时的表是根据多次更新之后的表,这意味着Agent在之前已经进行了探索,所以表中的值会有不同,我们选取部分,方便说明。
因为在s1中,即软件启动状态。“格式”a3的值比较大,通过之前的决策方法,在s1采取了a3,并到达s4,即格式菜单。这时开始更新用于决策的Q表,接着Agent并没有在实际中采取任何行为, 而是再想象自己在s4上采取了每种行为,分别看看两种行为哪一个的Q值大,这里可以看出Q(s4, a18)的值比Q(s4,a17)的大,即“字体”的值比“自动换行”的值大,所以把大的Q(s4,a18)乘上一个衰减值γ(比如是0.9)并加上到达s4时Agent从软件环境所获取的奖励R,因为会获取实实在在的奖励R,将这个作为Agent现实中Q(s1,a3)的值,但是之前是根据Q表来估计Q(s1,a3)的值。所以,有了现实和估计值,就能更新Q(s1,a3),根据估计与现实的差距,将这个差距乘以一个学习效率α累加上老的Q(s1,a3)的值更新成新的值。但时刻记住,虽然用maxQ(s4)估算了一下s4状态, 但还没有在s4做出任何的行为,s4的行为决策要等到更新完了以后再重新另外做,这就是Agent是如何决策和学习的过程。
表2
实施例3
根据实施例2所述的Windows窗体应用程序自学习智能机器人的工作方法,其区别在于:
步骤(3)中,通过On-policy学习策略中SARSA算法对目标软件进行自学习,包括步骤如下:
a、T表初始化:在自学习开始之前,Q表中状态对应的值使用T值表示,T值全为0;
自学习模块在进行目软件探索和学习的时候,根据记忆和下一次的动作来不断地更新记忆,Q 表来进行记忆的存储和更新;
T值表示状态价值函数Q(S,A)的值;
b、状态st下,t时刻智能机器人实施一个动作at,观察奖励rt,进入新的状态st+1,进行Q表的迭代更新,如式(Ⅳ)所示:
式(Ⅳ)中,λ是指学习率,是一个在0到1之间的数,该值的大小决定了智能机器人从估计和现实之间的误差有多少学习到,r
t代表软件环境返回的回报奖励,
代表折扣率,是一个在0 到1之间的数,T(s
t,a
t)是指智能机器人在选择未来的动作和状态所产生的T值;
智能机器人与所给的软件环境交互并根据所采取的操作来更新策略,是一种策略学习,状态动作的T值根据学习率λ调整错误进行更新,同时也是由上一次旧的T值和采取策略未来的T值两部分组成,其余各参数和Q-learning类似。
智能机器人在没有到达学习终点,即没有学习到目标的动作,就一直使用式(Ⅳ)来迭代执行整个学习过程,一旦学习到达学习终点,式(Ⅳ)不再迭代,学习过程结束;整个过程中,每次迭代的值都更新到智能机器人的记忆中即T表中。
智能机器人对窗体软件学习完毕后,会把所学习到的知识记录下来,建立成知识库,类似于人类对某种课程进行学习后的归纳总结。智能机器人的知识是目标软件的状态以按钮动作的之间的正确关系。