欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 用于应用导航的神经网络系统和方法独创技术54675字

用于应用导航的神经网络系统和方法

2021-03-14 16:34:09

用于应用导航的神经网络系统和方法

  技术领域

  本公开一般涉及使用神经网络进行应用导航。特别地,本公开涉及使用多个神经网络来预测应用的下一个页面。

  背景技术

  不熟悉的应用可能是难以导航的。试图执行任务的用户可能不知道如何访问必要的应用界面。未经训练的用户可能以增加在执行任务中涉及的时间、步骤数或误差可能性的方式来执行该任务。用于指导用户通过应用的现有方法可能是低效且不准确的。例如,训练材料可能反映了开发人员相信用户应当如何与应用交互,这可能与熟练用户实际上如何与应用交互不同。并且随着应用被更新或使用该应用的上下文改变,训练材料可能很快变得过时。

  因此,存在对这样的应用导航系统的需要:该系统可以反映用户实际上如何与应用交互,并且可以在应用被更新或使用该应用的上下文改变时继续提供准确的推荐。根据应用开发的一种模式,可以从对数据对象进行操作以生成显示给用户的页面的应用状态来构造应用(或应用的组件)。应用状态可以定义页面的外观和功能,而数据对象可以存储实际数据。如本文所公开的,用于应用导航的系统和方法可以利用应用开发的这种模式来提供克服现有方法缺陷的改进的应用导航系统。

  发明内容

  本公开的实施例描述了用于使用神经网络进行应用导航的系统和方法。这些神经网络可以被链接,并且可以被配置为通过预测应用状态和数据对象来预测应用的页面,其中可以由预测的应用状态对预测的数据对象进行操作以生成预测的页面。该预测可以取决于先前访问的应用页面的历史。

  本公开的实施例可以包括至少一个处理器和包含指令的至少一个非暂态存储器。该指令在由该至少一个处理器执行时,可以使系统执行操作。该操作可以包括提供应用,其包括对数据对象进行操作以生成页面的应用状态。该操作还可以包括使用应用状态预测神经网络和数据对象预测神经网络来预测下一个页面。该预测可以进一步包括使用应用状态预测神经网络和第一输入向量来预测下一个应用状态,以及使用数据对象预测神经网络、第二输入向量和下一个应用状态来预测下一个数据对象。该操作还可以包括提供显示所预测的下一个页面的指示的指令。

  在一些实施例中,应用状态预测神经网络的输出层可以包括与应用状态对应的输出节点。在各种实施例中,使用应用状态预测神经网络和第一输入向量来预测下一个应用状态可以包括对第一输入向量进行散列。在一些实施例中,第一输入向量和第二输入向量的共同元素可以被散列一次并且被重用于预测下一个数据对象。在各种实施例中,第一输入向量和第二输入向量可以是相同的向量。在一些实施例中,数据对象预测神经网络的输出层可以包括与数据对象对应的输出节点。在各种实施例中,第一输入向量可以包括应用历史。在一些方面,应用历史可以包括指示与先前访问的页面相关联的在先应用状态和在先数据对象的元素。在一些实施例中,第一输入向量可以包括指示实体、与该实体相关联的用户、该用户的角色、该用户的授权级别、工作日、日期或时间中的至少一个的元素。在各种实施例中,第一输入向量可以包括指示当前数据对象的值的元素。

  在一些实施例中,操作还可以包括使用当前数据对象根据当前应用状态生成当前页面。在一些实施例中,提供显示所预测的下一个页面的指示的指令可以包括提供显示当前页面的指令,该当前页面被修改以指示所预测的下一个页面。在一些实施例中,提供显示所预测的下一个页面的指示的指令可以包括提供使用当前数据对象根据当前应用状态动态地生成当前页面的指令,该当前页面被修改以指示所预测的下一个页面。

  在一些实施例中,提供显示所预测的下一个页面的指示的指令可以包括提供显示包括所预测的下一个页面的多个预测的下面的页面的指示的指令。在各个方面,显示该多个预测的下面的页面的指示的指令可以包括指示该多个预测的下面的页面的相对可能性的指令。在一些实施例中,提供显示所预测的下一个页面的指示的指令可以包括提供动态地更新当前页面以包括指示所预测的下一个页面的图形元素的指令。在各种实施例中,图形元素是包括与所预测的下一个页面对应的图标的插图窗口。在一些方面,该图标可以是可选择的以过渡到下一个页面。在各种实施例中,提供显示所预测的下一个页面的指示的指令可以包括提供通过修改当前页面的现有图形元素以指示所预测的下一个页面来动态地更新当前页面的指令。在一些方面,修改当前页面的现有图形元素可以包括改变现有图形元素的放置、形状、尺寸或颜色中的至少一个;或者改变与现有图形元素相关联的文本的放置、字体、尺寸、强调或颜色中的至少一个。在一些实施例中,应用可以是单页面应用。

  附图说明

  附图图示了若干实施例,并且与描述一起用于解释本文公开的原理。在附图中:

  图1描绘了用于应用导航的系统,该系统包括提供应用的客户端和服务器。

  图2A描绘了包括应用状态的应用的示例性示意图。

  图2B描绘了图示由应用的应用状态使用数据对象进行页面生成的示例性示意图。

  图3A和图3B描绘了通过应用的页面的示例性用户轨迹。

  图4描绘了被配置为使用链接的神经网络来预测应用的下一个页面的预测元素。

  图5描绘了示例性输入向量。

  图6描绘了图示用于训练预测组件的示例性方法600的流程图。

  图7描绘了图示使用神经网络的应用导航的方法的流程图。

  图8-10描绘了用于财产管理应用的示例性用户界面。

  图11是可以用其实现本发明的系统、方法和装置的示例设备的框图。

  具体实施方式

  现在将详细参考关于附图讨论的示例性实施例。在一些情况下,相同的附图标记将被贯穿附图和以下描述使用来指代相同或相似的部分。除非另有定义,否则技术和/或科学术语具有本领域普通技术人员通常理解的含义。所公开的实施例被足够详细地描述以使得本领域技术人员能够实践所公开的实施例。要理解的是,在不偏离所公开的实施例的范围的情况下,可以利用其它实施例并且可以进行改变。因此,材料、方法和示例仅是说明性的,并不旨在必要是限制性的。

  计算系统可以向用户提供应用。这个应用可以包括多个页面。页面可以是显示给用户的用户界面,其包括数据和图形元素。图形元素可以包括控件和指示器。作为非限制性示例,页面可以是网页。作为附加示例,页面可以是根据模型-视图-控制器设计模式或类似软件设计模式(例如,模型-视图-适配器设计模式或模型-视图-视图模型设计模式)的视图(例如,显示给用户的信息的表示)。这些页面可以允许用户读取信息或键入信息或命令。不同页面可以使得能够读取或键入不同的信息或命令。该应用可以使得用户能够通过使用页面读取和/或键入信息或命令来完成任务。在一些情况下,完成任务可以要求与应用的多个页面进行交互。作为非限制性示例,用户可以使用第一页面从数据库检索信息,与应用交互以生成第二页面,然后使用第二页面基于检索到的信息键入数据或命令。

  用户可能发现使用这种应用执行任务是困难的。用户可能不熟悉应用和/或要执行的任务。因此,他们可能不知道如何将应用导航到正确页面以执行任务。替代地或附加地,可能存在执行任务的优选方式,该方式减少时间、步骤数量或误差的可能性。这种优选方式可以包括以特定次序访问页面的特定集合。不熟悉应用和/或任务的用户可能不知道这种优选方式来执行任务。取而代之的是,用户可能使用另一种方式来执行任务,该方式花费更长时间、要求更多步骤或误差的可能性增加。

  设想的系统和方法可以提供使用应用的建议。例如,设想的系统和方法可以推断用户正在尝试执行的任务并推荐用于执行那个任务的下一个页面。这个下一个页面可以是执行任务的优选方式的页面。在一些方面,设想的系统和方法可以通过修改应用的当前显示页面来提供推荐。例如,可以将当前显示的页面修改为包括附加窗口。这个附加窗口可以包括一个或多个控件。与这些控件进行交互可以使应用过渡到推荐的页面。作为附加示例,如果与当前显示页面的元素进行交互将使应用显示推荐的页面,那么那个元素可以被修改(例如,通过改变元素的放置、形状、尺寸或颜色;或通过改变与特定元素相关联的文本的放置、字体、尺寸、强调或颜色)。这种修改可以将用户的注意力指向该元素,其用作推荐。以这种方式,设想的系统和方法可以推荐将应用从当前显示的页面过渡到推荐的页面的动作。

  人工神经网络可以被用于生成该推荐。在一些实施例中,设想的系统和方法可以将整个预测处理划分为多个辅助步骤,每个辅助步骤由链接的神经网络的链中的一个神经网络执行。作为非限制性示例,推荐处理可以被划分为两个步骤。在第一步骤中,第一神经网络可以基于第一输入数据来推荐状态。在第二步骤中,第二神经网络可以基于所推荐的状态和第二输入数据来推荐数据对象。这些人工神经网络可以使用针对应用的实际使用数据进行训练。在一些实施例中,第一输入数据和第二输入数据可以是相同的输入数据。

  设想的系统和方法在手册、向导、教程和其它现有推荐系统等方面进行了改进。例如,设想的系统和方法可以提供更新的推荐,该推荐跟踪改变的使用模式或对应用的改变。而且,推荐不限于应用的开发人员所预计的情况。相反,手册、向导、教程和其它现有推荐系统由于改变的使用模式和应用更新而变得过时,并且被限制于开发人员所预计的情况。

  这些改进至少部分地由本文公开的特定体系架构来实现。应用的潜在页面的范围可以非常大,从而限制了常规神经网络的适用性。但是设想的系统和方法使用链接的神经网络将整个预测问题划分为较小的子问题。这使得能够使用以实际使用数据训练的人工神经网络来实现准确的推荐。

  图1描绘了与公开的实施例一致的用于应用导航的系统100,该系统100包括通过网络提供应用的客户端和服务器。客户端101可以是用户的计算设备(例如,可穿戴设备、移动设备、膝上型计算机、台式机、工作站、终端等)。客户端101可以被配置为运行web浏览器(例如,INTERNET等)。服务器103可以是被配置为响应于来自客户端101的请求的计算设备。网络可以是提供通信、交换信息和/或促进信息的交换的任何类型的网络(包括基础设施),诸如互联网、局域网或(一个或多个)其它合适的连接。客户端101可以被配置为在步骤105中从服务器103请求页面。作为响应,在步骤107中,服务器103可以被配置为提供一个或多个描述页面的布局和内容的文件。客户端101然后可以生成这个页面。

  客户端101或服务器103可以基于在步骤109和111中交换的信息来生成对页面的更新。在一些实施例中,客户端101可以在步骤109中联系服务器103以请求新页面。例如,运行在客户端101上的web浏览器可以向服务器103发送POST请求。在一些实施例中,服务器103可以被配置为通过在步骤111中渲染新页面并将这个新页面发送到客户端101来响应这个POST请求。客户端101然后可以加载这个新页面。在各种实施例中,客户端101可以动态地更新页面,而无需从服务器103加载新页面(例如,应用可以是单页面应用)。在这样的实施例中,可以使用web浏览器框架(诸如或本领域技术人员已知的类似框架)来实现应用。运行在客户端101上的web浏览器可以在步骤109中请求数据和/或指令(例如,使用调用)。服务器103可以被配置为在步骤111中以数据和指令(例如,作为对象)响应。客户端101然后可以使用接收到的数据和指令动态地更新页面。

  图2A描绘了与所公开的实施例一致的包括应用状态(例如,状态201-状态215)的应用的示例性示意图。如图所示,应用状态可以被链接,使得用户可以从一个应用状态过渡到另一个应用状态。例如,用户可以在应用状态201中启动应用120、过渡到应用状态203(例如,通过与由应用状态201生成的页面中的图形元素进行交互)、过渡到应用状态205(例如,通过另一种交互),然后返回到应用状态201。以这种方式,链接的应用状态可以形成一个或多个图形。在一些方面,应用状态可以组成应用(或应用的一个或多个组件)。

  图2B描绘了图示由应用120的应用状态233使用数据对象231进行页面235的生成的示例性示意图。在一些实施例中,应用状态可以定义页面的外观和功能。例如,应用状态可以定义一个或多个页面模板,其包括标记语言和脚本命令。在一些方面,每个应用状态可以具有唯一的标识符。这个标识符可以是文本串(例如,“application/directory/dostuff”或“dostuff_state”)或数字值。应用状态(例如,应用状态233)可以将数据对象(例如,数据对象231)作为输入。在各个方面,可以从数据对象的预定集合中选择数据对象。每个数据对象可以具有唯一的标识符。这个标识符可以是文本串(例如,“re:do stuff”或“root/dir/identifier”)或数字值。应用状态可以对所选择的数据对象进行操作以生成页面。作为非限制性示例,定义页面模板的应用状态可以被配置为将数据对象应用于页面模板,使用数据对象的一个或多个值执行脚本命令,并根据标记语言来呈现结果。

  图3A和图3B描绘了与所公开的实施例一致的通过应用120的页面的示例性用户轨迹。如先前所公开的,客户端101可以被配置为使用应用状态和数据对象来生成这样的页面。例如,客户端101可以被配置为当应用120的第一应用状态对第一数据对象进行操作时显示页面501。在这个示例中,客户端101可以被配置为当应用120的第二应用状态对第一数据对象进行操作时显示页面505。并且客户端101可以被配置为当应用120的第一应用状态对第二数据对象进行操作时显示页面503。由于页面可以取决于于应用状态和数据对象两者,因此应用状态的图和页面的图可以不同。

  用户可以在与应用120交互时在页面之间过渡。例如,如图3A和图3B中所指示的,用户可以从页面301过渡到页面303或者页面305。页面可以包括使得用户能够过渡到另一个页面的一个或多个图形元素。例如,页面可以包括下拉菜单、地址标签、地址栏或本领域技术人员已知的其它合适的控件。由于执行不同任务的用户可能与应用120以不同方式进行交互,因此系统100可以使用页面之间的过渡来为用户预测下一个页面。例如,如图3A中所示,当页面303是当前页面并且页面301是先前页面时,系统100可以估计下一个页面应当是页面307。相反,如图3B中所示,当页面303是当前页面并且页面305是先前页面时,系统100可以估计下一个页面应当是页面309。

  图4描绘了与公开实施例一致的被配置为使用链接的神经网络来预测应用的下一个页面的预测组件400。在一些方面,预测组件400可以被配置为将对下一个页面的预测划分为两个子问题。预测组件400可以被配置为使用状态预测器420基于第一输入向量来预测一个或多个下面的应用状态。预测组件400可以被配置为使用数据预测器430基于该一个或多个下面的应用状态和第二输入向量来预测由一个或多个下面的应用状态对其进行操作的一个或多个下面的数据对象。在一些实施例中,第一输入向量和第二输入向量可以是相同的(例如输入向量410,如图4中所示)。系统100可以被配置为基于预测的应用状态和预测的数据来预测页面。在一些实施例中,预测组件400可以被配置为生成多个页面预测。例如,预测组件400可以被配置为针对每个预测的数据对象和应用状态生成页面预测。

  在一些实施例中,预测组件400可以是系统100的组件。例如,系统100可以被配置为实现应用120和预测组件400。作为附加示例,预测组件400可以是应用120的组件。在各种实施例中,客户端101和/或服务器103可以被配置为实现预测组件400。在一些方面,客户端101可以被配置为预测应用状态和/或数据对象。在各个方面,服务器103可以被配置为预测应用状态和/或数据对象。在某些方面,客户端101和服务器103可以交互以预测应用状态或数据对象中的一个或多个。例如,客户端101可以将第一输入或第二输入的至少一部分提供给服务器103。客户端101然后可以从服务器103接收预测的应用状态、数据和页面中的一个或多个。

  与公开的实施例一致,下面更详细描述的输入向量410可以包括多个元素。这些元素不限于特定的数据类型,而是可以包括但不限于对象、数组、字符串、字符、浮点数或其它数据类型。

  状态预测器420可以包括从输入向量410生成状态输出423的神经网络。该神经网络可以包括输入层、一个或多个隐藏层以及输出层。输入向量410的元素可以与输入层的节点对应。在一些实施例中,输入层可以包括5到100个之间的节点,或20到50个之间的节点。在各种实施例中,神经网络可以包括单个隐藏层。一个或多个隐藏层可以包括5到50个之间的节点。根据本领域技术人员已知的方法,输出层和一个或多个隐藏层中的每一个的节点可以具有取决于前一层中的节点的权重和值的值。输出层可以包括与应用120的应用状态中的至少一些对应的节点。输出层中的节点可以具有指示与该节点对应的应用状态是否是下一个应用状态的可能性分数。在一些方面,可能性分数可以指示对应状态是下一个应用状态的概率。在各个方面,最高分数可以与最可能的状态对应,次最高分数可以与次最可能的状态对应,等等。

  与所公开的实施例一致,状态特征提取器421可以将输入向量410转换成用于输入层中的每个节点的值。在各个方面,状态特征提取器421可以被配置为对输入向量中每个元素的值计算散列。状态特征提取器421可以将散列值指派给输入层中的对应节点。例如,当元素是URL(例如,“StateA/StateC/StateE”)时,可以将这个URL的散列(例如,对于MD4是8858d721629ce6f9c8ff608ce5cff8d1)指派给输入层中的对应节点。在一些实施例中,可以对元素的原始二进制值计算元素的散列。在一些方面,仅可以指派这个散列的部分(例如,散列的位的子集)。散列函数可以是Fowler-Noll-Vo散列函数,或者是本领域中已知的另一个散列函数。将散列值指派给节点可以包括将散列值转换成具有预定位数的浮点数。这个浮点数可以被归一化到预定范围(例如,0到1)。

  状态输出423可以被配置为选择一个或多个预测的应用状态。在一些实施例中,所选择的应用状态可以是一个或多个最可能的预测的应用状态。例如,状态输出423可以选择预定数量的最可能的预测的应用状态。如上面关于图1B所描述的,应用状态可以具有标识符,诸如文本串(例如,“StateA.StateC.StateE”或“StateA/StateC/StateE”)或数字值。在一些实施例中,状态输出423可以包括用于该一个或多个预测的应用状态的(一个或多个)标识符。

  数据预测器430可以为从状态预测器420接收的每个预测的状态生成一个或多个预测的数据对象。数据预测器430可以包括生成数据输出433的神经网络。该神经网络可以包括输入层、一个或多个隐藏层以及输出层。在一些实施例中,输入层可以包括5到100个之间的节点,或20到50个之间的节点。在各种实施例中,神经网络可以包括单个隐藏层。一个或多个隐藏层可以包括5到50个之间的节点。神经网络可以使用状态输出423的一个或多个元素和输入向量来生成数据输出433。输入向量可以是输入向量410(如图所示)或另一个向量(例如,一个或多个元素中与输入向量410不同的向量)。输入向量的元素可以与神经网络输入层的节点对应。根据本领域技术人员已知的方法,输出层和一个或多个隐藏层中的每一个的节点可以具有取决于前一层中的节点的权重和值的值。

  如上面关于图2B所描述的,应用120可以被配置为从数据对象的集合中选择数据对象(例如,数据对象231)。在一些实施例中,数据预测器430的输出层可以包括与数据对象的集合中的每个对象对应的节点。数据预测器430的输出层中的节点可以具有指示与该节点对应的数据对象是否是下一个数据对象的可能性分数。在一些方面,可能性分数可以指示对应数据对象是下一个应用数据对象的概率。在各个方面,最高分数可以与最可能的数据对象对应,次最高分数可以与次最可能的数据对象对应,等等。

  与所公开的实施例一致,数据对象特征提取器431可以将输入向量和从状态预测器420输出的一个或多个状态转换成用于输入层中的每个节点的值。在一些方面,数据预测器430的输入层包括与从状态预测器420输出的一个或多个状态对应的输入节点以及输入向量410的元素。在各个方面,数据对象特征提取器431可以被配置为对每个元素的值计算散列,并将散列值指派给输入层中的对应节点。在一些实施例中,可以对元素的原始二进制值计算元素的散列。在一些方面,仅可以指派这个散列的部分(例如,散列的位的子集)。在一些方面,散列函数可以是Fowler-Noll-Vo散列函数。将散列值指派给节点可以包括将散列值转换成具有预定位数的浮点数。这个浮点数可以被归一化到预定范围(例如,0到1)。

  在一些实施例中,当用于状态预测器420的输入向量与用于数据预测器430的输入向量共享公共元素时,预测组件400可以被配置为对这些公共元素进行散列一次,然后将结果所得的值指派给状态预测器420和数据预测器430两者的输入层中的对应节点。例如,当用于数据预测器430的输入向量等于输入向量410时,预测组件400可以被配置为对输入向量410进行散列一次,并且重用输入向量410的散列值作为用于数据预测器430的输入。

  数据输出433可以选择一个或多个预测的数据对象。在一些实施例中,所选择的数据对象可以是一个或多个最可能的预测的数据对象。例如,数据输出433可以选择预定数量的最可能的预测的数据对象。在一些实施例中,数据对象可以具有标识符,诸如文本标识串(例如,“2Seaport Lane”)或数字标识值。在一些实施例中,数据输出433可以包括用于该一个或多个预测的状态的(一个或多个)标识符。

  预测的页面440可以基于输入向量410(并且在一些实施例中,附加地基于如上所述的输入到数据预测器430的第二不同向量)来指示预测的页面。在一些实施例中,预测的页面440可以包括一对或多对状态和数据对象。例如,预测的页面440可以包括最可能的应用状态和最可能的数据对象。如上所述,当状态预测器420输出多个状态对象时,预测的页面440可以包括这样的状态-数据对:其用于状态对象中的每一个和用于那个状态对象的最可能的数据对象。同样,当数据预测器430输出多个数据对象时,预测的页面440可以包括这样的状态-数据对:其用于状态对象中的每一个和用于那个状态对象的数据对象中的每一个。在一些实施例中,预测的页面440可以基于一对或多对应用状态和数据对象。例如,预测的页面440可以包括用于创建或动态更新页面235以指示预测的页面的数据或指令。例如,数据或指令可以配置应用120以在页面235上显示到预测的页面的链接,或者修改页面235的图形元素以指示与那个元素的交互将使得应用120过渡到预测的页面。

  图5描绘了与所公开的实施例一致的示例性输入向量410。如图5中所示,输入向量410可以包括当前数据值510、应用上下文520和应用历史530。如上所述,系统100可以被配置为通过将输入向量410应用于状态预测器420并且通过将输入向量410(在一些实施例中是不同的输入向量)应用于数据预测器430来预测一个或多个下面的页面。

  当前数据值510可以包括具有基于当前数据对象的值的一个或多个元素。例如,应用可以处于当前状态。在这个当前状态下,应用可以对当前数据对象进行操作。在一些方面,一个或多个值可以与这个当前数据对象相关联。例如,这个当前数据对象可以具有一个或多个参数。这些参数可以取值。例如,电子邮件消息对象可以包括各自取值的发送者参数、接收者参数和内容参数。

  应用上下文520可以包括指示用户正在其中与应用120进行交互的上下文的一个或多个元素。在一些实施例中,应用上下文520可以进一步指定谁正在使用应用120。例如,当服务器103向多个不同实体(例如,不同的公司或个人)提供应用120时,用户可以与那个实体相关联(例如,该用户可以是该实体的员工)。然后,应用上下文520可以包括指示与该用户相关联的实体的一个或多个元素。在一些方面,应用上下文520可以包括指示以下至少一个的一个或多个元素:与实体相关联的用户(例如,用户名)、用户的角色(例如,“合伙人”、“实习生”等)或用户的授权(例如,“用户”、“管理员”、“根”等)。在一些实施例中,应用上下文520可以进一步指定用户何时正在与应用120进行交互。例如,应用上下文520然后可以包括指示交互的工作日、日期或时间中的至少一个的一个或多个元素。

  应用历史530可以指示用户通过应用120的轨迹。在一些实施例中,应用历史530可以指示用户最新近访问的页面。应用历史530可以被限制为预定数量的最新近访问的页面。这个预定数量的范围可以在1到20之间,或5到15之间。应用历史530可以被构造为队列,其具有初始位置的最近最多访问的页面的指示,和最后位置的最新近访问的页面的指示。当新页面被访问时,最近最少访问的页面从最后位置弹出,并且对新页面的指示被推入初始位置。在一些实施例中,应用历史530的元素可以被初始化为默认值(例如,零或“空”的值)。当用户与应用120交互时,这些默认值将逐渐被覆写。以这种方式,应用历史530可以记录(document)用户通过应用120的路径。

  在一些实施例中,应用历史530可以用一对元素来指示每个页面:指示应用状态的元素(例如,状态指示531)和指示由该应用状态对其进行操作以生成页面的数据对象的元素(例如,数据对象指示533)。在一些方面,应用状态可以不对数据对象进行操作以生成页面(例如,应用的菜单或初始启动屏幕可以不采用数据对象)。在这样的方面中,可以将默认值(例如,零或“空”的值)指派给数据对象指示533,以指示应用状态未采用数据对象。如前所述,应用120可以被配置为将唯一标识符指派给状态和数据对象。这些标识符可以是文本串或数字值。应用历史530的指示状态的元素(例如,状态指示531)可以包括这种唯一标识符或基于该唯一标识符的值。同样,应用历史530的指示数据对象的元素(例如,数据对象指示521)可以包括这样的唯一标识符或基于该唯一标识符的值。

  图6描绘了与所公开的实施例一致的用于训练预测组件400的示例性方法600的流程图。在一些实施例中,方法600可以包括以下步骤:接收训练数据,训练状态预测器,训练数据对象预测器,以及提供与应用120一起使用的预测模型。如本领域技术人员将认识到的,步骤的这个特定序列并非旨在进行限制。在不偏离所设想的实施例的情况下,方法600的步骤可以被组合或划分,并且方法600可以包括附加的步骤或更少的步骤。

  在步骤601中开始之后,训练系统可以被配置为在步骤603中接收训练数据。在一些实施例中,训练数据可以包括用于预测下一个页面的信息和识别实际下一个页面的信息。例如,训练数据可以包括输入到状态预测器420的数据(例如,输入向量410的内容)、输入到数据预测器430的数据(如果与输入向量410的内容不同)、实际下一个状态的标识符,以及实际下一个数据对象的标识符。

  在一些实施例中,训练系统可以被配置为从向用户提供应用120的系统接收训练数据。例如,系统100可以被配置为存储和/或向训练系统提供用户与应用120的交互的记录。例如,客户端101和/或服务器103可以被配置为提供这种记录。在一些方面,训练系统可以直接从向用户提供应用120的系统接收训练数据。在各个方面,训练系统可以间接地接收训练数据。例如,训练系统可以从数据库接收训练数据。这个数据库可以转而从向用户提供应用120的系统接收训练数据。在一些方面,随着这个训练数据被生成,训练系统可以接收训练数据。在各个方面,训练系统可以重复地或周期性地接收训练数据。

  在步骤603之后,训练系统可以被配置为在步骤605中训练状态预测器。在一些实施例中,训练系统可以被配置为使用训练数据来生成预测的状态。在一些方面,训练系统可以被配置为生成输入向量并将那些输入向量应用于状态预测器神经网络(例如,状态预测器420)。状态预测器神经网络可以被配置为基于训练数据来生成应用状态预测。训练系统可以被配置为将这些应用状态预测与用户选择的实际应用状态进行比较,以生成误差信号。根据本领域技术人员已知的方法,训练系统可以使用这个误差信号来更新一个或多个隐藏层和输出层的节点的权重。根据本领域中已知的方法,训练系统可以被配置为从训练数据生成应用状态预测,使用预测的和实际的应用状态来生成误差信号,并更新权重直到一个或多个训练标准被满足。在一些方面,训练标准可以包括准确性标准,其基于(i)预测的状态与实际状态匹配的次数和(ii)训练数据中的条目的数量。在各个方面,训练标准可以包括基于预测的状态与实际状态的比较的均方误差标准,该均方误差标准由训练数据中应用状态的数量和观察的数量进行加权。

  在步骤603之后,训练系统可以被配置为在步骤607中训练数据对象预测器。在一些实施例中,训练系统可以被配置为在步骤605中训练状态预测器,然后在步骤607中训练数据对象预测器。在各种实施例中,训练系统可以在训练状态预测器和训练数据预测器之间交替。例如,训练系统可以接收一批训练数据、使用该批训练数据来训练状态预测器,然后使用状态预测器的输出和这批训练数据来训练数据对象预测器。训练系统然后可以使用下一批训练数据来重复这个训练处理。

  在一些实施例中,训练系统可以被配置为使用训练数据来生成预测的数据对象。在一些方面,训练系统可以被配置为生成输入向量,并将那些输入向量应用于数据预测器神经网络(例如,数据预测器430)。数据预测器神经网络可以被配置为基于训练数据生成预测数据对象。训练系统可以被配置为将这些预测的数据对象与用户选择的实际数据对象进行比较,以生成误差信号。根据本领域技术人员已知的方法,训练系统可以使用这个误差信号来更新一个或多个隐藏层和输出层的节点的权重。根据本领域中已知的方法,训练系统可以被配置为从训练数据生成数据对象预测,使用预测的和实际的数据对象生成误差信号,以及更新权重直到一个或多个训练标准被满足。在一些方面,训练标准可以包括准确性标准,其基于(i)预测的数据对象与实际数据对象匹配的次数和(ii)训练数据中的条目的数量。在各个方面,训练标准可以包括基于预测的数据对象与实际数据对象的比较的均方误差标准,该均方误差标准由训练数据中数据对象的预定集合中的数据对象的数量和观察的数量来加权。

  在步骤605和步骤607之后,训练系统可以被配置为在步骤609中向系统100提供状态预测器和数据对象预测器。例如,训练系统可以向客户端101和/或服务器103提供状态预测器和数据对象预测器。在一些实施例中,训练系统可以向系统100提供状态预测器和数据对象预测器作为对象(例如,数据结构)。在各种实施例中,训练系统可以被配置为向系统100提供状态预测器和数据对象预测器的权重。在各种实施例中,训练系统可以被配置为向系统100的现有状态预测器和数据对象预测器提供更新。

  在一些实施例中,训练系统和系统100可以在相同的计算设备上运行。例如,系统100和训练系统可以都在服务器103上运行。在各种实施例中,系统100可以被用于训练。例如,系统100可以被配置为依靠用于训练数据的用户输入来以训练模式操作,然后在训练标准被满足时切换到预测模式。在步骤609之后,方法600可以在步骤611处结束。

  图7描绘了与所公开的实施例一致的图示使用神经网络的应用导航的方法700的流程图。根据方法700,预测组件400可以接收输入向量、预测下一个状态、预测下一个数据对象以及向用户指示下一个页面。如本领域技术人员将认识到的,步骤的这个特定序列并非旨在进行限制。在不偏离所设想的实施例的情况下,方法700的步骤可以被组合或划分,并且方法700可以包括附加的步骤或更少的步骤。

  在步骤701中开始之后,预测组件400可以被配置为在步骤703中接收输入向量。在一些方面,预测组件400可以被配置为直接或间接地从应用120接收输入向量的元素。例如,在一些实施例中,预测组件400可以内置到应用120中,并且可以根据由应用120存储的值来创建输入向量。作为附加示例,系统100可以被配置为将预测组件400和应用120实现为分离的应用。应用120然后可以直接向预测组件400提供用于输入向量的元素的值,或者可以向存储器或数据库提供这些值。预测组件400然后可以从存储器或数据库中检索这些值。

  如上面关于图5所公开的,在一些实施例中,输入向量可以包括当前数据值510、应用上下文520和应用历史530。接收输入向量可以包括从用户接收应用上下文信息。例如,如上面所公开的,应用上下文520可以包括指示谁正在使用应用120(例如,与用户相关联的实体、用户名、用户角色或职位,或用户授权或工作职责))或用户何时正在与应用120交互(例如,交互的工作日、日期或时间中的至少一个)的一个或多个元素。预测组件400可以被配置为接收这个信息一次(例如,当用户登录到应用120时)并根据需要重用这个信息来生成输入向量。

  在步骤703之后,预测组件400可以被配置为在步骤705中预测至少一个下一个应用状态。如上面关于图4所公开的,预测组件400可以被配置为使用状态特征提取器421将输入向量的值转换成数字。在一些实施例中,预测组件400可以使用散列函数执行这种转换。例如,预测组件400可以被配置为生成输入向量的每个元素的原始二进制值的散列。散列函数可以是Fowler-Noll-Vo散列函数,或者是本领域中已知的另一个散列函数。散列值可以被应用于状态预测器420的输入节点。预测组件400可以将这些散列值向前传播通过一个或多个隐藏层和输出层以生成可能性分数。这些可能性分数可以取决于输入的散列值和状态预测器420的权重(这可以根据方法600来确定)。状态输出423可以被配置为选择最可能的预测的应用状态中的一个或多个。例如,状态输出423可以被配置为选择与具有最大可能性值的输出层的节点对应的应用状态作为预测应用状态。作为附加示例,状态输出423可以被配置为选择与具有最大可能性值的输出层的预定数量的节点对应的应用状态。

  在步骤705之后,预测组件400可以被配置为在步骤707中预测至少一个下一个数据对象。在一些实施例中,对于由状态输出423选择的每个状态,预测组件400可以被配置为生成多个数据对象之一。如上面关于图4所公开的,预测组件400可以被配置为使用数据对象特征提取器431来将由状态输出423选择的一个或多个应用状态的标识符以及输入向量的值转换成数字。在一些实施例中,数据对象特征提取器431可以使用散列函数来执行这种转换。例如,预测组件400可以被配置为生成输入向量的每个元素的原始二进制值的散列。散列函数可以是Fowler-Noll-Vo散列函数,或者是本领域中已知的另一个散列函数。散列值可以应用于数据预测器430的输入节点。系统100可以将这些散列值向前传播通过一个或多个隐藏层和输出层以生成可能性分数。这些可能性分数可以取决于输入的散列值和数据预测器430的权重(这可以根据方法600来确定)。数据输出433可以被配置为选择最可能的预测的应用状态中的一个或多个。例如,数据输出433可以被配置为选择与具有最大可能性值的输出层的节点对应的数据对象作为预测数据对象。作为附加示例,数据输出433可以被配置为选择与具有最大可能性值的输出层的预定数量的节点对应的应用状态。

  在步骤707之后,预测组件400可以被配置为在步骤709中向用户指示至少一个下一个页面。这个指示可以取决于预测的一对或多对应用状态和数据对象。例如,预测组件400可以提供用于指示一个或多个预测的页面的数据或指令。例如,该数据或指令可以配置应用120以显示到一个或多个预测的页面的一个或多个链接,或者修改现有页面的一个或多个图形元素以指示与该一个或多个元素的交互将使应用120过渡到一个或多个预测的页面(例如,突出显示、强调、设置动画、改变元素的颜色等)。作为附加示例,数据或指令可以配置应用120以显示指示下一个页面的显式指令。这些指令可以显示在插图页或分离的页面中。在一些方面,可以将数据或指令提供给客户端101,客户端101可以使用它们来动态地更新现有页面。在各个方面,可以将数据或指令提供给服务器103,服务器103可以使用它们来创建新页面以提供给客户端101。在步骤709之后,方法700可以在步骤711处结束。

  前面的公开描述了用于使用链接的神经网络的应用导航的系统的实施例。这种系统一般可以与如图1中所述提供的应用一起使用。附加地,这种系统可以用于导航由客户端101提供的应用。例如,由客户端101提供的应用可以被配置为向服务器103报告包括应用状态和数据对象信息的使用信息。在这个非限制性示例中,应用可能不从服务器103获得数据对象(或数据对象中包含的信息)。基于从多个用户接收的使用信息,服务器103可以被配置为生成状态预测器和数据对象预测器。服务器103可以被配置为向在客户端101上运行的应用的预测组件提供这个应用状态预测器和数据对象预测器。

  示例性应用:财产管理应用

  设想的系统和方法可以被用于向财产管理应用的用户提供推荐。这个示例性应用论证了设想的实施例对本领域的适用性,并且不旨在进行限制。

  与图1一致,服务器可以被配置为向客户端提供财产管理应用。用户可以通过客户端与应用进行交互。与图2A一致,财产管理应用的状态可以被链接,以便用户可以在状态之间进行过渡。与图2B一致,财产管理应用可以包括定义财产管理应用的页面的外观和功能的应用状态。可以使用包括标记语言和脚本命令的模板来定义这些应用状态。例如,应用可以包括使用ANGULAR或类似的框架定义的应用状态。与图2B一致,财产管理应用可以对表示财产的数据对象进行操作。这些数据管理对象可以包括描述财产的特点的字段,诸如所有权、品牌、财产名称、财产位置、财产处的库存、库存定价、策略、促销、预约类别以及本领域技术人员已知的其它财产特点。与所公开的实施例一致,应用状态可以对表示策略的数据对象进行操作以生成页面。如先前所公开的,用户可以与一个或多个页面交互以执行任务。在这个示例中,任务可以包括修改在财产处的可用库存。用户可以使用第一页选择财产,导航到允许用户在该财产处添加库存的第二页,然后导航到允许用户修改用于该新添加的库存的定价和预约类别的第三页。

  与图3A和图3B一致,财产管理系统可以被配置为显示页面,并且用户将从一个页面过渡到另一个页面的可能性可以取决于用户通过该财产管理应用的先前轨迹。

  与图4一致,在一些实施例中,财产管理应用可以包括预测组件400,该预测组件400被配置为使用链接的神经网络来预测用户应当与之交互的下一个页面。这个预测元素可以包括输入向量410、状态预测器420、数据预测器430和页面预测。作为非限制性示例,该神经网络可以使用来实现。

  与图5一致,在一些实施例中,输入向量可以包括当前数据值510、应用上下文520和应用历史530。在一些方面,当前数据值510可以包括当前数据对象的值,如以下示例性伪代码中所示:

  inputvector<=get(propertyCode);

  inputvector<=get(propertyDetails.extemalInventory);

  inputvector<=get(propertyDetails.interfacedAvalon);

  inputvector<=get(propertyDetails.interfacedRms);

  inputvector<=get(propertyDetails.overrideSellStrategy);

  inputvector<=get(propertyDetails.regionConversion);

  inputvector<=get(propertyDetails.roomClass);

  inputvector<=get(propertyDetails.tieredPricing);

  inputvector<=get(propertyDetails.visible);

  inputvector<=get(propertyDetails.status);

  inputvector<=get(propertyDetails.marketingCity);

  inputvector<=get(propertyDetails.brandConversion);

  inputvector<=get(propertyDetails.classSharing);

  因此,当前数据值510可以包括关于当前数据对象的库存、定价和位置的信息。

  在各个方面,应用上下文520可以包括与财产管理应用的用户相关的上下文参数,如以下示例性伪代码所示:

  inputvector<=get(login);

  inputvector<=get(day);

  inputvector<=get(month);

  inputvector<=get(chainCode);

  inputvector<=get(brandCode);

  因此,应用上下文520可以包括用户的登录信息、用户的日期和月份以及描述所有者和品牌的信息。

  在各个方面,应用历史530可以包括用户的在先应用状态和参数id,如以下示例性伪代码中所示:

  inputvector<=[get(prior_states),get(prior_data_objects)];

  因此,应用历史530可以包括成对的在先应用状态和当应用处于那些状态时对其进行操作的数据对象。

  与图6一致,在一些实施例中,财产管理应用的预测元素可以被训练。如关于图6所公开的,训练系统可以被配置为接收训练数据。在一些方面,这个训练系统可以是实现财产管理应用的系统。在各个方面,这个训练系统可以是从实现财产管理应用的系统接收训练数据的分离的系统。训练数据可以包括上面公开的数据,并且可以附加地包括当前应用状态和当前数据对象。如关于图6所公开的,训练系统可以被配置为训练状态预测器和对象预测器。可以将状态预测器和对象预测器提供给实现财产管理应用的系统。

  与图7一致,在一些实施例中,财产管理应用的预测组件可以被配置为接收输入向量、预测下一个状态、预测下一个数据对象,然后向用户指示一个或多个预测的下面的页面。在一些实施例中,可以在用户在财产管理应用中从第一页过渡到第二页时执行这种预测。在这个示例中,用户可以从第二页过渡到该一个或多个预测的下面的页面之一。如上面关于图7所公开的,财产管理应用的预测组件可以被配置为向用户提供预测的页面的指示。在一些方面,这种指示可以被提供为对第二页的动态更新。在各个方面,可以将经修改的第二页提供给客户端用于显示给用户。

  图8描绘了与所公开的实施例一致的用于财产管理应用的示例性图形用户界面800。如图8中所示,预测组件可以被配置为提供用于修改图形用户界面800以包括插图801的指令。插图801可以包括与预测的下面的页面对应的图标(在这个示例中为财产803a和区域803b)。如图所示,这些图标的尺寸和/或颜色可以不同。在一些方面,这些变化可以指示可能性上的差异。例如,当更可能的下一个页面是财产803a时,与财产803a对应的图标可以大于与区域803b对应的图标。在一些实施例中,图形用户界面800可以被配置为在鼠标悬停事件上修改图标。例如,当将光标放在图标之一上时,那个图标可以增大尺寸、改变形状或更改颜色。在一些实施例中,选择这些图标之一可以使财产管理应用过渡到对应的页面。

  图9描绘了与所公开的实施例一致的用于财产管理应用的附加的示例性图形用户界面900。如图9中所示,预测组件可以被配置为提供用于修改图形用户界面900以包括与图形元素901对应的预测的下一个页面的相对可能性的文本指示903的指令。在一些实施例中,附加于使用对应图标的相对尺寸指示相对页面可能性之外,还可以提供这个文本指示。

  图10描绘了与所公开的实施例一致的用于财产管理应用的另一个示例性图形用户界面1000。如图10中所示,预测组件可以被配置为提供用于修改图形用户界面1000以包括插图1001的指令。插图1001可以包括对预测的下一个页面的文本描述。

  图11是可以用其实现本发明的系统、方法和装置的示例设备的框图。示例设备1100可以包括至少一个处理器(例如,处理器1103)和至少一个存储器(例如,存储器1105a和1105b)。处理器1103可以包括中央处理单元(CPU)、图形处理单元(GPU)或能够对数据流执行一个或多个操作的其它类似电路系统。处理器1103可以被配置为执行可以例如存储在存储器1105a和1105b中的一个或多个上的指令。存储器1105a和1105b可以是易失性存储器(诸如RAM等)和/或非易失性存储器(诸如闪存、硬盘驱动器等)。如上面所解释的,存储器1105a和1105b可以存储由处理器1103执行的指令。如在图11中进一步描绘的,用户接口设备1100可以包括至少一个网络接口控制器(NIC)(例如,NIC 1115)。NIC 1115可以被配置为促进在至少一个计算网络(例如,网络1117)上的通信。因此,可以通过一个或多个NIC来促进通信功能,该一个或多个NIC可以是无线和/或有线的并且可以包括以太网端口、射频接收器和发送器以及/或者光学(例如,红外)接收器和发送器。一个或多个NIC的具体设计和实现方式取决于用户接口设备1100意图在其上操作的计算网络1117。例如,在一些实施例中,用户接口设备1100可以包括一个或多个无线和/或有线NIC,其被设计为在GSM网络、GPRS网络、EDGE网络、Wi-Fi或WiMax网络以及网络上操作。替代地或同时地,用户接口设备1100可以包括被设计为在TCP/IP网络上操作的一个或多个无线和/或有线NIC。如图11中所描绘的,用户接口设备1100可以包括和/或可操作地连接到存储设备1121。存储设备1121可以是易失性的(诸如RAM等)或非易失性的(诸如闪存、硬盘驱动器等)。I/O模块1119可以实现处理器1103、存储器1105a和1105b、NIC 1115和/或存储设备1121之间的通信。处理器1103、存储器1105a和1105b、NIC 1115和/或存储设备1121可以包括分离的组件,或者可以集成在一个或多个集成电路中。用户接口设备1100中的各种组件可以通过一个或多个通信总线或信号线(未示出)耦合。

  出于说明的目的已经呈现了前面的描述。它不是穷尽的并且不限于所公开的精确形式或实施例。根据考虑所公开的实施例的说明书和实践,实施例的修改和适应将是显而易见的。例如,所描述的实现方式包括硬件和软件,但是与本公开一致的系统和方法可以仅用硬件来实现。另外,虽然已将某些组件描述为彼此耦合,但是这样的组件可以彼此集成或以任何合适的方式分布。

  而且,虽然本文已经描述了说明性实施例,但是范围包括基于本公开的具有等同要素、修改、省略、组合(例如,跨各种实施例的方面)、适应和/或变更的任何和所有实施例。

  由计算机可读介质存储的指令或操作步骤可以是计算机程序、程序模块或代码的形式。如本文所述,基于本说明书的书面描述的计算机程序、程序模块和代码(诸如处理器所使用的那些)很容易在软件开发人员的能力范围内。可以使用各种编程技术来创建计算机程序、程序模块或代码。例如,它们可以使用或通过Java、C、C++、汇编语言或任何这样的编程语言来设计。可以将这样的程序、模块或代码中的一个或多个集成到设备系统或现有的通信软件中。程序、模块或代码也可以作为固件或电路逻辑被实现或复制。

  根据详细的说明书,本公开的特征和优点是显而易见的。如本文所使用的,不定冠词“一”和“一个”意味着“一个或多个”。除非另外明确指示,否则诸如“和”或“或”的词意味着“和/或”。此外,由于通过研究本公开将很容易发生许多修改和变化,因此不期望将本公开限制到所示出和描述的确切构造和操作,并且相应地,落入本公开的范围内,可以采用所有合适的修改和等同物。

  通过考虑本文公开的实施例的说明书和实践,其它实施例将显而易见。说明书和示例仅被认为是示例。

《用于应用导航的神经网络系统和方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)