具有架构师模块的人工智能引擎的制作方法

文档序号:17151843发布日期:2019-03-19 23:30阅读:214来源:国知局
具有架构师模块的人工智能引擎的制作方法

本申请要求于2017年1月26日提交的美国专利申请no.15/416,904和于2016年1月27日提交的名称为“bonsaiplatform,language,andtooling”的临时专利申请no.us62/287,861的优先权,其全部内容通过引用并入本文中。

著作权声明

本公开内容的一部分包含受著作权保护的材料。著作权所有者不反对任何人对如在美国专利商标局的专利文件或记录中出现的受著作权保护的材料进行传真复制,但在其他方面保留所有著作权。

本文中提供的设计的实施例总体上涉及人工智能系统及其方法。



背景技术:

人工智能(“ai”)有可能成为21世纪及以后的最具影响力的技术之一。不幸的是,目前希望利用ai工作的软件开发者必须学习复杂的工具包,使用有限的应用程序编程接口(“api”),使用用于ai的受限制的黑盒解决方案或它们的某些组合。必须克服上述限制,软件开发者和企业才能解决ai的实际问题。此外,虽然只有不到20,000名能够在最低级别构建ai的数据科学专家,但需要使软件开发社区的2000万或更多软件开发者更容易使用ai进行工作。本文中提供了解决前述问题的ai系统和方法。



技术实现要素:

本文中在一些实施例中提供了一种被托管在被配置为与一个或多个数据库协作的一个或多个服务器上的、包括一个或多个ai引擎模块的ai引擎。一个或多个ai引擎模块可以包括被配置为从汇编代码提出ai模型的架构师(architect)模块。汇编代码可以从按照教学编程语言而被编写的源代码被生成,源代码描述要由ai模型学习的一个或多个概念模块的心智模型以及用于在一个或多个训练周期中在一个或多个概念模块上训练ai模型的一个或多个功课(lesson)的课程(curricula)。一个或多个功课中的每个功课可以被配置为可选地使用训练数据的不同流。ai引擎可以被配置为基于由ai模型在一个或多个训练周期中学习的一个或多个概念模块来实例化经训练的心智模型。

本文中在一些实施例中还提供了一种ai系统,其包括一个或多个服务器、一个或多个数据库和一个或多个客户端。一个或多个服务器可以包括ai引擎,ai引擎包括一个或多个ai引擎模块和编译器。一个或多个ai引擎模块可以包括被配置为从汇编代码提出ai模型的架构师模块。编译器可以被配置为从按照教学编程语言而被编写的源代码生成汇编代码,源代码描述要由ai模型学习的一个或多个概念模块的心智模型以及用于在一个或多个训练周期中在一个或多个概念模块上训练ai模型的一个或多个功课的课程。一个或多个功课中的每个功课可以被配置为可选地使用训练数据的不同流。ai引擎可以被配置为基于由ai模型在一个或多个训练周期中学习的一个或多个概念模块来实例化经训练的ai模型。一个或多个客户端可以包括用于生成按照教学编程语言而被编写的源代码的编码器。ai系统还可以包括被配置为提供训练数据的一个或多个训练数据源,其中一个或多个训练数据源包括被配置为提供训练数据的至少一个服务器侧训练数据源或至少一个客户端侧训练数据源。

本文中在一些实施例中还提供了一种用于ai引擎的方法,包括编译汇编代码,提出ai模型,训练ai模型,以及实例化经训练的ai模型。汇编代码可以从源代码被编译,其中编译器被配置为从按照教学编程语言而被编写的源代码生成汇编代码。源代码可以包括要由ai模型使用训练数据学习的一个或多个概念模块的心智模型。源代码还可以包括用于在一个或多个概念模块上训练ai模型的一个或多个功课的课程。一个或多个功课中的每个功课可以被配置为可选地使用训练数据的不同流。ai模型可以由包括用于从汇编代码提出ai模型的架构师模块的一个或多个ai引擎模块提出。ai模型可以由ai引擎在一个或多个训练周期中利用来自一个或多个训练数据源的训练数据训练。经训练的ai模型可以由ai引擎基于由ai模型在一个或多个训练周期中学习的一个或多个概念来实例化。例如,可以使用先前训练的概念来构造新的神经网络。

参考构成本专利申请的公开内容的附图、说明书和权利要求,可以更好地理解本文中提供的设计的这些和其他特征。

附图说明

附图涉及本文中提供的设计的一些实施例,在附图中:

图1a提供了示出简单的人工神经网络的示意图。

图1b提供了示出根据一些实施例的构建、训练和部署经训练的ai模型的示意图。

图2a提供了示出根据一些实施例的ai系统的示意图。

图2b提供了示出根据一些实施例的与ai系统相关联的方法的示意图。

图3a提供了示出根据一些实施例的ai系统的示意图。

图3b提供了示出根据一些实施例的与ai系统相关联的方法的示意图。

图4a提供了示出根据一些实施例的心智模型的示意图。

图4b提供了示出根据一些实施例的心智模型的示意图。

图5提供了示出根据一些实施例的ai系统的示意图。

图6a提供了示出根据一些实施例的ai系统的示意图。

图6b提供了示出根据一些实施例的ai系统的示意图。

图7提供了根据一些实施例的一个或多个网络。

图8提供了根据一些实施例的一个或多个计算系统。

虽然设计受到各种修改、等同物和备选形式的限制,但是其具体实施例在附图中通过示例的方式而被示出,并且现在将被详细描述。应当理解,设计不限于所公开的特定实施例,而是相反,意图在于使用具体实施例覆盖所有修改、等同物和备选形式。

具体实施方式

在以下描述中,阐述了很多具体细节,诸如具体数据信号、命名组件、设备中的存储器等的示例,以便提供对本设计的透彻理解。然而,对于本领域普通技术人员很清楚的是,可以在没有这些具体细节的情况中实践本设计。在其他情况中,没有详细描述公知的组件或方法,而是在框图中描述其,以避免不必要地模糊本设计。此外,可以进行诸如第一驱动器等具体数字引用。然而,具体数字引用不应当被解释为文字顺序,而是应当被解释为第一通知与第二通知不同。因此,所阐述的具体细节仅仅是示例性的。具体细节可以在本设计的精神和范围内被变化,并且仍然被认为是在本设计的精神和范围内。术语“耦合”被定义为意味着被直接连接到组件或通过另一组件而被间接连接到组件。此外,本文中描述的应用包括软件应用、移动app、程序和其他类似的软件可执行程序,它们是独立的软件可执行文件或操作系统应用的一部分。

本文中使用的“ai模型”包括但不限于神经网络,诸如复发(recurrent)神经网络、递归(recursive)神经网络、前馈神经网络、卷积神经网络、深信念网络和卷积深信念网络;多层感知器;自组织地图;深玻尔兹曼机器;以及堆叠式去噪自动编码器。

本文中使用的“人工神经网络”或简称为“神经网络”可以包括处理元件的高度互连的网络,每个处理元件可选地与本地存储器相关联。图1a提供了示出简单的人工神经网络101的示意图。处理元件在本文中可以被称为“人工神经单元”、“人工神经元”、“神经单元”、“神经元”、“节点”等,虽然处理元件之间的连接在这里可以被称为“突触”、“权重”等。神经元可以分别通过一个或多个加权突触从输入或一个或多个其他神经元接收数据,处理数据,并且分别通过一个或多个其他加权突触将经处理的数据发送给输出或一个或多个其他神经元。神经网络或它的一个或多个神经元可以在硬件、软件或硬件和软件的组合中被生成,并且神经网络随后可以被训练。

除非另外定义,否则本文中使用的所有技术和科学术语具有与本领域普通技术人员通常理解的含义相同的含义。

ai有可能成为21世纪及以后的最具影响力的技术之一。不幸的是,目前希望使用ai进行工作的软件开发者必须学习复杂的工具包,使用有限的api,使用用于ai的受限制的黑盒解决方案或它们的某些组合。必须克服上述限制,软件开发者和企业才能解决ai的实际问题。此外,虽然只有不到20,000名能够在最低级别构建ai的数据科学专家,但需要使软件开发社区的2000万或更多软件开发者更容易使用ai进行工作。本文中提供了解决前述问题的ai系统和方法。

例如,本文中在一些实施例中提供了一种被托管在被配置为与一个或多个数据库协作的一个或多个服务器上的、包括一个或多个ai引擎模块的ai引擎。一个或多个ai引擎模块可以包括被配置为从汇编代码提出ai模型的架构师模块。汇编代码可以从按照教学编程语言而被编写的源代码被生成,源代码描述要由ai模型学习的一个或多个概念模块的心智模型以及用于在一个或多个训练周期中在一个或多个概念模块上训练ai模型的一个或多个功课的课程。一个或多个功课中的每个功课可以被配置为可选地使用训练数据的不同流。ai引擎可以被配置为基于由ai模型在一个或多个训练周期中学习的一个或多个概念模块来实例化经训练的ai模型。

图1b提供了示出根据一些实施例的构建、训练和部署经训练的ai模型的示意图。

如所示,本文中提供的ai系统和方法使得诸如软件开发者的用户能够设计ai模型,构建ai模型,训练ai模型以提供经训练的ai模型,并且按照多种期望的方式中的任何期望的方式将经训练的ai模型部署为部署的ai模型。例如,本文中提供的ai系统和方法使得诸如软件开发者的用户能够设计神经网络布局或神经网络拓扑102,构建神经网络104,训练神经网络104以提供经训练的神经网络106,并且按照多种期望的方式中的任何期望的方式将经训练的神经网络106部署为部署的神经网络108。例如,经训练的ai模型或经训练的神经网络106可以被部署在软件应用或基于硬件的系统中或与其一起被使用。

图2a提供了示出根据一些实施例的ai系统200的示意图。

如所示,ai系统200包括一个或多个客户端系统210和一个或多个服务器系统220,其中一个或多个服务器系统220中的每个服务器系统或任何两个或更多个服务器系统在本文中可以被称为ai引擎。一个或多个客户端系统210可以包括编码器212或用于生成诸如inklingtm的教学编程语言的编程代码的编码装置。一个或多个客户端系统210还可以包括训练数据源214。尽管图2a中未示出,但是备选地,训练数据源214可以被包括在一个或多个服务器系统220中,或者训练数据源214可以被包括在一个或多个客户端系统210和一个或多个服务器系统220中。一个或多个服务器系统220可以是服务器系统并且包括用于inklingtm代码的编译器222和用于经由ai生成器223中的一个或多个训练循环生成经训练的神经网络106的ai生成器223。

图2b提供了示出根据一些实施例的与ai系统相关联的方法201的示意图。

如鉴于图2a所示,一个或多个客户端210中的客户端可以在一个或多个服务器系统220的服务器上从编码器212或中间代理向编译器222发送按照教学编程语言的代码,以用于将代码编译为用于ai生成器223的优化的汇编代码。编译器222可以向ai生成器223发送经编译的代码或汇编代码,ai生成器223提出并且构建诸如神经网络104的神经网络以用于训练,如通过代码的特征所确定的。ai生成器可以从训练数据源214请求训练数据,并且训练数据源214可以在请求时向ai生成器223发送训练数据。随后,ai生成器223可以在一个或多个训练周期中在训练数据上训练神经网络104以提供神经网络或经训练的神经网络106的经训练的状态。ai生成器223可以从经训练的神经网络106引出预测,并且基于预测和可选的附加训练周期针对已更新的训练数据向训练数据源214发送预测。当一个或多个训练周期完成时,ai生成器223可以将神经网络的经训练的状态保存为经训练的神经网络106。

图3a提供了示出根据一些实施例的ai系统的示意图。

接下来是图2a的ai系统200,用于生成经训练的神经网络106的ai生成器223可以包括选自至少讲师模块324、架构师模块326和学习者模块328的一个或多个ai生成器模块,如所示。讲师模块324、架构师模块326和学习者模块328在本文中可以分别被称为讲师、架构师和学习者。讲师模块324可以可选地包括超级学习者模块325,超级学习者模块325在本文中可以被称为超级学习者并且可以被配置为针对神经网络配置、学习算法、学习优化器等中的任何一个或多个选择一个或多个超参数。在选择一个或多个超参数之前,超级学习者模块325可以访问从先前的问题和先前构建的ai模型的一个或多个存储库收集的解决方案统计数据库,并且通过使用随机预测来获取可用数据样本的指纹。超级学习者模块325可以可选地被包含在诸如架构师模块326或学习者模块328的不同的ai生成器模块中,或者超级学习者模块325可以是ai生成器模块本身。学习者模块328可以可选地包括预测器模块329,预测器模块329在本文中可以被称为预测器并且可以针对诸如按照预测模式而被托管的经训练的神经网络106的经训练的神经网络提供一个或多个预测。预测器模块329可以可选地被包含在诸如讲师模块324或架构器模块326的不同的ai生成器模块中,或者预测器模块329可以是ai生成器模块本身。包括前述一个或多个ai生成器模块的ai生成器223可以被配置为经由ai生成器223中的一个或多个训练周期从编译的代码生成经训练的神经网络106。

图3b提供了示出根据一些实施例的与ai系统相关联的方法的示意图。

如鉴于图3a所示,一个或多个客户端210中的客户端可以在一个或多个服务器系统220的服务器上从编码器212或中间代理向编译器222发送按照教学编程语言的代码,以用于将代码编译为优化的汇编代码。编译器222可以向讲师模块324发送经编译的代码或汇编代码,讲师模块324转而可以将代码发送给架构师模块326。架构师模块326可以提出诸如神经网络布局102的神经网络布局以及优化神经网络布局102以用于如由代码的特征确定地进行构建和训练,并且架构师模块326可以向讲师模块324发送神经网络布局102。此外,架构师模块326可以在按照教学编程语言而被表达的概念与神经网络布局102的层之间映射,并且向学习者模块328发送一个或多个映射。学习者模块328可以从由架构师模块326指定的神经网络布局104构建诸如神经网络104的神经网络。讲师模块324可以从训练数据源214请求训练数据,并且训练数据源214可以在请求时向讲师模块324发送训练数据。讲师模块324随后可以指示学习者模块328使用按照教学编程语言而被表达的课程训练神经网络104(例如,应当以哪种顺序教授哪些功课),用于训练一个或多个概念、训练数据和来自超级学习者模块325的一个或多个超参数。训练神经网络104可以在一个或多个训练周期中进行以产生神经网络或经训练的神经网络106的经训练的状态。讲师模块324可以决定什么概念和流应当在心智模型中被积极训练、以及用于训练概念的终止条件。学习者模块328或预测器模块329可以从经训练的神经网络106引出预测并且向讲师模块324发送预测。讲师模块324转而可以基于预测针对已更新的训练数据向训练数据源214发送预测,并且可选地在另外的训练周期中指示学习者模块328。当一个或多个训练周期完成时,学习者模块328可以将神经网络的经训练的状态保存为经训练的神经网络106。

图4a和图4b提供了分别示出根据一些实施例的心智模型400a和400b的示意图。

教学编程语言inklingtm是一种专用编程语言,其旨在使用要被教授的更高级别的心智模型和概念而不是能够学习它们的系统的低级机制来实现经训练的ai模型。

概念教学编程语言可以是软件对象和/或ai模型可以被训练和学习的东西。概念可以落入至少两个群组之一中:事实和战略。事实类型概念可以描述诸如物体、球、角色、敌人、光、人的一个或多个事物的状态。状态可以是一个或多个事物是打开还是关闭,是热还是冷,是数字还是字母,等等。事实类型概念还可以描述位置。策略类型概念可以反映诸如“avoidghosts”、“keepthe_paddleundertheball”、“don'trunintowalls”、“turnlightsoff”、“gethighscore”的方法或行为。图4a和图4b都示出了包括策略类型概念“gethighscore”的心智模型。

教学编程语言的心智模型也是ai模型可以被训练和学习的东西。心智模型可以包括根据一个或多个概念构造(例如,分层地、循环地等)的一个或多个概念,并且心智模型还可以包括一个或多个数据变换流。如图4a中所示,单概念心智模型可以包括诸如“gethighscore”的策略类型概念。如图4b中所示,多概念心智模型可以包括分层结构,包括例如诸如“keeppaddleunderball”和“gethighscore”的策略类型概念以及诸如“balllocation”的状态类型概念。多概念心智模型中的概念可以从心智模型中的其他概念接收输入,向心智模型中的其他概念发送输出,提供最终输出或结果输出,或其组合。向心智模型添加更多概念可以减少ai模型的训练时间,并且使得经训练的ai模型能够提供更智能的更精确的预测。

参考以下内容可以更好地理解本文中提供的ai系统和方法的其他特征:

基础原语

本文中提供的ai系统和方法通过提供可以用于表示ai而不指定如何创建ai的一组基础原语来实现面向教学的方法。这些基础原语是1)概念和心智模型,2)课程和功课,以及3)训练数据源,如本文中进一步详细描述的。

概念和心智模型

概念或概念模块是可以被学习的东西。一旦被学习,它就可以提供智能输出。概念可以从其他概念和训练数据源(例如,模拟器)接收输入数据,并且向其他概念或最终结果发送输出数据。概念可以单独地被使用,但是,从相对简单的概念开始并且构建到更复杂的概念,构建相关概念的层级通常更有用。

术语“心智模型”可以被用于描述一组结构化概念。备选地,对问题域进行建模的概念的集合及它们的相互关系可以被称为心智模型。给定这种心智模型框架的选择,可以编写基础概念及它们的关系。课程和功课

课程被用于教授概念。为此,用户需要提供数据来训练概念并且告诉ai引擎系统对概念的理解是否正确。这类似于教师将来自书的阅读分配给学生并且随后根据书的内容测试学生。这些数据的呈现方式被分解为被称为“功课”的各个组成部分。在书类比中,功课可以是书中的单个章节。功课允许概念逐位学习,而不是一次性学习。

教学编程侧重于编纂两个主要支柱:1)与问题领域相关的概念是什么,以及概念如何相互关联?2)如何教授这些概念?

ai引擎

ai系统500使得开发者能够更高效地构建、教授和使用智能模型。

ai引擎描述了问题以及如何教授涵盖要解决的问题的各方面的概念,并且ai引擎将编码的描述编译成机器可以更容易理解的较低级别的结构化数据对象,构建涵盖要解决的问题的各方面的主要问题概念和子概念的网络拓扑,训练子概念和主要概念的编码实例,并且执行包含一个、两个或更多个神经网络的经训练的ai模型。

ai引擎可以抽象并且自动化ai的低级别机制,并且ai引擎可以管理和自动化ai工作的大部分低级复杂性。按照教学编程语言而被开发的每个程序可以被馈送到ai引擎中以便生成和训练适当的智能模型,其在本文中可以被称为基本的循环人工智能网络(“brain”)。从本质上讲,brain可以是包括潜在的循环网络智能处理节点的拓扑或基本网络,因此首字母缩写是“brain”。

ai引擎可以抽象神经网络拓扑的生成,以获取课程和功课的最佳解决方案和更快的训练时间,以经由构成神经网络的每个节点上的递归模拟和训练功课来教授神经网络。

ai引擎可以包含用于各种ai模型的大量机器学习算法,具有用于选择学习算法和指导训练的逻辑,管理数据流和数据存储,并且提供硬件资源的有效分配。ai引擎可以构建通过系统有效地支持流数据的基础设施,并且ai引擎可以使用一组启发法来选择使用哪些学习算法来训练每个brain。这组启发法还使得ai引擎能够从任意数目的可能算法、拓扑等选择,并行地训练多个brain,并且选择最佳结果。

ai引擎可以是被配置为管理训练ai网络固有的复杂性的云托管的平台即服务。因此,ai引擎利用一个或多个客户端侧接口而可访问,以允许第三方提交按照教学编程语言的对问题的描述,并且使得在线ai引擎能够针对一个或多个第三方构建和生成经训练的智能模型。

主要组件

图5提供了示出根据一些实施例的包括ai引擎的ai系统500的示意图。

brain服务器的任何给定实现方式的细节可能有很大差异,但很多具有共同的架构组件,诸如以下六个组件:1)架构师模块、2)讲师模块、3)学习者模块、4)编译器、5)超级学习者模块、以及6)用于将通信交换进出ai引擎的一个或多个接口。

接下来是图2a和图3a的ai系统200,ai系统500包括在一个或多个客户端系统上的编码器212以及在一个或多个服务器系统上的以下各项:编译器222;ai生成器模块,其包括讲师模块324、架构师模块326和学习者模块328、超级学习者模块325和预测器模块329。除了上述之外,ai系统500还可以包括被配置为加载训练数据的训练数据加载器521、训练数据数据库514a、模拟器514b和流数据服务器523。训练数据可以是批量化训练数据、流式训练数据或它们的组合,并且ai引擎可以被配置为从选自模拟器、训练数据生成器、训练数据数据库或其组合的一个或多个训练数据源推送或拉取训练数据。在至少一个实施例中,批量数据源可以从数据库提供批量化数据。随机数据生成器可以基于用户输入参数来生成随机数据。在一些实施例中,数据流管理器可以被配置为管理流式传输的训练数据的流式传输。此外,除了前述之外,图5示出了被配置为提出诸如神经网络布局102的神经网络布局的架构师模块326和被配置为保存诸如经训练的神经网络106的神经网络的经训练的状态的学习者模块328。

编译器模块自动转换和编译描述问题(主要概念)和分解为问题的子概念的教学编程语言。按照教学编程语言而被叙述的每个语句可以被编译到结构化数据对象的定义字段中,该字段随后可以由架构师模块生成并且实例化到其自己的子概念节点中。每个节点可以具有一个或多个神经网络,以用于处理输入数据和结果输出决策/动作的一个或多个输入。被馈送到ai编译器中的经编译的语句、命令和其他编码可以被变换为较低级别的ai规范。

架构师模块

架构师模块是负责基于心智模型提出和优化学习拓扑(例如,神经网络)的系统的组件。

神经网络可以基于松散地模拟生物大脑解决通过轴突连接的大量生物神经元问题的方式的大量神经单元。每个神经单元被与很多其他神经单元连接,并且链接可以强制或抑制它们对连接的神经单元的激活状态的影响。每个单独的神经单元可以具有例如将所有输入的值组合在一起的求和函数。在每个连接和单元本身上可能存在阈值函数或限制函数,从而使得它必须超过它才能传播到其他神经元。这些系统是自学习和训练的而不是被明确编程的,并且在传统计算机程序中难以表达解决方案或特征检测的领域中表现优异。

神经网络可以由多个层或立方体设计组成,并且信号路径可以从前向后穿过。神经网络的目标是以与人类大脑相同的方式解决问题,尽管几个神经网络更抽象。现代神经网络项目通常使用几千到几百万个神经单元和数百万个连接来工作。

架构师模块可以采用编码的心智模型和教学法,并且提出架构师模块认为最能够学习模型中的概念的一组候选低级学习算法、主要概念和子概念的拓扑、以及它们的配置。这类似于数据科学家在工具包方法中所做的工作、或者搜索系统在使用统计数据分析工具的方式中自动化的工作。这里,它由教学编程而不是广泛的搜索进行指导。架构师模块可以采用各种技术来标识这样的模型。架构师模块可以生成节点的有向图或高级心智模型的低级实例。架构师模块可以将要解决的问题分解为更小的任务/概念,所有这些任务/概念都考虑到要解决的更复杂的主要问题。架构师模块可以实例化主要概念和馈送到主概念中的子概念层。架构师模块可以生成每个概念,包括具有存储输出动作/决策的抽头(tap)的子概念以及该节点实现该结果输出的原因(例如,哪些参数主导决策和/或导致节点实现结果输出的其他因素)。结果输出的这种存储的输出和节点实现结果输出的原因可以被存储在经训练的智能模型中。在每个实例化的节点中创建的抽头允许智能模型中每个步骤关于经训练的智能模型如何为一组数据输入产生其结果输出的可解释性。架构师模块可以引用要使用的算法数据库以及要使用的网络拓扑数据库。架构师模块可以引用最佳建议拓扑布置的表或数据库,包括给定问题的拓扑图中有多少层级(如果可用)。架构师模块还具有用于引用通过比较签名而解决的类似问题的逻辑。如果签名足够接近,则架构师模块可以尝试被用来最佳地解决具有类似签名的存档数据库中存储的问题的拓扑。架构师模块还可以并行地实例化所有要测试和模拟的多个拓扑布置,以查看哪个拓扑具有最佳结果。最佳结果可以基于诸如性能时间、精确度、完成训练模拟所需要的计算资源等因素。

在一些实施例中,例如,架构师模块可以被配置为提出多个神经网络,并且针对多个神经网络中的每个神经网络,从一个或多个数据库中的多个机器学习算法启发式地选择适当的学习算法。ai引擎或其训练者模块可以被配置为并行地训练多个神经网络。可以利用来自一个或多个训练数据源的训练数据在一个或多个训练周期中训练多个神经网络。ai引擎可以随后以基于由多个神经网络在一个或多个训练周期中学习的概念来实例化多个经训练的神经网络,并且在多个经训练的神经网络之中标识最佳的经训练的神经网络(例如,通过基于诸如性能时间、精确度的因素的最佳结果)。

用户可以通过设置特定节点的依赖性来帮助构建节点的拓扑。架构师模块可以针对在不同的两步过程中解决问题所需要的所有概念生成和实例化神经网络拓扑。架构师模块可以生成网络概念的描述。架构师模块还可以采用描述并且实例化一个或多个拓扑形状、层或其他图形布置以解决问题描述。架构师模块可以基于以下因素来选择要使用的拓扑算法:诸如当前问题的输出类型是1)估计输出还是2)离散输出,以及其他参数中的因素,诸如完成算法的性能时间、精确度、完成训练模拟所需要的计算资源、原创性、属性数量等。

讲师模块

讲师模块是负责执行按照教学编程语言而被编纂的训练计划的系统的组成部分。训练可以包括教导神经网络以获取一个或多个结果,例如,在模拟器上。训练可以涉及使用可以在包括教学编程语言的文件中进行描述的一组特定的概念、课程和功课。与更复杂的任务相比,讲师模块可以更早地训练更容易理解的任务。因此,讲师模块可以训练子概念节点,并且然后训练更高级别的节点。在训练其他节点之后,讲师模块可以训练依赖于其他节点的子概念节点。但是,可以并行地训练图中的多个节点。讲师模块可以使用输入数据在节点上运行模拟,包括来自学习者模块的正被训练的节点的结果的统计和反馈。学习者模块和讲师模块可以与模拟器或其他数据源一起工作以使用不同数据输入迭代地训练节点。讲师模块可以通过不同方式将数据并行地流向拓扑图中的一个或多个节点来引用如何有效地训练节点的知识库,备选地,如果存在依赖性,则讲师模块可以连续地训练只有在满足早期依赖性之后才会发生的功课的某些部分。讲师模块可以引用拓扑图中的依赖性,其中依赖性可以来自指定依赖性的用户和/或拓扑中的节点的布置如何被实例化。讲师模块可以在计算资源和依赖性检查允许并行地训练的同时,向多个节点并行地提供来自诸如模拟器的数据源的数据流。

学习者模块

学习者模块是被配置为执行低级基础ai算法的实际执行的系统的组件。在训练模式中,学习者模块可以实例化符合架构师模块提出的内容的系统,与讲师模块对接以执行计算和评估性能,并且然后执行学习算法本身。在执行模式中,学习者模块可以实例化并且执行已经被训练的系统的实例。最后,学习者模块针对每个经训练的子节点写出网络状态,并且然后将主节点的拓扑图与所有子节点的组合写入本文中被称为brain的经训练的智能模型。学习者模块还可以写入每个节点的存储输出以及该节点实现brain的输出的原因,这可以解释ai如何以及为何提出解决方案或实现结果。

超级学习者模块

超级学习者模块可以执行当前问题与一个或多个数据库中的先前问题的比较。超级学习者模块可以参考存档的先前构建和训练的智能模型,以帮助指导讲师模块训练当前的节点模型。超级学习者模块可以解析经训练的智能模型的存档数据库、已知的过去的类似问题和提出的解决方案、以及其他来源。超级学习者模块可以比较类似于当前问题中所需要的解决方案的先前的解决方案,并且比较类似于当前问题的先前问题,以建议潜在的最佳神经网络拓扑以及训练功课和训练方法。

模拟器

如果课程使用模拟或程序生成训练,则功课的数据不是要被传递给学习系统的数据,而是要被传递给模拟器的数据。否则,然后可以在传递到学习系统之前在功课中可选地过滤/扩充数据。模拟器可以使用该数据来配置自身,并且模拟器随后可以针对学习系统产生要使用以用于训练的多条数据。这种分离允许适当地分离关注点。模拟器是指令的方法,并且功课提供调节该指令方法的方法,这使得它或多或少取决于学习系统所展示的当前掌握级别。模拟可以在客户端计算机上运行,并且将数据流式传输到ai引擎用于训练。在这样的实施例中,客户端机器需要在brain训练时保持连接到ai引擎。但是,如果客户端计算机与ai引擎的服务器断开连接,择它可以在重新连接时自动从中断处继续。

注意,1)模拟和程序生成在各种情况中对于数据是很好的选择;2)当你可以更轻松地教授与计算时,概念对于流是很好的选择。

面向流的数据流处理

brain服务器可以在低层对数据流操作,并且因此可以被认为是数据流处理系统。数据可以通过传统程序被流式传输到brain服务器,数据可以流经brain模型中的节点(包括循环流),并且经处理的输出可以在立即或异步的基于事件的模型中可用于呼叫者。除非用户在其程序中明确创建持久数据存储,否则流经系统的所有数据都可能是短暂的。从本质上讲,brain可以是包括潜在的循环网络的智能处理节点的基本网络,因此首字母缩写为“brain”。

操作模式

brain服务器至少具有三种操作模式:创作/调试、训练和执行(或预测)。在实践中,所有三种操作模式可以同时运行,并且大多数brain服务器的实现方式都是高可用性多租户分布式系统。话虽如此,每个个体用户通常一次以一种操作模式操作。

创作/调试模式

当处于创作/调试模式时,可以调节brain服务器以帮助用户迭代地开发心智模型和教学法。例如,在创作/调试模式中,用户可以在brain模型中的节点上设置断点,并且当遇到断点时,用户可以检查通向该节点的流处理链。即使给定节点可以表示神经网络或其他复杂的ai学习系统,由于进行训练的方式,系统可以从高维张量(tensor)表示编码和解码成与概念相关联的输出类型。这并不表示高维表示必然在节点之间折叠,而只是针对所有节点学习解码器。除了这种直接的模型检测功能外,作者还可以类似地调试课程。例如,可以在特定课程上设置观察条件,并且将实际训练性能和适应的学习执行计划与规范的编码的功课排序比较。高级用户可以自己检查底层学习算法,并且调试工具可以根据意图帮助可视化在不理解的概念中实际学到的内容。

由于很多开发者可能同时处理给定的brain模型,因此创作模式还处理正在开发、训练和单独部署的表示。

训练模式

当处于训练模式时,ai引擎被配置为i)实例化符合架构师模块提出的神经网络的神经网络,以及ii)训练神经网络。为了实现上述目的,brain服务器可以采用经编译的代码并且生成brain学习拓扑,并且继续按照课程教授指定的概念。取决于模型,训练可能会花费大量时间。因此,brain服务器可以提供有关训练的状态的交互式上下文,包括示出正在积极训练哪些节点,关于每个节点对其相关联的概念的掌握的当前信念、总体和细粒度的精确度和性能、当前的训练执行计划和/或完成时间的估计。这样,在一些实施例中,ai引擎可以被配置为提供选自以下各项的关于训练神经网络的一个或多个训练状态更新:i)针对神经网络而被完成的训练计划的比例的估计,ii)用于完成训练计划的完成时间的估计,iii)神经网络正在积极训练的一个或多个概念,iv)神经网络在学习一个或多个概念时的掌握,v)神经网络在学习一个或多个概念时的细粒度的精确度和性能,以及vi)神经网络在学习一个或多个心智模型时的整体精确度和表现。

由于构建教学编程的过程是迭代的,因此训练模式中的brain服务器也可以提供增量训练。也就是说,如果代码相对于在已经训练的其他概念之后的概念而改变,则这些先行概念不需要被重新训练。

此外,在训练模式中,如果程序本身允许无限期训练,则用户能够指定什么构成令人满意的训练。

当开始训练操作时,讲师模块可以首先生成执行计划。这是讲师模块在教授概念时打算使用的顺序,并且针对每个概念,讲师模块打算以什么顺序教授的功课。在执行计划执行时,讲师模块可以在概念与功课之间来回跳转以优化学习速率。通过不需要在开始训练依赖概念之前完全训练每个概念,系统自然可以避免某些系统性机器学习问题,诸如过度拟合。用于确定何时在功课和训练概念之间切换的主要技术是强化学习和自适应学习。例如,对于确定美国破产申请数量的第一主要问题,可以在关于如何确定加利福尼亚州的破产申请的第一功课中训练第一子节点。第二功课可以训练第一个子节点如何确定加利福尼亚州和约克的破产申请。节点上的连续功课可以构建和增加节点在训练功课期间训练的早期功课。

执行模式

当处于执行模式或预测模式时,ai引擎可以被配置为i)通过一个或多个api端点在训练数据上实例化并且执行经训练的神经网络,用于预测模式中的一个或多个预测。为了实现上述目标,brain服务器可以采用经训练的brain模型,启用api端点,从而使得可以将数据流入和流出模型,并且然后在执行模式或预测模式下优化其分布以提高性能。由于学习和指定的数据变换本质上是可用的,因此变换可以被自动地并行化并且被分发给可以加速其执行的硬件。例如,文本处理可以分发给具有大量cpu资源的机器集群,而利用深度学习的节点可以类似地分发给具有大量gpu资源的机器集群。

执行brain模型的运营管理也可以在这种模式下进行。这包括通过操作仪表板来监测数据提取率、执行性能(在速度和精确度方面)、日志、事件订阅等。

参考以下内容可以更好地理解本文中提供的用于创作/调试、训练和执行(或预测)的ai系统和方法的其他特征:

算法选择

brain服务器可以采取的第一步是选择适当的学习算法来训练心智模型。这是训练ai的一个显著步骤,并且如果没有专家指导,则这是一个没有ai专业知识的人无法完成的步骤。brain服务器可以具有很多可用的学习算法的知识、以及用于选择适当算法的一组启发法,包括用于训练的初始配置。

例如,如果brain服务器选择深度q学习来训练心智模型,则它还会选择适当的拓扑、超参数和突触的初始权重值。以编程方式使用启发法的好处是,brain服务器不限于单一选择;它可以选择任何数目的可能的算法、拓扑等,并行地训练多个brains,并且选择最佳结果。

选择适当算法等的过程由已经过ai引擎训练(并且将继续训练)的brain执行,这表示,brain在每次构建新的brain时都会更好地构建brain。诸如brain的经训练的ai引擎神经网络由此提供启用ai,用于从汇编代码提出神经网络并且从一个或多个数据库中的多个机器学习算法中选择适当的学习算法以用于训练神经网络。ai引擎可以被配置为持续训练经训练的ai引擎神经网络以提供启用ai,以提出神经网络并且选择适当的学习算法,从而更好地构建brain。

架构师模块还可以在拓扑和算法选择中使用启发法、心智模型签名、统计分布推理和元学习:

首先,ai引擎及其架构师模块可以被配置为从一个或多个数据库中的多个机器学习算法启发式地选择适当的学习算法,以用于训练由架构师模块提出的神经网络。关于心智模型的很多启发法可以被用于通知可以使用哪种类型的ai和机器学习算法。例如,使用的数据类型具有很大的影响。为此,除了基本数据类型之外,诸如inklingtm语言的教学编程语言还包含丰富的本机数据类型。例如,如果架构师模块看到正在使用图像,则卷积深度学习神经网络架构可能是合适的。如果架构师模块看到本质上是时间的数据(例如,音频数据、序列数据等),则如长短期存储器(“lstm”)网络的递归深度学习神经网络架构可能更合适。启发法的集合可以由数据科学和机器学习/ai专家生成,他们在架构师模块代码库上工作,并且试图捕获他们自己在实践中使用的启发法。

系统还可以计算心智模型的签名。这些签名是散列的形式,从而使得具有类似机器学习算法特征的心智模型具有类似的签名。然后,这些签名可以与启发法和元学习结合被使用。

除了在心智模型处查看之外,架构师模块还可以考虑在按照教学编程语言而被表达的代码中提供的教学法。例如,它可以查看正被使用的任何数据集的统计分布;并且,在模拟器的情况中,它可以要求模拟器生成大量数据,以便确定将在训练期间使用的数据的统计数据。这些分布属性可以进一步告知所使用的启发法。

元学习是架构师模块使用的高级技术。顾名思义,它是学习关于学习的。这表示,由于架构师模块可以生成用于训练的候选算法选择和拓扑,因此它可以记录这个数据以及模型的签名和最终的系统性能。然后,该数据集可以在其自己的学习系统中被使用。因此,通过提出、探索和优化学习模型,架构师模块可以观察哪些有效以及哪些无效,并且使用它来了解它在看到类似签名时应当尝试的模型。

为了实现元学习,ai引擎可以包括被配置为将诸如元学习记录的记录保存在一个或多个数据库中的元学习模块。记录可以包括:i)由ai引擎处理的源代码,ii)源代码和/或其签名的心智模型,iii)用于训练神经网络的训练数据,iv)经训练的神经网络,v)经训练的神经网络多么快地被训练到足够精确度,以及vi)经训练的神经网络在做出关于训练数据的预测时多么精确。

对于高级用户,可以完全或部分明确指定学习拓扑的低级细节。架构师模块可以将任何这样的参数固定地视为其默认行为的覆盖。以这种方式,可以提供特定算法,或者可以固定生成的模型以用于手动细化。

指导训练

一旦选择了算法,brain服务器就可以经由课程及其功课继续训练brain的心智模型。ai引擎或brain服务器可以管理数据流(例如,通过数据流管理器)、数据存储、硬件资源的有效分配、选择或以其他方式确定何时训练每个概念、根据心智模型中的相关性来训练概念的广泛程度(例如,处理过度拟合和欠拟合的问题)并且通常负责基于给定的心智模型和课程来生成经训练的brain。因此,ai引擎被配置为做出关于以下的确定:i)何时在一个或多个概念中的每个概念上训练神经网络,以及ii)在一个或多个概念中的每个概念上多么广泛地训练神经网络。这样的确定可以基于如下相关性,该相关性是基于训练数据的经训练的神经网络的一个或多个预测中的一个或多个概念中的每个概念的相关性。

与选择合适的学习算法的情况一样,指导训练、特别是避免过度拟合和欠拟合以产生精确的ai解决方案是需要训练ai的知识和经验的任务,并且brain服务器可以具有一组编码的启发法来以很少或根本没有用户参来与管理这个操作。类似地,指导训练的过程也是经过训练的brain,它只会通过它训练的每个brain而变得更聪明。

ai引擎还可以确定何时训练每个概念,基于其相关性训练每个概念多少,并且最终产生经训练的brain。此外,ai引擎可以利用元学习。在元学习中,ai引擎记录它所看到的每个程序、它用于训练的数据以及它做出的所生成的ai。它还记录这些ai的训练速度以及它们的精确程度。ai引擎服务器了解该数据集。

学习后端

学习后端编码使用特定ai或机器学习算法进行工作所需要的底层细节。brain服务器可以提供很多后端,诸如用于深度学习的后端。但是,如果需要,学习算法作者也可以提供他们自己的后端。通过以这种方式构建brain服务器,按照教学编程语言而被表达的代码可以包括来自特定方法的另一级抽象。如果创建性能优于现有算法的的新学习算法,则需要添加的仅是新的后端。然后,架构师模块可以立即开始使用后端来构建系统,并且可以在不进行修改的情况中重新编译按照教学编程语言的现有程序以利用改进的算法。

在线学习

除了迁移学习状态的功能之外,brain服务器的某些实现方式还提供了启用在线学习的功能。由于在线学习可以在运行时经由状态变化打破节点的纯功能特性,所以系统被配置为提供的另一策略是使用数据守护进程持续训练在线学习的数据,以设定的间隔逐步训练网络,并且然后将更新的网络重新分配为整个brain服务器的功能块。

学习状态的迁移

当系统经历了实质性训练以达到学习状态,并且对潜在心智模型的随后改变可能需要重新训练时,可能需要迁移学习状态而不是从头开始训练。brain服务器被配置为提供转换功能,从而使得先前学习的高维表示可以被迁移到适当的新的高维表示。这可以在神经网络中被实现,例如,通过扩展输入层的宽度以考虑到与下游层的零权重连接的改变。然后,系统可以人为地减少来自要修剪的输入的连接的权重,直到它们达到零并且然后可以被完全修剪。

部署和使用

一旦对brain进行了充分的训练,就可以对其进行部署,从而使得其可以在生产应用中被使用。使用部署的brain的接口很简单:用户将数据(与训练过的brain类型相同)提交给brain服务器api,并且接收brain对该数据的评估。

作为如何使用部署的brain的实际示例,可以首先训练brain以识别来自混合国家标准与技术研究院(“mnist”)数据集的手写数字。可以创建包含手写数字的图像,可能直接通过基于触摸的接口,或者间接通过用写在其上的手写数字扫描一张纸。然后可以将图像下采样到28×28的分辨率并且转换为灰度,因为这是用于训练示例brain的输入模式。当通过brain服务器api而被提交给brain服务器时,brain可以将图像作为输入并且输出长度为10的一维数组(其中每个数组项表示由brain判断的图像是与索引相对应的数字的概率)。该数组可以是从api返回给用户的值,用户可以根据需要使用该值。

尽管在一些实施例中呈现了用于构建brain的线性方法,但是作者训练部署工作流不必被视为瀑布过程。如果用户决定需要进一步细化brain,无论是通过对现有数据的额外训练、对新的补充数据的额外训练、还是使用心智模型的修改版本或用于训练的课程的额外训练,则brain服务器被配置为支持brain的版本控制,从而使得用户可以保留(并且可能恢复)brain的当前状态,同时细化brain的经训练的状态,直到达到新的更令人满意的状态。

命令行界面(“cli”)

cli是被配置为使得用户能够配置ai引擎的工具。cli对于自动化和与其他工具的连接特别有用。一些动作只能使用cli而被执行。可以使用cli而被执行的一些操作包括加载按照教学编程语言而被表达的文件并且连接模拟器。

网站

网站是一种基于浏览器的工具,其用于配置和分析存储在ai引擎中的brain。网站可以用于共享,协作和学习。可以从网站访问的一些信息是brain训练进度的可视化。

图6a提供了示出根据一些实施例的ai系统600a的示意图。

如图6a中所示,诸如软件开发者的用户可以通过在线接口与ai系统600a连接;然而,用户不限于在线接口,并且在线接口不限于图6a中所示的接口。考虑到这一点,图6a的ai系统600a可以使得用户能够通过域名系统(“dns”)发出api和web请求,该请求可以可选地通过代理进行过滤以将api请求路由到api负载均衡器并且将web请求路由到web负载均衡器。api负载均衡器可以被配置为在docker网络或容器化平台中运行的多个brain服务容器之间分配api请求,这些容器被配置为将一个或多个软件包装在包含代码、运行时、系统工具、系统库等所有内容的完整文件系统中。web负载均衡器可以被配置为在docker网络中运行的多个web服务容器之间分发web请求。docker网络或dockerbrain网络可以包括中央处理单元(“cpu”)节点和图形处理单元(“gpu”)节点,docker网络的节点可以根据需要自动调节。cpu节点可以被用于docker网络上运行的大多数brain服务容器,并且gpu节点可以用于计算密集度更高的组件,诸如tensorflow和学习者模块。如图6a中进一步所示,brain服务工程师可以通过被配置为保护docker网络的虚拟私有云(“vpc”)网关和硬化堡垒主机与ai系统600a接口。可以在所有生产集群之间共享elastisearch-logstash-kibana(“elk”)堆栈集群,以进行专用监测和日志记录。

图6b提供了示出根据一些实施例的ai系统600b的示意图。

在ai系统600a之后,堡垒主机和一个或多个cpu节点可以在公共子网上,以通过因特网网关进行双向通信。一个或多个其他cpu节点以及gpu节点可以位于借助于其间的子网与公共子网通信耦合的私有子网上。公共子网上的一个或多个cpu节点可以由图2a、3a和5的编译器222以及图3a和5的架构师模块326使用。私有子网上的一个或多个其他cpu节点可以由图3a和5的讲师模块324使用,并且gpu节点可以由图3a和5的学习者模块328和预测器模块329使用。如图6b中进一步所示,私有子网可以被配置为通过网络地址转换(“nat”)网关向因特网发送传出通信。

方法

鉴于前述内容,在一些实施例中,ai引擎的一个或多个方法可以包括编译汇编代码,提出ai模型,训练ai模型,以及实例化经训练的ai模型。汇编代码可以从源代码编译,其中编译器被配置为从按照教学编程语言而被编写的源代码生成汇编代码。源代码可以包括要由ai模型使用训练数据学习的一个或多个概念模块的心智模型。源代码还可以包括用于在一个或多个概念模块上训练ai模型的一个或多个功课的课程。一个或多个功课中的每个功课可以被配置为可选地使用训练数据的不同流。ai模型可以由包括用于从汇编代码提出ai模型的架构师模块的一个或多个ai引擎模块提出。ai模型可以由ai引擎在一个或多个训练周期中使用来自一个或多个训练数据源的训练数据来训练。经训练的ai模型可以由ai引擎基于由ai模型在一个或多个训练周期中学习的一个或多个概念模块来实例化。

在这样的实施例中,ai引擎还可以包括推送或拉取训练数据。ai引擎可以被配置用于从选自模拟器、训练数据生成器、训练数据数据库或其组合的一个或多个训练源推送或拉取训练数据。训练数据可以是批量训练数据、流式训练数据或其组合。

在这样的实施例中,ai引擎还可以包括在一个或多个训练周期期间以训练模式或预测模式操作ai引擎。在训练模式下,ai引擎可以i)实例化符合架构师模块提出的ai模型的ai模型,以及ii)训练ai模型。在预测模式下,ai引擎可以通过一个或多个api端点在训练数据上实例化并且执行经训练的ai模型,用于预测模式下的一个或多个预测。

在这样的实施例中,ai引擎还可以包括启发式地挑选适当的学习算法。ai引擎可以被配置用于从一个或多个数据库中的多个机器学习算法中挑选适当的学习算法,用于训练架构师模块提出的ai模型。

在这样的实施例中,ai引擎还可以包括向前述初始ai模型提出一个或多个附加ai模型;对于一个或多个附加ai模型中的每个附加ai模型启发式地挑选适当的学习算法;并行地训练ai模型;实例化一个或多个附加经训练的ai模型;以及在经训练的ai模型中标识最佳训练的ai模型。架构师模块可以被配置用于提出一个或多个附加ai模型。ai引擎可以被配置用于对于一个或多个附加ai模型中的每个附加ai模型,从一个或多个数据库中的多个机器学习算法中启发式地挑选适当的学习算法。ai引擎可以被配置用于并行地训练ai模型,其中一个或多个附加ai模型还可以在一个或多个训练周期中使用来自一个或多个训练数据源的训练数据进行训练。ai引擎可以被配置为基于由一个或多个ai模型在一个或多个训练周期中学习的概念模块来实例化一个或多个附加经训练的ai模型,并且ai引擎可以被配置为在经训练的ai模型中标识最佳训练的ai模型。

在这样的实施例中,ai引擎还可以包括提供启用ai,用于从汇编代码提出ai模型,并且从一个或多个数据库中的多个机器学习算法中挑选适当的学习算法用于训练ai模型。ai引擎可以持续训练经训练的ai引擎ai模型,以提供启用ai以提出ai模型并且挑选适当的学习算法。

在这样的实施例中,ai引擎还可以包括使用元学习模块在一个或多个数据库中保存记录。记录可以包括i)由ai引擎处理的源代码,ii)源代码的心智模型,iii)用于训练ai模型的训练数据,iv)经训练的ai模型,v)经训练的ai模型被训练到足够精确度的速度有多快,以及vi)经训练的ai模型在对训练数据进行预测时变得有多精确。

在这样的实施例中,ai引擎还可以包括进行某些确定。这样的确定可以包括何时在一个或多个概念模块中的每个概念模块上训练ai模型。这样的确定可以备选地或附加地包括在一个或多个概念模块中的每个概念模块上多么广泛地训练ai模型。确定可以基于一个或多个概念模块中的每个概念模块在基于训练数据的经训练的ai模型的一个或多个预测中的相关性。

在这样的实施例中,ai引擎还可以包括在训练ai模型时提供一个或多个训练状态更新。这样的训练更新可以包括:i)针对ai模型而被完成的训练计划的比例的估计,ii)用于完成训练计划的完成时间的估计,iii)ai模型正在积极训练的一个或多个概念模块,iv)在学习一个或多个概念模块时对ai模型的掌握,v)在学习一个或多个概念模块时ai模型的细粒度精确度和性能,和/或vi)在学习一个或多个心智模型时ai模型的整体精确度和性能。

网络

图7示出了根据一些实施例的在网络环境中彼此通信的多个电子系统和设备。网络环境700具有通信网络720。网络720可以包括从光学网络、蜂窝网络、因特网、局域网(“lan”)、广域网(“wan”)、卫星网络、光纤网络、有线网络及它们的组合选择的的一个或多个网络。在一些实施例中,通信网络720是因特网。如所示,可以存在经由通信网络720被彼此连接的很多服务器计算系统和很多客户端计算系统。然而,应当理解,例如,单个客户端计算系统也可以被连接到单个服务器计算系统。这样,图7示出了经由通信网络720彼此连接的服务器计算系统和客户端计算系统的任何组合。

通信网络720可以将选自至少第一服务器计算系统704a和第二服务器计算系统704b的一个或多个服务器计算系统彼此连接,并且连接到至少一个或多个客户端计算系统。例如,服务器计算系统704a和704b可以是图2a和图3a的一个或多个服务器系统220。服务器计算系统704a和704b可以分别可选地包括有组织的数据结构,诸如数据库706a和706b。一个或多个服务器计算系统中的每个服务器计算系统可以具有一个或多个虚拟服务器计算系统,并且多个虚拟服务器计算系统可以通过设计而被实现。一个或多个服务器计算系统中的每个服务器计算系统可以具有一个或多个防火墙以保护数据完整性。

至少一个或多个客户端计算系统可以选自第一移动计算设备702a(例如,具有基于android的操作系统的智能电话)、第二移动计算设备702e(例如,具有基于ios的操作系统的智能电话)、第一可穿戴电子设备702c(例如,智能手表)、第一便携式计算机702b(例如,膝上型计算机)、第三移动计算设备或第二便携式计算机702f(例如,具有基于android或ios的操作系统的平板计算机)、合并到第一智能自行车702d中的智能设备或系统、合并到第一智能自行车702g中的智能设备或系统、第一智能电视702h、第一虚拟现实或增强现实耳机704c等。例如,客户端计算系统702b可以是图2a和图3a的一个或多个客户端系统210中的一个,并且任何一个或多个其他客户端计算系统(例如,702a、702c、702d、702e、702f、702g、702h和/或704c)可以包括例如软件应用或其中可以部署经训练的神经网络106的基于硬件的系统。一个或多个客户端计算系统中的每个客户端计算系统可以具有一个或多个防火墙以保护数据完整性。

应当理解,术语“客户端计算系统”和“服务器计算系统”的使用旨在指示通常发起通信的系统和通常响应于通信的系统。例如,客户端计算系统通常可以发起通信,并且服务器计算系统通常响应于通信。除非明确说明,否则不暗示任何等级。这两个功能可以在单个通信系统或设备中,在这种情况中,客户端服务器和服务器客户端关系可以被视为是对等的。因此,如果第一便携式计算机702b(例如,客户端计算系统)和服务器计算系统704a都可以发起和响应于通信,则它们的通信可以被视为是对等的。另外,服务器计算系统704a和704b包括能够通过网络720彼此通信的电路和软件。

任何一个或多个服务器计算系统可以是云提供商。云提供商可以在云(例如,诸如因特网的网络720)中安装和操作应用软件,并且云用户可以从一个或多个客户端计算系统访问应用软件。通常,在云中具有基于云的站点的云用户不能单独管理运行应用软件的云基础架构或平台。因此,服务器计算系统及它的组织的数据结构可以是共享资源,其中每个云用户被给予对共享资源的一定量的专用使用。每个云用户的基于云的站点可以在云中获取一定量的虚拟的专用空间和带宽。云应用在其可伸缩性方面可以与其他应用不同,这可以通过在运行时将任务克隆到多个虚拟机以满足不断变化的工作需求而被实现。负载平衡器在一组虚拟机上分配工作。这个过程对云用户是透明的,云用户只能看到单个接入点。

基于云的远程访问可以被编码,以利用诸如超文本传输协议(“http”)的协议来与客户端计算系统(诸如驻留在客户端计算系统上的web浏览器应用)上的应用进行请求和响应循环。可以通过智能手机、台式计算机、平板计算机或任何其他客户端计算系统随时和/或随地访问基于云的远程访问。基于云的远程访问被编码为参与1)来自所有基于web浏览器的应用的请求和响应周期,3)来自专用在线服务器的请求和响应周期,4)直接在驻留在客户端设备上的本机应用与对另一客户端计算系统的基于云的远程访问之间的请求和响应周期,以及5)这些的组合。

在一个实施例中,服务器计算系统704a可以包括服务器引擎、网页管理组件、内容管理组件和数据库管理组件。服务器引擎可以执行基本处理和操作系统级任务。网页管理组件可以处理与接收和提供数字内容和数字广告相关联的网页或屏幕的创建和显示或路由。用户(例如,云用户)可以借助于与其相关联的统一资源定位符(“url”)来访问一个或多个服务器计算系统。内容管理组件可以处理本文中描述的实施例中的大多数功能。数据库管理组件可以包括关于数据库的存储和取回任务、对数据库的查询和数据的存储。

在一些实施例中,服务器计算系统可以被配置为在窗口、网页等中显示信息。包括当在例如服务器计算系统704a上被执行时可执行的任何程序模块、应用、服务、进程和其他类似软件的应用可以使得服务器计算系统704a在显示屏空间的一部分中显示窗口和用户接口屏幕。关于网页,例如,用户经由客户端计算系统702b上的浏览器可以与网页交互,并且然后向用户接口屏幕呈现的查询/字段和/或服务提供输入。网页可以由web服务器(例如,服务器计算系统704a)在支持任何超文本标记语言(“html”)或无线访问协议(“wap”)的客户端计算系统(例如,客户端计算系统702b)或其任何等同物上提供。客户端计算系统702b可以托管浏览器和/或具体应用以与服务器计算系统704a交互。每个应用具有用于执行软件组件被编码为执行的功能的代码脚本,诸如呈现字段以获取期望信息的详细信息。例如,服务器计算系统704a内的算法、例程和引擎可以从呈现字段获取信息并且将该信息放入适当的存储介质中,诸如数据库(例如,数据库706a)。比较向导可以编写脚本以引用数据库并且使用这样的数据。应用可以被托管在例如服务器计算系统704a上,并且被提供给例如客户端计算系统702b的具体应用或浏览器。然后,应用提供允许详细信息的录入的窗口或页面。

计算系统

图8示出了根据一些实施例的计算系统800,其可以完全或部分地是一个或多个服务器或客户端计算设备的一部分。参考图8,计算系统800的组件可以包括但不限于具有一个或多个处理核的处理单元820、系统存储器830和将包括系统存储器830的各种系统组件耦合到处理单元820的系统总线821。系统总线821可以是使用各种总线架构中的任何总线架构的选自存储器总线或存储器控制器、外围总线和本地总线的几种类型的总线结构中的任何总线结构。

计算系统800通常包括各种计算机器可读介质。计算机器可读介质可以是可以由计算系统800访问的任何可用介质,并且包括易失性和非易失性介质以及可移除和不可移除介质。作为示例而非限制,计算机器可读介质使用包括诸如计算机可读指令、数据结构、其他可执行软件或其他数据的信息的存储。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储技术、cd-rom、数字通用盘(dvd)或其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、或者可以用于存储期望的信息并且可以由计算设备800访问的任何其他有形介质。诸如无线信道的移动介质不包括在机器可读介质中。通信介质通常包含计算机可读指令、数据结构、其他可执行软件或其他传输机制,并且包括任何信息传递介质。作为示例,图8的网络820上的一些客户端计算系统可能没有光或磁存储装置。

系统存储器830包括诸如只读存储器(rom)831和随机存取存储器(ram)832的易失性和/或非易失性存储器形式的计算机存储介质。包含有助于例如在启动期间在计算系统800内的元件之间传送信息的基本例程的基本输入/输出系统833(bios)通常存储在rom831中。ram832通常包含可立即访问和/或当前由处理单元820操作的数据和/或软件。作为示例而非限制,图8示出了ram832可以包括操作系统834、应用程序835、其他可执行软件836和程序数据837的一部分。

计算系统800还可以包括其他可移除/不可移除的易失性/非易失性计算机存储介质。仅作为示例,图8示出了固态存储器841。可以在示例操作环境中使用的其他可移除/不可移除的易失性/非易失性计算机存储介质包括但不限于usb驱动器和设备、闪存卡、固态ram、固态rom等。固态存储器841通常通过诸如接口840的不可移除存储器接口连接到系统总线821,并且usb驱动器851通常通过诸如接口850的可移除存储器接口被连接到系统总线821。

上面讨论并且在图8中示出的驱动器及其相关联的计算机存储介质提供针对计算系统800的计算机可读指令、数据结构、其他可执行软件和其他数据的存储。例如,在图8中,固态存储器841被示出为用于存储操作系统844、应用程序845、其他可执行软件846和程序数据847。注意,这些组件可以与操作系统834、应用程序835、其他可执行软件836和程序数据837相同或不同。操作系统844、应用程序845、其他可执行软件846和程序数据847在这里被给予不同的数字以说明它们至少是不同的副本。

用户可以通过诸如键盘、触摸屏或软件或硬件输入按钮862、麦克风863、指点设备和/或滚动输入组件(诸如鼠标、轨迹球或触摸板)的输入设备向计算系统800中录入命令和信息。麦克风863可以与语音识别软件协作。这些和其他输入设备通常通过被耦合到系统总线821的用户输入接口860被连接到处理单元820,但是可以通过其他接口和总线结构(诸如并行端口、游戏端口或通用串行总线(usb))被连接。显示监测器891或其他类型的显示屏设备也经由诸如显示器接口890的接口被连接到系统总线821。除了监测器891之外,计算设备还可以包括可以通过输出外围接口895被连接的其他外围输出设备,诸如扬声器897、振动器899和其他输出设备。

计算系统800可以使用到一个或多个远程计算机/客户端设备(诸如远程计算系统880)的逻辑连接在联网环境中操作。远程计算系统880可以是个人计算机、手持设备、服务器、路由器、网络pc、对等设备或其他公共网络节点,并且通常包括上面相对于计算系统800而被描述的元件中的很多或所有元件。图8中描绘的逻辑连接可以包括个域网(“pan”)872(例如,)、局域网(“lan”)871(例如,wi-fi)和广域网(“wan”)873(例如,蜂窝网络),但也可以包括其他网络。这样的联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。浏览器应用可以驻留在计算设备上以及被存储在存储器中。

当在lan网络环境中被使用时,计算系统800通过网络接口或适配器87被0连接到lan871,网络接口或适配器870可以是例如或wi-fi适配器。当在wan网络环境(例如,因特网)中被使用时,计算系统800通常包括用于通过wan873建立通信的一些装置。关于移动电信技术,例如,可以是内部或外部的无线电接口可以经由网络接口870或其他适当的机制被连接到系统总线821。在联网环境中,相对于计算系统800而被描述的其他软件或它的部分可以被存储在远程存储器存储设备中。作为示例而非限制,图8将远程应用程序885示出为驻留在远程计算设备880上。可以理解,所示出的网络连接是示例,并且可以使用在计算设备之间建立通信链路的其他手段。

如所讨论的,计算系统800可以包括处理器820、存储器(例如,rom831、ram832等)、为计算设备供电的内置电池、为电池充电的ac电源输入、显示屏、用于与连接到网络的远程计算设备无线通信的内置wi-fi电路。

应当注意,本设计可以在诸如关于图而被8描述的计算系统上被执行。然而,本设计可以在服务器、专用于消息处理的计算设备、或分布式系统上被执行,在分布式系统中,本设计的不同部分在分布式计算系统的不同部分上被执行。

可以被耦合到总线821的另一设备是诸如dc电源(例如,电池)或ac适配器电路的电源。如上所述,dc电源可以是需要定期被再充电的电池、燃料电池或类似的dc电源。无线通信模块可以采用无线应用协议来建立无线通信信道。无线通信模块可以实现无线联网标准。

在一些实施例中,用于促进本文中讨论的算法的软件可以被实施在非暂态机器可读介质上。机器可读介质包括以机器(例如,计算机)可读的形式存储信息的任何机制。例如,非暂态机器可读介质可以包括只读存储器(rom);随机存取存储器(ram);磁盘存储介质;光存储介质;闪存设备;数字通用盘(dvd)、eprom、eeprom、闪存、磁卡或光卡、或适于存储电子指令的任何类型的介质。

注意,本文中描述的应用包括但不限于作为操作系统应用的一部分的软件应用、移动应用和程序。本说明书的一些部分在对计算机存储器内的数据位的操作的算法和符号表示方面而被呈现。这些算法描述和表示是数据处理领域的技术人员用来将他们工作的实质最有效地传达给本领域其他技术人员的手段。这里的算法通常被认为是导致期望结果的自相一致的步骤序列。这些步骤是需要物理操纵物理量的步骤。通常,尽管不是必须的,这些量采用能够被存储、传输、组合、比较和以其他方式操纵的电信号或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为比特、值、元素、符号、字符、术语、数字等是方便的。这些算法可以按照很多不同的软件编程语言(诸如c、c+或其他类似语言)而被编写。此外,算法可以利用软件中的代码行、软件中配置的逻辑门或两者的组合而被实现。在一个实施例中,逻辑包括遵循布尔逻辑规则的电子电路、包含指令模式的软件或两者的任何组合。

然而,应当记住,所有这些和类似术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。除非从上述讨论中明确说明,否则应当理解,在整个说明书中,利用诸如“处理”或“计算(computing)”或“计算(calculating)”或“确定”或“显示”的术语的讨论是指计算机系统或类似电子计算设备的动作和过程,这些动作和过程将在计算机系统的寄存器和存储器内表示为物理(电子)量的数据操纵和转换成类似地在计算机系统存储器或寄存器或者其他这样的信息存储、传输或显示设备内表示为物理量的其他数据。

可以通过软件仿真来复制由电子硬件组件执行的很多功能。因此,针对实现那些相同功能而被编写的软件程序可以模拟输入输出电路中的硬件组件的功能。

虽然已经相当详细地提供了前述设计和其实施例,但是本申请人的设计和实施例的意图并不是限制性的。附加的适应和/或修改是可能的,并且在更广泛的方面,还包括这些调节和/或修改。因此,在不脱离由所附权利要求提供的范围的情况中,可以偏离前述设计和实施例,上述范围仅被在适当地解释时受权利要求限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1