CN114556322A - 用于定义机器学习(ml)解决方案的聊天机器人 - Google Patents
用于定义机器学习(ml)解决方案的聊天机器人 Download PDFInfo
- Publication number
- CN114556322A CN114556322A CN202080072143.7A CN202080072143A CN114556322A CN 114556322 A CN114556322 A CN 114556322A CN 202080072143 A CN202080072143 A CN 202080072143A CN 114556322 A CN114556322 A CN 114556322A
- Authority
- CN
- China
- Prior art keywords
- machine learning
- user
- input
- model
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/243—Natural language query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2423—Interactive query statement specification based on a database schema
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/046—Forward inferencing; Production systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/02—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- User Interface Of Digital Computer (AREA)
- Machine Translation (AREA)
Abstract
本公开涉及能够被用于使用户能够生成机器学习系统的智能助手(例如,聊天机器人)的系统和方法。技术能够被用于自动生成机器学习系统以帮助用户。在一些情况下,用户可以不是软件开发人员并且在机器学习技术或软件编程方面可以很少或没有经验。在一些实施例中,用户能够与智能助理交互。交互能够是听觉的、文本的或通过图形用户界面。聊天机器人能够使用本体将自然语言输入翻译成机器学习解决方案的结构表示。以这种方式,用户无需成为数据科学家就能够用人工智能来开发、训练、改进和编译机器学习模型作为独立的可执行代码。
Description
相关申请的交叉引用
本申请要求于2020年6月4日提交的标题为“CHATBOT FOR DEFINING A MACHINELEARNING(ML)SOLUTION”的美国非临时申请No.16/893,193和2019年9月14日提交的标题为“AUTOMATED MACHINE LEARNING SYSTEMS AND METHODS”美国临时专利申请No.62/900,537的优先权,所述申请通过引用整体并入本文并用于所有目的。
技术领域
本公开涉及用于机器学习的系统和技术。更特别地,本公开涉及用于生成和管理机器学习应用的库的系统和技术。
背景技术
机器学习具有广泛的应用,诸如搜索引擎、医学诊断、文本和手写识别、图像处理和识别、负载预测、营销和销售诊断、聊天机器人、自主驾驶等。各种类型和版本的机器学习模型可以使用基于不同技术、语言、库等的训练数据为类似的应用生成,因此可能缺乏互操作性。此外,不同的模型在不同的上下文中和/或对于不同类型的输入数据可以具有不同的性能。数据科学家可能不具备生成构建自定义机器学习模型所必需的代码的编程技能。此外,可用的机器学习工具不将各种机器学习模型组件存储为库的一部分,以允许在其它机器学习模型中高效地重用例程。
现有的机器学习应用可以要求数据科学家的大量编程知识来设计和构造机器学习应用以解决特定问题。直观的界面可以帮助数据科学家通过一系列查询来构造机器学习应用。
一些组织可以用可定制的模式存储来自多个客户端或供应商的数据。这些可定制的模式可能与现有机器学习模型使用的标准化数据存储模式不匹配。因此,这些其它系统将需要在使用存储的数据之前执行协调过程。协调过程可以是或者手动过程,或者可以在使用数据生成机器学习应用之前通过繁琐的提取、变换、加载自动化过程。
仅基于度量(例如,服务质量(QoS)或关键性能指标)的机器学习应用可能不足以组成具有最小人工干预的用于自适应体系架构的流水线。预先存在的机器学习工具不会组合基于非逻辑和基于逻辑的语义服务来生成机器学习应用。
现有的机器学习工具趋于最大化来自相同源的新数据的分类准确度。在这样做的过程中,这些现有框架试图基于模型性能组成最佳流水线。但是,模型性能本身并不覆盖由于在线数据度量的变化或QoS违反而必须在运行时适配流水线的情况。
发明内容
本公开的某些方面和特征涉及生成组件的库以生成机器学习模型和机器学习应用的机器学习平台。机器学习基础设施系统允许用户(即,数据科学家)生成机器学习应用,而无需详细了解基于云的网络基础设施或了解如何生成用于构建模型的代码。机器学习平台可以分析识别出的数据和用户提供的期望的预测和性能特点以选择一个或多个库组件和关联的API来生成机器学习应用。机器学习技术可以监视和评估机器学习模型的输出以允许对模型进行反馈和调整。可以训练、测试和编译机器学习应用,以作为独立的可执行代码导出。
机器学习平台可以生成和存储可以被用于其它机器学习应用的一个或多个库组件。机器学习平台可以允许用户生成简档,该简档允许平台基于用户的历史偏好进行推荐。模型创建引擎可以检测在期望性能准则内实现期望结果所必需的基础设施资源的数量和类型。
聊天机器人可以提供直观的界面以允许数据科学家在没有大量编程经验的情况下生成机器学习应用。聊天机器人能够使用交谈界面将自然语言翻译成机器学习解决方案的结构化表示。聊天机器人可以被用于指示数据的位置、选择机器学习解决方案的类型、显示最能满足约束的最优解决方案,并推荐部署该解决方案的最佳环境。
自调整公司范围的发现和集成特征可以审查客户端的数据存储库,审查用于各种数据模式的标签,并将客户端的数据模式有效地映射到由机器学习模型使用的分类。各种技术可以自动选择对每个个体用例(即,一个客户端)具有预测性的特征,从而有效地使机器学习解决方案与应用开发人员无关。可以生成和存储特定机器学习解决方案的每个特征的共用表示的加权列表。当新数据添加到数据存储库时,匹配服务可以至少部分基于加权列表自动检测应当将哪些特征馈入机器学习解决方案。当使得新数据可用于模型时,可以更新加权列表。
现有数据本体可以被用于生成机器学习解决方案,以对相关服务进行高精度搜索,从而以最少的人工干预组成流水线。数据本体可以被用于创建基于非逻辑和基于逻辑的语义服务的组合,在精度方面可以显著优于这两种选择。QoS和产品KPI约束可以被用作体系架构选择的一部分。对于没有现有本体的数据集,生成一个或多个本体。
所提出的系统可以在构造时使用最佳可用模型来使用机器学习应用来解决问题。自适应流水线化组成服务可以识别一个或多个新模型并将其结合到机器学习应用中。可以离线测试具有新模型的机器学习应用,并将结果与基本事实数据进行比较。如果具有新模型的机器学习应用的性能优于先前使用的模型,那么机器学习应用可以被升级并自动晋级到生产。还可以发现一个或多个参数。新参数可以在离线模式下结合到现有模型中。可以离线测试具有新参数的机器学习应用,并可以将结果与用现有参数的先前结果进行比较。如果与基本事实数据相比,新参数的性能优于现有参数,那么机器学习应用可以自动晋级到生产。
下面详细描述这些和其它实施例。例如,其它实施例针对与本文描述的方法关联的系统、设备和计算机可读介质。
参考以下详细描述和附图可以获得对本公开的实施例的性质和优点的更好理解。
附图说明
说明书参考以下附图,其中在不同附图中使用相似的附图标记旨在图示相似或类似的组件。
图1是图示示例性机器学习基础设施系统的框图。
图2是图示用于生成机器学习应用的示例性技术的流程图。
图3是图示用于生成机器学习应用的另一种示例性技术的流程图。
图4描绘了根据各种实施例的实现用于使用消息传递应用与最终用户通信的机器人系统的分布式系统。
图5描绘了根据各种实施例的包括机器人系统和用于监视、分析、可视化和改进机器人系统的性能的机器人分析系统的集成系统。
图6描绘了根据某些实施例的实现用于使用消息传递应用与最终用户通信的机器人系统的分布式系统。
图7图示了用于使用聊天机器人生成机器学习应用的技术的流程图。
图8图示了用于保护序列化的模型并将私钥存储在安全位置的流程图。
图9A和9B图示了由软件开发环境生成的示例性用户界面屏幕。
图10图示了包括代码集成请求预测服务器的示例性分布式计算环境,该服务器可以被用于接收和处理输入数据、生成和使用机器学习或人工智能模型来生成预测代码集成请求的输出。
图11图示了用于实时代码分析插件的示例性流程图。
图12图示了用于自动按需库检查的示例性流程图。
图13A和13B图示了由软件开发环境生成的示例性用户界面屏幕。
图14图示了用于自调整公司范围的特征发现和集成的示例性技术的流程图。
图15图示了用于自调整公司范围的特征发现和集成的第二示例性技术的流程图。
图16图示了说明用于使用本体生成产品图的示例性系统的框图。
图17图示了用于机器学习的自适应和上下文感知自动化服务组成的示例性流程图。
图18图示了用于生成一个或多个流水线的框图。
图19图示了用于自适应流水线组成服务的示例性流程图。
图20是图示用于实现实施例之一的分布式系统的简化图。
图21是图示系统环境的一个或多个组件的简化框图。
图22图示了其中可以实现本发明的各种实施例的示例性计算机系统。
具体实施方式
本公开的某些实施例涉及用于实现机器学习的各种技术的系统、设备、计算机可读介质和计算机实现的方法。机器学习技术可以允许用户(即,数据科学家)生成机器学习应用,而无需详细了解基于云的网络基础设施或了解如何生成用于构建模型的代码。机器学习平台可以分析识别出的数据和用户提供的期望的预测和性能特点以选择一个或多个库组件和关联的API来生成机器学习应用。
机器学习技术可以采用聊天机器人来指示数据的位置、选择机器学习解决方案的类型、显示最符合约束的最优解决方案并推荐部署该解决方案的最佳环境。
本文描述的技术可以包括自调整公司范围的发现和集成特征,可以审查客户端的数据存储库,审查用于各种数据模式的标签,并将客户端的数据模式有效地映射到由机器学习模型使用的分类。各种技术可以自动选择对每个个体用例(即,一个客户端)具有预测性的特征,从而有效地使机器学习解决方案与应用开发人员无关。可以生成和存储特定机器学习解决方案的每个特征的共用表示的加权列表。
该技术可以利用现有的数据本体来生成机器学习解决方案,以对相关服务进行高精度搜索,从而以最少的人工干预组成流水线。对于没有现有本体的数据集,生成一个或多个本体。
所述技术可以采用自适应流水线化组成服务来识别一个或多个新模型并将其结合到机器学习应用中。可以离线测试具有新模型的机器学习应用,并将结果与基本事实数据进行比较。如果具有新模型的机器学习应用的性能优于先前使用的模型,那么机器学习应用可以被升级并自动晋级到生产。
I.机器学习基础设施平台
图1是图示用于生成机器学习模型的示例性机器学习平台100的框图。机器学习平台100具有可以分布在不同网络和计算系统之间的各种组件。机器学习基础设施库可以存储用于生成机器学习应用112的一个或多个组件。将机器学习应用112投入生产所需的所有基础设施都可以被封装并存储在库中。
机器学习配置和与模型组成引擎132的交互允许选择各种库组件168(例如,流水线136或工作流、微服务例程140、软件模块144和基础设施模块148)以定义构建机器学习应用112的训练和推理的辑。用于库组件168的不同参数、变量、缩放、设置等可以由模型组成引擎132指定或确定。常规而言创建机器学习应用112所要求的复杂性可以用模型组成引擎132在很大程度上自动执行。
库组件168可以是可扩展的,以允许定义多个环境(例如,不同的Kubernetes集群),其中可以部署应用的各个部分以实现指定的任何服务质量(QoS)或关键性能度量(KPI)。Kubernetes集群是用于运行容器化应用的节点机器的集合。可扩展性可以对应用开发人员隐藏或抽象机器学习平台100的复杂性。监视引擎156可以根据KPI/QoS度量160监视机器学习应用112的操作,以确保机器学习应用112正在根据要求执行。此外,监视引擎156可以在不同的规模、设置、加载、设置等下无缝地端到端测试新的或演进的机器学习应用。监视引擎156可以通过发信号通知对模型组成引擎132的所需改变来向机器学习应用112推荐各种调整。
在一些实施例中,为了解决可扩展性问题,机器学习平台100创建基于微服务体系架构的基础设施,从而使其稳健且可扩展。例如,可以配置和定制各种微服务例程140和基础设施模块148以嵌入到机器学习应用112中。机器学习平台100可以允许开发人员定义机器学习应用112的不同库组件168所需的资源的量(例如,CPU、存储器)。
机器学习平台100可以生成高度可定制的应用。库组件168包含预定义的、现成的工作流或流水线136的集合,应用开发人员可以将其结合到新的机器学习应用112中。工作流指定各种微服务例程140、软件模块144和/或基础设施模块148,其以特定方式配置用于一种类型或一类问题。除此之外,还有可能通过重新使用库组件或改变现有的工作流或流水线136来定义新的工作流或流水线136。基础设施模块148还可以包括诸如数据搜集、过程监视和日志记录之类的服务。
模型组成引擎132可以在一个或多个计算系统(例如,基础设施128)上执行。模型组成引擎132可以通过接口104接收来自用户116的输入。界面104可以包括具有各种菜单和用户可选择元素的各种图形用户界面。界面104可以包括聊天机器人(例如,基于文本或基于语音的界面)。用户116可以与界面104交互以识别以下一项或多项:数据的位置、机器学习应用的期望的预测以及机器学习模型的各种性能度量。模型组成引擎132可以与库组件168接口以识别可以在机器学习模型112的创建中使用的各种流水线136、微服务例程140、软件模块144和基础设施模型148。
模型组成引擎132可以输出一个或多个机器学习应用112。机器学习应用112可以本地存储在服务器上或基于云的网络中。模型组成引擎132可以通过基础设施接口124将机器学习应用112作为在各种基础设施128上运行的可执行代码输出。
模型执行引擎108可以使用一个或多个基础设施接口124执行在基础设施128上的机器学习应用112。基础设施128可以包括一个或多个处理器、一个或多个存储器和一个或多个网络接口、一条或多条总线和控制线,它们可以被用于生成、测试、编译和部署机器学习应用112。在各种实施例中,基础设施128可以存在于远离用户116的位置的远程系统152上。基础设施128可以通过基础设施接口124与模型执行引擎108交互。模型执行引擎108可以输入性能特点(例如,KPI/QoS度量存储装置160)和托管的输入数据164。模型执行引擎108可以从机器学习应用112生成一个或多个结果。
KPI/QoS度量存储装置160可以存储可以被用于评估机器学习应用112的一个或多个度量。度量可以包括推理查询度量、性能度量、情绪度量和测试度量。可以通过用户接口104从用户116接收度量。
监视引擎156可以接收模型执行引擎108的结果并且将结果与性能特点(例如,KPI/QoS度量160)进行比较。监视引擎156可以使用基本事实数据来测试机器学习应用112以确保模型可以按预期被执行。监视引擎156可以向模型组成引擎132提供反馈。反馈可以包括对机器学习模型112中使用的一个或多个变量或所选择的机器学习模型的调整。
库组件168可以包括各种流水线136、微服务例程140、软件模块144和基础设施模块148。软件流水线136可以由一系列计算过程(例如,命令、程序运行、任务、线程、过程等)组成。
微服务例程140可以被用在构建应用的体系架构方法中。作为体系架构框架,微服务是分布式且松耦合的,以允许在不破坏整个应用的情况下对应用的一个方面进行改变。使用微服务的好处是开发团队可以快速构建应用的新组件以满足不断变化的开发要求。微服务体系架构将应用分解成其核心功能。每个功能被称为服务,并且可以被独立构建和部署,这意味着各个服务可以运作(和发生故障)而不会对其它服务产生负面影响。微服务可以是独立于其它服务运行的应用的核心功能。通过存储各种微服务例程140,机器学习平台100可以通过从库组件168中识别和选择各种不同的组件来递增地生成机器学习应用。
软件模块144可以包括形成包含一个或多个例程的程序的一部分的代码批次。一个或多个独立开发的模块组成程序。企业级软件应用可以包含几个不同的软件模块144,并且每个模块可以服务于独特和分离的操作。模块接口可以表达由模块提供和要求的元素。接口中定义的元素可以是其它模块可检测的。实施方式可以包含与接口中声明的元素对应的工作代码。模块化编程可以与结构化编程和面向对象的编程相关,它们都具有通过分解成更小的片段来促进大型软件程序和系统的构造的相同目标。虽然这些术语的历史用法一直不一致,但如本文使用的“模块化编程”是指将整个程序的代码高级分解成片段:结构化编程到结构化控制流的低级代码使用,以及面向对象的编程到对象的数据使用,数据结构的种类。在面向对象编程中,使用接口作为体系架构模式来构造模块被称为基于接口的编程。
基础设施模块148可以包括使机器学习算法以稳定、可扩展和可靠的方式投入生产所必需的技术堆栈。技术堆栈可以包括创建完整平台所需的一组软件子系统或组件,从而不需要额外的软件来支持应用。例如,为了开发Web应用,体系架构师将堆栈定义为目标操作系统、Web服务器、数据库和编程语言。软件堆栈的另一个版本是操作系统、中间件、数据库和应用。软件堆栈的组件可以由不同的开发人员彼此独立地开发。堆栈可以从用于选择和训练机器学习算法的数据科学工具扩展到这些算法在其上运行的硬件以及它们从中提取数据集的数据库和消息队列。
机器学习平台100可以包括一个或多个数据存储位置170。用户可以识别一个或多个数据存储位置170。数据存储位置170可以是本地的(例如,在电连接到用于生成、测试和执行应用的处理电路系统和接口的存储设备中)。在各种实施例中,数据存储位置170可以是远程的(例如,可通过诸如局域网或互联网之类的网络访问)。在一些实施例中,数据存储位置170可以是基于云的服务器。
用于机器学习模型112的数据常常包括个人可识别信息(PII),因此触发由隐私法提供的某些保护措施。保护包含在数据存储装置170中的信息的一种方式可以是使用一个或多个密钥来加密数据。公钥密码学或非对称密码学是使用密钥对的密码系统:可以广泛传播的公钥和只有数据的所有者知道的私钥。私钥可以存储在密钥存储模块172中,以启用解密数据以供机器学习平台100使用。
模型执行引擎108可以使用托管的输入数据164来执行和测试机器学习应用112。托管的输入数据164可以包括存储在数据存储装置170处的数据的一部分。在各种实施例中,托管的输入数据164的一部分可以被识别为测试数据。
图2图示了用于使用机器学习库基础设施生成机器学习应用的过程200。替代实施例可以通过组合、分离或以其它方式改变图2中所示的方框中描述的功能性来改变功能。用于执行图2中所示的一个或多个方框的功能性的部件可以包括分布式系统的硬件和/或软件组件,包括图20、21和22中所示以及如下所述的计算设备、存储设备、网络基础设施和服务器。
功能性可以包括向用户提供对开发针对硬件平台和用户定义的要求定制的生产代码的机器学习平台的访问。供用户访问的接口可以包括触摸屏显示器上的图形用户界面、键盘、小键盘、接收语音指令的麦克风、聊天机器人和/或定点设备(例如,用于选择图形用户界面中的一个或多个的鼠标、轨迹球)。
在202处,功能性可以包括接收识别数据的位置的第一用户输入。在各种实施例中,用户可以使用接口来识别将用于生成机器学习模型的一个或多个数据位置。如上所述,数据可以本地或远程存储。在各种实施例中,用户可以录入数据的网络位置(例如,互联网协议(IP)地址)。在各种实施例中,用户可以从存储设备(例如,云存储设备)上的多个文件夹中选择文件夹。在各种实施例中,用户可以选择便携式媒体设备(例如,USB拇指驱动器、光盘,或固态或磁盘驱动器)上的文件。在各种实施例中,该技术可以至少基于用户先前与机器学习接口的交互来建议数据的位置。
在204处,功能性包括接收识别问题的第二用户输入,机器学习应用可以针对该问题生成解决方案。在各种实施例中,第二用户输入可以指定用户想要对其实现机器学习的问题的类型。在各种实施例中,可以通过经由用户界面输入文本来识别问题。在各种实施例中,问题可以作为母语讲话或文本被录入(例如,通过使用聊天机器人)。该技术可以破译母语以理解机器学习模型的目标。机器学习可以解决的一些问题类型可以包括分类、回归、产品推荐、医疗诊断、财务分析、预测性维护、图像和声音识别、文本识别和表格数据分析。这些技术可以识别母语中的一个或多个关键字,以推荐或选择特定的机器学习算法。
在各种实施例中,用户可以通过图形用户界面选择问题的类型。该技术可以通过图形用户界面显示几个可供用户使用的通用模型。用户可以通过使用定点设备或触摸屏显示器选择模型描述之一来选择模型之一。除了通用模型之外,还可以选择和修改附加的自定义模型来解决作为第二输入被接收的问题。
在206处,功能性包括接收机器学习应用的一个或多个性能要求的第三输入。第三输入可以作为母语讲话或文本(例如,通过使用聊天机器人)录入或经由界面(例如,图形用户界面)选择。
性能要求可以包括服务质量(QoS)度量。QoS度量是指客观的、与系统相关的特点,其提供对网络/传输级别的递送服务的性能的深入了解。QoS度量是反映发送方侧而非应用侧的服务质量的参数。示例QoS度量可以包括系统时延和可靠性。
性能要求可以包括一个或多个关键性能指标(KPI)。关键性能指标是可测量的值,用于展示模型如何有效地实现其目标。KPI可以是特定于问题/解决方案的,并且可以包括与一些基本事实测试数据相比对机器学习应用的结果的准确性的测量。
第三用户输入可以包括推理指标。推理指标是通常出现在前提和结论开头的词。推理指示符提醒系统要遵循的前提或结论。
第三用户输入可以包括情绪指标。情绪指标是指图形或数字指标,其被设计为示出群体对某个条件或状态(例如,市场或经济)的感受。情绪指标旨在量化当前的信念和立场如何影响未来的行为。
第三用户输入可以包括测试度量。测试度量可以包括有助于估计软件测试工作的进度、质量和健康状况的定量测量。测试度量以定量的方式定义系统、系统组件或过程拥有给定属性的程度。示例测试度量可以包括时间表差异、测试设计效率、每个测试小时的缺陷的数量和固定缺陷百分比。
第三用户输入可以包括训练度量。训练度量有助于评估模型的性能。示例训练度量可以包括分类准确性、对数损失、曲线下面积、F1分数、平均绝对误差和均方误差。准确性度量是正确预测的数量除以做出的预测的数量的比率。对数损失度量通过惩罚错误分类起作用。曲线下面积(AUC)可以被用于二元分类问题。分类器的AUC等于分类器将随机选择的正示例排名高于随机选择的负示例的概率。F1分数被用于测量测试的准确性。F1分数是精度与召回率之间的调和均值。F1分数的范围是[0,1]。F1分数可以告知用户分类器有多精确(它正确分类了多少实例)以及它有多稳健(它不会遗漏大量实例)。
平均绝对误差是原始值与预测的值之差的平均值。平均绝对误差提供预测与实际输出相差多远的测量。但是,平均绝对误差不提供关于误差的方向的想法,即,模型是对数据的预测不足还是对数据的预测过度。
均方误差(MSE)与平均绝对误差非常相似,唯一的区别是MSE取原始值与预测的值之间的差的平方的平均值。MSE的优点是更容易计算梯度,而平均绝对误差要求复杂的线性编程工具来计算梯度。当系统取误差的平方时,较大误差的影响比较小误差的影响更明显,因此模型现在可以更多地关注较大的误差。
第三用户输入可以包括可维护性度量。可维护性度量可以被定义为可以维护系统的难易程度。它是系统的内部属性,无法被直接测量。对这个问题的解决方案是构建模型,以从软件产品测量(如内聚、耦合和复杂性)预测维护过程测量。
第三用户输入可以包括可重用性度量。可重用性度量可以被用于测量代码重用和可重用性。可重用性度量可以被分为六种类型:重用成本-收益模型、成熟度评估、重用的量、故障模式、可重用性和重用库度量。
在208处,功能性包括确定一个或多个库组件将被选择以用于生成机器学习模型以使机器学习应用原型化以符合性能要求。一个或多个库组件可以执行生产功能。库组件可以包括流水线136、工作流和微服务例程140、软件模块144和基础设施模块148中的至少一个,如上文针对图1所描述的。
库组件168可以包括识别每个库组件168的特征和功能的元数据。该技术可以至少部分地基于经由第二输入接收到的识别出的问题来确定要选择的一个或多个库组件168,以实现第三输入的性能度量。可以调整每个库组件的一个或多个变量以定制机器学习模型来实现对识别出的问题的解决方案。
在210处,功能可以包括识别存储在库中的一个或多个应用编程接口,其中应用编程接口链接一个或多个组件以形成机器学习应用。应用编程接口(API)可以被用于连接一个或多个库组件以生成机器学习模型。
在各种实施例中,生产功能可以包括负载平衡、故障转移高速缓存、安全性、测试能力、审计功能、可扩展性、预测的性能、训练模型、预测功率、维护、调试功能和可重用性中的至少一种。负载平衡是指在资源(计算单元)的集合上分发任务的集合的过程,其目的是使它们的整体处理更加高效。负载平衡技术可以优化每个任务的响应时间,从而避免计算节点不均匀地超载而其它计算节点处于空闲状态。用于维持高系统可用性的主要机制称为故障转移。在这种方法下,发生故障的主系统由备用系统代替;即,处理故障转移到备份系统。许多高可用性配置还提供用于灾难恢复的机制,这是在故障转移机制无法保持系统可用时恢复系统可用性。测试能力可以解决机器学习应用对期望的性能特点的测试的难易程度。审计功能可以解决机器学习应用可以对照内部控制进行评估的能力。预测能力可以指执行机器学习应用所要求的可用处理能力的百分比。
在已经生成机器学习模型之后,它可以使用训练数据来对期望的性能参数训练机器学习模型。训练可以为生成的模型调整一个或多个变量。
在212处,功能性可以包括将机器学习应用存储在存储器中。
在214处,功能性包括根据性能要求测试机器学习模型。在已经生成并训练机器学习模型之后,该技术可以由模型执行引擎使用看不见的测试数据来测试。测试数据可以是从训练模型中保留的训练数据的选定百分比。测试数据也可以是分离的数据的集合。监视引擎可以确定机器学习模型是否满足关键性能指标/服务质量度量。来自监视引擎的反馈可以被发送到模型组合引擎,以提供修订机器学习模型的推荐。
在216处,功能性包括根据机器学习模型的测试的结果基于机器学习模型编译机器学习应用。在机器学习模型已经过训练和测试之后,它可以被编译以输出独立的可执行代码。
应当认识到的是,图2中所示的特定步骤提供用于根据本公开的各种实施例生成机器学习应用的特定技术。根据替代实施例,也可以执行其它步骤序列。例如,本发明的替代实施例可以以不同的次序执行上述步骤。而且,图2中所示的各个步骤可以包括多个子步骤,这些子步骤可以根据各个步骤适当地以各种次序执行。此外,可以根据特定应用添加或移除附加的步骤。本领域的普通技术人员将认识到许多变化、修改和替代方案。
图3图示了用于从机器学习库基础设施生成机器学习应用的技术的过程300。替代实施例可以通过组合、分离或以其它方式改变图3中所示的方框中描述的功能性来改变功能。用于执行图3中所示的一个或多个方框的功能性的部件可以包括分布式系统的硬件和/或软件组件,包括图20、21和22中所示以及如下描述的计算设备、存储设备、网络基础设施和服务器。
在302处,功能性包括接收识别数据的位置的第一用户输入。在各种实施例中,用户可以使用接口来识别将用于生成机器学习模型的数据的位置。在各种实施例中,用户可以录入数据的网络位置(例如,互联网协议(IP)地址)。在各种实施例中,用户可以选择存储设备(例如,云存储设备)上的多个文件夹中的文件夹。在各种实施例中,用户可以选择便携式介质(例如,USB拇指驱动器、光盘,或固态或磁盘驱动器)上的文件。
在304处,功能性包括接收关于机器学习(ML)应用的期望的预测的第二用户输入。在各种实施例中,第二用户输入可以指定用户想要实现机器学习来解决的问题的类型。在各种实施例中,问题可以作为母语讲话或文本被录入(例如,通过使用聊天机器人)。该技术可以破译母语以理解机器学习模型的目标。机器学习可以解决的一些问题类型可以包括分类、回归、产品推荐、医疗诊断、财务分析、预测性维护、图像和声音识别、文本识别和表格数据分析。该技术将识别母语讲话中的一个或多个关键字,以推荐或选择特定的机器学习算法。
在306处,功能性包括以流(具有分块)或批次搜集数据。分块是个术语,指获取各个信息(块)片段并将它们分组为更大单元的过程。通过将每个片段分组成大的整体,您可以提高您可以记住的信息的量。模型合并引擎可以访问数据存储装置以搜集用于生成机器学习模型的数据。数据可以存储在本地或基于云的网络中。
在308处,功能性包括验证数据以检查数据特点(例如,数据形状是否在预期内)。中心是数据的中位数和/或均值。散布是数据的范围。并且,形状描述图的类型。描述形状的四种方式是它是否对称,它有多少个峰,它是向左还是向右偏斜,以及它是否均匀。如果形状不在预期范围内,那么模型合并引擎可以通知用户,并提示用户定位其它/附加数据。
在310处,功能性包括在流水线中的下游显现之前识别问题。模型合并引擎可以审查机器学习查询和数据,以确保识别出的数据具有用于查询或问题的特点。如果识别出问题,那么模型合并引擎可以提醒用户,并可能推荐改变设置或数据以解决识别出的问题。
在312处,功能性包括构建问题的特点(即,属性/特征)。模型合并引擎可以解释用户输入以识别用户想要使用机器学习解决的问题的类型。在识别出问题之后,可以将问题解构为解决那个问题所需的属性和特征。例如,如果用户期望确定设施处生产力最高的工人,那么系统将需要理解定义有生产力的工人的特征或属性。在一些实施例中,生产率可以通过每单位工作时间生产的单元的数量来确定。然后,这些属性可以包括有关工作小时数、生产的单元数和生产的有缺陷的单元数的数据。
在314处,功能性包括确定要预测的结果。该技术可以充分利用第二用户识别出的信息、数据和库组件,以确定机器学习应用可以预测的一个或多个输出度量。在各种实施例中,机器学习平台可以向用户呈现输出度量。在各种实施例中,用户可以从多个可用的输出度量中选择一个或多个输出度量。
在316处,功能性包括持续监视QoS/KPI的值以验证模型。在各种实施例中,监视引擎可以评估一个或多个QoS或KPI度量以确定模型是否满足性能规范。在各种实施例中,机器学习平台可以向用户通知被监视的值,并且如果QoS/KPI度量落在规定的阈值之外就提醒用户。
在318处,功能性包括用对照QoS/KPI判断的预测来训练机器学习模型。在各种实施例中,数据可以被用于训练机器学习模型。模型的变量可以基于基于QoS/KPI度量的输出值进行调整。
在320处,功能性包括提供控件以调整模型。可以通过聊天机器人、图形用户界面或一个或多个用户可选择的菜单来执行控件。控件允许用户通过调整用于所选择的算法的变量来调整模型的结果。在各种实施例中,当模型被调整时,控件显示结果值。
在322处,功能性包括根据需要自动调整模型。在各种实施例中,可以自动调整算法的值以实现期望的QoS/KPI结果。在各种实施例中,可以在定义的值范围内调整这些值。调整可以包括选择不同的流水线136、微服务例程140、软件模块144和基础设施模块148。
在324处,功能性包括将模型编译成机器学习应用。在各种实施例中,模型可以被编译成独立的可执行代码。在各种实施例中,可以编译模型以形成另一个程序的一部分。
在326处,功能性包括监视预测以评估结果是否在预期内。在各种实施例中,监视引擎可以向模型执行引擎提供反馈以向用户通知模型是否提供在预期范围内的结果。
在328处,功能性可选地提供模型的解读和解释以使模型驱动因素可以被用户理解。在各种实施例中,机器学习平台可以向用户提供模型的结果。结果可以详细解释各种驱动因素对模型结果的影响。以这种方式,用户可以就需要如何调整模型以达到期望结果做出明智的决定。
在330处,功能性包括在异常显现为不准确的预测之前捕获异常。在各种实施例中,监视引擎可以接收关于落在某些阈值之外的输出值的信息。
在332处,功能性包括自动或半自主地修复不准确的数据。在各种实施例中,监视引擎可以确定接收到的数据可能不准确。在各种实施例中,监视引擎可以通知用户数据可能不准确。监视引擎可以征求来自用户的输入以核实或校正可疑数据。在各种实施例中,监视引擎可以自动校正可疑数据。
应当认识到的是,图3中所示的特定步骤提供了用于根据本公开的各种实施例生成机器学习应用的特定技术。根据替代实施例,也可以执行其它步骤序列。例如,本发明的替代实施例可以以不同的次序执行上述步骤。而且,图3中所示的各个步骤可以包括多个子步骤,这些子步骤可以根据各个步骤适当地以各种顺序执行。此外,可以根据特定应用添加或移除附加步骤。本领域普通技术人员将认识到许多变化、修改和替代方案。
II.用于定义机器学习解决方案的聊天机器人
机器学习模型被训练用于生成代码集成请求的预测性结果。在一个方面,技术可以被用于定义机器学习解决方案,包括接收描述针对机器学习解决方案的问题的第一输入(例如,听觉、文本或GUI)。如图1中所示,模型组成引擎132可以将第一输入改写成一个或多个文本片段。模型组成引擎132可以至少部分地基于一个或多个文本片段来确定用户创建机器学习体系架构的意图。这些技术可以包括将一个或多个文本片段与多个模型的一个或多个机器学习框架关联。这些技术可以包括向用户呈现(例如,界面或音频)一个或多个机器学习模型。模型组成引擎132可以接收一个或多个机器学习模型(例如,分类、推荐、强化学习)的选择。模型组成引擎132可以接收几个其它用户输入,包括识别机器学习体系架构的数据源的第二输入和针对机器学习体系架构的一个或多个约束(例如,资源、位置、安全性或隐私)的第三输入。模型组成引擎132可以至少部分地基于所选择的模型、识别数据源的第二输入和识别一个或多个约束的第三输入来生成用于机器学习体系架构的多个代码。所生成的代码可以存储在存储器中。
可以使用智能助手(例如,聊天机器人)来使用户能够生成机器学习系统。技术可以被用于自动生成机器学习系统以辅助用户。在一些情况下,用户可能不是软件开发人员并且可能在机器学习技术或软件编程方面几乎没有经验或没有经验。在一些实施例中,用户可以与智能助理交互。交互可以是听觉的、文本的或通过图形用户界面。聊天机器人可以使用本体将自然语言输入翻译成机器学习解决方案的结构表示。以这种方式,用户无需成为数据科学家即可使用人工智能。
技术可以接收来自用户的多个输入。基于多个输入,这些技术可以确定用户建立机器学习体系架构的意图。在该技术中,智能助理可以分析输入并基于分析为用户推荐各种选项。这些技术可以生成用于机器学习体系架构的代码。代码可以被存储并重用于一个或多个不同的机器学习过程。所公开的技术简化了开发智能应用的过程。
智能助理可以使用聊天机器人。聊天机器人是经由听觉或文本方法进行交谈的软件模块,作为与用户交互的对话系统。聊天机器人可以使用复杂的自然语言处理系统,或者可以扫描输入中的关键字,然后从数据库中提取具有最匹配关键字或最相似措辞模式的回复。聊天机器人可以被用于建立可以回答问题的人工智能系统。以这种方式,人工智能可以被用于翻译以通俗语言方式提供给软件模块和硬件基础设施的信息。
用户(例如,应用开发人员)可以经由交谈界面(例如,聊天机器人)自动配置机器学习基础设施。用户可以定义如何使用机器学习预测(例如,“经由REST API”或“保存到文件”)。用户还可以定义数据的位置。用户还可以识别机器学习基础设施可以要求哪些附加服务(例如,监视、日志记录和提醒)。约束(例如,资源、位置、安全性、隐私)可以由用户识别。
在以下描述中,将描述各种实施例。出于解释的目的,阐述具体配置和细节以便提供对实施例的透彻理解。但是,对于本领域技术人员来说,实施例也可以在没有具体细节的情况下事件也是显而易见的。此外,为了不使所描述的实施例模糊,可以省略或简化众所周知的特征。
介绍
数字助理是人工智能驱动的接口,其帮助用户在自然语言交谈中完成各种任务。对于每个数字助理,客户可以组装一项或多项技能。技能(在本文也称为聊天机器人、机器人或技能机器人)是专注于特定类型任务的个体机器人,诸如跟踪库存、提交考勤卡、生成机器学习应用和创建费用报告。当最终用户与数字助理互动时,数字助理评估最终用户的输入并将交谈路由到适当的聊天机器人和从适当的聊天机器人传出。
意图允许聊天机器人理解用户希望聊天机器人做什么。意图由典型的用户请求和语句的排列组成,也称为话语(例如,生成分类器应用,从就业记录中确定最高效的员工等)。如本文所使用的,话语或消息可以指在与聊天机器人的交谈期间交换的词的集合(例如,一个或多个句子)。可以通过提供说明某个用户动作的名称(例如,生成分类器)并编译现实生活中用户语句或通常与触发动作关联的话语来创建意图。因为聊天机器人的认知得自这些意图,所以每个意图都可以从稳健的(一到两打话语)和变化的数据集创建,以便聊天机器人可以解读模棱两可的用户输入。丰富化的话语集使聊天机器人能够在接收到如“使用数据集A”或“将集合A识别为数据”之类的消息时理解用户想要什么-这些消息的含义相同,但表达方式不同。属于它们的意图和话语共同构成了聊天机器人的训练语料库。通过用语料库训练模型,用户基本上可以将那个模型转变为参考工具,以将最终用户输入解析为单个意图。用户可以通过多轮意图测试和意图训练来提高聊天机器人的认知的敏锐度。
但是,构建可以基于用户话语确定最终用户意图的聊天机器人是一项具有挑战性的任务,部分原因是自然语言的微妙性和歧义性以及输入空间的维度(例如,可能的用户话语)和输出空间的尺寸(意图的数量)。因此,可能需要对聊天机器人进行训练、监视、调试和再训练,以便提高聊天机器人的性能和聊天机器人的用户体验。在常规系统中,提供本质上是硬编码到设计系统中的默认训练模型的训练模型,用于训练和再训练数字助理或聊天机器人。例如,可以提供只需要小的训练语料库的第一模型,因此它可以使用匹配规则来开发实体、意图和训练语料库。当训练语料库成熟到测试揭示高度准确的意图解析的程度时,可以使用第二模型以通过使用基于词向量和其它基于文本的特征的机器学习进行训练来为聊天机器人的认知添加更深层次的维度。这些默认训练模型在所采用的训练方法中通常不灵活。因此,在没有更灵活的训练方法的情况下,可能难以识别聊天机器人低于预期性能的根本原因并确定如何改进聊天机器人。
分析系统可以与机器人系统集成以监视在最终用户和机器人系统之间的交谈期间发生的事件,聚合和分析收集的事件,并基于可以被用于提高机器人系统的性能的分析向用户提供信息,包括意图分类的性能。但是,(i)这些系统通常不识别低于期望性能的根本原因(代替地,它们提供诸如机器人A未能在时段n内识别意图x次之类的信息),并且这取决于用户从信息中识别出问题的根本原因,以及(ii)当机器人系统内采用数百或数千个机器人时,这些类型的分析系统会变得无效。
因而,需要不同的方法来解决这些问题。在各种实施例中,分析系统可以与机器人系统集成。分析系统可以搜集交谈日志和历史,并将与个体和/或聚合的最终用户与机器人系统的交谈相关的信息确定为路径,该路径包括表示交谈的不同阶段或状态的不同节点。例如,最终用户与机器人系统的交谈可以由示出从状态到状态的过渡的路径表示,其中每个状态可以由路径上的节点表示。可以为每个节点生成与机器人系统的用户交谈的统计信息。路径包括(i)对于给定时段通过对话流的特定于意图的路径流动的交谈的数量,(ii)每个状态之间维护的交谈的数量以及因为交谈由于值被设置(或未设置)而分支所采取的不同执行路径,或由于一些其它问题(如误动的定制组件)而陷入僵局,以及(iii)提供交谈最终成功或失败的洞察的最终状态。然后,分析工具可以使用为每条路径和节点生成的信息来重新训练负责意图/路径的机器人系统或个体机器人。
在一些实施例中,分析系统的事件收集器可以收集与和机器人系统的交谈集合关联的一个或多个事件的一个或多个属性。事件收集器可以可重新配置为选择性地收集期望事件的期望属性。一个或多个事件可以包括例如交谈事件、机器人状态事件、意图解析事件、实体解析事件、错误事件、超时事件或自定义事件中的至少一种。此后,分析系统的分析引擎可以使用由用户选择的一个或多个过滤准则基于由事件收集器收集的一个或多个事件的一个或多个属性从交谈集合中选择一个或多个交谈。一个或多个过滤准则可以包括例如以特定状态结束的交谈、从特定状态开始的交谈、已完成或未完成的交谈、与特定最终用户意图关联的交谈、来自特定通道或场所的交谈、在特定时间段期间发生的交谈等。对于所选择的一个或多个交谈,分析引擎可以计算交谈集合的统计信息、与特定最终用户意图关联的交谈的统计信息、完整交谈的统计信息、不完整交谈的统计信息,未为其确定最终用户意图的交谈的统计信息,或其任何组合。分析引擎可以基于计算出的统计信息生成用于改进机器人系统的选项。
在一些实施例中,分析引擎可以为所选择的一个或多个交谈生成聚合的路径图。聚合的路径图可以包括多个节点和多个节点之间的多个连接。多个节点中的每一个可以与机器人系统的相应状态对应。多个连接中的每一个可以表示从机器人系统的一种状态到机器人系统的另一种状态的过渡。多个节点可以包括起始节点和结束节点。在一些实施例中,聚合的路径图可以包括与每个相应连接关联的数字,其中该数字可以指示包括由相应连接表示的过渡的交谈的总数。
分析引擎可以将统计信息结合到聚合路径图中以确定附加信息,诸如对于给定时段有多少交谈流过对话流的特定于意图的路径、每个状态之间维持的交谈的数量,以及因为交谈由于值被设置(或未设置)而引起的分支所采取的不同执行路径,或由于一些其它问题(如误动的定制组件)而陷入僵局。可选地,可以使用统计信息和聚合的路径图来重新训练机器人系统以提高机器人系统的性能,诸如重新训练机器人系统的意图分类模型以更准确地确定用户意图。
在一些实施例中,图形用户界面(GUI)可以将与个体的和/或聚合的最终用户与机器人系统的交谈相关的信息显示为路径,该路径包括表示交谈的不同阶段或状态的不同节点。例如,最终用户与机器人系统的交谈可以由示出从状态到状态的过渡的路径表示,其中每个状态可以由路径上的节点表示。用户与机器人系统交谈的统计信息可以通过GUI生成并以图形方式显示。分析系统的路径可视化可以允许管理员或开发人员基于不同的准则过滤或选择与机器人系统的最终用户交谈组。分析系统还可以为机器人系统的管理员或开发人员提供选择和审查感兴趣的各个交谈的选项。可视化的路径信息可以允许机器人系统的管理员或开发人员可视地监视和分析最终用户如何与机器人系统交互以及机器人系统在交谈期间如何执行以识别机器人系统的表现不佳的元素和可能的改进。
如上所述,分析系统可以通过GUI提供关于在不同概括级别与机器人系统的最终用户交谈的信息,包括所有交谈、满足特定准则的交谈、与特定意图或最终状态关联的交谈,以及个体交谈。因此,分析系统可以允许机器人系统的管理员或开发人员识别与不完整或不成功的交谈关联的特定最终用户话语和意图,从而识别和改进机器人系统的表现不佳的元素。通过分析和改进机器人系统的性能,可以改进最终用户对机器人系统的体验。
机器人和分析系统
机器人(也称为技能、聊天机器人、聊天机器人或谈话机器人)是可以执行与最终用户的交谈的计算机程序。机器人一般可以通过使用自然语言消息的消息传递应用来响应自然语言消息(例如,问题或评论)。企业可以使用一个或多个机器人系统通过消息传递应用与最终用户进行通信。可以被称为通道的消息传递应用可以是最终用户已经安装并且熟悉的最终用户优选的消息传递应用。因此,最终用户无需下载和安装新应用即可与机器人系统聊天。例如,消息传递应用可以包括OTT消息传递通道(例如,Facebook Messenger、Facebook WhatsApp、微信、Line、Kik、Telegram、Talk、Skype、Slack或SMS)、虚拟私人助理(诸如Amazon Dot、Echo或Show、Google Home、Apple HomePod等)、移动和Web应用扩展,它们扩展了原生或混合/响应式移动应用或具有聊天功能的Web应用,或基于语音的输入(诸如设备或具有使用Siri、Cortana、Google Voice或其它语音输入进行交互的界面的应用)。
在一些示例中,机器人系统可以与统一资源标识符(URI)关联。URI可以使用字符串来识别机器人系统。URI可以被用作用于一个或多个消息传递应用系统的webhook。URI可以包括例如统一资源定位符(URL)或统一资源名称(URN)。机器人系统可以被设计为从消息传递应用系统接收消息(例如,超文本传输协议(HTTP)后调用消息)。HTTP后调用消息可以从消息传递应用系统定向到URI。在一些实施例中,该消息可以不同于HTTP后调用消息。例如,机器人系统可以从短消息服务(SMS)接收消息。虽然本文的讨论可以指机器人系统作为消息接收的通信,但是应当理解该消息可以是HTTP后调用消息、SMS消息或两个系统之间的任何其它类型的通信。
最终用户可以通过交谈交互(有时称为交谈用户界面(UI))与机器人系统交互,就像人之间的交互一样。在一些情况下,交互可以包括最终用户对机器人说“你好”,机器人用“嗨”回应,并询问最终用户它如何提供帮助。在一些情况下,交互也可以是与例如银行机器人的交易交互,诸如将资金从一个账户转移到另一个账户;与例如HR机器人的信息交互,诸如检查假期余额;或与例如零售机器人的互动,诸如讨论退货或寻求技术支持。
在一些实施例中,机器人系统可以智能地处置最终用户交互,而无需与机器人系统的管理员或开发人员交互。例如,最终用户可以向机器人系统发送一个或多个消息以实现期望的目标。消息可以包括某些内容,诸如文本、表情符号、音频、图像、视频或传达消息的其它方法。在一些实施例中,机器人系统可以将内容转换成标准化形式(例如,针对具有适当参数的企业服务的代表性状态转移(REST)调用)并生成自然语言响应。机器人系统还可以提示最终用户输入附加的输入参数或请求其它附加的信息。在一些实施例中,机器人系统还可以发起与终端用户的通信,而不是被动地响应最终用户的话语。本文描述了用于识别机器人系统的显式调用和确定被调用的机器人系统的输入的各种技术。在某些实施例中,由主机器人基于检测话语中的调用名称来执行显式调用分析。响应于调用名称的检测,可以细化话语以输入到与调用名称关联的技能机器人。
与机器人的交谈可以遵循包括多个状态的特定交谈流。流程可以基于输入定义接下来会发生什么。在一些实施例中,包括用户定义的状态(例如,最终用户意图)和在状态中或从状态到状态采取的动作的状态机可以被用于实现机器人系统。交谈可以基于最终用户的输入采取不同的路径,这会影响机器人为流程做出的决定。例如,在每个状态下,基于最终用户的输入或话语,机器人可以确定最终用户的意图,以确定下一步要采取的适当行动。如本文所使用的并且在话语的上下文中,术语“意图”是指提供话语的用户的意图。例如,用户可以旨在让机器人参与交谈以生成机器学习应用,以便用户的意图可以通过“构建机器学习应用”的话语来表示。用户意图可以指向用户希望聊天机器人代表用户执行的特定任务。因此,话语可以被表述为反映用户意图的问题、命令、请求等。意图可以包括最终用户想要实现的目标。
在聊天机器人的配置的上下文中,术语“意图”在本文中被用于指用于将用户的话语映射到聊天机器人可以执行的特定任务/动作或任务/动作类别的配置信息。为了区分话语的意图(即,用户意图)与聊天机器人的意图,后者在本文中有时被称为“机器人意图”。机器人意图可以包括与该意图关联的一组一个或多个话语。例如,用于生成机器学习应用的意图可以具有表达生成机器学习应用以解决问题的愿望的各种话语排列。这些关联的话语可以被用于训练聊天机器人的意图分类器,以使意图分类器能够随后确定来自用户的输入话语是否与机器学习应用意图匹配。机器人意图可以与一个或多个对话流关联,用于开始与用户的交谈并处于特定状态。例如,用于机器学习应用意图的第一个消息可以是“您要解决的问题是什么?”的问题。除了关联的话语之外,机器人意图还可以包括与该意图相关的命名实体。例如,机器学习应用意图可以包括用于执行生成机器学习应用的任务的变量或参数,例如,问题的类型、要使用的数据、性能特点、各种约束等。实体的值通常通过与用户交谈获得。
图4是用于生成机器学习应用的聊天机器人的分布式环境400的简化框图。分布式环境400包括使企业能够为其用户创建和部署数字助理的数字助理构建器平台(DABP)402。为了本公开的目的,“数字助理”是帮助数字助理的用户通过自然语言交谈完成各种任务的实体。数字助理可以仅使用软件(例如,数字助理是使用可由一个或多个处理器执行的程序、代码或指令实现的数字实体)、使用硬件或使用硬件和软件的组合来实现。数字助理可以实施或实现在各种物理系统或设备中,诸如计算机、电话、手表、电器、车辆等。数字助理有时也称为聊天机器人系统。DABP 402可以被用于创建一个或多个数字助理(或DA)406。DABP 402可以被多家企业用来为其用户创建数字助理。例如,如图4中所示,表示特定企业的用户404可以使用DABP 402为特定企业的用户创建和部署数字助理406。
一旦部署了数字助理406,用户408可以使用数字助理406经由与数字助理406的基于自然语言的交谈来执行各种任务。作为交谈的一部分,用户408可以提供一个或多个用户输入410并从数字助理406获得响应412。经由这些交谈,用户可以请求由数字助理406执行一项或多项任务,并且作为响应,数字助理406被配置为执行用户请求的任务并以对用户的适当响应来响应。
用户输入410是自然语言并且被称为话语。用户话语可以是文本形式(例如,当用户键入某事作为对数字助理406的输入时)或音频输入或讲话形式(例如,当用户说出某事作为对数字助理406的输入时)。话语通常使用用户408所说的语言。当用户输入410是讲话形式时,讲话输入被转换成那个特定语言的文本形式的话语,然后由数字助理406处理文本话语。各种讲话到文本处理技术可以被用于将讲话或音频输入转换成文本话语,然后由数字助理406处理。
由用户408输入或通过将讲话输入转换成文本形式生成的文本话语可以是文本片段、句子、多个句子等。数字助理406被配置为对文本话语应用自然语言理解(NLU)技术来理解用户输入的含义。作为话语的NLU处理的一部分,数字助理406被配置为执行处理以理解话语的含义,这涉及识别一个或多个意图和与话语对应的一个或多个实体。在理解话语的含义后,数字助理406可以响应于所理解的含义或意图来执行一个或多个动作或操作。
例如,用户输入410可以请求生成机器学习应用,例如,“我想要构建图像分类器”。数字助理406被配置为理解话语的含义并采取适当的动作,这些动作可以涉及用请求用户输入关于用户想要构建的分类器类型、数据源、各种性能度量和各种约束。由数字助理406提供的响应412也可以是自然语言的形式,这可以涉及由数字助理406执行的自然语言生成(NLG)处理。一旦数字助理406具有来自用户的必要信息,数字助理406就可以促使生成机器学习应用。数字助理406可以通过输出指示已经生成机器学习应用的信息来结束与用户的交谈。
在某些实施例中,由数字助理406作为输入接收的话语经过一系列处理步骤或处理步骤的流水线。这些步骤可以包括例如解析话语、理解话语的含义、细化和重新构成话语以形成更易理解的话语结构、确定响应于话语而要执行的动作、使得动作被执行,生成响应于用户话语而要输出给用户的响应,向用户输出响应等。
由数字助理(诸如数字助理406)执行的NLU处理可以包括各种NLP相关的处理,诸如句子解析(例如,标记化、词形还原、识别句子的词性标签、识别句子中的命名实体、生成依赖树以表示句子结构、将句子拆分为从句、分析各个从句、解析照应、执行分块等)。数字助理406可以使用NLP引擎和/或机器学习模型(例如,意图分类器)将最终用户话语映射到特定意图(例如,聊天机器人可以执行的特定任务/动作或任务/动作类别)。例如,基于机器学习的NLP引擎可以学习以理解和分类来自最终用户的自然语言交谈,并从交谈中提取必要的信息以便能够采取精确的动作,诸如执行交易或从后端记录系统查找数据。在某些实施例中,NLU处理或其部分由数字助理406本身执行。在一些其它实施例中,数字助理406可以使用其它资源来执行部分NLU处理。例如,可以通过使用解析器、词性标注器和/或命名实体识别器处理句子来识别句子的语法和结构。在一种实施方式中,对于英语语言,斯坦福自然语言处理(NLP)组提供的解析器、词性标注器和命名实体识别器被用于分析句子结构和语法。这些可以作为斯坦福CoreNLP工具包的一部分提供。
虽然本公开中提供的各种示例示出了英语语言的话语,但这仅作为示例。在某些实施例中,数字助理406还能够处置除英语以外的语言的话语。在某些实施例中,数字助理406提供子系统(例如,实现NLU功能性的组件),这些子系统被配置用于执行针对不同语言的处理。这些子系统可以被实现为可插入单元,可以使用来自NLU核服务器的服务调用进行调用。这使得NLU处理对每种语言都具有灵活性和可扩展性,包括允许不同的处理次序。可以为各种语言提供语言包,其中语言包可以注册可以从NLU核服务器提供服务的子系统的列表,如果需要,还可以利用所提供的通用子系统。
数字助理(诸如数字助理406)可以通过各种不同的渠道对其用户可用,诸如但不限于经由某些应用、经由社交媒体平台、经由各种消息传递服务和应用,以及其它应用或渠道。单个数字助理可以为其配置多个通道,以便它可以同时运行并由不同的服务访问。
数字助理包含一项或多项技能或与一项或多项技能关联。在某些实施例中,这些技能是单独的聊天机器人(称为技能机器人),被设计为与用户交互并履行特定类型的任务,诸如跟踪库存、提交考勤卡、创建费用报告、订购食物、检查银行账户、进行预约、购买小部件等。例如,对于图4中所描绘的实施例,数字助理406包括技能416-1、416-2等。出于本公开的目的,术语“技能”与术语“技能机器人”同义使用。
与数字助理关联的每个技能通过与用户的交谈帮助数字助理的用户完成任务,其中交谈可以包括由用户提供的文本或音频输入以及由技能机器人提供的响应的组合。这些响应可以是给用户的文本或音频消息的形式和/或使用呈现给用户以供用户选择的简单用户界面元素(例如,选择列表)。
存在可以将技能或技能机器人添加到数字助理的各种方式。在一些情况下,企业可以开发技能机器人,然后使用DABP 402将其添加到数字助理中。在其它情况下,可以使用DABP 402开发和创建技能机器人,然后将其添加到使用DABP 402创建的数字助理中。在还有其它情况下,DABP 402提供在线数字商店(称为“技能商店”),该商店提供针对广泛任务的多种技能。通过技能商店提供的技能可以暴露各种云服务。DABP 402的用户404可以经由DABP 402访问技能商店,选择期望的技能并将选择的量表添加到使用DABP 402创建的数字助理。来自技能商店的量表可以按原样或以修改后的形式添加到数字助理(例如,DABP 402的用户可以选择和克隆由技能商店提供的特定技能机器人、对所选择的技能机器人进行定制或修改,然后将修改后的技能机器人添加到使用DABP 402创建的数字助理中)。
在某些实施例中,使用DABP 402创建和部署的数字助理是使用主机器人/子(或子)机器人范例或体系架构来实现的。根据这个范例,数字助理被实现为与一个或多个作为技能机器人的子机器人交互的主机器人。例如,在图4中所描绘的实施例中,数字助理406包括主机器人414和作为主机器人414的子机器人的技能机器人416-1、416-2等。在某些实施例中,数字助理406本身充当主机器人。
根据主-子机器人体系架构实现的数字助理使数字助理的用户能够通过统一的用户接口与多种技能进行交互。当用户与数字助理406互动时,由主机器人414接收用户输入,然后处理用户输入以识别用户请求并基于该处理来确定用户请求任务是否可以由主机器人414本身处置,否则主机器人414选择适当的技能机器人416-1、2或3来处置用户请求并将交谈路由到所选择的技能机器人416-1、2或3。这使得用户408能够通过共同的单一接口与被配置为执行特定任务的几个技能机器人交谈并使用它们。例如,对于为企业开发的数字助理406,数字助理406的主机器人414可以与具有特定功能的技能机器人416-1、416-2等接口,诸如用于执行与客户关系管理(CRM)相关的功能的CRM机器人、用于执行与企业资源规划(ERP)相关的功能的ERP机器人、用于执行与人力资本管理(HCM)相关的功能的HCM机器人等。以这种方式,数字助理406的最终用户或消费者408只需要知道如何访问数字助理406。
在主机器人/子机器人基础设施中,主机器人被配置为知道技能机器人的列表。主机器人可以访问识别各种可用技能机器人的元数据,并且对于每个技能机器人,技能机器人的能力包括技能机器人可以执行的任务。在接收到话语形式的用户请求后,主机器人被配置为从多个可用技能机器人中识别或预测可以最好地服务或处置用户请求的特定技能机器人。然后,主机器人将话语(或话语的一部分)路由到那个特定技能机器人以进行进一步处置。因此,控制从主机器人流向技能机器人。主控机器人可以支持多个输入和输出通道。
虽然图4中的实施例示出了包括主机器人414和技能机器人416-1、416-2和416-3的数字助理406,但这并不旨在进行限制。数字助理可以包括提供数字助理的功能的各种其它组件(例如,其它系统和子系统)。这些系统和子系统可以仅以软件(例如,存储在计算机可读介质上并可由一个或多个处理器执行的代码、指令)、仅以硬件或以使用软件和硬件的组合的实施方式来实现。
DABP 402提供使利用DABP 402能够创建包括与数字助理关联的一个或多个技能机器人的数字助理的基础设施以及各种服务和特征。例如,可以通过克隆现有技能机器人、克隆现有技能机器人然后对技能机器人进行修改来创建技能机器人,或者可以使用DABP402提供的工具和服务从头开始创建。在某些实施例中,DABP 402提供技能商店或技能目录,提供用于执行各种任务的多个技能机器人。DABP 402的用户可以从技能商店克隆技能机器人并创建新的技能机器人。
DABP 402还使用户(例如,技能机器人设计者)能够从头开始创建技能机器人。在某些实施例中,在高层次上,创建技能机器人涉及以下步骤:
(1)为新技能机器人配置设置
(2)为技能机器人配置一个或多个意图
(3)为一个或多个意图配置实体
(4)训练技能机器人
(5)为技能机器人创建对话流
(6)为技能机器人添加定制组件
(7)测试和部署技能机器人
(1)为新技能机器人配置设置-技能机器人设计者可以为正在创建的技能机器人指定一个或多个调用名称。这些调用名称可以用在话语中,以明确识别和调用数字助理中的技能机器人。技能机器人设计者还可以为技能机器人指定示例话语。这些示例话语代表技能机器人的话语。当接收到用户输入时,数字助理的意图分析引擎将用户输入与这些示例话语进行比较,以确定是否要调用特定技能机器人。
(2)为技能机器人配置一个或多个意图-技能机器人设计者可以为正在创建的技能机器人配置一个或多个意图(也称为机器人意图)。这些意图识别技能机器人可以为数字助理的用户执行的任务。每个意图都被赋予名称。例如,对于可以被配置为生成机器学习模型的技能机器人,可以由技能机器人设计者为技能机器人指定意图。对于每个意图,技能机器人设计者指定示例话语的集合,这些话语代表并说明意图的含义并且通常与由那个意图执行的任务关联。因而,可以将典型用户请求和语句的排列指定为意图的示例话语。
(3)为技能机器人的一个或多个意图配置实体-在一些情况下,可能需要附加的上下文以使技能机器人能够正确响应用户请求。例如,可以存在用户输入话语在技能机器人中解析为相同意图的情况。可以为技能机器人配置的某些意图指定一个或多个实体。因此,实体被用于向意图本身添加上下文。实体有助于更全面地描述意图并使技能机器人能够完成用户请求。在某些实施例中,存在两种类型的实体:(a)由DABP 402提供的内置实体,以及(2)可以由技能机器人设计者指定的自定义实体。内置实体是可以用于各种机器人的通用实体。内置实体的示例包括但不限于与时间、日期、地址、数字、电子邮件地址、持续时间、重复时间段、货币、电话号码、URL等相关的实体。自定义实体被用于更定制的应用。
(4)训练技能机器人-技能机器人被配置为接收用户输入、解析或以其它方式处理接收到的输入,并识别或选择与接收到的用户输入相关的意图。为了做到这一点,必须训练技能机器人。在某些实施例中,基于为技能机器人配置的意图和与意图关联的示例话语(统称为训练数据)来训练技能机器人,使得技能机器人可以将用户输入解析为其配置的意图之一。在某些实施例中,技能机器人由使用训练数据训练的模型表示,并且允许技能机器人辨别用户说什么(或在一些情况下,试图说出)。DABP 402提供可以被技能机器人设计者用来训练技能机器人的各种不同的训练技术,包括各种基于机器学习的训练技术、基于规则的训练技术和/或它们的组合,如本文中关于到基于DAG的框架。在某些实施例中,训练数据的一部分(例如,80%)被用于训练技能机器人模型,而另一个部分(例如,剩余的20%)被用于测试或核实模型。一旦经过训练,技能机器人就可以被用来处置和响应用户话语。在某些情况下,用户的话语可能是一个只需要一个答案而不需要进一步交谈的问题。为了处置此类情况,可以为技能机器人配置Q&A(问答)意图。这使得技能机器人能够输出对用户请求的回复,而无需更新对话定义。Q&A意图的创建方式与常规意图类似。但是,Q&A意图的对话流与常规意图不同。
(5)为技能机器人创建对话流-为技能机器人指定的对话流描述了技能机器人在响应于接收到的用户输入而解决技能机器人的不同意图时如何反应。对话流定义技能机器人将采取的操作或动作(例如,技能机器人如何响应用户话语、技能机器人如何提示用户输入、技能机器人如何返回数据)。对话流就像技能机器人遵循的流程图。技能机器人设计者使用语言(诸如Markdown语言)指定对话流。在某些实施例中,称为OBotML的YAML的版本可以被用于指定用于技能机器人的对话流。用于技能机器人的对话流定义充当用于交谈本身的模型,让技能机器人设计者能够编排技能机器人与技能机器人服务的用户之间的交互。
在某些实施例中,对话流定义包含三个区段:
(a)上下文区段
(b)默认过渡区段
(c)状态区段
上下文区段-技能机器人设计者可以定义在上下文区段中的对话流中使用的变量。可以在上下文区段中命名的其它变量包括但不限于:用于错误处置的变量、用于内置或自定义实体的变量、使技能机器人能够识别和保持用户偏好的用户变量等。
默认过渡区段-技能机器人的过渡可以在对话流状态区段中或在默认过渡区段中定义。默认过渡区段中定义的过渡充当后备并在状态中没有定义适用的过渡或无法满足触发状态过渡所需的条件时被触发。默认过渡区段可以被用于定义允许技能机器人优雅地处置非预期用户动作的路由。
状态区段-对话流及其相关操作被定义为一系列临时状态,其管理对话流内的逻辑。对话流定义内的每个状态节点命名提供对话中那点处所需的功能性的组件。因此,状态是围绕组件构建的。状态包含特定于组件的特性并定义到组件执行之后触发的其它状态的过渡。
可以使用状态区段来处置特殊情况场景。例如,有时您可能希望为用户提供暂时离开他们从事的第一项技能的选项,以便在数字助理的第二项技能中做某事。例如,如果用户正在与购物技能进行交谈(例如,用户已经做出了一些购买选择),那么用户可能想要跳转到银行技能(例如,用户可能想要确保他/她有足够的钱购买),然后返回到购物技能以完成用户的订单。为了解决这个问题,可以将第一项技能中的操作配置为发起与同一数字助理中的第二项不同技能的交互,然后返回到原始流程。
(6)向技能机器人添加定制组件-如上所述,在对话流中为技能机器人指定的状态命名提供与状态对应的所需功能的组件。组件使技能机器人能够执行功能。在某些实施例中,DABP 402提供用于执行广泛功能的预配置的组件的集合。技能机器人设计者可以选择这些预配置组件中的一个或多个,并将它们与技能机器人对话流中的状态关联。技能机器人设计者还可以使用由DABP 402提供的工具创建自定义或新组件,并将定制组件与技能机器人对话流中的一个或多个状态关联。
(7)测试和部署技能机器人-DABP 402提供使技能机器人设计者能够测试正在开发的技能机器人的几个特征。然后可以部署技能机器人并将其包括在数字助理中。
虽然上面的描述描述了如何创建技能机器人,但类似的技术也可以被用于创建数字助理(或主机器人)。在主机器人或数字助理级别,可以为数字助理配置内置系统意图。这些内置系统意图被用于识别数字助理本身(即,主机器人)可以在不调用与数字助理关联的技能机器人的情况下处置的一般任务。
在主机器人或数字助理级别,当用户向数字助理输入短语或话语时,数字助理被配置为执行处理以确定如何路由交谈。数字助理使用路由模型来确定这一点,该模型可以是基于规则的、基于AI的或它们的组合。数字助理使用路由模型来确定与用户输入对应的交谈是否将被路由到特定技能进行处置,是由数字助理或主机器人根据内置系统意图自行处置,还是在当前对话流中作为不同的状态被处置。
在某些实施例中,作为这个处理的一部分,数字助理确定用户输入是否使用其调用名称来识别技能机器人。如果用户输入中存在调用名称,那么将其视为对与调用名称对应的技能机器人的显式调用。在这种场景中,数字助理可以将用户输入路由到被显式调用的技能机器人以进行进一步处置。如果没有特定调用,在某些实施例中,数字助理评估接收到的用户输入并计算系统意图和与数字助理关联的技能机器人的置信度分数。为技能机器人或系统意图计算的分数表示用户输入代表技能机器人被配置为执行的任务或代表系统意图的可能性有多大。关联计算出的置信度分数超过阈值(例如,置信度阈值路由参数)的任何系统意图或技能机器人都被选为进一步评估的候选。然后,数字助理从识别出的候选中选择特定的系统意图或技能机器人,以进一步处理用户输入。在某些实施例中,在一个或多个技能机器人被识别为候选之后,与那些候选技能关联的意图被评估(根据用于每项技能的意图模型)并且置信度分数被应用于每个意图。一般而言,任何具有超过阈值的置信度分数的意图都被视为候选流。如果选择了特定的技能机器人,那么用户输入被路由到那个技能机器人以进行进一步处理。如果选择了系统意图,那么根据所选择的系统意图执行一个或多个动作。
图5描绘了根据某些实施例的实现用于使用消息传递应用与最终用户通信的机器人系统的分布式系统500。系统500可以包括机器人系统520、一个或多个消息传递应用系统515以及一个或多个最终用户设备(诸如一个或多个移动设备510)。在一些示例中,消息传递应用可以安装在电子设备(例如,台式计算机、膝上型计算机、移动设备510等)上。
消息传递应用可以由消息传递平台(诸如消息传递应用系统515)来促进。移动设备510可以通过第一网络(例如,互联网)连接到消息传递应用系统515。消息传递应用系统515可以是由第三方提供的消息传递平台,诸如Facebook、腾讯、谷歌、微软等。消息传递应用系统515可以管理通过消息传递应用跨多个移动设备或其它最终用户设备发送和接收的内容。
机器人系统520(例如,在一个或多个服务器上实现)也可以通信地连接到消息传递应用系统515以发送和接收消息。消息传递应用系统515和机器人系统520之间的通信可以通过第二网络(例如,互联网)。第一网络和第二网络可以是同一个网络,或者它们可以是相似或完全不同的网络。消息传递应用系统515可以使用互联网将内容(例如,消息或来自消息的信息)从移动设备510路由到机器人系统520。在一些实施例中,内容(例如,机器人系统520的标识)的目的地可以作为名义收件人被包括在内容中。在一些实施例中,机器人系统520还可以被配置为与两个或更多个消息传递应用系统515通信。
如上面所讨论的,在最终用户之间或最终用户与机器人系统之间交换的内容可以包括例如文本、表情符号、音频、媒体(例如,图片、视频、链接),或任何其它传达信息的方法。
机器人系统520可以使用连接器530从消息传递应用系统515接收内容,该连接器530充当消息传递应用系统515和机器人系统520之间的接口。在一些实施例中,连接器530可以规一化来自消息传递应用系统515的内容,使得机器人系统520可以跨不同的消息传递应用系统分析内容。内容规一化处理可以包括将来自每种类型的消息传递应用的内容格式化为共用格式以供处理。在一些实施例中,机器人系统520可以包括一个或多个连接器,用于每个消息传递应用(诸如Messenger、即时消息传递软件、移动文本和语音消息传递通信服务、Messenger、Messenger和SKYPEmessenger、短消息服务(SMS))。在一些实施方式中,连接器530可以将内容路由到消息输入队列540。消息输入队列540可以包括按接收的次序存储内容的缓冲器(例如,先进先出(FIFO)缓冲器)。在一些实施例中,每个连接器530可以与一个或多个消息输入队列关联。
当消息处理器550变得可用时,消息输入队列540可以将内容发送到消息处理器550。在一些实施例中,消息处理器550可以从消息输入队列540中拉出内容。消息处理器550可以解析消息并确定所解析消息的意图,如下面详细描述的。在一些实施例中,消息处理器550可以包括自然语言处理器552和意图确定子系统554。自然语言处理器552可以解析消息并执行某些语义分析,诸如识别主语、谓语(例如,动作)和/或宾语。意图确定子系统554可以基于被解析的消息确定最终用户意图。如上所述,意图可以包括消息的目的。例如,消息的目的可以是命令生成机器学习模型。在一些实施例中,也可以由自然语言处理器552和/或意图确定子系统554从消息中提取与更具体地定义或阐明要采取的动作的意图关联的参数,这些参数可以被称为实体。
在消息处理器550基于内容确定最终用户意图之后,可以将确定的意图(以及与该意图关联的参数)发送到动作引擎560。动作引擎560可以被用于基于如上所述的意图(以及与该意图关联的参数)和状态机的当前状态(或上下文)来确定要执行的动作。例如,动作引擎260可以将某些出站内容作为响应发送到消息输出队列570和/或可以将命令发送到一些企业服务(诸如企业服务525)或从其检索信息。消息输出队列570可以将出站内容发送到连接器530。连接器530然后可以将出站内容发送到由动作引擎560指示的消息传递应用系统,其可以与消息传递应用系统515相同或不同。消息应用系统515然后可以将出站内容转发到移动设备510上的消息传递应用。
机器人系统520可以与一个或多个企业服务(例如,企业服务525)、用于存储和/或分析由机器人系统520接收的消息的一个或多个存储系统或用于向机器人系统520提供内容的内容系统通信。企业服务525可以与连接器530、动作引擎560或其任何组合中的一个或多个通信。企业服务525可以以类似于消息传递应用系统515的方式与连接器530通信。企业服务525可以将内容发送到连接器530以与一个或多个最终用户关联。企业服务525还可以将内容发送到连接器530以使机器人系统520执行与最终用户关联的动作。动作引擎560可以与企业服务525通信以从企业服务525获得信息和/或指示企业服务525采取由动作引擎560识别出的动作。
在一些实施例中,机器人系统520可以包括一个或多个定时器。定时器可以使动作引擎560在经过一定的时间量之后使用连接器530和消息传递应用系统515向最终用户发送内容。在一些实施例中,定时器可以向机器人系统520发送内容,类似于最终用户或企业服务525。例如,定时器可以向机器人系统520发送消息以进行分析,因为来自最终用户的消息将被分析。
如上所述,构建机器人系统(诸如可以基于最终用户话语确定最终用户意图的用户意图分类引擎)是一项具有挑战性的任务,部分原因是自然语言的微妙性和歧义性以及输入空间的维度(例如,可能的用户话语)和输出空间的尺寸(意图的数量)。因此,可能需要对聊天机器人进行训练、监视、调试和再训练,以便提高聊天机器人的性能和聊天机器人的用户体验。在许多情况下,可能难以更具体地识别机器人系统性能低于预期的根本原因并确定如何在不使用分析或优化工具的情况下改进机器人系统。
在一些情形下,机器人所有者、开发人员或管理员可能想要监视机器人的操作状态,并且了解机器人是如何被使用的以及最终用户在哪里放弃了机器人,以便改进机器人。例如,机器人所有者、开发人员或管理员可能想知道哪些机器人交谈是成功的,哪些不是,以便识别和诊断机器人系统的表现不佳的元素。
根据一些实施例,分析系统可以与机器人系统集成。分析系统可以监视最终用户和机器人系统之间交谈期间发生的事件,聚合和分析所收集的事件,并在图形用户界面上以图形方式提供有关交谈的不同概括级别的信息,诸如所有交谈、不同类别的交谈和个体交谈。例如,图形用户界面可以显示过滤或选择某些类型的交谈或个体交谈的选项,并以图形方式显示所选择的信息,例如,通过可视化交谈的路径。分析系统还可以提供用于改进机器人系统的建议、选项或其它信息。
图6描绘了根据某些实施例的集成系统600,其包括机器人系统(诸如机器人系统220)和用于监视、分析、可视化和改进机器人系统的性能的机器人分析系统。如图所示,机器人系统可以包括连接器630和多个机器人引擎,诸如对话引擎612、意图建模器614、实体解析器616和定制组件618。机器人系统还可以包括数据库640、管理应用编程接口(API)650、用户界面654和UI服务器652。机器人分析系统可以包括收集器655、丰富化引擎660、数据库670和REST服务器680。机器人分析系统还可以包括用户界面692和UI服务器690。机器人分析系统的收集器655可以收集在机器人系统处发生的事件605。来自机器人分析系统的反馈694可以通过用户界面692和用户界面654提供给机器人系统。
连接器630可以通过诸如通道620和622之类的一个或多个通道充当机器人系统与一个或多个最终用户之间的接口。每个通道可以是消息传递应用,诸如消息传递通道(诸如Facebook Messenger、Facebook WhatsApp、微信、Line、Kik、Telegram、Talk、Skype、Slack或SMS)、虚拟私人助理(诸如Amazon Dot、Echo或Show、Google Home、Apple HomePod等)、具有聊天能力的扩展原生或混合/响应式移动应用或Web应用的移动和Web应用扩展,或基于语音的输入(诸如具有使用Siri、Cortana、Google Voice或其它语音输入进行交互的接口的设备或应用)。在一些实施例中,连接器130可以归一化来自不同通道的内容,使得机器人系统可以分析跨不同消息传递应用系统的内容。内容归一化处理可以包括将来自每种类型的消息传递应用的内容格式化为通用格式以供处理。在一些实施例中,机器人系统可以包括用于每个通道的一个或多个连接器。
意图建模器614可以被用于确定与最终用户话语关联的最终用户意图。在一些实施例中,用于基于由机器人系统从最终用户接收的一个或多个消息来确定最终用户的意图的意图建模器314可以使用自然语言处理器来标记讲话的部分(动词、名词、形容词)、找出引理/词干(runs/running/ran->run)并标记实体(Texas->LOCATION)。在一些实施例中,意图建模器314可以规一化消息。例如,“Mary ran to Texas”可以变成“PERSON run toLOCATION”。意图建模器还可以包括检测最终用户消息内具有相同含义的词的逻辑。
在归一化之后,可以确定单词的出现可以表示特定意图的概率。在一些示例中,可以使用基本概率算术来组合概率,就好像它们是独立的一样。一些概率可以基于词的存在,或基于某些语言元素,如否定或人称代词的存在。
另一个级别的规则可以是模板规则,它是词的组合。在一些示例中,训练数据集中的每个句子一旦被归一化就可以自动变成规则。在此类示例中,训练数据集可以包括非常少量的短句子。模板规则可以返回1的概率。可以经由归纳过程从规则生成新规则。
如果特定词或词的集合(如动词)对意图很重要,那么可以通过使用这种词(及其同义词)的更多示例和针对其它意图的使用这种词的更少示例来操纵概率。
还可以提供示例以防止模型做出错误的断言。例如,特定的子短语或仅针对特定意图出现的词会造成错误的断言。类似地,可以阻止模型使用属于不同训练意图的相似句子来合成广泛的规则。
实体解析器616可以识别与最终用户意图关联的实体(例如,对象)。例如,除了由意图建模器614识别出的最终用户意图,诸如“订购披萨”,实体解析器616可以解析与该意图关联的实体,诸如披萨类型、配料等。
对话引擎612可以被用于处置最终用户与机器人系统之间的交谈。例如,对话引擎612可以基于由意图建模器614识别出的最终用户意图和与由实体解析器616识别出的最终用户意图关联的实体来响应最终用户话语。在一些实施例中,对话引擎612可以使用状态机,该状态机包括用户定义的状态(例如,最终用户意图)和在状态中或从状态到状态采取的动作来处置与最终用户的交谈。
定制组件618可以包括用于特定机器人系统的定制模块。例如,金融机器人可以包括可以被用于例如检查余额、转移资金或支付账单的定制组件。
数据库640可以被用于存储机器人系统的数据,诸如用于分类模型的数据、交谈的日志等。管理API 650可以由机器人系统的管理员或开发人员用于管理机器人系统,诸如重新训练分类模型、编辑意图或以其它方式修改机器人系统。管理员或开发人员可以使用用户界面654和UI服务器652来管理机器人系统。
在机器人系统运行时可以生成各种事件。可以基于机器人系统中包括的一个或多个指令来生成事件。例如,当机器人系统进入特定状态时可以生成事件,其中特定状态由机器人系统的管理员或开发人员定义。随着事件的生成,事件可以被机器人分析系统收集、存储和分析。当捕获事件时,还可以收集与事件关联的附加信息,其中附加信息可以指示在其中生成事件的当前上下文。
例如,交谈事件可以由对话引擎612生成。交谈事件可以包括由机器人系统从最终用户设备接收到的消息(称为msg_received)。msg_received可以包括以下参数或变量中的一个或多个:消息的内容、消息被机器人系统接收的时间、接收到的消息的语言、设备特性(例如,版本或名称)、操作系统特性(例如,版本或名称)、地理位置特性(例如,互联网协议地址、纬度、经度等)、标识信息(例如,用户ID、会话ID、机器人系统ID、租户ID等)、时间戳(例如,设备被创建、设备被发送、收集器派生的时间戳)、通道等。
交谈事件还可以包括由机器人系统发送到最终用户设备的消息(称为msg_sent)。msg_sent可以包括以下一个或多个:消息的内容(例如,消息的文本或HTML)、消息被机器人系统发送的时间、消息的语言、消息的创建者(例如,机器人系统或最终用户设备)、设备属性、操作系统特性、浏览器特性(例如,版本或名称)、应用特性(例如,版本或名称)、地理位置特性(例如,互联网协议地址、纬度、经度等)、标识信息(例如,用户ID、会话ID、机器人系统ID、租户ID等)、通道(例如,Facebook或Webhook)等。
对话引擎612还可以生成对话状态执行事件。如上所述,对话引擎612可以使用状态机来确定与最终用户的交谈的流。状态机可以包括状态的集合和状态之间的过渡的规则。对话引擎612可以为每个最终用户交谈执行状态机,并且可以为对话引擎612逐步通过以处理最终用户话语的每个状态产生对话状态执行事件。对话状态执行事件的属性可以包括例如状态名称、组件名称、下一个动作、实体匹配、意图匹配、变量、用户查询语句、响应语句、执行的时间、通信语言、设备特性、操作系统特性、地理位置特性、标识信息、时间戳、通道等。状态名称可以是当前被执行的状态名称或“错误状态”。组件名称可以是针对当前状态被执行的机器人组件的名称。下一个动作可以是要执行的下一个动作。实体匹配可以是当前消息中解析的实体。意图匹配可以是用分数值解析的意图。变量可以是当前状态的变量值。查询语句可以是由最终用户发送的消息。响应语句可以是发送给最终用户的消息。执行的时间可以是完成状态执行的时间戳。通信语言可以是正在被转换的消息的语言。设备和/或操作系统特性可以与和机器人系统交互的最终用户关联。浏览器和/或应用特性可以与和机器人系统交互的最终用户关联。地理位置特性可以是与机器人系统交互的最终用户的位置。
作为意图建模器614的执行的结果,可以发生意图解析事件。意图建模器614可以使用经训练的或以其它方式定义的分类模型来基于最终用户话语从意图的集合中识别最终用户意图。意图分类的结果可以被捕获为意图解析事件属性,其可以包括例如最终意图分类结果(例如,识别出的意图)和与意图集中的每个相应意图关联的置信度分数。
实体解析器616可以生成实体解析器事件。实体是与最终用户意图关联的对象。实体定义规则可以在创建机器人系统时确定。例如,除了解析最终用户意图,诸如“订购披萨”,机器人系统还可以使用实体解析器616来解析关联的实体,诸如披萨类型、配料等。实体解析器事件可以在实体解析时被捕获。与实体解析器事件关联的特性的示例可以包括实体名称、所应用的规则、搜索项、被解析的状态、查询语句、实体类型、执行的时间、通信语言、设备特性、操作系统特性、浏览器特性、应用特性、地理位置特性、标识信息、时间戳、通道等。实体名称可以是当前正在被解析的实体的名称。所应用的规则可以是例如在先、在后或聚合。搜索项可以是从、到、目的地、起源等。被解析的状态可以是为实体解析的对话状态。查询语句可以是包含实体值的消息。实体类型可以是系统或派生的。执行的时间可以是实体解析的时间戳。通信语言可以是正在被转换的消息的语言。设备和/或操作系统特性可以与和机器人系统交互的最终用户关联。浏览器和/或应用特性可以与和机器人系统交互的最终用户关联。地理位置特性可以是与机器人系统交互的最终用户的位置。
定制组件还可以生成事件,诸如预定义事件或自定义事件。预定义事件可以是在执行定制组件时捕获的特性。预定义事件的属性的示例可以包括:组件名称、事件名称、有效载荷、执行的时间、通信语言、设备特性、操作系统特性、浏览器特性、应用特性、地理位置特性、标识信息、时间戳、通道等。组件名称可以是当前正在执行的定制组件的名称。事件名称可以是invoked、invocation_failed、resolved、resolved_failed等。有效载荷可以是发生故障的情况下发生故障的原因、堆栈踪迹等。执行的时间可以是指示事件何时发生的时间戳。通信语言可以是正在被转换的消息的语言。设备和/或操作系统特性可以与和机器人系统交互的最终用户关联。浏览器和/或应用特性可以与和机器人系统交互的最终用户关联。地理位置特性可以是与机器人系统交互的最终用户的位置。
定制组件还可以在定制组件的执行期间发出自定义事件。自定义事件的属性的示例可以包括组件名称、事件名称、自定义有效载荷、执行的时间、通信语言、设备特性、操作系统特性、浏览器特性、应用特性、地理位置特性、标识信息、时间戳、通道等。组件名称可以是当前正在执行的定制组件的名称。事件名称可以是用户定义的事件名称(例如,Balance_Retrieved)。有效载荷可以是例如{“amount”:“USD 100”,“account”:“checking”}。执行的时间可以是指示事件何时发生的时间戳。通信语言可以是正在被转换的消息的语言。设备和/或操作系统特性可以与和机器人系统交互的最终用户关联。浏览器和/或应用特性可以与和机器人系统交互的最终用户关联。地理位置特性可以是与机器人系统交互的最终用户的位置。
错误事件和超时事件也可以由机器人系统在执行期间生成。错误事件可以在错误发生时生成。超时事件可以在当最终用户交谈处于不活动达一段时间时生成,该超时事件可以在通道处进行配置。
当机器人系统与最终用户进行交谈并生成对应事件时,机器人分析系统可以收集事件和附加信息。例如,收集器655可以收集事件和附加信息并将收集到的信息发送到队列。在一些实施例中,收集器655可以是可配置的并且可以被编程为根据期望收集上述不同的事件和/或事件属性。例如,收集器655可以被配置为捕获对话状态属性、意图解析属性、实体解析属性以及错误和超时属性。在一些实施例中,收集器655还可以被配置为收集关于由除机器人系统以外的系统生成的事件695的信息。
丰富化引擎660可以对收集的事件和其它信息执行验证和丰富化,并将它们写入数据库670。例如,基于收集到的IP地址,丰富化引擎660可以确定与IP地址关联的最终用户的位置。作为另一个示例,丰富化引擎660可以从收集的信息中提取某些特征,诸如确定由最终用户使用的web浏览器或通道。REST服务器680可以分析丰富化的事件和其它信息并且基于某些聚合度量672生成各种报告。报告可以通过UI服务器690在用户界面692上显示给机器人系统的所有者、管理员或开发人员。机器人系统的所有者、管理员或开发人员可以向机器人系统提供反馈694以改进机器人系统。
图7图示了用于智能助手生成机器学习解决方案的技术的过程700。替代实施例可以通过组合、分离或以其它方式改变图7中所示的方框中描述的功能来改变功能。用于执行图7中所示的一个或多个方框的功能的部件可以包括分布式系统的硬件和/或软件组件,包括图20、21和22所示以及如下所述的计算设备、存储设备、网络基础设施和服务器。
机器人(也称为聊天机器人、聊天机器人或谈话机器人)是可以模拟与人类用户的交谈的计算机程序。机器人一般可以通过使用自然语言消息的消息传递应用来响应自然语言消息(例如,问题或评论)。企业可以使用一个或多个机器人系统与最终用户通信。可以被称为通道的消息传递应用可以是最终用户已经安装并且熟悉的用户优选的消息传递应用。因此,最终用户无需下载和安装新应用即可与机器人系统聊天。例如,消息传递应用可以包括越顶(OTT)消息传递通道(诸如Facebook Messenger、Facebook WhatsApp、微信、Line、Kik、Telegram、Talk、Skype、Slack或SMS)、虚拟私人助理(诸如Amazon Dot、Echo或Show、Google Home、Apple HomePod等)、具有聊天功能的扩展原生或混合/响应式移动应用或Web应用的移动和Web应用扩展,或基于语音的输入(诸如具有使用Siri、Cortana、GoogleVoice或其它语音输入进行交互的接口的设备或应用)。
在一些示例中,机器人系统可以与统一资源标识符(URI)关联。URI可以使用字符串来识别机器人系统。URI可以被用作用于一个或多个消息传递应用系统的webhook。URI可以包括例如统一资源定位符(URL)或统一资源名称(URN)。机器人系统可以被设计为从消息传递应用系统接收消息(例如,超文本传输协议(HTTP)后调用消息)。HTTP后调用消息可以从消息传递应用系统定向到URI。在一些实施例中,该消息可以不同于HTTP后调用消息。例如,机器人系统可以从短消息服务(SMS)接收消息。虽然本文的讨论可以指机器人系统作为消息接收的通信,但是本领域普通技术人员将认识到该消息可以是HTTP后调用消息、SMS消息或两个系统之间的任何其它类型的通信。
最终用户可以通过交谈交互(有时称为交谈用户界面(UI))与机器人系统交互,就像人之间的交互一样。在一些情况下,交互可以包括最终用户对机器人说“你好”,机器人用“嗨”回应,并询问最终用户它如何提供帮助。在一些情况下,交互也可以是与例如银行机器人的交易交互,诸如将资金从一个账户转移到另一个账户;与例如HR机器人的信息交互,诸如检查假期余额;或与例如零售机器人的互动,诸如讨论退货或寻求技术支持。
在一些实施例中,机器人系统可以在不与机器人系统的管理员交互的情况下处置用户交互。例如,最终用户可以向机器人系统发送一个或多个消息以便实现期望的目标。消息可以包括某些内容,诸如文本、表情符号、音频、图像、视频或其它传达消息的方法。在一些实施例中,机器人系统可以将内容转换成标准化形式(例如,针对具有适当参数的企业服务的REST调用)并生成自然语言响应。机器人系统还可以提示最终用户输入附加的输入参数或请求其它附加的信息。在一些实施例中,机器人系统还可以发起与最终用户的通信。
与机器人的交谈可以经历包括多个状态的特定流程。流程可以基于输入定义接下来会发生什么。在一些实施例中包括用户定义的状态(例如,最终用户意图)和在状态中或从状态到状态采取的动作的状态机可以被用于实现机器人系统。交谈可以基于最终用户的输入采取不同的路径,这会影响机器人为流程做出的决定。例如,在每个状态下,基于最终用户的输入或话语,机器人可以确定最终用户的意图,以确定下一步要采取的适当行动。
意图可以包括最终用户想要实现的目标。意图将最终用户输入映射到后端系统应当为最终用户执行的操作。因此,基于最终用户用自然语言说出的短语,机器人会将用户话语映射到特定用例或作业,诸如订购披萨、获取账户余额、转账、购买、退货、等等。人类交谈在本质上通常是非线性的。最终用户可能常常在交谈期间被分支到不同的状态。例如,如果最终用户想要将资金从账户A转移到收款人,那么最终用户可以开始与机器人系统的交谈,例如,要求机器人向收款人支付晚餐费用。例如,机器人可以回复“从哪个账户?”。最终用户可以挑选支票账户,但随后可能意识到他或她不确定账户中的余额。因此,最终用户可以切换上下文以询问余额和最近的交易,等等。换句话说,最终用户可以触发流程和状态的改变,例如,从转账到检查余额,然后到最近的交易。在某个时间点,最终用户可以决定返回到最初的意图-向接收者付款。因此,机器人系统的一个任务是从自然语言话语中确定用户意图。
机器人可以使用自然语言处理(NLP)引擎和/或机器学习模型(例如,意图分类器)将用户话语映射到特定意图。例如,基于机器学习的NLP引擎可以学习以理解和分类来自最终用户的自然语言交谈,并从交谈中提取必要的信息以便能够采取精确的动作,诸如执行交易或从后端记录系统查找数据。
图7图示了用于使用聊天机器人生成机器学习应用的过程700的流程图。
在702处,该技术可以包括接收描述要通过经由如图1中所示的接口104生成机器学习解决方案来解决的问题的第一输入。可以经由听觉(例如,由用户说出并由系统的麦克风接收)、文本(例如,通过键盘录入)或与图形用户界面(GUI)交互来接收第一输入。例如,人力资源经理可能期望识别在过去几个审查周期中表现出改进的员工。在此,用户可以是人力资源经理,其可以有使用软件工具的经验,但没有编程机器学习工具或软件开发的经验。问题可以被定义为确定员工趋势。机器学习算法可以被用于分析员工记录,识别关于每个员工绩效的信息,并对历史审查进行比较分析以确定每个员工的绩效趋势。机器学习算法可以将每个员工的绩效趋势对照其他员工的绩效趋势进行比较。
在704处,该技术可以包括将输入改写成一个或多个文本片段。在以听觉方式接收第一输入的实施例中,该技术可以使用自然语言处理来将捕获的包含输入的音频剪辑改写成一个或多个文本片段。如果第一输入是作为文本的一个或多个词接收的,那么语言学模块可以确定文本的一个或多个词是否与自动机器学习系统兼容。可以使用翻译算法将一个或多个文本片段翻译成兼容的语言。一个或多个文本片段可以存储在系统的存储器中。
在706处,该技术可以包括至少部分地基于对一个或多个文本片段进行分类来确定第一输入的意图以创建机器学习体系架构。该技术可以将一个或多个文本片段与和创建机器学习模型关联的关键字进行比较。如果模型组成引擎132确定一个或多个关键字存在于一个或多个文本片段中,那么图1中所示的模型组成引擎132可以开始该过程。如果一个或多个关键字不存在于一个或多个文本片段中,那么该技术可以返回到开始并继续接收输入。
在708处,该技术可以包括将一个或多个文本片段与存储在如图1中所示的库组件168中的多个机器学习模型中的一个或多个机器学习模型相关。一个或多个机器学习模型中的每一个可以具有关联的元数据。可以将关联的元数据与一个或多个文本片段进行比较。以这种方式,模型组成引擎132将用户116的第一输入或查询映射到某些短语以确定用户116的意图。如果一个或多个文本片段与关联的元数据的相关性超过预定百分比,那么图1中所示的模型组成引擎132将机器学习模型识别为与一个或多个文本片段相关。模型组成引擎132可以向用户推荐相关机器学习模型。模型组成引擎132可以经由用户界面、聊天机器人或显示器呈现相关的模型。
在710处,该技术可以将相关的模型呈现给用户。可以经由智能助手(例如,聊天机器人)选择机器学习解决方案的类型。可能的机器学习解决方案可以包括但不限于分类模型、推荐器模型或强化学习模型。模型组成引擎132可以在界面104上显示相关的模型。模型组成引擎132可以经由智能助手(例如,聊天机器人)将相关的模型呈现给用户。在各种实施例中,模型组成引擎132可以向用户呈现多个模型以供选择。
在712处,该技术可以包括接收对机器学习模型的选择,其中该选择是从一个或多个机器学习模型中选择的。用户116可以通过界面104选择模型。接口116可以是图形用户界面,包括但不限于可以由用户116选择的复选框、下拉菜单或图形符号。接口116还可以从用户116接收音频信息,该信息将指示机器学习模型的选择。接口116可以接收模型的选择并将选择信息传送到模型组成引擎132。例如,用户116可以在二元或多类模型之间进行选择。用户116还可以选择基于树的模型或基于向量的机器类型模型。
在714处,该技术可以包括接收用于数据的位置的第二输入。第二输入可以包括用于生成机器学习模型的数据源的位置。数据可以本地存储在存储器中。数据也可以存储在一个或多个远程服务器(例如,云服务器)上。模型组成引擎132可以识别数据的潜在位置并且通过接口104将它们呈现给用户116。
在716处,该技术可以包括接收用于一个或多个约束的第三输入。约束可以包括但不限于系统资源、位置、安全性要求和隐私。模型组成引擎132可以至少部分地基于所选择的模型来识别一个或多个应用约束。模型组成引擎132可以通过接口104向用户116呈现潜在约束。
在各种实施例中,技术可以包括第四输入。第四输入可以包括机器学习模型所需的附加服务。附加服务可以包括监视、日志记录和提醒服务。模型组成引擎132可以至少部分地基于所选择的模型来识别一个或多个附加服务。模型组成引擎132可以通过接口104向用户116呈现潜在服务。
在718处,该技术可以包括为机器学习体系架构生成多个代码。模型组成引擎132可以使用所选择的模型和所选择的数据来生成经训练的模型。
本文公开的技术使用分层分类模型来创建和/或查询分层分类模型,以基于用户输入数据识别分类(例如,确定用户意图)。在某些实施例中,公开了一种用于查询分层分类模型以将输入与多个类中的类关联的计算机实现的方法。计算机实现的方法可以包括由分层分类模型接收输入,该分层分类模型包括多个分类模型并且具有包括多个层上的多个节点的树结构,并且通过与树结构中的节点集关联的分类模型的集合顺序地将输入分类为与多个类中的类关联。多个节点可以包括叶节点和非叶节点,其中非叶节点可以包括在多个层的第一层上的根节点。叶节点和非叶节点中的每一个可以与分层分类模型的多个分类模型中的相应分类模型关联。每个叶节点可以与至少两个但少于阈值数量的类关联。每个非叶节点可以具有两个子节点,其中每个子节点可以与多个类中的类的相应集合关联。类的两个集合中的类的数量之差可以是零或一,并且与非叶节点关联的分类模型可以被配置为将输入分类到类的两个集合中。节点的集合可以包括树结构的每一层上的一个节点并且可以形成从根节点到叶节点的路径。节点的集合中除根节点以外的每个节点可以是树结构的紧邻上层上的节点的子节点。
在一些实施例中,将输入分类为与多个类中的类关联可以包括通过与根节点关联的二元分类模型将输入分类为属于与根节点的第一子节点关联的类,其中第一子节点可以在树结构的第二层上。在一些实施例中,将输入分类为属于与根节点的第一子节点关联的类可以包括:通过二元分类模型确定指示输入属于与根节点的第一子节点关联的类的可能性的第一值;通过二元分类模型确定指示输入属于与根节点的第二子节点关联的类的可能性的第二值;并且基于确定第一值大于第二值或基于确定第一值大于阈值,将输入分类为属于与根节点的第一子节点关联的类。在一些实施例中,将输入分类为与多个类中的类关联还可以包括通过与第二层上的第一子节点关联的第二二元分类模型将输入分类为属于与第一子节点的子节点关联的类,其中第一子节点的子节点可以在树结构的第三层上。在一些实施例中,第二二元分类模型可以包括支持向量机(SVM)分类器、逻辑回归分类器、朴素贝叶斯分类器、决策树分类器、最近邻分类器或神经网络分类器。
在一些实施例中,将输入分类为与多个类中的类关联可以包括通过与节点的集合中的叶节点关联的多类分类模型将输入分类为与类关联,其中多类分类模型可以被配置为区分与两个或更多个个体类关联的输入。在一些实施例中,多类分类模型可以包括多类支持向量机(SVM)分类器、K-最近邻分类器或神经网络分类器。
在一些实施例中,从根节点到相应叶节点的树结构的每条路径可以包括相同数量的节点。在一些实施例中,阈值数量可以是6或更少。多个类可以包括20个或更多类。在一些实施例中,输入可以与对聊天机器人的用户话语对应,并且多个类可以与和用户话语关联的用户意图对应。
在某些实施例中,非暂态计算机可读介质可以存储可由一个或多个处理器执行的多个指令。当由一个或多个处理器执行时,多个指令可以使一个或多个处理器接收通过分层分类模型的输入,该分层分类模型被配置为将输入与多个类中的类关联并且包括多个分类模型。分层分类模型可以具有包括多层上的多个节点的树结构。多个节点可以包括叶节点和非叶节点,其中非叶节点可以包括在多个层的第一层上的根节点。叶节点和非叶节点中的每一个可以与分层分类模型的多个分类模型中的相应分类模型关联。每个叶节点可以与至少两个但少于阈值数量的类关联。每个非叶节点可以具有两个子节点,其中每个子节点可以与多个类中的类的相应集合关联。类的两个集合中的类的数量之差可以是零或一,并且与非叶节点关联的分类模型可以被配置为将输入分类到类的两个集合中。多个指令还可以使一个或多个处理器通过与树结构中的节点的集合关联的分类模型的集合顺序地将输入分类为与多个类中的类关联。节点的集合可以包括树结构的每一层上的一个节点并且可以形成从根节点到叶节点的路径。节点的集合中除根节点以外的每个节点可以是树结构的紧邻上层上的节点的子节点。
在某些实施例中,系统可以包括一个或多个处理器和耦合到一个或多个处理器并存储指令的存储器。指令在由一个或多个处理器执行时可以使系统通过分层分类模型接收输入,该分层分类模型被配置为将输入与多个类中的类关联并且包括多个分类模型。分层分类模型可以具有包括多层上的多个节点的树结构。多个节点可以包括叶节点和非叶节点,其中非叶节点可以包括在多个层的第一层上的根节点。叶节点和非叶节点中的每一个可以与分层分类模型的多个分类模型中的相应分类模型关联。每个叶节点可以与至少两个但少于阈值数量的类关联。每个非叶节点可以具有两个子节点,其中每个子节点可以与多个类中的类的相应集合关联。类的两个集合中的类的数量之差可以是零或一,并且与非叶节点关联的分类模型可以被配置为将输入分类到类的两个集合中。指令还可以使一个或多个处理器通过与树结构中的节点的集合关联的分类模型的集合顺序地将输入分类为与多个类中的类关联。节点的集合可以包括树结构的每一层上的一个节点并且可以形成从根节点到叶节点的路径。节点的集合中除根节点以外的每个节点可以是树结构的紧邻上层上的节点的子节点。
在720处,该技术可以包括将多个代码保存到存储器。多个代码可以保存在计算系统的存储器中或远程服务器(例如,云服务器)的存储器中。多个代码可以是可执行代码。多个代码可以被配置为结合到一个或多个应用中。
在各种实施例中,用户116可以选择如何接收解决方案。解决方案可以经由接口104接收。解决方案可以经由智能助手(例如,聊天机器人)接收。可以通过扬声器传达解决方案。智能助手还可以建议多个预定义的环境来在其中呈现信息。还可以为聊天机器人提供附加的环境。
在各种实施例中,智能助理可以分析一个或多个选择的约束以基于优化一个或多个选择的约束为机器学习体系架构生成第二多个代码。模型执行引擎108可以向用户显示由第二多个代码生成的优化解决方案。在各种实施例中,用户可以识别测试数据以确定机器学习模型的输出。在部署之前,智能助手可以向用户展示满足约束的最优解决方案。
模型组成引擎132可以在机器学习框架的开发期间被测试。例如,如果我们正在创建模型来测试工人的生产率,那么模型组合引擎132可以查看员工记录数据,构建机器学习模型以优化生产率,应用样本数据集,并向用户116提供答案。这个答案可以与用户对最有生产力的用户的看法进行比较,以帮助验证模型。聊天机器人还可以询问用户116是否期望关于最有生产力的工人的季度报告。
在一些实施例中,最终用户可以控制开发。如果使用简单的界面(例如下拉菜单),那么用户可以与聊天机器人交互以改变下拉列表的默认视图。聊天机器人可以在下拉列表中询问期望什么。聊天机器人可以基于用户偏好修改下拉列表。在某些实施例中,最终用户可以与模型组成引擎132交互。以那种方式,最终用户可以与人工智能系统进行定制交互。
在一些实施例中,聊天机器人将获得用户创建新机器学习解决方案或修改现有机器学习解决方案的初始意图。
模型组成引擎132可以采用许多默认设置。即使所有设置都不是由用户116指定的,默认设置也有助于人工辅助建立机器学习体系架构。例如,用户116可以不指定应当将训练模型存储在何处或用于训练模型的数据源。在各种实施例中,模型组成引擎132可以在创建训练模型时使用这些默认设置。在各种实施例中,智能助理可以检测到用户116在生成模型的过程中没有指定设置。智能助理可以向用户116询问设置或向用户116推荐设置。
在各种实施例中,模型组成引擎132跟踪用户对假设和默认设置的显式输入。模型组成引擎132可以使用这些显式输入来创建新的机器学习模型或过程。
在各种实施例中,计算机实现的方法可以包括一种或多种服务,包括用于机器学习体系架构的监视、记录和提醒。
在各种实施例中,计算机实现的方法可以包括接收识别机器学习解决方案如何呈现的第四输入。
在各种实施例中,计算机实现的方法可以包括分析一个或多个约束以至少部分地基于优化一个或多个约束来生成用于机器学习体系架构的第二多个代码。该方法还可以包括生成优化的解决方案。该方法可以包括显示优化的解决方案。
在各种实施例中,计算机实现的方法可以包括经由智能助理接口部署机器学习体系架构。
在各种实施例中,第一输入可以包括听觉输入、文本输入和图形用户界面输入中的至少一种。
在各种实施例中,一个或多个机器学习模型可以包括分类器模型、推荐器模型和强化学习模型中的至少一种。
在各种实施例中,一个或多个约束可以包括资源、位置、安全性和隐私中的至少一种。
应当认识到的是,图7中所示的特定步骤提供了用于根据本公开的各种实施例生成机器学习应用的特定技术。根据替代实施例,也可以执行其它步骤序列。例如,本发明的替代实施例可以以不同的次序执行上述步骤。而且,图7中所示的各个步骤可以包括多个子步骤,这些子步骤可以根据各个步骤适当地以各种次序执行。此外,可以根据特定应用添加或移除附加的步骤。本领域的普通技术人员将认识到许多变化、修改和替代方案。
III.给予任何新客户端的给定产品的自动化定制和部署
一旦指定了解决针对特定实例化的核心问题的核心机器学习产品,它就与机器学习模型相匹配。机器学习模型是从库组件168指定的,库组件168包括指定各种微服务例程140、软件模块144和/或基础设施模块148的流水线136。库组件168的功能区域在每个实例化的基础上进行定制,以适应唯一客户端的数据、QoS、KPI和其它要求,例如:用于库组件168的特征的自动适配、机器学习模型中的自动偏差消除、自动化模型训练以实现QoS和KPI,以及自动化微服务例行部署配置。
各种公开的技术允许大部分传统开发过程的自动化。自动化可以通过框架大规模完成,以针对特定情况实例化机器学习模型的实例。即使在机器学习模型被编译到机器学习应用中之后,被监视的异常也会在它们显现出不良预测之前被捕获。这可以是用于整个机器学习应用的各种QoS或KPI值,或者是用于各种库组件的中间结果。
IV.预测的流水线(包括模型)的安全序列化
持久的机器学习模型通常可以用可执行代码(例如,Pickle)来实现。此类可执行代码可以容易受到安全漏洞(诸如恶意代码注入)的影响。如果存储受到损害并且不良代理可以通过修改各种库组件168来篡改序列化机器学习模型,那么会存在一个问题。
在各种实施例中,库组件168可以在被存储时和/或对于序列化的机器学习模型的流水线136的每个实例进行加密签署。每个库组件168可以具有用于每个组件实例的唯一键或者对于机器学习模型的实例是共享的。私钥可以存储在密钥存储装置172中与库组件168分开的安全位置。可以认证对安全位置的访问并进行授权检查。加密和/或单向散列函数可以被用于检测对代码的篡改。可以针对每个库组件168以及可选地机器学习模型本身来使用远程存储的密钥进行解密/加密。以这种方式,恶意代码不进入库组件168,也不会将库组件168集成到机器学习模型或编译的机器学习应用中。流水线或工作流中的任何种类的Python模型(等)和步骤都可以被签署或加密。一旦为可以加密或签署的给定实例定制了库组件168或机器学习模型。未定制的库组件也可以被签署或加密,因此黑客不会感染多个实例化。
图8图示了用于对预测的流水线(包括模型)进行安全序列化的技术的过程800。替代实施例可以通过组合、分离或以其它方式改变图8中所示的方框中描述的功能来改变功能。用于执行图8中所示的一个或多个方框的功能的部件可以包括分布式系统的硬件和/或软件组件,包括图20、21和22中所示以及如下所述的计算设备、存储设备、网络基础设施和服务器。
在802处,功能性可以包括接收库组件。
在804处,功能性可以包括为一个或多个库组件生成唯一密钥对。
在806处,功能性可以包括远程存储密钥。密钥存储装置可以与一个或多个库组件分开。
在808处,功能性可以包括签署/加密和存储库组件。
在810处,功能性可以包括一旦被请求就用远程密钥认证库组件。
在812处,功能性可以包括在机器学习模型中使用库组件。
在814处,功能性可以包括为机器学习模型生成唯一密钥。
在816处,功能性可以包括远程存储模型密钥。
在818处,功能性可以包括用模型密钥认证与机器学习模型的所有交互。
在820处,功能性可以包括拒绝认证失败的任何组件或模型。
应当认识到的是,图8中所示的特定步骤提供用于根据本公开的各种实施例生成机器学习应用的特定技术。根据替代实施例,也可以执行其它步骤序列。例如,本发明的替代实施例可以以不同的次序执行上述步骤。而且,图8中所示的各个步骤可以包括多个子步骤,这些子步骤可以根据各个步骤适当地以各种次序执行。此外,可以根据特定应用添加或移除附加的步骤。本领域的普通技术人员将认识到许多变化、修改和替代方案。
V.自动化按需库检查(JAVA/PYTHON/GO,具有所有依赖性)
本文描述的各种实施例涉及用于代码集成请求的自动化和/或按需分析和预测。例如,在用于软件项目或组件的源代码的开发、维护或修改期间,软件开发人员可以将各种外部代码库集成到源代码中。例如,此类外部代码库可以包括由第三方开源提供商开发和分发的开源软件。某些开源库和其它外部代码库可以具有关联的许可,希望将来自外部代码库的任何代码集成到他们自己的专有软件项目中的软件开发人员必须同意并遵守这些许可。与某些库关联的软件许可(例如,自由和开源软件(FOSS)许可)可以与其它软件库的相应许可一致并兼容,或者不一致和/或不兼容。此外,某些库和其它外部代码库可以具有已知的安全漏洞和/或成本考虑,这可以使这些库或多或少期望集成到软件项目中。此外,开源库和其它外部代码库本身可以包括对其它库或代码库的依赖性,这些库或代码库可以具有单独的许可、成本、安全性问题以及其它依赖性。
由于将外部库和代码库集成到软件项目中的潜在风险、问题和影响,组织可以包括软件体系架构授权系统来分析代码集成请求,并基于一个或多个潜在的代码集成问题(包括许可合规性或兼容性、安全漏洞、成本、进一步的软件依赖性、软件项目的新近性和优先级、安全补丁的可用性以及更安全的替代库的存在)来批准或拒绝此类代码集成请求。此类软件体系架构授权系统可以使用完全自动化的过程、完全手动的过程或半自动化和半手动的过程来执行对集成软件库或任何外部代码库的请求的分析和批准。许多此类授权系统对于处理来自开发软件项目以集成软件库或外部代码的客户的请求时涉及大量时间延迟,并且此类系统可能不提供替代软件库的任何解释或建议。
因而,本文描述了用于执行自动化和/或代码集成请求的按需分析和预测的各种技术(例如,方法、计算设备和系统、存储程序、代码或可由一个或多个处理器执行的指令的非暂态计算机可读存储介质等)。在某些实施例中,代码集成请求预测系统可以被实现并用于分析源代码并预测将外部代码库(例如,开源库)集成到软件项目中的请求的结果。在一些实施方式中,代码集成请求预测系统可以被实现为软件开发环境内的实时静态源代码分析插件。如下文更详细描述的,此类系统可以提供对潜在代码集成请求的结果的预测,包括特定结果(例如,批准或拒绝软件库的使用和集成)、对应的置信度、预测性结果的原因和用于替代库的建议。附加地或可替代地,代码集成请求预测系统可以被实现为单独的独立系统,该系统可以在代码开发或维护期间实时审查和分析源代码,或者经由源代码爬取和分析过程。例如,源代码爬取器可以被用于检测先前编写的源代码中集成的外部代码库(例如,经由对已知软件库的引用或代码注释)的存在,并且可以由软件体系架构授权系统对外部代码库是否将被允许或应当被允许集成到软件项目中执行分析和预测。
如上所述,可以实现本文描述的某些技术来预测软件代码集成请求的结果。在一些实施例中,模型执行引擎(例如,在代码集成请求预测服务器内或软件开发环境内的插件内)可以接收与将外部代码库集成到源代码项目或组件中的请求对应的输入数据。这种输入数据可以识别与源代码项目和组件关联的一个或多个外部代码库(例如,开源软件功能、库等),包括要集成的外部代码库和/或以前已集成到同一项目或组件中的附加的外部代码库。此外,用于代码集成请求的输入数据可以包括源代码项目或组件的一个或多个特点,诸如源代码组件的关联的产品或项目、关联的开发人员或组织、集成外部代码库的目的或要在外部代码库中被充分利用的功能性等。然后,模型执行引擎可以访问使用历史软件代码集成请求训练的一个或多个机器学习(例如,基于人工智能的)模型。使用(一个或多个)经训练的机器学习模型,模型执行引擎可以确定将外部代码集成到源代码项目/组件中的请求的预测结果(例如,通过软件体系架构授权系统)。在确定代码集成请求的预测的输出之后,可以经由接口将预测的输出提供给例如软件开发环境内的开发人员。在一些实施例中,如果代码集成请求的预测的输出是组织的软件体系架构授权系统可能拒绝代码集成请求,那么可以生成附加信息并将其提供给开发人员/用户,诸如导致拒绝代码集成请求和/或可以支持类似功能的替代代码库的建议。
因此,本文描述的各种技术可以在实时软件开发、软件维护以及软件源代码分析和审查的上下文中提供显著的技术优势。具体的技术优势可以包括支持实时扫描源代码以检测来自外部源的代码集成,改进代码扫描以识别潜在的安全漏洞和许可问题,或者针对开发中的代码或者针对以前部署的遗留代码。
本公开的各方面提供了用于生成和使用机器学习模型来预测代码集成请求的结果的各种技术(例如,方法、系统、设备、存储用于执行计算功能的计算机可执行指令的计算机可读介质等)。如下文更详细讨论的,机器学习模型可以基于之前提交给软件体系架构授权系统并由其处理的代码集成请求来生成和训练。基于所使用的机器学习和基于人工智能的技术,可以训练一个或多个模型,这些模型可以是特定于开发人员的、特定于项目的和特定于组织的,这意味着经训练的模型可以输出不同的结果预测、置信度水平、原因和建议,这取决于当前的开发人员、项目和组织。机器学习模型还可以基于接收到的与先前代码集成请求相关的特定输入进行训练(例如,要集成的软件库、目标源代码模块、代码集成请求的原因和/或要在库中使用的功能性等)。然后,在一个或多个机器学习模型的生成和训练之后,此类模型可以被用于预测潜在代码集成请求的结果(例如,批准或拒绝授权)。此类模型还可以被用于自主和独立地识别与预测关联的原因(例如,安全漏洞、许可不兼容等),和/或代替地建议可以集成的替代软件库以提供期望的功能性。
现在参考图9A和9B,示出了由软件开发环境生成的用户界面屏幕的两个示例。参考图9A,软件开发环境的用户界面900包括第一窗口,该第一窗口包含软件开发人员用户当前正在查看、编写或更新的源代码块910a。在开发过程期间,用户可能期望集成开源软件库或其它外部代码库。与组织内部开发的专有软件不同,外部代码库可以指由第三方提供商开发和/或分发的任何软件。因此,外部代码库可以包括开源软件库内的软件功能或模块,以及由其它第三方软件分销商提供的其它非开源软件。
在这个示例中,软件开发人员可以选择软件库导入组件920来浏览并选择一个或多个开源库以集成在当前软件项目900内。例如,用户界面按钮920可以调用可用开源库的列表,开发人员可以从中选择以结合到当前软件项目中。在此类示例中,用户可以选择库、查看并导入(例如,复制、链接或引用等)外部软件库内的一个或多个代码块或函数,从而将外部代码库集成到当前软件项目中。因此,如图9B中所示,更新后的源代码项目900包括集成到软件项目中的开源代码库910b。应当注意的是,将开源代码库910b插入图9B中仅仅是说明性的。在其它示例中,外部代码库(例如,开源库)的集成可以采用许多不同形式,包括直接复制(例如,剪切和粘贴)来自开源库的源代码的注释部分,或链接到开源库并调用一个或多个函数,等等。此外,虽然在这个示例中示出了用户界面组件920以允许开发人员浏览并从可用的开源库列表中进行选择,但应当理解的是,组件920不需要包括在其它实施例中,并且开发人员可以使用任何其它可用技术来将基于外部代码的代码集成到软件项目900中。
另外,图9A和9B中所示的示例描绘了由开发人员实时开发的软件源代码项目。如下面所讨论的,当开发人员在实时软件开发期间使用经训练的模型来预测代码集成请求的结果时,可以具有特定的技术优势。此类技术优势可以包括对潜在安全漏洞、许可冲突和实时代码优化等的实时扫描和分析。因此,在此类实施例中,下面描述的代码集成预测服务器910的一些或全部组件可以经由软件开发环境920中的插件组件实现。可替代地,代码集成预测服务器910的组件可以被实现为独立服务,开发环境920可以响应于软件开发过程期间的用户动作而实时访问该独立服务。但是,在其它实施例中,用于预测代码集成请求的结果的经训练的模型不需要在实时软件开发期间使用,而是可以被用于分析先前编写的源代码。例如,本文描述的一个或多个经训练的模型可以与源代码爬取工具或其它软件分析工具一起使用,以识别在软件项目或组件内使用哪些开源库(或其它外部代码库)。例如,源代码爬取工具可以将源代码内的一个或多个评论识别为与已知开源库关联的指定评论匹配。在其它示例中,可以分析编译和/或链接的软件组件,和/或可以分析组件的执行以检测代码使用了哪些开源库。
现在参考图10,示出了分布式计算环境1000的示例,该分布式计算环境1000包括代码集成请求预测服务器1010,该服务器1010可以被用于接收和处理输入数据、生成和使用机器学习或人工智能模型以生成预测代码集成请求的输出。如这个示例中所示,代码集成请求预测服务器(或预测服务器)1010可以通过一个或多个通信网络1040与各种客户端设备1050、软件开发环境1020和其它各种系统通信,以生成和训练机器学习模型以及使用经训练的模型来预测代码集成请求结果。如这个示例中所示,预测服务器1010可以被实现为一个或多个独立的计算机服务器、系统或服务,其被配置为接收来自软件开发环境1020的请求。在其它实施例中,预测服务器1010可以被实现为软件开发环境1020内的插件组件。此外,虽然这个示例示出客户端设备和系统1050经由开发环境1020与预测服务器1010间接交互,但在其它情况下,客户端设备1050可以与预测服务器1010直接交互以生成和训练模型、执行模型以进行关于代码集成请求的预测等。例如,客户端设备1050、开发环境组件1020或环境内的其它组件(例如,历史数据存储库1030、软件体系架构授权系统1060、开源库1070和外部数据源1080)可以与预测服务器1010支持的一个或多个应用编程接口(API)1012和/或用户接口组件1014接口,以训练和生成机器学习模型以预测特定代码集成请求的结果。下文更详细讨论的预测服务器1010可以包括各种硬件和/或软件系统和子组件,包括经训练的机器学习模型1015以及模型训练系统1016和模型执行系统1018。使用这些系统以及存储历史代码集成请求数据的数据存储库1030和/或其它外部数据源1080,预测服务器1010可以训练一个或多个机器学习或人工智能模型。一个或多个机器学习或人工智能模型的执行可以生成输出,该输出可以被评估以预测对软件项目或组件内集成的特定外部代码库的请求的结果。
如示例计算环境1000中所示,客户端系统1050可以包括软件开发人员用户、软件分析/审计员用户等的客户端计算设备。如下面所讨论的,客户端系统1050可以最初在多个代码集成请求期间与软件体系架构授权系统1060交互,其请求和响应数据可以被存储和分析以用作模型训练数据。在生成经训练的模型之后,客户端设备可以发起对预测服务器1010的访问(例如,直接地或经由开发环境3020间接),以执行经训练的模型并预测代码集成请求的结果。
如以下更详细讨论的,预测服务器1010可以生成、训练和执行机器学习模型1015,机器学习模型1015被配置为提供对潜在代码集成请求的结果的特定预测。用于预测结果的经训练的模型可以基于先前/历史代码集成请求,包括特定于用户的、特定于库的和其它特定于上下文的数据,诸如特定开发人员、项目和开发人员想要包括外部库的原因,以及项目/系统的新近性、同一项目/组件使用的其它外部代码库等。模型训练系统1016可以从数据存储库1030和/或客户端系统1050检索数据,以便训练模型115生成对代码集成请求的预测性结果,这些结果是针对特定用户、软件项目和代码集成请求特点计算的。模型执行系统1018可以访问经训练的机器学习模型1015,向经训练的模型1015提供和格式化输入数据(例如,代码集成请求数据),并基于模型的执行确定预测的结果。经训练的模型1015的输出可以经由API 1012和/或用户界面组件1014提供给客户端设备1050或其它输出系统。另外,经训练的模型1015的输出不仅可以包括对代码集成请求的结果(例如,批准或拒绝)的预测,而且还可以包括各种相关数据,诸如与预测关联的置信度值、预测所依据的一个或多个因果关系因素(例如,安全性问题、许可不兼容、其它代码依赖性等),以及对被确定为具有更高批准概率的替代开源库(或其它外部代码库)的一个或多个建议。
在本文讨论的实施例中,客户端计算设备和系统1050可以包括运行各种移动操作系统的移动设备(例如,智能电话、计算平板电脑、个人数字助理(PDA)、可穿戴设备等),并且启用互联网、电子邮件、短消息服务(SMS)、或其它通信协议。客户端计算设备和系统1050也可以是通用计算机,诸如运行各种操作系统的个人计算机和/或膝上型计算机。客户端系统1050也可以是运行多种操作系统中的任何一种的工作站计算机。可替代地或附加地,客户端系统1050可以是任何其它电子设备,诸如瘦客户端计算机、启用互联网的游戏控制台系统和/或个人消息传递设备或能够通过(一个或多个)网络1040通信的其它设备。虽然所示的计算环境1000被示为具有三个客户端系统120,但是应当理解的是,可以支持任何数量的客户端计算设备。其它设备(诸如传感器设备等)也可以与预测服务器1010交互。
计算环境1000中所示的(一个或多个)通信网络1040可以是本领域技术人员熟悉的任何类型的网络,其可以支持使用多种商业可用协议中的任何一种的数据通信,包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络体系架构)、IPX(互联网分组交换)、AppleTalk等。仅作为示例,(一个或多个)网络1040可以是局域网(LAN),诸如基于以太网、令牌环等的LAN。(一个或多个)网络1040也可以是或可以包括诸如互联网之类的广域网。网络1040可以包括虚拟网络,包括但不限于虚拟专用网(VPN)、内联网、外联网、公共交换电话网(PSTN)、红外线网络、无线网络(例如,根据电气和电子协会(IEEE)802.11协议套件、蓝牙和/或任何其它无线协议中的任何一种操作的网络);和/或这些和/或其它网络的任何组合。
代码集成请求预测服务器1010可以是服务器系统,包括一个或多个通用计算机、专用服务器计算机(举例来说,包括PC(个人计算机)服务器、服务器、中型服务器、大型计算机、机架式服务器等)、服务器群、服务器集群,或任何其它适当的布置和/或组合。在各种实施例中,服务器1010可以适于运行本文描述的一个或多个服务或软件应用。例如,服务器1010可以包括web服务器和/或应用服务器,其被配置为执行处理并执行本文描述的软件组件以实现本公开的各个实施例和方面。
预测服务器1010可以执行包括任何可用服务器操作系统的操作系统。预测服务器1010还可以运行多种附加服务器应用和/或中间层应用中的任何一种,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(公共网关接口)服务器、服务器、数据库服务器等。示例性数据库服务器包括但不限于可从Oracle、Microsoft、Sybase、IBM(International Business Machines)等商购的那些。
数据储存库1030可以包括存储与先前(或历史)代码集成请求相关的各种数据的数据库或数据存储结构。此类历史数据可以包括详细说明每个代码集成请求的特定特点的数据(例如,开发人员身份和特点、特定客户端设备和特点、在其上做出请求的(一个或多个)网络、特定软件组件/项目的特点、请求被包括的开源库(或其它外部代码库)、软件组件/项目已使用的其它开源库、软件项目的功能性、计划的部署环境和软件项目预期面临的安全威胁(例如,不受信任的网络或计算机)、由开发人员提供的请求集成软件库的原因(如果有),以及关于代码集成请求的任何其它相关数据。此外,历史数据还可以包括每个先前代码集成请求的对应结果。对应结果数据可以指示每个代码集成请求是否被软件体系架构授权系统1060批准,以及软件体系架构授权系统1060在批准或拒绝先前请求时提供的任何原因或因果因素。数据存储库1030可以驻留在各种位置。例如,数据存储库1030中的一个或多个可以驻留在服务器1010本地(和/或驻留在其中)的非暂态存储介质上。可替代地,数据存储库1030可以与预测服务器1010分开存储在外部,并且可以经由基于网络的或专用的连接与服务器1010通信。在一些实施例中,数据存储库1030可以驻留在存储区域网络(SAN)中。类似地,用于执行模型服务器1010的功能的任何必要的数据或文件可以适当地本地存储在预测服务器1010上和/或远程存储。在一些实施例中,数据存储库1030可以包括适合于响应于格式化的查询和命令而存储、更新和检索数据的关系数据库。
机器学习模型被训练用于生成代码集成请求的预测结果。
现在参考图11,示出了说明训练机器学习模型以生成代码集成请求的预测结果的过程的流程图,即,将外部代码库集成在软件组件/项目内的潜在请求是否被软件体系架构授权系统批准的预测。如下所述,接收和存储训练数据以及生成和训练模型结构的过程可以由在计算环境1000内操作的各种设备(包括预测服务器1010的模型训练系统1016)执行。但是,应当理解的是,参考图10描述的技术不需要绑定到计算环境1000内的任何特定设备或服务器,而是可以由本文描述或支持的任何计算系统和设备来实现。
在1102处,模型训练系统1016和/或预测服务器1010内的其它系统可以例如从历史代码集成请求数据储存库中检索代码集成请求数据。例如,代码集成请求数据可以包括与开发人员先前做出的将外部代码库集成到软件项目/组件中的请求对应的一个或多个数据集。例如,在1102处检索到的代码集成请求数据可以包括多个代码集成请求中的每一个和对应响应的特定特点。如上所述,此类请求特点可以包括例如发起请求的开发人员用户的身份和特点、发起请求的特定客户端设备(及其硬件、软件和/或网络特点),在其上做出请求的(一个或多个)通信网络、开发人员请求的开源库(或其它外部代码库),以及开发人员请求将开源库集成到其中的特定软件组件或项目的一个或多个特点。软件组件或项目的特点可以包括软件组件/项目的功能性、其在开发中的阶段、与软件关联的安全性要求、由软件使用的其它开源库、软件维护的新近性(例如,指示项目是否仍在维护以及依赖性是否可用或缺失)、软件上安装的安全补丁、软件的目的和组织优先级,以及软件将部署到其中的计算和网络环境(例如,不受信任的用户、计算机或网络可访问)。此外,代码集成请求的特点可以包括开发人员在请求时提供的任何描述或原因,以解释或证明请求包括特定请求的库。此类描述还可以包括代码集成请求是否与软件体系架构授权系统960请求然后被拒绝的先前代码集成请求相关的指示。
在1104处,模型训练系统916和/或预测服务器1010内的其它系统可以检索每个先前代码集成请求的对应结果的细节和特点。这些先前/历史结果数据与软件体系架构授权系统1060对从开发人员接收的代码集成请求做出的响应对应,这可以是为了训练机器学习模型以预测结果所必需的。在一些实施例中,代码集成请求的先前/历史结果数据可能仅包括指示先前代码集成请求是否被允许的二进制值(例如,批准或拒绝)。但是,在其它实施例中,附加的相关数据可以包括在在1104处检索到的先前/历史结果数据中,诸如在批准或拒绝先前请求时由软件体系架构授权系统1060提供的一个或多个原因或因果因素。此类原因或因果因素可以指示代码集成请求被拒绝,例如,由于与所请求的开源库关联的安全漏洞,或者因为组织不遵守开源库的许可条款,或者因为开源库的许可条款与软件项目和/或其它开源库使用的其它许可的条款不兼容,等等。
在1106处,模型训练系统1016(或具有预测服务器1010的其它组件)可以生成一个或多个模型数据结构,并且在1106处,可以使用基于训练数据集(包括在步骤1102-1104中接收到的代码集成请求/结果数据中的任何一个、一些或全部)的机器学习算法来训练模型。在各种实施例中,可以使用各种不同类型的训练模型,包括执行监督或半监督学习技术的分类系统,诸如朴素贝叶斯模型、决策树模型、逻辑回归模型或深度学习模型,或可以执行有监督或无监督学习技术的基于机器学习或人工智能的任何其它预测系统。对于每个机器学习模型或模型类型,可以在步骤1106中生成适当的数据结构,并且在步骤1108中,可以基于在步骤1102和1104中接收到的训练数据使用对应的机器学习算法来训练模型。
在1108处,可以至少部分地基于(1)代码集成请求数据和(2)对应的结果数据来训练模型。
在1110处,在步骤1108中使用机器学习或人工智能算法训练的模型可以基于从一个或多个外部数据源1080接收的附加相关数据(可选地)被修订(或调节)。例如,外部数据源1080可以包括更新后的开源软件许可条款、一个或多个软件许可兼容性矩阵、更新后的安全问题数据(例如,已知的安全漏洞、可用的安全补丁等)、软件或计算基础设施成本数据等。例如,在步骤1108中被训练的机器学习模型1015可以补充有特定的规则集,这些规则可以或者覆盖或者加权通常由机器学习模型1015生成的预测性结果。例如,基于所应用的机器学习算法和历史训练数据1030,从经训练的模型到特定代码集成请求的预测结果通常可能是批准所请求的开源库的集成。但是,如果所请求的开源库中的安全问题已被新发现且尚未解决,那么那个信息可以从安全漏洞的外部数据库1080中检索的并且仅在请求那个特定开源库的情况下用于临时覆盖训练模型1015。作为另一个示例,如果最近更新了开源库或其它外部代码库,那么可以调节机器学习模型1015以包括基于对稳定性和向后兼容性的关注而反对使用最近更新后的库的临时加权偏好。在又一个示例中,如果与所请求的开源库关联的许可条款最近已经改变,那么机器学习模型1015可以被调节以预测对那个库的代码集成请求的拒绝,直到组织能够审查更新后的许可条款。
最后,在步骤1112中,用于预测代码集成请求的结果的经训练的机器学习模型可以存储在服务器1010内或系统内的其它地方。如上所述,在一些实施例中,经训练的模型可以存储在软件开发环境1020的插件组件内并从其执行。附加地或可替代地,经训练的模型可以存储和/或导出到其它系统以在对先前编写的代码块的源代码爬取和分析过程内使用。
现在参考图12,示出了说明执行机器学习模型以生成代码集成请求的预测性结果的过程的流程图。以下描述的特征和步骤,包括接收输入数据、访问和使用经训练的模型、生成输出预测性结果、确定相关原因数据和/或建议等,可以由在计算环境1000内操作的各种设备(包括代码集成请求预测服务器910的模型执行系统1018)执行。但是,应当理解的是,参考图12描述的技术不需要绑定到计算环境1000内的任何特定设备或服务器,而是可以由本文描述或支持的任何计算系统和设备来实现。
在1201处,预测服务器1010可以接收与代码集成请求对应的数据。因此,在步骤1201中接收的数据最初可以由客户端设备1050或者输入到开发环境1020中,或者直接输入到预测服务器1010的API1012或用户界面1014中。在步骤1201中接收的输入数据可以至少识别要集成的开源库(或其它外部代码库),以及可以在其中集成所请求的开源库的源代码组件/项目。如上所述,预测服务器1010可以包括一个或多个应用编程接口(API)1012,其被配置为支持与各种客户端系统的通信,包括验证和授权客户端设备和/或用户的认证和安全性组件,以便预测服务器1010的适当功能性仅提供给授权的用户。此外,在一些实施例中,预测服务器1010可以提供一个或多个用户界面1014以允许用户在步骤1201中直接请求代码集成请求的预测结果。图13A和13B中示出了被配置为使用户能够请求代码集成请求的预测性结果的用户界面的示例屏幕。如图13A中所示,用户已经发起将开源库“LIBRARY 1”集成到当前软件代码块中的请求(例如,或者经由用户界面1014或者经由软件开发环境1020)。
在步骤1202中,预测服务器1010可以检索与和源代码块关联的一个或多个其它相关外部代码库对应的数据。例如,如果步骤1201中的请求是开发人员试图将开源库“LIBRARY 1”集成到当前正在开发的源代码块中,那么在步骤1202中检索到的相关外部代码库可以与当前源代码块已经使用/引用的附加开源库对应。如上面所讨论的,当前源代码块中其它库/外部代码库的存在会潜在地造成安全漏洞(基于单个外部库或外部库的组合),或者可以与代码集成请求是否被批准相关的许可兼容性问题。因此,在一些实施例中,在步骤1202中,预测服务器1010可以扫描所有当前源代码块以检测对外部库的任何引用或调用,以及分析代码以检测指示代码块的嵌入的代码注释是从外部库复制的。附加地或可替代地,开发环境1020和/或预测服务器1010可以维护已经集成到每个不同源代码组件/项目中的所有开源库(或其它外部代码块)的列表。
在步骤1203中,预测服务器1010可以接收或检索外部代码要集成到其中的源代码块的一个或多个特点。在步骤1203中检索到的特点可以包括与源代码块关联的任何相关数据,这些数据可以潜在地被经训练的模型用来确定是否批准代码集成请求。例如,此类特点可以包括发起请求的开发人员的身份和特点、从其发起请求的特定客户端设备1050(及其硬件、软件和/或网络特点),以及通过其做出请求的(一个或多个)通信网络。软件组件或项目的附加特点可以包括软件的描述或功能性、其在开发中的当前阶段、与软件关联的任何安全性要求、软件维护的新近性(例如,指示项目是否仍在维护中以及依赖性可用或缺失)、安装在软件上的安全补丁、软件的目的和组织优先级,以及软件将部署到其中的计算和联网环境(例如,不受信任的用户、计算机或网络可访问)。可以在步骤1203中接收的软件特点的还有其它示例可以包括由开发人员在请求时提供的任何描述或原因,以解释或证明包括特定请求的库的请求。因此,在一些实施例中,预测服务器1010可以通过生成和输出用户界面来检索源代码块特点以允许开发人员提供信息(例如,组件产品、功能性和目的,和/或请求外部库的原因)。
在一些实施例中,在步骤1203中检索到的特点还可以包括代码集成请求是否与软件体系架构授权系统1060请求然后被拒绝的先前代码集成请求相关的指示。再次参考图12A,在这个示例中,用户界面1200包括对话框1210a,其询问开发人员当前代码集成请求(即,请求“LIBRARY 1”)是否与先前被拒绝的代码集成请求(即,请求“LIBRARY 2”)相关。如上面所讨论的,机器学习模型1015可以部分地基于不同外部库之间的关系进行训练,包括基于其中开发人员请求一个外部代码库(例如,LIBRARY 2)的代码集成请求序列来学习这种关系,请求被拒绝,然后开发人员请求可以能够执行类似功能性的不同外部代码库(例如,LIBRARY 1)。
在1204处,预测服务器1010可以访问经训练的模型1015中的一个或多个并且提供在步骤1201-1203中接收到的数据作为经训练的模型的输入。如参考图12所描述的,经训练的机器学习或人工智能模型1015可以已被训练为基于各种因素(包括所请求的库、源代码块的特点和/或其它相关因素)预测代码集成请求的结果(例如,代码集成的批准或拒绝)。因此,机器学习或人工智能模型1015可以已经使用训练数据集进行了训练,训练数据集包括由开发人员提出的先前确定的代码集成请求和由授权系统1060提供的结果。另外,经训练的机器学习模型1015可以被训练为基于由开发人员为请求提供的原因/理由以及由授权系统1060提供的具有批准或拒绝结果的对应原因/因果因素来学习结果确定。
在步骤1205中,响应于在步骤1204中提供给模型的输入数据,可以由经训练的机器学习模型1015生成一个或多个输出。如上所述,模型输出可以与授权系统1060可能响应于特定代码集成请求而提供的预测的结果对应。在一些实施例中,经训练的模型1015不仅可以提供二元预测性结果(例如,请求的批准或拒绝),而且还可以提供附加的相关信息(诸如预测性结果的原因/因果因素和/或替代库建议)。例如,批准或拒绝代码集成请求的基于模型的确定可以基于问题(诸如许可合规性或兼容性、检测到的安全漏洞、软件或计算基础设施成本、附加的软件依赖性、软件项目的新近性和优先级、安全补丁的可用性、更安全的替代库的存在等)。
在步骤1206中,预测服务器1010将从经训练的模型接收到的预测性结果评估为潜在代码集成请求。如果经训练的模型确定代码集成请求可能被批准(1206:是),那么在步骤1207中,可以将批准的指示输出给开发人员。在一些实施例中,预测服务器1010被实现为开发环境1020内的插件组件,并且在此类情况下,插件可以提供用户接口以向用户通知预测批准。用户接口还可以被配置为允许用户正式向软件体系架构授权系统1060提交代码集成请求,该请求现在已经接收到预测批准。此外,在一些实施例中,开发环境1020可以被配置为临时允许开发人员基于经训练的模型的预测批准来使用/包括所请求的外部代码。
相反,如果经训练的模型确定代码集成请求可能不会被批准(1206:否),那么在步骤1208中,预测服务器1010可以确定可以提供给用户的一条或多条附加相关数据以及预测拒绝的结果。在一些实施例中,在预测拒绝代码集成请求的情况下,经训练的模型1015可以提供预测拒绝的可能原因/因果因素的列表。例如,简要地参考图12B,在这个示例中,模型执行系统1018已经指示代码指示请求的预测的结果是该请求将被拒绝。因而,在这个示例中,已提供对话框1210b以允许开发人员几个附加选项,包括不管预测结果如何都继续对软件体系架构授权系统1060的请求的选项,或审查/分析细节和预测拒绝的因果因素,或接收开源库(或其它外部代码库)的其它建议,这些建议可以是所请求的库的可接受的替代方案并且可以更有可能获得批准以集成到软件组件中/项目中。
例如,在一些实施例中,如图1中所示的模型执行系统118可以被配置为多次调用模型,其中可以修改输入数据的特定片段并且可以分析相应的预测结果以确定哪些输入数据可能是关键(例如,结果决定性)因素。作为说明这个功能性的简短示例,如果开发人员在步骤1202中提供了请求开源库的原因,并且在步骤1205中拒绝了该请求,那么模型执行系统118可能使用不同的原因(例如,从历史代码集成请求数据1030中检索)自动重新调用经训练的模型,其中所有其它输入数据保持不变。如果重新调用的经训练的模型预测批准,那么可以在步骤1208中将开发人员提供的请求开源库的原因识别为预测拒绝的因果因素之一。可以通过在保持其它输入数据不变的同时对在步骤1201-1203中接收的其它单独输入数据进行微小修改重新调用训练模型来执行类似的过程。
此外,在一些实施例中,经训练的模型1015可以被用于确定一个或多个替代开源库(或其它外部代码库),其可以执行与接收到预测拒绝的所请求的代码类似的功能。例如,如果开发人员针对第一开源库发起代码集成请求并且在步骤1205中该请求被拒绝,那么模型执行系统1018可以自动重新调用经训练的模型1015一次或多次以请求不同但功能类似的开源库(例如,基于软件提供商、库类型、库/函数描述、用户反馈等)。对于其中经训练的模型1015预测批准结果的任何不同但功能类似的开源库,那些开源库可以被确定为可以作为建议提供给开发人员的潜在替代方案。
另外,如上文所讨论的,可以训练经训练的模型1015基于代码集成请求的序列来学习不同开源库(或其它外部代码库)之间的关系。例如,如果开发人员请求第一外部代码库(例如,LIBRARY 2),该请求被拒绝,那么开发人员请求不同的外部代码库(例如,LIBRARY1)并指示该请求与第一请求(参见1210a)相关,然后经训练的模型1015或预测服务内的其它组件可以获悉LIBRARY 1和LIBRARY 2可以是执行它们相应功能性中的至少一些的可接受的替代方案。
最后,在步骤1209中,可以将预测拒绝的指示输出给开发人员。在预测服务器1010可以被实现为开发环境1020内的插件的实施例中,插件可以提供用户界面以向用户通知预测拒绝,诸如图12B中所示的界面。还可以经由开发环境1020和/或经由单独的用户界面1014向开发人员提供确定的原因和/或因果因素,以及在步骤1208中确定的替代开源库的一个或多个建议。
还可以使用所公开的实施例的多个变化和修改。例如,可以使用应用软件代替活动指南来提供活动指南编写器。一些实施例可以基于管理员的职位或头衔动态地建议类别
VI.自动自调整特征发现和集成
一些组织用可定制的模式存储来自多个客户端、供应商和/或域的数据。在开发跨这些不同数据模式工作的机器学习解决方案时,通常或者手动或者通过繁琐的提取、变换和加载(ETL)过程来完成协调步骤。对于给定的机器学习问题(例如,“我想预测销售额”或“谁是最有生产力的员工?”),这个服务将跨客户端/供应商/域爬取整个数据存储库并自动检测等效实体(例如,在数据结构中添加一列“位置”或“地址”)。服务还将自动选择对每个单独的用例(即,一个客户端/供应商/域)具有预测性的特征,从而有效地使机器学习解决方案与组织的应用开发人员无关。
特征发现不限于分析特征名称,而是还包括特征内容。例如,这个特征可以检测日期或数据的特定分布,该分布适合以前已知的具有非常典型分布的特征。这些因素中的多于一个的组合可以使系统匹配并发现甚至更多的特征。
在这个实施例中,关于特征对模型预测的影响,存储用于这个特定机器学习问题的每个特征的共用表示的加权列表。最初可以搜集特征以赶上过去的数据存储。当来自新客户端/供应商/域的新数据添加到数据存储库时,匹配服务将基于先前计算的加权列表自动检测应当将哪些特征馈送到机器学习解决方案。特征的预处理允许更快地执行机器学习问题。基于为新客户/供应商/域找到的特征,更新加权列表以改进机器学习模型。这个加权列表基于新的数据摄入量被定期更新并用于改进现有客户端的特征选择。
图14图示了用于自动自调整公司范围的特征发现和集成的技术的过程1400。替代实施例可以通过组合、分离或以其它方式改变图14中所示的方框中描述的功能性来改变功能。用于执行图14中所示的一个或多个方框的功能性的部件可以包括分布式系统的硬件和/或软件组件,包括图20、21和22中所示以及如下所述的计算设备、存储设备、网络基础设施和服务器。
在1402处,功能性包括接收设计新机器学习应用的指令。在各种实施例中,指令可以通过用户接口。在各种实施例中,可以通过聊天机器人接收指令。该技术可以采用自然语言处理来确定机器学习模型、可以用于设计新机器应用的度量。
在1404处,功能性包括跨数据存储域的电子“爬取”。系统可以接收对一个或多个数据存储位置的访问。数据存储位置可以是本地的或远程的。在各种实施例中,数据存储装置可以在一个或多个云存储设施中。客户端可以为机器学习系统提供访问数据存储装置的访问权限,包括数据的标签和数据体系架构。
在1406处,功能性包括从数据存储装置中提取一个或多个特征。数据存储装置可以包括表征数据的一个或多个标签。该技术可以自动检测用于一个或多个标签的等效实体。例如,标记为“位置”的特征也可以识别用于“地址”的数据标签。在各种实施例中,该技术可以审查表征数据的一个或多个标签以确定来自数据的一个或多个特征。该技术可以提取一个或多个特征,将特征和关联的数据位置(例如,数据地址)存储在存储器中。这些技术还可以识别和选择对每个个体用例(即,一个客户端)具有预测性的特征,从而有效地使机器学习解决方案与应用开发人员无关。在一些实施例中,可以通过包含在存储的数据的每个类别中的元数据来提取特征。
在1408处,功能性包括为每个特征开发共用表示的加权列表。该技术可以至少部分地基于一个或多个特征对使用机器学习应用的解决方案的影响来确定从数据存储装置中提取的一个或多个特征中的每一个的排名。
例如,确定排名可以包括从存储在库中的多个算法中确定机器学习算法,其中该算法结合一个或多个特征来计算结果。可以通过移除一个或多个特征的第一特征来修改机器学习算法。该技术可以包括计算经修改的机器学习算法的第一结果。第一结果可以与基本事实数据进行比较。该技术可以包括至少部分地基于将第一结果与基本事实数据进行比较来计算第一特征的排名。与一个或多个其它结果相比,第一特征的重要性可以排名更高,因为第一结果与基本事实数据之间的差异减小。该技术可以包括至少部分地基于特征对机器学习应用的解决方案的排名来为第二列表中的一个或多个特征指派权重。
在1410处,功能性包括根据加权列表自动检测来自新数据存储装置的特征。在各种实施例中,该技术可以识别用于识别数据中的特征的元数据。该技术可以使用加权列表来确定将哪些特征结合到机器学习解决方案中。那些排名较高、结果更接近基本事实数据的特征可以更好地预测期望的机器学习解决方案。因此,机器学习应用结合这些特征将是有利的。
在1412处,功能性包括将特征馈送到机器学习解决方案。图1中所示的监视引擎156可以向模型合并引擎提供关于要结合到机器学习解决方案中的特征的反馈。
在1414处,功能性包括根据新数据更新加权列表。当新数据添加到数据存储装置时,匹配服务可以至少部分基于先前计算出的加权列表自动检测应当将哪些特征输入机器学习解决方案。基于为新数据找到的特征,可以更新加权列表。这个列表可以基于新数据被定期更新并被用于改进现有模型的特征选择。
应当认识到的是,图14中所示的特定步骤提供用于根据本公开的各种实施例生成机器学习应用的特定技术。根据替代实施例,也可以执行其它步骤序列。例如,本发明的替代实施例可以以不同的次序执行上述步骤。而且,图14中所示的各个步骤可以包括多个子步骤,这些子步骤可以根据各个步骤适当地以各种次序执行。此外,可以根据特定应用添加或移除附加的步骤。本领域的普通技术人员将认识到许多变化、修改和替代方案。
图15图示了用于智能助手生成机器学习解决方案的技术的过程1500。替代实施例可以通过组合、分离或以其它方式改变图15中所示的方框中描述的功能性来改变功能。用于执行图15中所示的一个或多个方框的功能性的部件可以包括分布式系统的硬件和/或软件组件,包括图20、21和22中所示以及如下描述的计算设备、存储设备、网络基础设施和服务器。
在1502处,功能性可以包括接收识别数据集的一个或多个位置的第一输入。在各种实施例中,用户可以使用接口来识别将用于生成机器学习模型的数据的一个或多个位置。如上所述,数据可以本地或远程存储。在各种实施例中,用户可以例如数据的网络位置(例如,互联网协议(IP)地址)。在各种实施例中,用户可以从存储设备(例如,云存储设备)上的多个文件夹中选择文件夹。在各种实施例中,用户可以选择便携式媒体设备(例如,USB拇指驱动器、光盘或固态或磁盘驱动器)上的文件。在各种实施例中,该技术可以至少基于用户先前与机器学习接口的交互来建议数据的位置。
在1504处,功能性可以包括接收第二输入。第二输入可以识别问题以使用机器学习应用生成解决方案。在各种实施例中,第二用户输入可以指定用户想要对其实现机器学习的问题的类型。在各种实施例中,可以通过经由用户界面输入文本来识别问题。在各种实施例中,问题可以作为母语讲话或文本被录入(例如,通过使用聊天机器人)。该技术可以破译母语以理解机器学习模型的目标。机器学习可以解决的问题的一些类型可以包括分类、回归、产品推荐、医疗诊断、财务分析、预测性维护、图像和声音识别、文本识别和表格数据分析。这些技术可以识别母语中的一个或多个关键字,以推荐或选择特定的机器学习算法。
在各种实施例中,用户可以通过图形用户界面选择问题的类型。该技术可以通过图形用户界面显示几个可供用户使用的通用模型。用户可以通过使用定点设备或触摸屏显示器选择模型描述之一来选择模型之一。除了通用模型之外,还可以选择和修改附加的自定义模型来解决作为第二个输入接收到的问题。
在1506处,功能性可以包括分析数据以提取用于数据集的模式的一个或多个标签。一个或多个标签可以描述包含在数据集的那个部分中的数据的类型。例如,诸如“地址”之类的数据标签可以包括关于地址条目的信息。一个或多个标签可以连同对应数据的位置一起被提取并存储在存储器中。标签可以是存储的数据的一部分。例如,客户可以已经为数据集提供了标签。该技术还可以包括为数据集中发现的特征生成标签。这些标签可以通过分析存储的数据集的元数据并确定最能描述数据集的那个部分的类别来生成。以这种方式,该技术不限于客户描述数据的命名约定。例如,该技术可以确定特征内容(例如,日期),并确定将先前已知或发现的特征与非常典型的分布相匹配的数据的特定分布。
在1508处,功能性可以包括为模式的一个或多个标签中的每一个生成共用类别的第一列表。对于每个提取出的术语,这些技术可以参考字典以获取标签的等价物。例如,对于“地址”,等效术语可以包括住处、家、房屋、住宅、位置、住所、居住地、邮寄地址等。
在1510处,功能性可以包括访问存储在存储器中的术语的库,其中术语与机器学习模型已知的类别对应。机器学习模型可以包括现有模型当前使用的一个或多个术语(及其等效项)的列表。例如,机器学习模型可以指术语“位置”而不是术语“地址”。
在1512处,功能性可以包括至少部分地通过识别一个或多个标签中的每一个的类别来将一个或多个标签与类别相关。可以将共用类别列表与存储在存储器中的术语的库进行比较。标签可以是存储的数据的一部分。例如,客户可以已经提供了标签。该技术可以包括为在数据集中发现的特征生成标签。也可以通过分析数据集的内容和/或数据集的元数据来生成数据标签。以这种方式,相关性不限于客户提供的标签。
在1514处,功能性可以包括生成一个或多个标签与机器学习模型的类别的映射。该映射可以为机器学习模型的每个类别识别数据集中的位置。
在1516处,功能性可以包括将映射存储在存储器中。映射可以随着存储位置中的数据改变(添加/删除)或标签改变而被更新。
在各种实施例中,功能性可以包括分析数据以提取由数据集描述的一个或多个特征。该方法可以包括生成第二列表,其中第二列表识别数据集的一个或多个特征。该技术可以至少部分地基于一个或多个特征对使用机器学习应用的解决方案的影响来确定第二列表中的一个或多个特征中的每一个的排名。该技术可以至少部分地基于特征对机器学习应用的解决方案的排名将权重指派给第二列表中的一个或多个特征。
在各种实施例中,确定排名可以包括从存储在库中的多个算法中确定机器学习算法,其中该算法结合一个或多个特征以计算结果,通过移除一个或多个特征中的第一特征来修改机器学习算法,计算经修改的机器学习算法的第一结果,将经修改的机器学习算法的第一结果与基本事实数据进行比较,并且至少部分地基于将第一结果与基本事实数据进行比较来计算第一特征的排名,其中与一个或多个其它结果相比,由于第一结果与基本事实数据之间的差异减小,因此第一特征的重要性排名更高。
在各种实施例中,该方法可以包括识别附加数据的新位置。例如,该方法可以包括分析附加数据以识别一个或多个新特征。新特征未在存储器中的一个或多个特征的第一列表上识别。该方法可以包括在存储器中生成一个或多个特征的修订的列表,包括一个或多个新特征。该方法可以包括至少部分地基于一个或多个新特征对使用机器学习应用的解决方案的影响来确定经修改的列表中的一个或多个特征和一个或多个新特征中的每一个的修订的排名。该方法可以包括至少部分地基于用于由机器学习应用生成的解决方案的新特征的修订的排名将权重指派给修订的列表中的每个排名的特征。
在各种实施例中,该方法可以包括呈现一个或多个标签与机器学习模型的类别的映射。该技术可以包括接收第二输入。第二输入可以将用于数据的模式的一个或多个标签的标签与机器学习模型已知的一个或多个类别的类别关联。
在各种实施例中,该方法还可以包括提取存储在一个或多个位置的数据集。该方法可以包括将提取的数据集存储在存储器中。该方法可以包括重命名数据集的一个或多个标签以匹配一个或多个标签的映射。
在各种实施例中,该方法可以包括识别一个或多个标签的新标签,其中新标签与机器学习数据的类别不相关;并将新标签和关联的元数据添加到存储在存储器中的术语的库。
应当认识到的是,图15中所示的特定步骤提供用于根据本公开的各种实施例生成机器学习应用的特定技术。根据替代实施例,也可以执行其它步骤序列。例如,本发明的替代实施例可以以不同的次序执行上述步骤。而且,图15中所示的各个步骤可以包括多个子步骤,这些子步骤可以根据各个步骤适当地以各种次序执行。此外,可以根据特定应用添加或移除附加的步骤。本领域的普通技术人员将认识到许多变化、修改和替代方案。
VII.置信度向用于企业软件系统的机器学习预测的高效和准确的指派
各种实施例可以增加对机器学习模型预测的信任或至少量化通过将置信度级别指派给机器学习预测来保证的信任级别。这些点预测可以带有不确定性。在软件系统使用机器学习模型的点预测之前,通常不考虑或适当校准这种不确定性。在各种实施例中,一种技术可以为充分利用机器学习的软件系统的用户提供对机器学习模型的点预测的质量的评估。质量可以用多个QoS或KPI因素以临时结果或整体性能来暴露。
点预测技术可以通过针对训练数据的集合搜索作为查询的实例以获得合适的候选机器学习模型或流水线136实例以计算用于点预测的候选机器学习模型的置信度估计来实现。该技术可以为点预测生成特定机器学习系统的不确定性估计。搜索系统可以使用一种方法来高效地计算估计量,同时考虑机器学习软件和底层系统要求。例如,对于点预测拟合不佳的数据,置信度的测量将会低。
置信度分数可以反映这种类型的机器学习模型将执行超出对于特定结果正确的置信度的可能性。例如,机器学习模型可能以90%的准确性预测体育赛事最有可能获胜的人,但对明天比赛的预测可能有60%的置信度,因为一支球队有太多新球员。点预测的颜色可以根据估计中的置信度显示在屏幕上。
VIII.用于机器学习的自适应和上下文感知自动化服务组成
本体是概念化或形式命名的规范,以及对于本公开的特定领域真正或基本存在的实体的类型、特性和相互关系的定义。除数据模型专门与数据相关之外,本体模型提供了很多相同的信息。数据模型提供将变成关系数据库管理系统(RDBMS)中的表的实体,并且属性将变成具有特定数据类型和约束的列,并且关系将是识别和非识别外键约束。数据模型不提供的是特定领域中词汇的机器可解释定义。数据模型将不包含定义整个领域的词汇表,而是数据字典将包含与特定数据元素关联的实体和属性的信息。本体由按子类-超类的分类分层布置的类、具有定义值约束的描述的槽以及这些槽的值组成。当本体完成时,并且当定义这些元素(类和槽)的各个实例并添加或细化任何限制时,定义知识库。
例如,类person包括所有的人,并且特定的人是这个类的实例。大多数本体都关注事物的类,并且这些类可以分解成事物的子类。例如,person可以细分为Gender、Ethnicity、Race或Country of Citizenship。根据机器可读的本体定义领域将允许自由交换信息和知识。本体使得能够在同一领域内的不同系统之间共享信息。有来自各个行业的许多免费可用的本体。本体是跨领域标准化词汇表的方式。例如,“从业者”一词在一个医疗保健系统中的含义与在另一个医疗保健系统中的含义相同。同样,从业者专业在两个站点上将具有相同的属性并具有相同的含义。这种标准化允许更大的灵活性,并将启用更快速的应用开发和信息共享。
本体可以应用于数据集(例如,图像、医疗数据)以解决问题(例如,产品推荐或离群值检测)或确定要应用于问题的度量。本体可以提供数据集的分层组织以提供可扩展性的级别。该过程的输出是产品图,它是模型、流水线、特征和度量的组成,用于生成机器学习解决方案。例如,对于某些医疗应用(例如,放射学),使用更高分辨率的图像来检测图像中的异常可以是重要的。KPI可以侧重于检测这些异常的准确性。但是,需要考虑过程的时延。如果图像处理时间过长而无法使用,那么机器学习过程可以不是有效的。因此,过程可以推荐使用分辨率稍低的图像来有效地处理图像。产品图将帮助数据科学家塑造模型,同时考虑到时延和准确性之间的这些类型的折衷。
参考图16,框图的实施例使用本体来产生在设计机器学习模型或应用中使用的机器学习产品图。在各种实施例中,上下文感知语义机器学习(ML)服务可以使用户能够基于可以包括QoS和产品KPI的服务语义的基于本体的正式表示来执行服务的高精度搜索和机器学习部署服务的自动组成。这形成了用于高精度搜索相关服务以组成流水线136的可扩展手段,如图1中所示,以最少的人工干预来定义自适应机器学习体系架构。非基于逻辑和基于逻辑的语义服务选择的适当组合,在精度方面明显优于这两种选择。QoS和KPI约束也被用作体系架构选择的一部分(例如,给定时延不能超过X,组成在构成机器学习模型的流水线中在指定的时间处置大量输入数据的服务基础设施)。
例如,医疗应用可以被用于通过眼科检查来检测由于称为糖尿病视网膜病变的病症而引起的糖尿病。许多患有早期糖尿病视网膜病变的人没有任何症状。随着糖尿病视网膜病变的进展,症状包括视力模糊、失明、飞蚊症或阴影以及视力缺失。有两种糖尿病视网膜病变。早期阶段是非增殖性糖尿病视网膜病变,视网膜中的血管开始渗漏。如果渗漏导致视网膜液体积聚,会出现视力模糊。
全面的眼科检查是在症状出现之前的早期阶段检测糖尿病视网膜病变的唯一方法。图像分类器可以被用于通过对眼睛的图像进行更高分辨率分析来检测糖尿病视网膜病变。可以开发具有各种类别的眼睛图像的本体,诸如无视网膜病变、轻微视网膜病变和各种不同程度的视网膜病变。推理器1616可以将本体用于眼睛图像,并了解已经有其它神经网络应用于精确的图像分类。可以构造入口层以使图像分类器与眼睛图像本体相适应,以检测患者眼睛的图像中不同程度的视网膜病变。产品图将是读取图像、变换图像、将图像重新缩放到特定分辨率、将图像加载到预构建的神经网络、分析图像以输出可以指示糖尿病视网膜病变的程度的图像的分类(例如,数字值)。
A.本体建模与构建机制1608
用于机器学习平台100的语义简档可以包括:每个微服务例程140(特征选择、离群值检测、可解释性)在其输入和输出参数的语义注释方面的功能语义;前提条件的基于逻辑的描述(以及在执行服务之前或之后应该保持的效果);与服务出处相关的非功能性服务参数(如特征工程也由特征选择的服务组成-组成的服务的出处,因为它可以影响机器学习应用112的运行时性能);服务质量(QoS)要求,覆盖时延、响应时间、计算资源、吞吐量、可靠性、可用性、成功率(服务的平均故障时间)、可用性、隐私策略等;以及产品关键性能指标(KPI),诸如可以用于产品推荐的“第一个月增加40%的购买量”。
B.推理器引擎1604处理本体1616
使用创建的本体1616(关于服务如何在数据和控制流之间的相互作用以及QoS基准方面的描述)用于用以基于形式逻辑的本体定义的概念来注释服务,使得从从机器学习的角度来看,智能代理和推理器引擎1604可以确定形式服务语义并基于产品的最优运行时期望来组成它们。在各种实施例中,本体要求“冷起动”,因为尚未创建本体。本体构建器1608可以被用于创建在现有本体中创建新分支的本体。推理器引擎1604引导对组件(例如,模型、度量)的最佳组合的搜索以解决问题。推理器引擎1604确定要组合到产品图1620中的软件功能和硬件。
C.基于搜索的体系架构适配引擎1612
体系架构适配引擎1612使用元学习来连接用于生成产品图1620的各个块。插值过程为特定的机器学习问题查询选择最佳的软件功能和硬件。该技术可以将产品图可比性问题转换成计算搜索问题,其涉及定义搜索空间(即,可用的服务),或基于先前变得成功的服务的既定本体描述符的可能解决方案的集合。考虑到需求限制(诸如有限的资源和需求之间的相互依赖性),结果是匹配用户请求的最佳可能的需求子集。在部署生产图之前,可以向用户提供具有模型性能的度量和QoS与其它用户要求和约束(要求风险)之间的折衷集合的提议的产品图1620。搜索空间通常非常大并且详尽地探索是不实际的。这个实施例根据用户的选择使用元启发式方法(搜索技术可以被用于找到接近最优或“足够好”的解决方案)。
例如,用户可能产生具有QoS要求和正在回答的特定问题的语义查询。可以建议在考虑了QoS要求的情况下为所需答案选择最佳产品图1620。存在定义可能符合那个请求的软件功能和硬件的各种库组件168,如图1中所示。本体1616存储用于软件功能和硬件的参数,从而可以自动为产品图1620做出选择。产品图1620可以具有库组件168,如图1中所示,以及构建机器学习产品以符合语义查询的硬件组件。体系架构适配引擎1612可以确定用于产品图1620的最佳选项。
产品图1620是表示用于研究对象和实体之间的成对关系的数学结构的数据的视觉表示。在计算中,图形数据库(GDB)是一种数据库,它使用图形结构进行语义查询,具有节点、边和特性来表示和存储数据。系统的关键概念是图(或边或关系)。图将存储库中的数据项与节点和边的集合关联,边表示节点之间的关系。这些关系允许将存储库中的数据直接链接在一起,并且在许多情况下,只需一个操作即可检索。图数据库优先保持数据之间的关系。在图数据库内查询关系是快的,因为它们永久地存储在数据库本身中。关系可以使用图数据库直观地可视化,从而使其对高度互连的数据有用。图数据库是为解决现有关系数据库的局限性而创建的NoSQL数据库的一部分。虽然图模型明确列出了数据的节点之间的依赖性,但关系模型和其它NoSQL数据库模型通过隐式连接链接数据。图数据库在设计上允许简单快速地检索在关系系统中难以建模的复杂层次结构。
自适应和上下文感知的自动化服务组成导致组合不同KPI、QoS、问题的类型、数据的类型以构建产品图1620的整体方法。这增加了对模型的认识。
图17图示了用于生成用于机器学习的自适应和上下文感知自动化服务组成的技术的过程1700。替代实施例可以通过组合、分离或以其它方式改变图17中所示的方框中描述的功能性来改变功能。用于执行图17中所示的一个或多个方框的功能性的部件可以包括分布式系统的硬件和/或软件组件,包括图20、21和22中所示以及如下所述的计算设备、存储设备、网络基础设施和服务器。
在1702处,功能性可以包括接收识别数据的位置的第一用户输入。在各种实施例中,用户可以使用接口来识别将用于生成机器学习模型的数据的位置。在各种实施例中,用户可以录入数据的网络位置(例如,互联网协议(IP)地址)。在各种实施例中,用户可以选择存储设备(例如,云存储设备)上的多个文件夹中的文件夹。在各种实施例中,用户可以选择便携式介质(例如,USB拇指驱动器、光盘或固态或磁盘驱动器)上的文件。
在1704处,功能性可以包括接收识别机器学习应用可以为其生成解决方案的问题的第二用户输入。在各种实施例中,第二用户输入可以指定用户想要对其实现机器学习的问题类型。在各种实施例中,可以通过经由用户界面输入文本来识别问题。在各种实施例中,问题可以作为母语讲话或文本被录入(例如,通过使用聊天机器人)。该技术可以破译母语以理解机器学习模型的目标。机器学习可以解决的问题的一些类型包括分类、回归、产品推荐、医疗诊断、财务分析、预测性维护、图像和声音识别、文本识别和表格数据分析。这些技术可以识别母语中的一个或多个关键字,以推荐或选择特定的机器学习算法。
例如,对于糖尿病视网膜病变示例,用户可以指定问题是医疗问题,特别是针对图像的分类器。
在各种实施例中,用户可以通过图形用户界面选择问题的类型。该技术可以通过图形用户界面显示几个可供用户使用的通用模型。用户可以通过使用定点设备或触摸屏显示器选择模型描述之一来选择模型之一。除了通用模型之外,还可以选择和修改附加的自定义模型以解决作为第二输入接收到的问题。
在1706处,功能性可以包括接收用于机器学习应用的一个或多个约束的第三输入。第三输入可以作为母语讲话或文本被录入(例如,通过使用聊天机器人)或经由界面(例如,图形用户界面)选择。约束的一个示例是系统在执行机器学习应用时的延迟。另一个约束可以是分类的准确性。
在1708处,功能性可以包括访问包含数据的一个或多个本体的存储器。每个本体可以描述用于一个或多个数据对象的一个或多个数据集的层次结构。每个数据对象可以表现出允许根据规则将数据对象分类为一个或多个数据对象集合的一个或多个属性。
在1710处,功能性可以包括提取一个或多个数据集的一个或多个属性以找到与根据一个或多个约束对机器学习应用的预测相关的第一本体。例如,该技术可以从以前的本体中学习某些KPI和度量对于解决某些解决方案是有效的。因此,该技术可以推荐将各种KPI或度量结合到产品图中。
在1712处,功能性可以包括基于存储在存储器中的第一本体、一个或多个约束和一个或多个先前的产品图来组成产品图。产品图将一个或多个数据对象与用于数据的节点和边的集合关联。边表示节点之间的链接。节点包括数据结构的基本单元。
例如,基于搜索的自适应引擎1612可以搜索各种机器学习模型的元数据,这对于解决给定问题将是有效的。例如,用于检测潜在皮肤癌的图像分类器可以提供检测糖尿病视网膜病变所需的准确性。该技术可以选择模型、所需的变换以及最后的特定流水线。
在1714处,功能性可以包括将产品图存储在存储器中。
在各种实施例中,该方法可以包括至少部分地基于分析一个或多个数据对象的属性来生成本体。一个或多个属性可以包括每个服务的一个或多个功能语义。功能语义可以包括特征选择、离群值检测和可解释性度量中的至少一个。
一个或多个属性可以包括一个或多个前提条件和一个或多个效果。前提条件可以是执行服务之前存在的条件并且一个或多个效果是执行服务之后存在的条件。
一个或多个属性还可以包括一个或多个参数。与服务的出处相关的一个或多个参数。
一个或多个属性可以包括一个或多个度量。一个或多个度量可以包括服务质量度量。服务质量度量包括时延度量、响应时间度量、吞吐量度量、可靠性度量、可用性度量、成功率度量和隐私度量中的至少一个。
一个或多个属性可以包括一个或多个指标。一个或多个指标可以包括关键性能指标。
该技术可以包括将本体存储在存储器中。
该技术可以包括从一个或多个本体生成元数据,其中元数据至少部分地基于运行时期望从机器学习的角度描述一个或多个本体的一个或多个概念。该技术可以包括将服务元数据保存到存储器。
该技术可以包括至少部分地基于来自一个或多个先前的产品图的一个或多个描述符来搜索一个或多个服务。在各种实施例中,搜索使用元启发式方法来确定解决方案。该技术可以包括将一个或多个描述符与机器学习应用的预测相关。该技术可以包括至少部分地基于所述相关来生成可用服务的列表。该技术可以包括将可用服务的列表保存在存储器中。
该技术可以包括在显示器上呈现产品图。产品图可以包括产品图的性能的一个或多个度量。产品图可以包括确定折衷的集合,其中折衷的集合包括鉴于机器学习应用的预测选择一个或多个约束。该技术可以包括在显示器上呈现折衷的集合。
应当认识到的是,图17中所示的特定步骤提供用于根据本公开的各种实施例生成机器学习应用的特定技术。根据替代实施例,也可以执行其它步骤序列。例如,本发明的替代实施例可以以不同的次序执行上述步骤。而且,图17中所示的各个步骤可以包括多个子步骤,这些子步骤可以根据各个步骤适当地以各种次序执行。此外,可以根据特定应用添加或移除附加的步骤。本领域的普通技术人员将认识到许多变化、修改和替代方案。
IX.自适应流水线化组成服务
现有的机器学习系统没有结合经由后台过程持续改进模型的特征。以这种方式,最初可以从可用模型中选择模型并且可以构造机器学习应用。在部署机器学习应用时,可以使用后台过程来识别可以改进机器学习应用的各个方面的其它潜在模型。例如,可以在生成机器学习应用之后使模型可用。自适应流水线化组成系统可以识别新模型、离线测试模型、验证模型,并且如果模型提高了机器学习应用的性能,那么该技术可以用新模型改变已部署系统中的现有模型。以这种方式,机器学习应用不断改进其结果。此外,可以在发现新数据或将不同数据识别为具有预测性时改变模型。
参考图18,示出了用于组成机器学习服务的框图,其使用样本数据。给定一些样本数据1808,自适应流水线组成服务1800可以组成机器学习流水线1836(由机器学习服务组成),其最大化来自相同源的新数据的性能属性。性能检测器1812可以评估可以包括分类准确度、各种模型度量、通用QoS度量或其它非机器学习模型相关KPI的各种性能特点。其它框架使用自动学习尝试基于模型性能自动组成最佳流水线。但是,模型性能本身并不覆盖流水线必须在运行时适应在线数据度量或QoS合规性的一些变化的情况。自适应流水线组成服务1800优化离线和运行时的操作。
在离线情况下,用户可以使用自适应流水线组成服务1800来定义流水线的库组件168,如图1中所示,以解决特定问题。类似用例的先前学习/模式被用于确定用于新指定的问题的流水线1836。
在在线情况下,流水线引擎1804在运行时基于类似用例的先前学习/模式不断探索和评估替代流水线和/或流水线的子块。流水线引擎1804可以在影子模式下运行其它流水线候选以实时比较性能。如果替代机器学习流水线组成优于现有流水线,那么自适应流水线组成服务1800组成新流水线并负责在影子模式下升级它,直到它满足自动升级到生产的条件。一旦在线执行更好,重新设计的流水线就将取代旧的流水线。
一些实施例具有在替换发生之前指定的改进的阈值。其它机器学习模型在替换之前可以有不同的阈值。流水线1836的新版本可以在替换发生之前由机器学习模型进行测试。例如,新流水线可以在替换之前以影子模式运行一段时间。可以对影子流水线进行进一步的调整,以针对机器学习模型的特定实例进行定制。
图19图示了用于自动组成机器学习流水线以在生产环境中使用的技术的过程1900,该生产环境作为机器学习应用的后台过程被执行。替代实施例可以通过组合、分离或以其它方式改变图19中所示的方框中描述的功能性来改变功能。用于执行图19中所示的一个或多个方框的功能性的部件可以包括分布式系统的硬件和/或软件组件,包括图20、21和22中所示以及如下描述的计算设备、存储设备、网络基础设施和服务器。
这种技术可以包括前台过程和后台过程。前台过程可以涉及使用所选择的机器学习应用来生成结果。还可以采用后台过程来分析机器学习模型和参数的各个方面,以确定是否可以改进该过程,从而为机器学习应用提供更好的预测。此外,后台过程可以确定所选择的参数和模型是否会减慢机器学习应用的速度,直到输出不满足服务水平协议(SLA)中概述的性能要求的程度。在此类情况下,可以优化模型以满足服务水平协议的要求。
在1902处,功能性可以包括识别第一机器学习模型。第一机器学习模型利用一个或多个第一参数。一个或多个第一参数在机器学习过程之前识别和定义第一数据集的更高级别的特性。
在机器学习中,术语“超参数”可以被用于区别于标准模型参数。机器学习模型是数学公式的定义,具有需要从数据中学习的多个参数。这就是机器学习的关键:将模型拟合到数据。这是通过称为模型训练的过程完成的。换句话说,通过用现有数据训练模型,我们能够拟合模型参数。但是,还有另一种参数是无法从常规训练过程中直接学习到的。这些参数表达模型的“高级”特性,诸如它的复杂性或它应当多快地学习。这些被称为超参数。超参数通常在实际训练过程开始之前固定。超参数是模型外部的配置并且其值无法从数据中估计。超参数常常在过程中用于帮助估计模型参数。
在1904处,功能性可以包括识别第一机器学习模型使用的一个或多个第一参数。一个或多个第一参数可以由从业者指定。一个或多个第一参数常常可以使用启发式方法来设置。常常针对给定的预测性建模问题调节一个或多个第一参数。数据科学家可能不知道模型超参数在给定问题上的最佳值。代替地,数据科学家可以使用经验法则,复制在其它问题上使用的值,或通过反复试验来寻找最佳值。当针对特定问题调整机器学习算法时,诸如当使用网格搜索或随机搜索时,该技术调节模型的超参数或命令以发现模型的参数,这产生最熟练的预测。模型超参数的一些示例包括:用于训练神经网络的学习速率、树的叶子或深度的数量、矩阵分解中的潜在因子数、深度神经网络中的隐藏层数以及k均值聚类中的聚类数。
在1906处,功能性可以包括识别用于第一机器学习模型的一个或多个第一结果。一个或多个第一结果是使用用于一个或多个参数的生产值和生产模型的对模型的解决方案。随着模型和/或参数在机器学习应用中变化,一个或多个第一结果形成用于比较各种结果的基础。
在1908处,功能性可以包括为第一机器学习模型识别一个或多个度量。这些度量定义如何可以测量第一机器学习模型的性能。度量可以包括如上所述的KPI或QoS。
在1912处,功能性可以包括将一个或多个第一结果与第二数据集进行比较。第二数据集包括基本事实数据。通过将第一结果与基本事实数据进行比较,该技术可以确定模型使用所选择的一个或多个参数和所选择的模型有多准确。将一个或多个第一结果与第二数据集进行比较可以计算第一评分。第一评分可以是由模型输出的第一结果与用于模型的基本事实数据之间的差异的测量。使用一个或多个第一参数和第一模型,第一评分提供在一些给定度量下模型质量的测量。
在1914处,功能性可以包括参考第一数据集的本体以至少部分地基于将第二机器学习模型的元数据与用于第一机器学习模型的度量进行比较来识别第二机器学习模型。可以识别第二机器学习模型以使用后台过程与当前机器学习模型进行测试。
在1916处,功能性可以包括在第一数据集上测试第二机器学习模型以产生一个或多个第二结果。在后台过程中,该技术可以测试第二机器学习模型。以这种方式,生产模型不受测试和评估过程的影响。
在1918处,功能性可以包括将一个或多个第二结果与第二数据集进行比较以生成第二评分。第二数据集包括表示机器学习应用的期望输出的基本事实数据。使用一个或多个第一参数和第二机器学习模型,第二评分提供模型在一些给定度量下的模型质量的测量,诸如准确性。
在1920处,功能性可以包括基于第二评分小于第一评分而将第一机器学习模型替换为用于机器学习应用的第二机器学习模型。如果该技术确定第二机器学习模型提供更接近基本事实数据的结果,那么该技术可以替换机器学习应用使用的机器学习模型。在各种实施例中,第一机器学习模型可以被处于影子模式下的第二机器学习模型替换,直到第二机器学习模型满足用于将第二机器学习模型自动提升到生产的一个或多个条件。
在各种实施例中,该技术可以包括分析第一数据集的本体以至少部分地基于将第一参数的元数据与用于第一机器学习模型的度量进行比较来识别一个或多个第二参数。该技术可以包括使用一个或多个第二参数测试第二机器学习模型以产生一个或多个第三结果。该技术可以包括将一个或多个第三结果与第二数据集进行比较以生成第三阈值。该技术可以包括基于第三阈值小于第二阈值而将一个或多个第一参数替换为一个或多个第二参数用于机器学习应用。
在各种实施例中,该技术可以包括生成包括一个或多个第一参数、第一机器学习模型、第二机器学习模型、一个或多个第一结果和一个或多个第二结果的日志。该技术可以包括将日志存储在存储器中。
在各种实施例中,该技术可以包括分析日志以确定一种或多种模式。
在各种实施例中,该技术可以包括至少部分地基于一个或多个第一参数和一个或多个第二结果来保存关于第二机器学习模型的补充元数据。在各种实施例中,元数据包括决策树的级别的数量和第二机器学习模型的算法的参数的数量中的至少一个。
应当认识到的是,图19中所示的特定步骤提供用于根据本公开的各种实施例生成机器学习应用的特定技术。根据替代实施例,也可以执行其它步骤序列。例如,本发明的替代实施例可以以不同的次序执行上述步骤。而且,图19中所示的各个步骤可以包括多个子步骤,这些子步骤可以根据各个步骤适当地以各种次序执行。此外,可以根据特定应用添加或移除附加的步骤。本领域的普通技术人员将认识到许多变化、修改和替代方案。
X.用于运行时服务组成的服务执行和监视
在机器学习服务或流水线的执行期间,环境处于不断变化中,因此可以使用户定义的期望状态失效。无效状态可以包括环境的改变、数据损坏、模型性能降级和/或新特征的可用性。监视引擎156的一个目的是为模型组成引擎132和模型执行引擎108提供用于机器学习平台100的执行环境的状态的最新视图,并遵守在机器学习服务已组成时定义的QoS规范。
机器学习服务及其本体在可部署服务描述中定义,模型组成引擎132使用这些描述来组装组成服务以触发对运行时的最佳体系架构模型的搜索。体系架构模型包括指定任何微服务例程140、软件模块144和基础设施模块148以及任何定制和相互依赖性的流水线136。与服务执行相关的多个QoS参数(例如,响应时间、时延、吞吐量、可靠性、可用性、成功率)还基于流水线中输入的数据的类型(体积、速度)、流水线的类(分类器、推荐器系统),由此,具有大量候选服务的服务组成是多目标优化问题,我们可以解决这个问题以自动化运行时适配。在服务组成期间,多个服务可以基于它们的输入-输出依赖性按特定次序组合,以产生期望的产品图,除了提供具有数据输入Y的流水线X所需的解决方案之外,还有必要确保履行由产品团队(KPI)和我们运行的环境指定的端到端QoS要求。执行引擎调度和调用机器学习服务实例,以便在运行时被组成和服务。
还可以使用所公开的实施例的许多变化和修改。例如,各种功能、块和/或软件可以分布在网络、WAN上和/或云封装。机器学习软件也可以跨网络、WAN和/或云基础设施以分布式方式运行。
XI.示例性硬件和软件配置
图20描绘了用于实现实施例之一的分布式系统2000的简化图。在所示实施例中,分布式系统2000包括一个或多个客户端计算设备2002、2004、2006和2008,它们被配置为通过一个或多个网络2010执行和操作客户端应用,诸如web浏览器、专有客户端(例如,OracleForms)等。服务器2012可以经由网络2010与远程客户端计算设备2002、2004、2006和2008通信耦合。
在各种实施例中,服务器2012可以适于运行由系统的组件中的一个或多个提供的一个或多个服务或软件应用。在一些实施例中,这些服务可以作为基于web的或云服务或在软件即服务(SaaS)模型下提供给客户端计算设备2002、2004、2006和/或2008的用户。操作客户端计算设备2002、2004、2006和/或2008的用户进而可以利用一个或多个客户端应用与服务器2012交互以利用由这些组件提供的服务。
在图中描绘的配置中,系统2000的软件组件2018、2020和2022被示为在服务器2012上实现。在其它实施例中,系统2000的组件中的一个或多个和/或由这些组件提供的服务也可以由客户端计算设备2002、2004、2006和/或2008中的一个或多个实现。操作客户端计算设备的用户然后可以利用一个或多个客户端应用来使用由这些组件提供的服务。这些组件可以在硬件、固件、软件或它们的组合中实现。应当认识到的是,各种不同的系统配置是可能的,它们可以不同于分布式系统2000。图中所示的实施例因此是用于实现实施例系统的分布式系统的一个示例并且不旨在进行限制。
客户端计算设备2002、2004、2006和/或2008可以是便携式手持设备(例如,蜂窝电话、计算平板、个人数字助理(PDA))或可穿戴设备(例如,Google头戴式显示器)、运行软件(诸如Microsoft Windows)和/或各种移动操作系统(诸如iOS、Windows Phone、Android、BlackBerry 10、Palm OS等),并且启用互联网、电子邮件、短消息服务(SMS)、或其它通信协议。客户端计算设备可以是通用个人计算机,举例来说包括运行各种版本的MicrosoftApple和/或Linux操作系统的个人计算机和/或膝上型计算机。客户端计算设备可以是运行各种商业上可用的或类UNIX操作系统中的任何一种的工作站计算机,包括但不限于各种GNU/Linux操作系统,诸如例如Google Chrome OS。可替代地或附加地,客户端计算设备2002、2004、2006和2008可以是任何其它电子设备,诸如瘦客户端计算机、启用互联网的游戏系统(例如,具有或不具有手势输入设备的Microsoft Xbox游戏控制台)和/或能够通过(一个或多个)网络2010通信的个人消息设备。
虽然示例性分布式系统2000被示为具有四个客户端计算设备,但是可以支持任意数量的客户端计算设备。其它设备(诸如带有传感器的设备等)可以与服务器2012交互。
分布式系统2000中的(一个或多个)网络2010可以是本领域技术人员熟悉的任何类型的网络,其可以支持使用各种商业可用协议中的任何一种的数据通信,包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络体系架构)、IPX(互联网分组交换)、AppleTalk等。仅作为示例,(一个或多个)网络2010可以是局域网(LAN),诸如基于在以太网、令牌环等。(一个或多个)网络2010可以是广域网和互联网。它可以包括虚拟网络,包括但不限于虚拟专用网络(VPN)、内联网、外联网、公共交换电话网络(PSTN)、红外线网络、无线网络(例如,在任何电气和电子协会(IEEE)802.11协议套件、和/或任何其它无线协议下操作的网络);和/或这些和/或其它网络的任何组合。
服务器2012可以由一个或多个通用计算机、专用服务器计算机(举例来说,包括PC(个人计算机)服务器、服务器、中程服务器、大型计算机、机架式服务器等)、服务器群、服务器集群或任何其它适当的布置和/或组合。在各种实施例中,服务器2012可以适于运行在前述公开中描述的一个或多个服务或软件应用。例如,服务器2012可以与用于执行根据本公开实施例的上述处理的服务器对应。
服务器2012可以运行操作系统,包括上面讨论的任何操作系统,以及任何商业上可用的服务器操作系统。服务器2012还可以运行各种附加服务器应用和/或中间层应用,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(通用网关接口)服务器、服务器、数据库服务器等。示例性数据库服务器包括但不限于可从Oracle、Microsoft、Sybase、IBM(International Business Machines)等商购获得的那些。
在一些实施方式中,服务器2012可以包括一个或多个应用以分析和整合从客户端计算设备2002、2004、2006和2008的用户接收的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于从一个或多个第三方信息源和连续数据流接收的馈送、更新或实时更新,其可以包括与传感器数据应用、金融股票、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视等相关的实时事件。服务器2012还可以包括一个或多个应用以经由客户端计算设备2002、2004、2006和2008的一个或多个显示设备显示数据馈送和/或实时事件。
分布式系统2000还可以包括一个或多个数据库2014和2016。数据库2014和2016可以驻留在多个位置。举例来说,数据库2014和2016中的一个或多个可以驻留在服务器2012本地的非暂态存储介质上(和/或驻留在其中)。可替代地,数据库2014和2016可以远离服务器2012并且经由基于网络或专用连接与服务器2012通信。在实施例的一个集合中,数据库2014和2016可以驻留在存储区域网络(SAN)中。类似地,用于执行归属于服务器2012的功能的任何必要文件可以适当地本地存储在服务器2012上和/或远程存储。在实施例的一个集合中,数据库2014和2016可以包括适于响应于SQL格式化的命令来存储、更新和检索数据的关系数据库,诸如由Oracle提供的数据库。
图21是根据本公开实施例的系统环境2100的一个或多个组件的简化框图,由实施例系统的一个或多个组件提供的服务可以通过该系统环境2100作为云服务来提供。在所示实施例中,系统环境2100包括一个或多个客户端计算设备2104、2106和2108,用户可以使用它们与提供云服务的云基础设施系统2102交互。客户端计算设备可以被配置为操作客户端应用,诸如web浏览器、专有客户端应用(例如,Oracle Forms)或某个其它应用,客户端计算设备的用户可以使用这些应用与云基础设施系统2102交互以使用由云基础设施系统2102提供的服务。
应当认识到的是,图中描绘的云基础设施系统2102可以具有除所描绘的那些以外的其它组件。另外,图中所示的实施例只是可以结合本发明实施例的云基础设施系统的一个示例。在一些其它实施例中,云基础设施系统2102可以具有比图中所示更多或更少的组件,可以组合两个或更多个组件,或者可以具有组件的不同配置或布置。
客户端计算设备2104、2106和2108可以是类似于上面针对2002、2004、2006和2008所描述的那些设备。
虽然示例性系统环境2100被示为具有三个客户端计算设备,但是可以支持任何数量的客户端计算设备。其它设备(诸如带有传感器的设备等)可以与云基础设施系统2102交互。
(一个或多个)网络2110可以促进客户端2104、2106和2108与云基础设施系统2102之间的通信和数据交换。每个网络可以是本领域技术人员熟悉的任何类型的网络,其可以支持使用多种商业可用协议中的任何一种的数据通信,包括以上针对(一个或多个)网络410所描述的那些。
云基础设施系统2102可以包括一个或多个计算机和/或服务器,其可以包括以上针对服务器412所描述的那些。
在某些实施例中,由云基础设施系统提供的服务可以包括按需对云基础设施系统的用户可用的许多服务,诸如在线数据存储和备份解决方案、基于web的电子邮件服务、被托管的办公室套件和文档协作服务、数据库处理、受管理的技术支持服务等。由云基础设施系统提供的服务可以动态扩展,以满足其用户的需要。由云基础设施系统提供的服务的具体实例化在本文中被称为“服务实例”。一般而言,从云服务提供商的系统经由通信网络(诸如互联网)对用户可用的任何服务被称为“云服务”。通常,在公共云环境中,构成云服务提供商的系统的服务器和系统与客户自己的室内(on-premises)服务器和系统不同。例如,云服务提供商的系统可以托管应用,并且用户可以经由诸如互联网的通信网络按需订购和使用应用。
在一些示例中,计算机网络云基础设施中的服务可以包括受保护的计算机网络对存储、托管的数据库、托管的web服务器、软件应用或由云供应商向用户提供的其它服务的访问,或以其它方式如本领域中已知的。例如,服务可以包括通过互联网对云上的远程存储装置进行密码保护的访问。作为另一个示例,服务可以包括基于web服务的托管的关系数据库和脚本语言中间件引擎,供联网的开发人员私人使用。作为另一个示例,服务可以包括对托管在云供应商的网站上的电子邮件软件应用的访问。
在某些实施例中,云基础设施系统2102可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式递送给客户的应用、中间件和数据库服务产品套件。方式。这种云基础设施系统的示例是由本受让人提供的Oracle公共云。
在各种实施例中,云基础设施系统2102可以适于自动供应、管理和跟踪客户对由云基础设施系统2102提供的服务的订阅。云基础设施系统2102可以经由不同的部署模型提供云服务。例如,可以依据公共云模型提供服务,其中云基础设施系统2102由销售云服务的组织拥有(例如,由Oracle拥有),并且服务对一般公众或不同行业的企业可用。作为另一个示例,可以依据私有云模型提供服务,其中云基础设施系统2102仅针对单个组织操作,并且可以为该组织内的一个或多个实体提供服务。云服务还可以依据社区云模型提供,其中云基础设施系统2102和由云基础设施系统2102提供的服务由相关社区中的若干组织共享。云服务还可以依据混合云模型提供,该混合云模型是两个或更多个不同模型的组合。
在一些实施例中,由云基础设施系统2130提供的服务可以包括在软件即服务(SaaS)类别、平台即服务(PaaS)类别、基础设施即服务(IaaS)类别下提供的一个或多个服务,或其它类别的服务,包括混合服务。客户经由订阅订单可以订购由云基础设施系统2102提供的一个或多个服务。云基础设施系统2102然后执行处理以在客户的订阅订单中提供服务。
在一些实施例中,由云基础设施系统2102提供的服务可以包括但不限于应用服务、平台服务和基础设施服务。在一些示例中,应用服务可以由云基础设施系统2102经由SaaS平台提供。SaaS平台可以被配置为提供属于SaaS类别的云服务。例如,SaaS平台可以提供在集成开发和部署平台上构建和递送点播应用套件的能力。SaaS平台可以管理和控制用于提供SaaS服务的底层软件和基础设施。通过利用由SaaS平台提供的服务,客户可以利用在云基础设施系统上执行的应用。客户可以获取应用服务,而无需客户购买的单独许可证和支持。可以提供各种不同的SaaS服务。示例包括但不限于为大型组织提供销售绩效管理、企业集成和灵活性的解决方案的服务。
在一些实施例中,平台服务可以由云基础设施系统2102经由PaaS平台提供。PaaS平台可以被配置为提供属于PaaS类别的云服务。平台服务的示例可以包括但不限于使组织(诸如Oracle)能够在共享的公共体系架构上整合现有应用以及充分利用平台提供的共享服务构建新应用的能力的服务。PaaS平台可以管理和控制用于提供PaaS服务的底层软件和基础设施。客户可以获取由云基础设施系统2102提供的PaaS服务,而无需客户购买单独的许可证和支持。平台服务的示例包括但不限于“Oracle Java云服务(JCS)”、“Oracle数据库云服务(DBCS)”等。
通过利用由PaaS平台提供的服务,客户可以采用由云基础设施系统支持的编程语言和工具,并且还控制所部署的服务。在一些实施例中,由云基础设施系统提供的平台服务可以包括数据库云服务、中间件云服务(例如,Oracle Fusion Middleware服务)和Java云服务。在一个实施例中,数据库云服务可以支持共享服务部署模型,其使得组织能够汇集数据库资源并且以数据库云的形式向客户提供数据库即服务。中间件云服务可以为客户提供开发和部署各种云应用的平台,并且Java云服务可以为客户提供在云基础设施系统中部署Java应用的平台。
各种不同的基础设施服务可以由云基础设施系统中的IaaS平台提供。基础设施服务促进底层计算资源(诸如存储装置、网络和其它基础计算资源)的管理和控制,以便客户利用由SaaS平台和PaaS平台提供的服务。
在某些实施例中,云基础设施系统2102还可以包括基础设施资源2130,用于提供用于向云基础设施系统的客户提供各种服务的资源。在一个实施例中,基础设施资源2130可以包括硬件(诸如服务器、存储装置和联网资源)的预集成和优化的组合,以执行由PaaS平台和SaaS平台提供的服务。
在一些实施例中,云基础设施系统2102中的资源可以由多个用户共享并且根据需求动态地重新分配。此外,资源可以分配给不同时区的用户。例如,云基础设施系统2130可以使第一时区中的第一用户集合能够利用云基础设施系统的资源达指定的小时数,然后使得能够将相同的资源重新分配给位于不同时区中的另一用户集合,从而最大化资源的利用。
在某些实施例中,可以提供由云基础设施系统2102的不同组件或模块以及由云基础设施系统2102提供的服务共享的多个内部共享服务2132。这些内部共享服务可以包括但不限于安全和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高可用性、备份和恢复服务、用于启用云支持的服务、电子邮件服务、通知服务、文件传输服务等。
在某些实施例中,云基础设施系统2102可以在云基础设施系统中提供云服务(例如,SaaS、PaaS和IaaS服务)的综合管理。在一个实施例中,云管理功能可以包括用于供给、管理和跟踪由云基础设施系统2102接收到的客户订阅等的能力。
在一个实施例中,如图中所描绘的,云管理功能性可以由一个或多个模块(诸如订单管理模块2120、订单编排模块2122、订单供应模块2124、订单管理和监视模块2126,以及身份管理模块2128)提供。这些模块可以包括一个或多个计算机和/或服务器或使用其来提供,这些计算机和/或服务器可以是通用计算机、专用服务器计算机、服务器群、服务器集群或任何其它适当的布置和/或组合。
在示例性操作2134中,使用诸如客户端设备2104、2106或2108之类的客户端设备的客户可以通过请求由云基础设施系统2102提供的一个或多个服务并对由云基础设施系统2102提供的一个或多个服务的订阅下订单来与云基础设施系统2102交互。在某些实施例中,客户可以访问云用户接口(UI)、云UI 2112、云UI 2114和/或云UI2116并经由这些UI下订阅订单。由云基础设施系统2102响应于客户下订单而接收的订单信息可以包括识别客户的信息以及客户打算订阅的由云基础设施系统2102提供的一个或多个服务。
在客户已经下订单之后,经由云UI 2112、2114和/或2116接收订单信息。
在操作2136处,订单被存储在订单数据库2118中。订单数据库2118可以是由云基础设施系统操作并与其它系统元素结合操作的几个数据库之一。
在操作2138处,订单信息被转发到订单管理模块2120。在一些情况下,订单管理模块2120可以被配置为执行与订单相关的计费和记账功能,诸如核实订单,以及在核实后预订订单。
在操作2140处,关于订单的信息被传送到订单编排模块2122。订单编排模块2122可以利用订单信息来编排为客户下的订单供应服务和资源。在一些情况下,订单编排模块2122可以使用订单供应模块2124的服务来编排资源的供应以支持订阅的服务。
在某些实施例中,订单编排模块2122使得能够管理与每个订单关联的过程并且应用逻辑来确定订单是否应当继续进行供应。在操作2142处,在接收到针对新订阅的订单后,订单编排模块2122向订单供应模块2124发送请求以分配资源并配置履行订阅订单所需的那些资源。订单供应模块2124使得能够为客户订购的服务分配资源。订单供应模块2124在由云基础设施系统2100提供的云服务和用于供应资源以提供所请求的服务的物理实现层之间提供抽象级别。订单编排模块2122因此可以与实施方式细节隔离,诸如服务和资源是否实际上是在运行中供应的还是预先供应并且仅在请求后分配/指派。
在操作2144处,一旦服务和资源被供应,所提供服务的通知可以由云基础设施系统2102的订单供应模块2124在客户端设备2104、2106和/或2108上发送给客户。
在操作2146处,客户的订阅订单可以由订单管理和监视模块2126管理和跟踪。在一些情况下,订单管理和监视模块2126可以被配置为收集订阅订单中服务的使用统计信息,例如使用的存储量、传送的数据量、用户数量,以及系统正常运行时间和系统停机时间量。
在某些实施例中,云基础设施系统2100可以包括身份管理模块2128。身份管理模块2128可以被配置为提供身份服务,诸如云基础设施系统2100中的访问管理和授权服务。在一些实施例中,身份管理模块2128可以控制关于希望利用由云基础设施系统2102提供的服务的客户的信息。这种信息可以包括认证这些客户的身份的信息和描述这些客户被授权相对于各种系统资源(例如,文件、目录、应用、通信端口、存储器段等)执行哪些动作的信息。身份管理模块2128还可以包括关于每个客户的描述性信息以及关于如何和由谁来访问和修改描述性信息的管理。
图22图示了示例性计算机系统2200,其中可以实现本发明的各种实施例。系统2200可以被用于实现上述任何计算机系统。如图所示,计算机系统2200包括处理单元2204,其经由总线子系统2202与多个外围子系统通信。这些外围子系统可以包括处理加速单元2206、I/O子系统2208、存储子系统2218和通信子系统2224。存储子系统2218包括有形计算机可读存储介质2222和系统存储器2210。
总线子系统2202提供用于让计算机系统2200的各种组件和子系统按意图彼此通信的机制。虽然总线子系统2202被示意性地示出为单条总线,但是总线子系统的替代实施例可以利用多条总线。总线子系统2202可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用任何各种总线体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围组件互连(PCI)总线,其可以被实现为按IEEE P1386.1标准制造的Mezzanine总线。
可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元2204控制计算机系统2200的操作。一个或多个处理器可以被包括在处理单元2204中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元2204可以被实现为一个或多个独立的处理单元2232和/或2234,其中在每个处理单元中包括单核或多核处理器。在其它实施例中,处理单元2204也可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
在各种实施例中,处理单元2204可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,要被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器2204中和/或存储子系统2218中。通过适当的编程,(一个或多个)处理器2204可以提供上述各种功能。计算机系统2200可以附加地包括处理加速单元2206,其可以包括数字信号处理器(DSP)、专用处理器,等等。
I/O子系统2208可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的定点设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、键盘、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括,例如,运动感测和/或手势识别设备,诸如的Microsoft运动传感器,其使得用户能够通过使用手势和语音命令的自然用户接口控制诸如的Microsoft360游戏控制器的输入设备并与之交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或做出菜单选择时的“眨眼”)并且将眼睛姿势转换为到输入设备(例如,Google)中的输入的Google眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,导航器)交互的语音识别感测设备。
用户接口输入设备也可以包括,但不限于,三维(3D)鼠标、操纵杆或指向棒、游戏面板和绘图板,以及音频/视频设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3D扫描仪、3D打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括,例如,医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层摄影术、医疗超声设备。用户接口输入设备也可以包括,例如,诸如MIDI键盘、数字乐器等的音频输入设备。
用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器,等等。显示子系统可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备、投影设备、触摸屏,等等。一般而言,术语“输出设备”的使用意在包括用于从计算机系统2200向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括,但不限于,可视地传达文字、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备,以及调制解调器。
计算机系统2200可以包括包含软件元素、被示为当前位于系统存储器2210中的存储子系统2218。系统存储器2210可以存储可加载并且可在处理单元2204上执行的程序指令,以及在这些程序的执行期间所产生的数据。
取决于计算机系统2200的配置和类型,系统存储器2210可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器,等等)。RAM通常包含可以被处理单元2204立即访问和/或目前正被处理单元2204操作和执行的数据和/或程序模块。在一些实现中,系统存储器2210可以包括多种不同类型的存储器,例如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实现中,诸如在启动期间,包含有助于在计算机系统2200的元件之间传送信息的基本例程的基本输入/输出系统(BIOS),通常可以被存储在ROM中。作为示例,但不是限制,系统存储器2210也示出了可以包括客户端应用、web浏览器、中间层应用、关系数据库管理系统(RDBMS)等的应用程序2212,程序数据2214,以及操作系统2216。作为示例,操作系统2216可以包括各种版本的MicrosoftApple和/或Linux操作系统、各种可商业获得的或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、Google操作系统等)和/或诸如iOS、Phone、OS、10OS和OS操作系统的移动操作系统。
存储子系统2218也可以提供用于存储提供一些实施例的功能的基本编程和数据结构的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子系统2218中。这些软件模块或指令可以被处理单元2204执行。存储子系统2218也可以提供用于存储根据本发明被使用的数据的储存库。
存储子系统2218也可以包括可以被进一步连接到计算机可读存储介质2222的计算机可读存储介质读取器2220。与系统存储器2210一起并且,可选地,与其相结合,计算机可读存储介质2222可以全面地表示用于临时和/或更持久地包含、存储、发送和检索计算机可读信息的远程、本地、固定和/或可移动存储设备加存储介质。
包含代码或代码的部分的计算机可读存储介质2222也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于,以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。这可以包括有形的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学储存器、磁带盒、磁带、磁盘储存器或其它磁存储设备,或者其它有形的计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输,或者可以被用来发送期望信息并且可以被计算系统2200访问的任何其它介质。
举例来说,计算机可读存储介质2222可以包括从不可移动的非易失性磁介质读取或写到其的硬盘驱动器、从可移动的非易失性磁盘读取或写到其的磁盘驱动器、以及从可移动的非易失性光盘,诸如CD ROM、DVD和盘或其它光学介质,读取或写到其的光盘驱动器。计算机可读存储介质2222可以包括,但不限于,驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字音频带,等等。计算机可读存储介质2222也可以包括基于非易失性存储器的固态驱动器(SSD),诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等,基于易失性存储器的SSD,诸如固态RAM、动态RAM、静态RAM,基于DRAM的SSD,磁阻RAM(MRAM)SSD,以及使用基于DRAM和闪存存储器的SSD的组合的混合SSD。盘驱动器及其关联的计算机可读介质可以为计算机系统2200提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。
通信子系统2224提供到其它计算机系统和网络的接口。通信子系统2224用作用于从其它系统接收数据和从计算机系统2200向其它系统发送数据的接口。例如,通信子系统2224可以使计算机系统2200能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统2224可以包括用于访问无线语音和/或数据网络的射频(RF)收发器组件(例如,使用蜂窝电话技术,诸如3G、4G或EDGE(用于全球演进的增强型数据速率)的先进数据网络技术,WiFi(IEEE1202.11系列标准),或其它移动通信技术,或其任意组合)、全球定位系统(GPS)接收器组件和/或其它组件。在一些实施例中,作为无线接口的附加或者替代,通信子系统2224可以提供有线网络连接(例如,以太网)。
在一些实施例中,通信子系统2224也可以代表可以使用计算机系统2200的一个或多个用户接收结构化和/或非结构化数据馈送2226、事件流2228、事件更新2230等形式的输入通信。
举例来说,通信子系统2224可以被配置为实时地从社交网络和/或其它通信服务的用户接收数据馈送2226,诸如馈送、更新、诸如丰富站点摘要(RSS)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
此外,通信子系统2224也可以被配置为接收连续数据流形式的数据,这可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流2228和/或事件更新2230。产生连续数据的应用的示例可以包括,例如,传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视,等等。
通信子系统2224也可以被配置为向一个或多个数据库输出结构化和/或非结构化数据馈送2226、事件流2228、事件更新2230,等等,这一个或多个数据库可以与耦合到计算机系统2200的一个或多个流式数据源计算机通信。
计算机系统2200可以是各种类型之一,包括手持便携式设备(例如,蜂窝电话、计算平板电脑、PDA)、可穿戴设备(例如,Google头戴式显示器)、PC、工作站、大型机、信息站,服务器机架,或任何其它数据处理系统。
由于计算机和网络的不断变化的本质,在图中绘出的计算机系统2200的描述仅仅要作为具体的示例。具有比图中绘出的系统更多或更少组件的许多其它配置是可能的。例如,定制的硬件也可以被使用和/或特定的元素可以用硬件、固件、软件(包括applets)或其组合来实现。另外,也可以采用到诸如网络输入/输出设备之类的其它计算设备的连接。基于本文提供的公开内容和示教,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
在前述的说明书中,本发明的各方面参考其具体实施例进行了描述,但本领域技术人员将认识到的是,本发明不限于此。上述发明的各个特征和方面可以被单独或联合使用。此外,在不脱离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的那些之外的任何数目的环境和应用中被使用。相应地,本说明书和附图应当被认为是说明性而不是限制性的。
Claims (20)
1.一种用于定义机器学习解决方案的计算机实现的方法,所述方法包括:
接收描述要通过生成机器学习解决方案来解决的问题的第一输入;
将第一输入改写成一个或多个文本片段;
至少部分地基于对所述一个或多个文本片段的分类来确定第一输入的意图以创建机器学习体系架构;
将所述一个或多个文本片段与一个或多个机器学习模型的一个或多个机器学习框架相关,所述相关包括分析具有所述一个或多个文本片段的所述一个或多个机器学习框架的元数据;
经由显示器和音频输出中的一个或多个呈现所述一个或多个机器学习模型;
接收所述一个或多个机器学习模型的选择,其中所述选择选自所述一个或多个机器学习模型;
接收识别用于生成机器学习体系架构的数据源的第二输入;
接收用于机器学习体系架构的一个或多个约束的第三输入;
至少部分地基于选择的所述一个或多个机器学习模型、识别数据源的第二输入和识别所述一个或多个约束的第三输入为机器学习体系架构生成多个代码;以及
将指定生成的代码的元数据存储在存储器中。
2.如权利要求1所述的计算机实现的方法,还包括为机器学习体系架构提供一个或多个服务,所述一个或多个服务包括监视、日志记录和提醒。
3.如权利要求1所述的计算机实现的方法,还包括接收识别如何呈现机器学习解决方案的第四输入。
4.如权利要求1所述的计算机实现的方法,还包括:
分析所述一个或多个约束以至少部分地基于优化所述一个或多个约束来生成用于机器学习体系架构的第二多个代码;
生成优化的解决方案;以及
显示优化的解决方案。
5.如权利要求1所述的计算机实现的方法,还包括经由智能助理接口部署机器学习体系架构。
6.如权利要求1所述的计算机实现的方法,其中第一输入包括听觉输入、文本输入和图形用户界面输入中的至少一个。
7.如权利要求1所述的计算机实现的方法,其中所述一个或多个机器学习模型包括分类器模型、推荐器模型和强化学习模型中的至少一个。
8.如权利要求1所述的计算机实现的方法,其中所述一个或多个约束包括资源、位置、安全性和隐私中的至少一个。
9.一种有形地实施在非暂态机器可读存储介质中的计算机程序产品,包括被配置为使数据处理装置执行用于定义机器学习解决方案的操作的指令,所述操作包括:
接收描述要通过生成机器学习解决方案来解决的问题的第一输入;
将第一输入改写成一个或多个文本片段;
至少部分地基于所述一个或多个文本片段来确定第一输入的意图以创建机器学习体系架构;
将所述一个或多个文本片段与一个或多个机器学习模型的一个或多个机器学习框架相关,所述相关包括分析具有所述一个或多个文本片段的所述一个或多个机器学习框架的元数据;
经由显示器和音频输出中的一个或多个呈现所述一个或多个机器学习模型;
接收所述一个或多个机器学习模型的选择,其中所述选择选自所述一个或多个机器学习模型;
接收识别用于生成机器学习体系架构的数据源的第二输入;
接收用于机器学习体系架构的一个或多个约束的第三输入;
至少部分地基于选择的所述一个或多个机器学习模型、识别数据源的第二输入和识别所述一个或多个约束的第三输入为机器学习体系架构生成多个代码;以及
将指定生成的代码的元数据存储在存储器中。
10.如权利要求9所述的计算机程序产品,包括被配置为使数据处理装置执行另外的操作的指令,所述另外的操作包括为机器学习体系架构提供一个或多个服务,所述一个或多个服务包括监视、日志记录和提醒。
11.如权利要求9所述的计算机程序产品,包括被配置为使数据处理装置执行另外的操作的指令,所述另外的操作包括接收识别如何呈现机器学习解决方案的第四输入。
12.如权利要求9所述的计算机程序产品,包括被配置为使数据处理装置执行另外的操作的指令,所述另外的操作包括:
分析所述一个或多个约束以至少部分地基于优化所述一个或多个约束来生成用于机器学习体系架构的第二多个代码;
生成优化的解决方案;以及
显示由所述第二多个代码生成的优化的解决方案。
13.如权利要求9所述的计算机程序产品,包括被配置为使数据处理装置执行另外的操作的指令,所述另外的操作包括经由智能助理接口部署机器学习体系架构。
14.如权利要求9所述的计算机程序产品,其中第一输入包括听觉输入、文本输入和图形用户界面输入中的至少一个。
15.如权利要求9所述的计算机程序产品,其中所述一个或多个机器学习模型包括分类器模型、推荐器模型和强化学习模型中的至少一个。
16.一种用于定义机器学习解决方案的系统,包括:
一个或多个数据处理器;以及
包含指令的非暂态计算机可读存储介质,所述指令在所述一个或多个数据处理器上执行时使所述一个或多个数据处理器执行包括以下的操作:
接收描述要通过生成机器学习解决方案来解决的问题的第一输入;
将第一输入改写成一个或多个文本片段;
至少部分地基于对所述一个或多个文本片段的分类来确定第一输入的意图以创建机器学习体系架构;
将所述一个或多个文本片段与一个或多个机器学习模型的一个或多个机器学习框架相关,所述相关包括分析具有所述一个或多个文本片段的所述一个或多个机器学习框架的元数据;
经由显示器和音频输出中的一个或多个呈现所述一个或多个机器学习模型;
接收所述一个或多个机器学习模型的选择,其中所述选择选自所述一个或多个机器学习模型;
接收识别用于生成机器学习体系架构的数据源的第二输入;
接收用于机器学习体系架构的一个或多个约束的第三输入;
至少部分地基于选择的所述一个或多个机器学习模型、识别数据源的第二输入和识别所述一个或多个约束的第三输入为机器学习体系架构生成多个代码;以及
将指定生成的代码的元数据存储在存储器中。
17.如权利要求16所述的系统,其中非暂态计算机可读存储介质包括另外的指令,所述另外的指令在所述一个或多个数据处理器上执行时使所述一个或多个数据处理器执行另外的操作,所述另外的操作包括为机器学习体系架构提供一个或多个服务,所述一个或多个服务包括监视、日志记录和提醒。
18.如权利要求16所述的系统,其中非暂态计算机可读存储介质包括另外的指令,所述另外的指令在所述一个或多个数据处理器上执行时使所述一个或多个数据处理器执行另外的操作,所述另外的操作包括接收识别如何呈现机器学习解决方案的第四输入。
19.如权利要求16所述的系统,其中非暂态计算机可读存储介质包括另外的指令,所述另外的指令在所述一个或多个数据处理器上执行时使所述一个或多个数据处理器执行另外的操作,所述另外的操作包括:
分析所述一个或多个约束以至少部分地基于优化所述一个或多个约束来生成用于机器学习体系架构的第二多个代码;
生成优化的解决方案;以及
显示由所述第二多个代码生成的优化的解决方案。
20.如权利要求16所述的系统,其中非暂态计算机可读存储介质包括另外的指令,所述另外的指令在所述一个或多个数据处理器上执行时使所述一个或多个数据处理器执行另外的操作,所述另外的操作包括经由智能助手接口部署机器学习体系架构。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962900537P | 2019-09-14 | 2019-09-14 | |
US62/900,537 | 2019-09-14 | ||
US16/893,193 | 2020-06-04 | ||
US16/893,193 US11562267B2 (en) | 2019-09-14 | 2020-06-04 | Chatbot for defining a machine learning (ML) solution |
PCT/US2020/049429 WO2021050382A1 (en) | 2019-09-14 | 2020-09-04 | Chatbot for defining a machine learning (ml) solution |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114556322A true CN114556322A (zh) | 2022-05-27 |
Family
ID=72560938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080072143.7A Pending CN114556322A (zh) | 2019-09-14 | 2020-09-04 | 用于定义机器学习(ml)解决方案的聊天机器人 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11562267B2 (zh) |
EP (1) | EP4028903A1 (zh) |
CN (1) | CN114556322A (zh) |
WO (1) | WO2021050382A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11921815B2 (en) | 2019-09-14 | 2024-03-05 | Oracle International Corporation | Techniques for the automated customization and deployment of a machine learning application |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2569335B (en) * | 2017-12-13 | 2022-07-27 | Sage Global Services Ltd | Chatbot system |
US11637792B2 (en) * | 2019-04-19 | 2023-04-25 | Oracle International Corporation | Systems and methods for a metadata driven integration of chatbot systems into back-end application services |
US20200356866A1 (en) * | 2019-05-08 | 2020-11-12 | International Business Machines Corporation | Operative enterprise application recommendation generated by cognitive services from unstructured requirements |
US11580131B2 (en) * | 2019-09-01 | 2023-02-14 | Honeywell International Inc. | Methods and apparatus for monitoring configurable performance indicators |
US11562267B2 (en) | 2019-09-14 | 2023-01-24 | Oracle International Corporation | Chatbot for defining a machine learning (ML) solution |
US11481417B2 (en) * | 2019-11-06 | 2022-10-25 | Servicenow, Inc. | Generation and utilization of vector indexes for data processing systems and methods |
US11455357B2 (en) | 2019-11-06 | 2022-09-27 | Servicenow, Inc. | Data processing systems and methods |
US11468238B2 (en) | 2019-11-06 | 2022-10-11 | ServiceNow Inc. | Data processing systems and methods |
KR20210085159A (ko) * | 2019-12-30 | 2021-07-08 | 삼성전자주식회사 | 서버 장치와 데이터를 송수신하는 전자 장치 |
WO2021144750A1 (en) * | 2020-01-17 | 2021-07-22 | Bitonic Technology Labs Private Limited | Method and system for identifying ideal virtual assitant bots for providing response to user queries |
US11462220B2 (en) * | 2020-03-04 | 2022-10-04 | Accenture Global Solutions Limited | Infrastructure automation platform to assist in performing actions in response to tasks |
KR102445519B1 (ko) * | 2020-06-25 | 2022-09-21 | (주)아크릴 | 대화형 지능 서비스 제공 챗봇 제작 시스템 및 방법 |
EP4172824A4 (en) * | 2020-06-25 | 2024-04-03 | Hitachi Vantara LLC | AUTOMATED MACHINE LEARNING: UNIFIED, CUSTOMIZABLE AND EXTENDABLE SYSTEM |
US11694289B2 (en) * | 2020-06-30 | 2023-07-04 | Cerner Innovation, Inc. | System and method for conversion achievement |
US11196548B1 (en) * | 2020-07-02 | 2021-12-07 | International Business Machines Corporation | Hypervisor protected key |
US11875362B1 (en) * | 2020-07-14 | 2024-01-16 | Cisco Technology, Inc. | Humanoid system for automated customer support |
US20220051160A1 (en) * | 2020-08-15 | 2022-02-17 | Yevgeniy Ivanovich Shadrin | Applied artificial intelligence system and method for constraints discovery and compliance using conversations |
US11551674B2 (en) * | 2020-08-18 | 2023-01-10 | Bank Of America Corporation | Multi-pipeline language processing platform |
US20220075703A1 (en) * | 2020-09-09 | 2022-03-10 | Jpmorgan Chase Bank, N.A. | Method and apparatus for generating an architecture weighted scoring model |
US11336507B2 (en) * | 2020-09-30 | 2022-05-17 | Cisco Technology, Inc. | Anomaly detection and filtering based on system logs |
US11948003B2 (en) * | 2020-11-04 | 2024-04-02 | RazorThink, Inc. | System and method for automated production and deployment of packaged AI solutions |
US11620473B1 (en) * | 2020-12-03 | 2023-04-04 | Amazon Technologies, Inc. | Pre-processing raw data in user networks to create training data for service provider networks |
WO2022147359A1 (en) * | 2020-12-31 | 2022-07-07 | Yixue Education Inc. | Adaptive learning systems utilizing machine learning techniques |
US11861918B2 (en) * | 2021-01-13 | 2024-01-02 | Dell Products L.P. | Image analysis for problem resolution |
US11373131B1 (en) * | 2021-01-21 | 2022-06-28 | Dell Products L.P. | Automatically identifying and correcting erroneous process actions using artificial intelligence techniques |
US20240028312A1 (en) * | 2021-01-26 | 2024-01-25 | Akkio, Inc. | Methods and systems for automatically generating and executing computer code using a natural language description of a data manipulation to be performed on a data set |
US20220237626A1 (en) * | 2021-01-27 | 2022-07-28 | Cisco Technology, Inc. | Self-provisioning humanoid for automated customer support |
US11729202B2 (en) * | 2021-03-17 | 2023-08-15 | Butchershop Creative, LLC | Reducing project failure probability through generation, evaluation, and/or dependency structuring of a critical event object |
CN112906907B (zh) * | 2021-03-24 | 2024-02-23 | 成都工业学院 | 一种机器学习管道模型分层化管理和分发的方法及系统 |
US11657112B2 (en) * | 2021-04-21 | 2023-05-23 | Dell Products L.P. | Artificial intelligence-based cache distribution |
US11451496B1 (en) * | 2021-04-30 | 2022-09-20 | Microsoft Technology Licensing, Llc | Intelligent, personalized, and dynamic chatbot conversation |
US20220405483A1 (en) * | 2021-06-18 | 2022-12-22 | International Business Machines Corporation | Anticipatory dialog design for question answering with a relational database |
US20230005511A1 (en) * | 2021-06-30 | 2023-01-05 | Oracle International Corporation | Data tape media quality validation and action recommendation |
US11935570B2 (en) | 2021-06-30 | 2024-03-19 | Oracle International Corporation | Data tape quality analysis |
US20230008218A1 (en) * | 2021-07-08 | 2023-01-12 | International Business Machines Corporation | Automated system for customer support |
US20230008868A1 (en) * | 2021-07-08 | 2023-01-12 | Nippon Telegraph And Telephone Corporation | User authentication device, user authentication method, and user authentication computer program |
US11836120B2 (en) | 2021-07-23 | 2023-12-05 | Oracle International Corporation | Machine learning techniques for schema mapping |
US11645069B2 (en) * | 2021-08-26 | 2023-05-09 | International Business Machines Corporation | Synchronizing access controls for audited code development |
US11397808B1 (en) * | 2021-09-02 | 2022-07-26 | Confluera, Inc. | Attack detection based on graph edge context |
US11989517B2 (en) * | 2021-09-13 | 2024-05-21 | Sap Se | Conversational automated machine learning |
US11782964B2 (en) * | 2021-10-08 | 2023-10-10 | Adp, Inc. | Method to recommend intents based on a weighted ranked hierarchical graph |
US11531943B1 (en) | 2021-11-18 | 2022-12-20 | Slate Technologies Inc. | Intelligence driven method and system for multi-factor optimization of schedules and resource recommendations for smart construction |
WO2023091624A1 (en) * | 2021-11-21 | 2023-05-25 | Schlumberger Technology Corporation | Machine learning model deployment, management and monitoring at scale |
WO2023095078A1 (en) * | 2021-11-26 | 2023-06-01 | Jio Platforms Limited | System and method for providing a customized solution for a predefined problem |
US11711287B2 (en) * | 2021-12-08 | 2023-07-25 | Ayla Networks, Inc. | Unified recommendation engine |
US20230196248A1 (en) * | 2021-12-22 | 2023-06-22 | Fidelity Information Services, Llc | Systems and methods for improving quality of artificial intelligence model |
WO2023150673A2 (en) * | 2022-02-04 | 2023-08-10 | Mezo Inc. | Diagnosing and troubleshooting maintenance repair requests using an artificial intelligence-driven chatbot |
US11868686B2 (en) | 2022-03-04 | 2024-01-09 | Slate Technologies Inc. | System and method for manufacture and customization of construction assemblies in a computing environment |
US11907885B1 (en) * | 2022-03-29 | 2024-02-20 | Slate Technologies Inc. | System and method for computational simulation and augmented/virtual reality in a construction environment |
US11811681B1 (en) | 2022-07-12 | 2023-11-07 | T-Mobile Usa, Inc. | Generating and deploying software architectures using telecommunication resources |
US11909737B2 (en) * | 2022-07-20 | 2024-02-20 | Citizens Financial Group, Inc. | AI-driven integration platform and user-adaptive interface for business relationship orchestration |
US11973839B1 (en) * | 2022-12-30 | 2024-04-30 | Nutanix, Inc. | Microservice throttling based on learned demand predictions |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5343527A (en) | 1993-10-27 | 1994-08-30 | International Business Machines Corporation | Hybrid encryption method and system for protecting reusable software components |
US5699507A (en) | 1995-01-17 | 1997-12-16 | Lucent Technologies Inc. | Method of identifying similarities in code segments |
US7346891B2 (en) | 2002-07-05 | 2008-03-18 | Eka Systems Inc. | System and method for automating generation of an automated sensor network |
US20050102227A1 (en) | 2003-11-09 | 2005-05-12 | Aleksey Solonchev | Electronic commerce method and system utilizing integration server |
US7546222B2 (en) * | 2005-06-12 | 2009-06-09 | Infosys Technologies, Ltd. | System for performance and scalability analysis and methods thereof |
US7403949B2 (en) | 2005-08-17 | 2008-07-22 | International Business Machines Corporation | Elimination of redundant objects in storage systems |
US20070239630A1 (en) | 2006-02-28 | 2007-10-11 | International Business Machines Corporation | Method and system for allowing multiple applications to utilize customized feedback with a shared machine learning engine |
US8627287B2 (en) | 2007-11-29 | 2014-01-07 | Microsoft Corporation | Prioritizing quality improvements to source code |
US8972329B2 (en) * | 2008-05-02 | 2015-03-03 | The Board Of Trustees Of The Leland Stanford Junior University | Systems and methods for ranking nodes of a graph using random parameters |
US8630961B2 (en) | 2009-01-08 | 2014-01-14 | Mycybertwin Group Pty Ltd | Chatbots |
CN101782976B (zh) | 2010-01-15 | 2013-04-10 | 南京邮电大学 | 一种云计算环境下机器学习自动选择方法 |
US8715077B2 (en) | 2012-08-08 | 2014-05-06 | Skillz Inc. | Dynamic gameplay advertisements |
US20140180738A1 (en) | 2012-12-21 | 2014-06-26 | Cloudvu, Inc. | Machine learning for systems management |
US9306738B2 (en) | 2012-12-21 | 2016-04-05 | Microsoft Technology Licensing, Llc | Managed secure computations on encrypted data |
US9963362B2 (en) | 2013-03-15 | 2018-05-08 | Southern Methodist University | Method for electrochemical bromide and/or chloride removal |
US20150170053A1 (en) | 2013-12-13 | 2015-06-18 | Microsoft Corporation | Personalized machine learning models |
AU2015306693A1 (en) | 2014-08-25 | 2017-03-02 | Shl Us Llc | Customizable machine learning models |
US20160110657A1 (en) | 2014-10-14 | 2016-04-21 | Skytree, Inc. | Configurable Machine Learning Method Selection and Parameter Optimization System and Method |
US20160179063A1 (en) | 2014-12-17 | 2016-06-23 | Microsoft Technology Licensing, Llc | Pipeline generation for data stream actuated control |
US9384450B1 (en) | 2015-01-22 | 2016-07-05 | International Business Machines Corporation | Training machine learning models for open-domain question answering system |
US20160358099A1 (en) | 2015-06-04 | 2016-12-08 | The Boeing Company | Advanced analytical infrastructure for machine learning |
US10417577B2 (en) | 2015-06-05 | 2019-09-17 | Facebook, Inc. | Machine learning system interface |
RU2632131C2 (ru) * | 2015-08-28 | 2017-10-02 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и устройство для создания рекомендуемого списка содержимого |
US10360224B2 (en) | 2016-03-28 | 2019-07-23 | International Business Machines Corporation | Image and data capture and machine learning for automatic generation of search queries |
US20180052824A1 (en) * | 2016-08-19 | 2018-02-22 | Microsoft Technology Licensing, Llc | Task identification and completion based on natural language query |
US10936969B2 (en) | 2016-09-26 | 2021-03-02 | Shabaz Basheer Patel | Method and system for an end-to-end artificial intelligence workflow |
WO2018111270A1 (en) | 2016-12-15 | 2018-06-21 | Schlumberger Technology Corporation | Systems and methods for generating, deploying, discovering, and managing machine learning model packages |
US10410115B2 (en) * | 2017-04-28 | 2019-09-10 | Intel Corporation | Autonomous machines through cloud, error corrections, and predictions |
US11087206B2 (en) * | 2017-04-28 | 2021-08-10 | Intel Corporation | Smart memory handling and data management for machine learning networks |
US11410024B2 (en) * | 2017-04-28 | 2022-08-09 | Intel Corporation | Tool for facilitating efficiency in machine learning |
US11488008B2 (en) * | 2017-05-05 | 2022-11-01 | Intel Corporation | Hardware implemented point to point communication primitives for machine learning |
US10572773B2 (en) * | 2017-05-05 | 2020-02-25 | Intel Corporation | On the fly deep learning in machine learning for autonomous machines |
SG11201909643RA (en) * | 2017-05-05 | 2019-11-28 | Liveperson Inc | Dynamic response prediction for improved bot task processing |
US11410044B2 (en) | 2017-05-20 | 2022-08-09 | Google Llc | Application development platform and software development kits that provide comprehensive machine learning services |
US20180349499A1 (en) * | 2017-06-01 | 2018-12-06 | Facebook Inc. | Real-time Counters for Search Results on Online Social Networks |
US20180349447A1 (en) * | 2017-06-02 | 2018-12-06 | Apple Inc. | Methods and systems for customizing suggestions using user-specific information |
US11748653B2 (en) | 2017-10-05 | 2023-09-05 | DataRobot, Inc. | Machine learning abstraction |
RU2699574C2 (ru) * | 2017-11-24 | 2019-09-06 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и сервер для представления элемента рекомендуемого содержимого пользователю |
US10789509B2 (en) | 2018-01-24 | 2020-09-29 | WeR.AI, Inc. | Systems and methods for generating machine learning applications |
US10198399B1 (en) | 2018-03-06 | 2019-02-05 | KenSci Inc. | Cryptographically secure machine learning |
US10621513B2 (en) | 2018-03-08 | 2020-04-14 | Capital One Services, Llc | System and method for deploying and versioning machine learning models |
US11063759B2 (en) | 2018-04-27 | 2021-07-13 | The University Of Akron | Blockchain-empowered crowdsourced computing system |
US20190377984A1 (en) | 2018-06-06 | 2019-12-12 | DataRobot, Inc. | Detecting suitability of machine learning models for datasets |
US20200081899A1 (en) | 2018-09-12 | 2020-03-12 | Pricewaterhousecoopers Llp | Automated database schema matching |
US10657447B1 (en) | 2018-11-29 | 2020-05-19 | SparkCognition, Inc. | Automated model building search space reduction |
US20200333772A1 (en) | 2019-04-18 | 2020-10-22 | Siemens Industry Software Ltd. | Semantic modeling and machine learning-based generation of conceptual plans for manufacturing assemblies |
US11656903B2 (en) | 2019-06-25 | 2023-05-23 | Intel Corporation | Methods and apparatus to optimize workflows |
US11182432B2 (en) * | 2019-06-28 | 2021-11-23 | Microsoft Technology Licensing, Llc | Vertical processing of natural language searches |
US11562267B2 (en) | 2019-09-14 | 2023-01-24 | Oracle International Corporation | Chatbot for defining a machine learning (ML) solution |
US11663523B2 (en) | 2019-09-14 | 2023-05-30 | Oracle International Corporation | Machine learning (ML) infrastructure techniques |
US11556862B2 (en) | 2019-09-14 | 2023-01-17 | Oracle International Corporation | Techniques for adaptive and context-aware automated service composition for machine learning (ML) |
US20210133670A1 (en) | 2019-11-05 | 2021-05-06 | Strong Force Vcn Portfolio 2019, Llc | Control tower and enterprise management platform with a machine learning/artificial intelligence managing sensor and the camera feeds into digital twin |
-
2020
- 2020-06-04 US US16/893,193 patent/US11562267B2/en active Active
- 2020-09-04 EP EP20775140.5A patent/EP4028903A1/en active Pending
- 2020-09-04 WO PCT/US2020/049429 patent/WO2021050382A1/en unknown
- 2020-09-04 CN CN202080072143.7A patent/CN114556322A/zh active Pending
-
2023
- 2023-01-23 US US18/100,458 patent/US11847578B2/en active Active
- 2023-11-03 US US18/501,716 patent/US20240070494A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11921815B2 (en) | 2019-09-14 | 2024-03-05 | Oracle International Corporation | Techniques for the automated customization and deployment of a machine learning application |
Also Published As
Publication number | Publication date |
---|---|
US20240070494A1 (en) | 2024-02-29 |
US20230237348A1 (en) | 2023-07-27 |
US11847578B2 (en) | 2023-12-19 |
US11562267B2 (en) | 2023-01-24 |
EP4028903A1 (en) | 2022-07-20 |
WO2021050382A1 (en) | 2021-03-18 |
US20210081819A1 (en) | 2021-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11847578B2 (en) | Chatbot for defining a machine learning (ML) solution | |
US11663523B2 (en) | Machine learning (ML) infrastructure techniques | |
US11475374B2 (en) | Techniques for automated self-adjusting corporation-wide feature discovery and integration | |
US11775572B2 (en) | Directed acyclic graph based framework for training models | |
CN114616560A (zh) | 用于机器学习(ml)的自适应和上下文感知自动化服务组成的技术 | |
JP7387714B2 (ja) | 限られた知識ドメイン内でナレッジグラフを構築するための技術 | |
US11551105B2 (en) | Knowledge management using machine learning model trained on incident-knowledge relationship fingerprints | |
US11386176B2 (en) | Inferring logical clauses for answering complex multi-hop open domain questions | |
US20180115464A1 (en) | Systems and methods for monitoring and analyzing computer and network activity | |
US20230336340A1 (en) | Techniques for adaptive pipelining composition for machine learning (ml) | |
US20210191938A1 (en) | Summarized logical forms based on abstract meaning representation and discourse trees | |
US20220058347A1 (en) | Techniques for providing explanations for text classification | |
CN116490879A (zh) | 用于神经网络中过度预测的方法和系统 | |
EP4334832A1 (en) | Variant inconsistency attack (via) as a simple and effective adversarial attack method | |
US11526345B2 (en) | Production compute deployment and governance | |
US20240143934A1 (en) | Multi-task model with context masking | |
US20230131834A1 (en) | Techniques for trained model bias assessment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |