Method and system for target-based hyperparameter tuning
The hyperparameter tuning system addresses the limitations of existing algorithms by optimizing multiple metrics and data sets, resulting in a robust machine learning model for chatbot systems that performs well across diverse objectives and constraints.
Patent Information
- Application Number
- JP2022559629
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-03-29
- Filing Date
- 2021-03-30
- Publication Date
- 2025-05-09
- Estimated Expiration
- 2041-03-30
AI Technical Summary
Existing hyperparameter tuning algorithms for machine learning models in chatbot systems focus on a single target, ignoring other important goals and considering only a single data set, which limits their effectiveness in optimizing multiple objectives simultaneously.
A hyperparameter tuning system that performs multi-objective optimization by selecting multiple metrics with associated specification parameters, including target scores, penalty factors, and bonus factors, and adjusts hyperparameters to optimize a weighted loss function based on these metrics across multiple data sets.
The system achieves a single machine learning model that functions effectively across different data sets and multiple metrics, optimizing performance while meeting specified constraints, thereby improving the overall functionality and adaptability of chatbot systems.
Smart Images

Figure 0007674384000002 
Figure 0007674384000003 
Figure 0007674384000004
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of priority to (1) U.S. Provisional Application No. 63 / 002,159, filed March 30, 2020, (2) U.S. Provisional Application No. 63 / 119,577, filed November 30, 2020, (3) U.S. Nonprovisional Application No. 17 / 216,496, filed March 29, 2021, and (4) U.S. Nonprovisional Application No. 17 / 216,498, filed March 29, 2021. The above-referenced applications are hereby incorporated by reference in their entireties for all purposes.
[0002] FIELD OF THEINVENTION The present disclosure relates generally to chatbot systems, and more particularly to techniques for tuning hyperparameters of machine learning models used in chatbot systems. [Background technology]
[0003] background Many users around the world are on instant messaging or chat platforms to get instant responses. Organizations often use these instant messaging or chat platforms to engage in live conversations with customers (or end users). However, hiring service personnel to engage in live communication with customers or end users can be very costly for organizations. Chatbots or bots have started to be developed to simulate conversations with end users, especially over the Internet. End users can communicate with the bots through messaging apps that the end users already have installed and are using. Intelligent bots, generally driven by artificial intelligence (AI), can communicate more intelligently and contextually in live conversations, thus enabling more natural conversations between the bot and the end user for an improved conversational experience. Instead of the end user learning a fixed set of keywords or commands that the bot knows how to respond to, an intelligent bot can understand the end user's intent based on the end user's utterances in natural language and respond accordingly.
[0004] Typically, individual bots are trained as classifiers, employing models that predict or infer the class or category of an input from a set of classes or categories. While creating a machine learning model, the parameters of the model must be determined, which define the architecture of the model. Such parameters are called the hyperparameters of the model. The process of determining the ideal settings of the hyperparameters, i.e., the values that should be assigned to each hyperparameter of the model, is called hyperparameter tuning.
[0005] A standard hyperparameter tuning algorithm performs hyperparameter tuning operations with a single objective (e.g., model accuracy) under consideration. To achieve this objective, the hyperparameter tuning algorithm searches for the best hyperparameter settings that optimize the single objective. Thus, the model is tuned to optimize the single objective. For different objectives, different models must be trained, each of which is tuned to optimize the corresponding objective.
[0006] The embodiments described herein address these and other problems, both individually and collectively. Summary of the Invention [Means for solving the problem]
[0007] overview Techniques (e.g., methods, systems, non-transitory computer-readable media storing code or instructions executable by one or more processors) for tuning hyperparameters of machine learning models used in chatbot systems are provided. Various embodiments are described herein, including methods, systems, non-transitory computer-readable storage media storing programs, code, or instructions executable by one or more processors, etc.
[0008] According to one aspect of the disclosure, a method is provided for tuning a set of hyperparameters of a machine learning model used in a chatbot system. A plurality of metrics for which hyperparameters of the machine learning model are to be tuned are selected. Each metric is associated with a plurality of specification parameters including a target score, a penalty factor, and a bonus factor. The plurality of specification parameters are configured according to a first criterion for each metric. The machine learning model is evaluated using one or more validation data sets to obtain a metric score. A weighted loss function is formulated based on the difference between the metric score and the target score for each metric, the penalty factor, or the bonus factor. The hyperparameters associated with the machine learning model are adjusted to optimize the weighted loss function. In response to the weighted loss function being optimized, the machine learning model is provided as a validated machine learning model.
[0009] According to one aspect of the present disclosure, a system is provided that includes one or more data processors and a non-transitory computer-readable storage medium containing instructions that, when executed, cause the one or more data processors to perform some or all of one or more of the methods described herein.
[0010] Another aspect of the present disclosure provides a computer program product tangibly embodied in a non-transitory machine-readable storage medium that includes instructions configured to cause one or more data processors to perform all or a portion of one or more of the methods described herein.
[0011] The foregoing, together with other features and embodiments, will become more apparent with reference to the following specification, claims, and accompanying drawings. [Brief description of the drawings]
[0012] [Figure 1] 1 is a simplified block diagram of a distributed environment incorporating an illustrative embodiment; [Diagram 2]FIG. 2 illustrates exemplary types of hyperparameters according to various embodiments. [Diagram 3] FIG. 2 illustrates exemplary types of metrics in accordance with various embodiments. [Figure 4] FIG. 1 illustrates a hyperparameter tuning system in accordance with various embodiments. [Diagram 5] FIG. 2 illustrates an example set of specifications associated with a metric, according to various embodiments. [Figure 6] 1 is a flowchart illustrating a training process performed by a hyperparameter tuning system in accordance with various embodiments. [Figure 7] 1 is a flowchart illustrating a validation process performed by a hyperparameter tuning system in accordance with various embodiments. [Figure 8] 1 shows a simplified diagram of a distributed system for implementing various embodiments. [Figure 9] FIG. 1 is a simplified block diagram of one or more components of a system environment in which services provided by one or more components of an embodiment system may be offered as cloud services, according to various embodiments. [Figure 10] 1 illustrates an exemplary computer system that can be used to implement various embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0013] Detailed Description In the following description, for purposes of explanation, specific details are set forth in order to provide a thorough understanding of particular inventive embodiments. It will be apparent, however, that various embodiments may be practiced without these specific details. The figures and description are not intended to be limiting. The word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs.
[0014] Preface A digital assistant is an artificial intelligence-driven interface that helps users accomplish various tasks in natural language conversation. For each digital assistant, customers can assemble one or more skills. Skills (also described herein as chatbots, bots, or skillbots) are individual bots that focus on a specific type of task, such as tracking inventory, submitting time cards, and creating expense reports. When an end user engages with a digital assistant, the digital assistant evaluates the end user input and routes the conversation to and from the appropriate chatbot. Digital assistants can be made available to end users through various channels, such as FACEBOOK® Messenger, SKYPE MOBILE® Messenger, or Short Message Service (SMS). Channels route chats back and forth from the end user to the digital assistant and its various chatbots over various messaging platforms. Channels may also support user-agent escalation, event-triggered conversations, and testing.
[0015] Intents allow a chatbot to understand what a user wants it to do. Intents consist of a sequence of typical user requests and statements, also referred to as utterances (e.g., get account balance, make a purchase, etc.). As used herein, an utterance or message may refer to a set of words (e.g., one or more sentences) exchanged during a conversation with a chatbot. An intent may be created by providing a name that indicates some user action (e.g., order a pizza) and compiling a set of real-life user statements or utterances that are commonly associated with triggering that action. Since the chatbot's cognition is derived from these intents, each intent is created from a data set that is robust (one to a couple dozen utterances) and may vary to allow the chatbot to interpret ambiguous user inputs. A rich set of utterances allows the chatbot to understand what the user wants when it receives messages that mean the same thing but are expressed differently, such as "ignore this order" or "cancel the delivery!". Collectively, the intents and their associated utterances constitute the training corpus for chat. By training a machine learning model with a corpus, Customer can essentially transform the machine learning model (hereinafter simply referred to as a "Model") into a reference tool for resolving end-user input to a single intent. Customer can improve chat cognitive acuity through cycles of intent testing and intent training.
[0016] However, building a chatbot that can determine an end user's intent based on a user utterance is a challenging task, in part due to the subtleties and ambiguities of natural language, as well as the dimensionality of the input space (e.g., possible user utterances) and the size of the output space (number of intents). Thus, chatbots may need to be designed, trained, monitored, debugged, and retrained to improve the performance of the chatbot and the user experience with the chatbot. In conventional systems, design and training systems are provided to design and improve model architectures, and to train and retrain models of digital assistants or chatbots in spoken language understanding (SLU) and natural language processing (NLP).
[0017] In some examples, a model is trained as a classifier and configured to, for a given input (e.g., an utterance), predict or infer a class or category for that input from a set of target classes or categories. Such classifiers are typically trained to generate a distribution of probabilities for a set of target classes, where a probability is generated by the classifier for each target class in the set, and the generated probabilities sum to 1 (or 100%, if expressed as a percentage). In a classifier such as a neural network, the output layer of the neural network may use a softmax function as its activation function to generate a distribution of probability scores for the set of classes. These probabilities are also referred to as confidence scores. The class with the highest associated confidence score may be output as the answer to the input.
[0018] Training of a model is performed using training data (sometimes called labeled data), where the inputs and the labels (ground truth) associated with those inputs are known. For example, the training data may include inputs x(i) and, for each input x(i), a target value or correct answer (also called ground truth) y(i) for that input. The pairs (x(i), y(i)) are called training samples, and the training data may include many such training samples. For example, training data used to train a model for a chatbot may include a set of utterances and, for each utterance in the set, a known (ground truth) class for that utterance. The space of all inputs x(i) in the training data may be denoted by X, and the space of all corresponding targets y(i) may be denoted by Y. The goal of training a neural network is to learn a hypothesis function "h()" that maps the training input space X to the target value space Y such that h(x) is a good predictor of the corresponding value of y. In some implementations, as part of deriving the hypothesis function, a cost or loss function is defined that measures the difference between the ground truth value for the input and the value predicted by the model for that input. This cost or loss function is minimized as part of the training. Training techniques such as back-propagation training techniques used with neural networks may be used that iteratively change / manipulate weights associated with inputs to perceptrons in the neural network with the goal to minimize a loss function associated with the output provided by the neural network.
[0019] As mentioned above, standard hyperparameter tuning algorithms perform hyperparameter tuning operations with a single objective (e.g., model accuracy) under consideration. A drawback of such standard hyperparameter tuning algorithms is that they ignore other important objectives (e.g., regression error) while performing the optimization process. Furthermore, standard hyperparameter tuning mechanisms only consider a single dataset to train / evaluate a machine learning model. Some hyperparameter tuning algorithms consider multiple datasets while evaluating the model, but each of the datasets is considered to have the same level of importance in training the machine learning model.
[0020] Thus, a different approach is needed to address these problems. The present disclosure provides a hyperparameter tuning system and techniques that optimize features while considering multiple metrics simultaneously, i.e., perform multi-objective optimization. Each of the metrics is assigned a weight indicating the level of importance of the metric to the performance of the machine learning model. The hyperparameter tuning system and techniques also provide tuning of hyperparameters while considering different datasets with various levels of importance. Specifically, a weight is assigned to each dataset, specifying the importance of the dataset in training the machine learning model. In addition, the hyperparameter tuning system and techniques allow for one or more constraints on the machine learning model being trained. The training infrastructure (also referred to herein as the hyperparameter tuning system) uses various automated techniques to automatically identify, set, and tune hyperparameters for training the model such that the trained model conforms to and meets the constraints specified for the model. In this manner, the hyperparameter tuning system of the present disclosure provides a single machine learning model that works across different datasets and different metrics.
[0021] Bot System A bot (also referred to as a skill, chatbot, chatterbot, or talkbot) is a computer program that can conduct a conversation with an end user. A bot can generally respond to natural language messages (e.g., questions or comments) through a messaging application using natural language messages. A business may use one or more bot systems to communicate with end users through messaging applications. The messaging application, sometimes called a channel, may be the end user's preferred messaging application that the end user already has installed and is familiar with. Thus, an end user does not need to download and install a new application to chat with a bot system. Messaging applications can include, for example, over-the-top (OTT) messaging channels (e.g., Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack, or SMS), virtual private assistants (e.g., Amazon Dot, Echo, or Show, Google® Home, Apple HomePod, etc.), mobile and web app extensions that extend native or hybrid / responsive mobile apps or web applications with chat capabilities, or voice-based input (e.g., devices or apps with an interface that uses Siri, Cortana, Google Voice, or other voice input for interaction).
[0022] FIG. 1 is a simplified block diagram of an environment 100 incorporating a chatbot system according to certain embodiments. The environment 100 includes a digital assistant builder platform (DABP) 102, which allows users of the DABP 102 to create and deploy digital assistant or chatbot systems. The DABP 102 can be used to create one or more digital assistants (or DAs) or chatbot systems. For example, as shown in FIG. 1, a user 104 representing a particular business can use the DABP 102 to create and deploy a digital assistant 106 for users of the particular business. For example, a bank can use the DABP 102 to create one or more digital assistants for use by customers of the bank. Multiple businesses can use the same DABP 102 platform to create digital assistants. As another example, an owner of a restaurant (e.g., a pizza shop) can use the DABP 102 to create and deploy a digital assistant that enables customers of the restaurant to order food (e.g., order pizza).
[0023] FIG. 1 is a simplified block diagram of an environment 100 incorporating a chatbot system according to certain embodiments. The environment 100 includes a digital assistant builder platform (DABP) 102, which allows users of the DABP 102 to create and deploy digital assistant or chatbot systems. The DABP 102 can be used to create one or more digital assistants (or DAs) or chatbot systems. For example, as shown in FIG. 1, a user 104 representing a particular business can use the DABP 102 to create and deploy a digital assistant 106 for users of the particular business. For example, a bank can use the DABP 102 to create one or more digital assistants for use by customers of the bank. Multiple businesses can use the same DABP 102 platform to create digital assistants. As another example, an owner of a restaurant (e.g., a pizza shop) can use the DABP 102 to create and deploy a digital assistant that enables customers of the restaurant to order food (e.g., order pizza).
[0024] A digital assistant, such as digital assistant 106 built using DABP 102, can be used to perform a variety of tasks through natural language-based conversations between the digital assistant and its user 108. As part of the conversation, the user may provide one or more user inputs 110 to the digital assistant 106 and obtain responses 112 from the digital assistant 106. A conversation can include one or more of the inputs 110 and responses 112. Through these conversations, the user can request one or more tasks to be performed by the digital assistant 106, and in response, the digital assistant 106 is configured to perform the user-requested task and respond to the user with an appropriate response.
[0025] The user input 110 is generally in a natural language format and is referred to as an utterance. The user utterance 110 may be in a text format, such as when the user types a sentence, a question, a piece of text, or even a single word, and provides the text as input to the digital assistant 106. In some embodiments, the user utterance 110 may be in a voice input or speech format, such as when the user says or speaks something that is provided as input to the digital assistant 106. The utterance is typically in a language spoken by the user 108. For example, the utterance may be in English or some other language. If the utterance is in a voice format, the voice input is converted into a text format utterance in that particular language, and the text utterance is then processed by the digital assistant 106. Various voice-to-text processing techniques may be used to convert the voice or auditory input into a text utterance, which is then processed by the digital assistant 106. In some embodiments, the voice-to-text conversion may be performed by the digital assistant 106 itself.
[0026] The utterance, which may be a text utterance or a voice utterance, may be a fragment, a sentence, multiple sentences, one or more words, one or more questions, a combination of the aforementioned types, and the like. The digital assistant 106 is configured to apply natural language understanding (NLU) techniques to the utterance to understand the meaning of the user input. As part of the NLU processing on the utterance, the digital assistant 106 is configured to perform processing to understand the meaning of the utterance, which involves identifying one or more intents and one or more entities that correspond to the utterance. Upon understanding the meaning of the utterance, the digital assistant 106 can perform one or more actions or operations in response to the understood meaning or intent. For purposes of this disclosure, it is assumed that the utterance is a text utterance provided directly by a user 108 of the digital assistant 106 or is the result of a conversion of an input voice utterance into text format. However, this is not intended to be limiting or restrictive in any manner.
[0027] For example, user input 108 may request that a pizza be ordered by providing an utterance such as "I want to order a pizza." Upon receiving such an utterance, digital assistant 106 is configured to understand the meaning of the utterance and take appropriate action. The appropriate action may include responding to the user with a question requesting user input regarding, for example, the type of pizza the user wants to order, the size of the pizza, any toppings on the pizza, etc. The responses provided by digital assistant 106 may also be in natural language form, typically in the same language as the input utterance. As part of generating these responses, digital assistant 106 may perform natural language generation (NLG). Through a conversation between the user and digital assistant 106, in order for the user to order a pizza, the digital assistant may guide the user to provide all the necessary information to order the pizza, and then, at the end of the conversation, have the pizza ordered. Digital assistant 106 may end the conversation by outputting information to the user indicating that the pizza has been ordered.
[0028] At a conceptual level, the digital assistant 106 performs various processes in response to utterances received from a user. In some embodiments, this processing involves a series of processing steps or a pipeline of processing steps, including, for example, understanding the meaning of the input utterance (using NLU), determining an action to be performed in response to the utterance, causing the action to be performed if appropriate, generating a response to be output to the user in response to the user utterance, outputting the response to the user, etc. NLU processing can include parsing the received input utterance to understand the structure and meaning of the utterance, and refining and reconstructing the utterance to develop a more understandable form (e.g., logical form) or structure for the utterance. Generating a response may include using natural language generation (NLG techniques). Thus, the natural language processing (NLP) performed by the digital assistant may include a combination of NLU and NLG processing. The NLU processing performed by a digital assistant such as digital assistant 106 may include various NLU-related operations such as sentence analysis (e.g., tokenization, reordering, identifying part-of-speech tags for sentences, identifying named entities in sentences, generating dependency trees to represent sentence structure, splitting sentences into clauses, analyzing individual clauses, resolving anaphoric forms, performing chunking, etc.). In an embodiment, the NLU processing, or parts thereof, is performed by the digital assistant 106 itself. In some other embodiments, the digital assistant 106 may use other resources to perform parts of the NLU processing. For example, the syntax and structure of an input spoken sentence may be identified by processing the sentence with parsing, part-of-speech tagging, and / or named entity recognition. In one implementation, for English, parsing, part-of-speech tagging, and named entity recognition, such as those provided by the Stanford NLP Group, are used to analyze sentence structure and syntax. These are provided as part of the Stanford CoreNLP toolkit.
[0029] Although the various examples provided in this disclosure show English speech, this is meant as an example only. In certain embodiments, the digital assistant 106 can also process speech in languages other than English. The digital assistant 106 may provide subsystems (e.g., components that implement NLU functionality) configured to perform processing for different languages. These subsystems may be implemented as pluggable units that can be invoked using service calls from the NLU core server. This makes the NLU processing flexible and extensible for each language, including allowing for different orders of processing. Language packs may be provided for individual languages, and the language packs can register a list of subsystems that can be serviced from the NLU core server.
[0030] A digital assistant, such as the digital assistant 106 shown in FIG. 1, can be made available or accessible to its user 108 through a variety of different channels, such as, but not limited to, through an application, through a social media platform, through various messaging services and applications (e.g., instant messaging applications), and through other applications or channels. A single digital assistant can have several channels configured for it, so that it can run on and be accessed by different services simultaneously.
[0031] A digital assistant or chatbot system typically includes or is associated with one or more skills. In an embodiment, these skills are individual chatbots (called skillbots) that interact with a user and are configured to fulfill a particular type of task, such as tracking inventory, submitting a timecard, creating an expense report, ordering food, checking a bank account, making a reservation, purchasing a widget, etc. For example, in the embodiment shown in FIG. 1, the digital assistant or chatbot system 106 includes skills 116-1, 116-2, etc. For purposes of this disclosure, the term "skill" is used synonymously with the term "skillbot."
[0032] Each skill associated with a digital assistant helps a user of the digital assistant complete a task through a conversation with the user, where the conversation can include a combination of text or auditory input provided by the user and responses provided by the skill bot. These responses can be in the form of text or auditory messages to the user and / or can be provided using simple user interface elements (e.g., selection lists) that are presented to the user for the user to make a selection.
[0033] There are various ways in which a skill or skillbot can be associated with or added to a digital assistant. In one example, a skillbot can be developed by a company and then added to a digital assistant using DABP 102, for example, via a user interface provided by DABP 102, to register the skillbot with the digital assistant. In another example, a skillbot can be developed and created using DABP 102 and then added to a digital assistant created using DABP 102. In yet another example, DABP 102 provides an online digital store (referred to as a "skill store") that offers multiple skills directed to a wide range of tasks. Skills offered through the skill store may also expose various cloud services. To add a skill to a digital assistant created using DABP 102, a user of DABP 102 can access the skill store via DABP 102, select the desired skill, and indicate that the selected skill is to be added to the digital assistant created using DABP 102. Skills from the skill store can be added to a digital assistant as is or in modified form (e.g., a user of DABP102 may select and clone a particular skillbot offered by the skill store, customize or modify the selected skillbot, and then add the modified skillbot to a digital assistant created with DABP102).
[0034] A variety of different architectures may be used to realize a digital assistant or chatbot system. For example, in some embodiments, a digital assistant created and deployed using DABP 102 may be realized using a masterbot / child (or sub)bot paradigm or architecture. According to this paradigm, a digital assistant is realized as a masterbot that interacts with one or more child bots, which are skillbots. For example, in the embodiment shown in FIG. 1, the digital assistant 106 includes a masterbot 114 and skillbots 116-1, 116-2, etc., that are child bots of the masterbot 114. In certain embodiments, the digital assistant 106 itself may act as a masterbot.
[0035] A digital assistant realized according to the master-child bot architecture allows a user of the digital assistant to interact with multiple skills through a unified user interface, i.e., through the masterbot. When a user engages with the digital assistant, the user input is received by the masterbot. The masterbot then performs processing to determine the meaning of the user input utterance. The masterbot then determines whether the task requested by the user in the utterance can be handled by the masterbot itself, and if not, the masterbot selects an appropriate skillbot to handle the user request and routes the conversation to the selected skillbot. This allows a user to converse with the digital assistant through a common single interface and still provide the ability to use several skillbots configured to perform specific tasks. For example, in the case of a digital assistant developed for an enterprise, the masterbot of the digital assistant may interface with skillbots having specific capabilities, such as a CRM bot for performing functions related to customer relationship management (CRM), an ERP bot for performing functions related to enterprise resource planning (ERP), an HCM bot for performing functions related to human capital management (HCM), etc. In this way, end users or consumers of the digital assistant only need to know how to access the digital assistant through a common master bot interface, and behind the scenes, multiple skill bots are provided to handle user requests.
[0036] In one embodiment, in a masterbot / childbot infrastructure, the masterbot is configured to be aware of an available list of skillbots. The masterbot may have access to various available skillbots and, for each skillbot, metadata identifying each skillbot's capabilities, including tasks that can be performed by each skillbot. Upon receiving a user request in the form of an utterance, the masterbot is configured to identify or predict a particular skillbot from multiple available skillbots that can best accommodate or process the user request. The masterbot then routes the utterance (or a portion of the utterance) to that particular skillbot for further processing. Thus, control flows from the masterbot to the skillbot. The masterbot can support multiple input and output channels. In some embodiments, the routing may be performed with the help of processing performed by one or more available skillbots. For example, as discussed below, a skillbot can be trained to infer the intent of an utterance and determine whether the inferred intent matches an intent for which the skillbot is configured. Thus, the routing performed by the masterbot may include the skillbot communicating to the masterbot an indication of whether the skillbot is configured with the appropriate intent to process the utterance.
[0037] 1 illustrates a digital assistant 106 with a masterbot 114 and skillbots 116-1, 116-2, and 116-3, but this is not intended to be limiting. The digital assistant may include various other components (e.g., other systems and subsystems) that provide the functionality of the digital assistant. These systems and subsystems may be realized in an implementation using only software (e.g., code, instructions stored on a computer-readable medium and executable by one or more processors), only hardware, or a combination of software and hardware.
[0038] DABP 102 provides infrastructure and various services and features that enable a user of DABP 102 to create a digital assistant, including one or more skillbots associated with the digital assistant. In some cases, a skillbot can be created by cloning an existing skillbot, for example, by cloning a skillbot provided by a skill store. As previously described, DABP 102 may provide a skill store or skill catalog that provides multiple skillbots for performing various tasks. A user of DABP 102 can clone a skillbot from a skill store. If necessary, modifications or customizations may be made to the cloned skillbot. In some other cases, a user of DABP 102 creates a skillbot from scratch using tools and services provided by DABP 102.
[0039] In certain embodiments, at one high level, creating or customizing a skillbot includes the following steps: (1) Set up the settings for the new skill bot (2) Configure one or more intents for the skill bot (3) Set one or more entities for one or more intents (4) Training the Skillbot (5) Create a dialogue flow for your skill bot (6) Add custom components to your skill bot as needed (7) Test and deploy the skill bot. Each step will be briefly described below.
[0040] (1) Set Settings for a New Skillbot - Various settings may be set for a skillbot. For example, a skillbot designer can specify one or more call names for the skillbot being created. These call names serve as identifiers for the skillbot and can then be used by a user of the digital assistant to explicitly call the skillbot. For example, a user can include a call name in the user's utterance to explicitly call the corresponding skillbot.
[0041] (2) Set one or more intents and associated example utterances for the skillbot - A skillbot designer specifies one or more intents (also called bot intents) for the skillbot being created. The skillbot is then trained based on these specified intents. These intents represent categories or classes that the skillbot is trained to infer about input utterances. Upon receiving an utterance, the trained skillbot infers the intent of the utterance, and the inferred intent is selected from a predefined set of intents used to train the skillbot. The skillbot then takes an appropriate action to respond to the utterance based on the intent inferred for the utterance. In some cases, the intents for a skillbot represent tasks that the skillbot can perform for a user of the digital assistant. Each intent is given an intent identifier or intent name. For example, for a skillbot trained for banking, the specified intents for the skillbot may include "CheckBalance", "TransferMoney", "DepositCheck", etc.
[0042] For each intent defined for a skillbot, the skillbot designer may also provide one or more example utterances representative of and indicative of that intent. These example utterances are meant to represent utterances that a user may input to the skillbot for that intent. For example, for a balance inquiry intent, example utterances may include "What's my savings account balance?", "How much is in my checking account?", "How much money do I have in my account?", etc. Thus, various permutations of typical user utterances may be specified as example utterances for the intent.
[0043] The intents and their associated example utterances are used as training data to train the skill bot. A variety of different training techniques may be used. As a result of this training, a predictive model is generated that is configured to take an utterance as input and output an intent inferred for the utterance by the predictive model. In some cases, the input utterance is provided to an intent analysis engine (e.g., a rule-based or machine learning-based or machine learning classifier executed by the skill bot) that is configured to predict or infer an intent for the input utterance using the trained model. The skill bot may then take one or more actions based on the inferred intent.
[0044] (3) Setting one or more entities for one or more intents - In some examples, additional context may be required to enable the skill bot to respond appropriately to a user utterance. For example, there may be situations where a user input utterance resolves to the same intent in the skill bot. For example, in the above example, the utterances "What's my savings account balance?" and "How much is in my checking account?" both resolve to the same balance inquiry intent, but these utterances are different requests that want different things. To disambiguate such requests, one or more entities may be added to the intent. Using the banking skill bot example, an entity called AccountType that defines values called "checking" and "saving" may enable the skill bot to parse the user request and respond appropriately. In the above example, the utterances resolve to the same intent, but the value associated with the AccountType entity is different for the two utterances. This allows the skill bot to perform possibly different actions for two utterances even though they resolve to the same intent. One or more entities may be specified for a particular intent configured for the skill bot. Thus, entities are used to add context to the intent itself. Entities help to more fully describe the intent and allow the skill bot to complete the user request.
[0045] In an embodiment, there are two types of entities: (a) built-in entities provided by DABP 102, and (2) custom entities that may be specified by a skill bot designer. Built-in entities are generic entities that can be used with a wide variety of bots. Examples of built-in entities include, but are not limited to, entities related to time, date, address, number, email address, duration, circulation period, currency, phone number, URL, etc. Custom entities are used for more customized applications. For example, for a banking skill, an AccountType entity may be defined by a skill bot designer to enable various banking transactions by checking user input for keywords such as current, regular, and credit card, etc.
[0046] (4) Train the skillbot - The skillbot is configured to receive user input in the form of utterances, parse or otherwise process the received input, and identify or select an intent associated with the received user input. As described above, the skillbot must be trained for this. In an embodiment, the skillbot is trained based on the intents configured for the skillbot and example utterances associated with the intents (collectively, training data) such that the skillbot can resolve the user input utterance to one of the skillbot's configured intents. In a particular embodiment, the skillbot is trained with the training data and uses a predictive model that allows the skillbot to identify what the user is saying (or, in some cases, what the user is trying to say). DABP 102 provides a variety of different training techniques that may be used by the skillbot designer to train the skillbot, including various machine learning based training techniques, rule-based training techniques, and / or combinations thereof. In an embodiment, a portion of the training data (e.g., 80%) is used to train the skillbot model, and another portion (e.g., the remaining 20%) is used to test or validate the model. Once trained, the trained model (sometimes referred to as a trained skill bot) can then be used to process and respond to user utterances. In some cases, the user utterance may be a question that requires only a single answer and no further conversation. To address such situations, a Q&A (question and answer) intent may be defined for the skill bot. A Q&A intent is generated similarly to a normal intent. The dialog flow for a Q&A intent may differ from the dialog flow for a normal intent. For example, unlike a normal intent, the dialog flow for a Q&A intent may not require a prompt to solicit additional information (e.g., values for a particular entity) from the user.
[0047] (5) Create a Dialog Flow for a Skill Bot - The dialog flow specified for a skill bot describes how the skill bot reacts when different intents for the skill bot are resolved in response to received user input. The dialog flow defines the behavior or actions taken by the skill bot, such as how the skill bot responds to user utterances, how the skill bot prompts the user for input, and how the skill bot returns data. The dialog flow is like a flowchart that the skill bot follows. A skill bot designer specifies the dialog flow using a language such as Markdown language. In one embodiment, a version of YAML called OBotML can be used to specify the dialog flow for a skill bot. The dialog flow definition for a skill bot serves as a model of the conversation itself, allowing the skill bot designer to choreograph the interaction between the skill bot and the user that the skill bot serves.
[0048] In one embodiment, a skill bot's dialog flow definition includes three sections: (a) Context Section (b) Default transition section (c) Status section.
[0049] Context Section - In the context section, the skill bot designer can define variables that will be used in the conversation flow. Other variables that can be named in the context section include, but are not limited to, variables for error handling, variables for built-in or custom entities, user variables that allow the skill bot to recognize and persist user preferences, etc.
[0050] Default Transitions Section - Transitions for a skill bot can be defined in the dialog flow states section or the default transitions section. Transitions defined in the default transitions section act as fallbacks and are triggered when there is no applicable transition defined in a state or the conditions required to trigger a state transition are not met. The default transitions section can be used to define routing that allows the skill bot to gracefully handle unexpected user actions.
[0051] State Section - A dialog flow and its associated behaviors are defined as a series of temporary states that govern the logic within the dialog flow. Each state node in a dialog flow definition names a component that provides the functionality needed at that point in the dialog. In this way, we build states around the components. States contain component-specific characteristics and define transitions to other states that are triggered after the component is executed.
[0052] Special case scenarios can be handled with state sections. For example, it may be desirable to give a user the option to temporarily exit a first skill that the user is working on and do something in a second skill within the digital assistant. For example, if the user is engaged in a conversation with a shopping skill (e.g., the user has made some selections for a purchase), the user may want to jump to a banking skill (e.g., the user may want to make sure they have enough money for the purchase) and then return to the shopping skill to complete the user's order. To address this, the state section in the dialog flow definition of the first skill can be configured to initiate an interaction with a second, different skill in the same digital assistant and then return to the original dialog flow.
[0053] (6) Adding Custom Components to a Skillbot - As described above, a state specified in a dialog flow for a skillbot nominates a component that provides the required functionality corresponding to that state. The component enables the skillbot to perform the functionality. In an embodiment, DABP 102 provides a set of pre-configured components to perform a wide range of functions. A skillbot designer can select one or more of these pre-configured components and associate them with a state in the dialog flow for the skillbot. A skillbot designer can also create custom or new components using tools provided by DABP 102 and associate the custom components with one or more states in the dialog flow for the skillbot.
[0054] (7) Testing and Deploying Skillbots - DABP 102 provides several features that allow skillbot designers to test the skillbots they are developing. The skillbots can then be deployed and included in a digital assistant.
[0055] While the above description describes how to create a skillbot, similar techniques can also be used to create a digital assistant (or masterbot). At the masterbot or digital assistant level, built-in system intents can be configured for the digital assistant. These built-in system intents are used to identify common tasks that the digital assistant itself (i.e., the masterbot) can handle without invoking a skillbot associated with the digital assistant. Examples of system intents defined for a masterbot include: (1) Exit: applies when a user signals in the digital assistant that they want to end the current conversation or context; (2) Help: applies when a user asks for help or direction; (3) Unresolved Intent: applies to user input that does not match well with the Exit and Help intents. The digital assistant also stores information about one or more skillbots associated with the digital assistant. This information allows the masterbot to select a specific skillbot to process an utterance.
[0056] At the Masterbot or digital assistant level, when a user inputs a phrase or utterance into the digital assistant, the digital assistant is configured to process to determine how to route the utterance and associated conversation. The digital assistant determines this using a routing model, which can be rule-based, AI-based, or a combination thereof. The digital assistant uses the routing model to determine whether the conversation corresponding to the user input utterance should be routed to a specific skill for processing, should be processed by the digital assistant or Masterbot itself according to built-in system intents, or should be processed as a different state in the current conversation flow.
[0057] In certain embodiments, as part of this processing, the digital assistant determines whether the user input utterance explicitly identifies a skillbot with its call name. If the call name is present in the user input, it is treated as an explicit call of the skillbot corresponding to the call name. In such a scenario, the digital assistant can route the user input to the explicitly called skillbot for further processing. In the absence of a specific or explicit call, in one embodiment, the digital assistant evaluates the received user input utterance and calculates a confidence score for the system intent and skillbot associated with the digital assistant. The calculated score for the skillbot or system intent represents the likelihood that the user input represents a task that the skillbot is configured to perform or represents a system intent. The system intent or skillbot whose associated calculated confidence score exceeds a threshold (e.g., a Confidence Threshold routing parameter) is selected as a candidate for further evaluation. The digital assistant then selects a specific system intent or skillbot from the identified candidates for further processing of the user input utterance. In a particular embodiment, after one or more skill bots are identified as candidates, the intents associated with those candidate skills are evaluated (using the trained model for each skill) and a confidence score is determined for each intent. In general, intents with a confidence score above a threshold (e.g., 70%) are treated as candidate intents. If a particular skill bot is selected, the user utterance is routed to that skill bot for further processing. If a system intent is selected, one or more actions are performed by the master bot itself according to the selected system intent.
[0058] Constraint and target-based hyperparameter tuning As mentioned above, a chatbot may use one or more machine learning models to perform various functions. For example, a chatbot may use a machine learning model that is configured to take utterances as input and infer or predict the intent of each utterance. The intent inferred by the model for the utterance may then be used by the chatbot to determine how to respond to the utterance. The realization of a machine learning model (also called a model) in a chatbot is typically performed in two stages: (1) a training stage in which training data is run on one or more algorithms to create a trained model, and (2) an inference stage in which the trained model is used to make predictions based on new data. A training infrastructure is generally provided to realize the training stage to train the model. The training infrastructure may be provided by a tool or application, or software used to perform the training. The training infrastructure is configured to run the training data on one or more algorithms to train or learn the algorithm and create a model. The training infrastructure generally provides hyperparameters that govern this training process. The set of values for these hyperparameters determines the network structure for the algorithm (e.g., number of input layers, number of hidden layers, activation function, etc.) and how the algorithm is trained (e.g., learning rate, number of epochs, etc.).
[0059] FIG. 2 is a diagram illustrating exemplary types of hyperparameters according to various embodiments. The hyperparameters may include the number of layers in the model, the type of learning algorithm used to train the model, the learning rate, the number of training epochs, the number of hidden units in each layer, and the width, i.e., the number of units in each hidden layer. Typically, a user using the training infrastructure manually sets the values of the hyperparameters. However, this can be a very difficult task that requires very deep knowledge of the training process. As will now be described with reference to FIG. 4, a hyperparameter tuning system according to various embodiments is provided that is configured to perform multi-objective optimization, i.e., optimize a function of multiple metrics (e.g., loss functions), in an automated manner. As shown in FIG. 3, the metrics may include a stability metric, a regression error metric, a confidence score metric, a model size metric, a training or execution time metric, a accuracy rate metric, or any combination thereof.
[0060] The stability metric ensures that the training process is stable, i.e., when small changes are made to the training data (e.g., when one training example is added or removed), the predictions made by the model do not fundamentally change. The regression error metric minimizes the number of regressions of the model, i.e., a regression error corresponds to a model misclassifying an input, while a previous version of the model correctly classified that input. The confidence score metric ensures that the model predicts a particular example with high confidence (i.e., the model not only makes the correct prediction, but does so with high confidence). The model size metric corresponds to the size of the trained model, which should be within a user-defined threshold, e.g., 100 megabytes, and the training time metric corresponds to the amount of time utilized in training the model. The accuracy metric ensures that the trained model achieves a certain user-defined accuracy level, e.g., 95% accuracy for a certain validation dataset. In other words, when a machine learning model is trained on a particular training dataset, a certain target accuracy rate is achieved for a particular validation dataset. It is understood that the training and validation datasets may be selected to span the full range of chatbot use cases, i.e., datasets ranging in size from very small to very large across the range of applications.
[0061] The hyperparameter tuning system of the present disclosure is configured to train a machine learning model on a plurality of datasets (e.g., training datasets) and evaluate the performance of the machine learning model on a plurality of metrics. According to some embodiments, each of the datasets used in training the machine learning model is assigned a weight that indicates the importance of the dataset in training the machine learning model. In other words, the weight assigned to a dataset corresponds to the level of influence the dataset has on the training of the machine learning model.
[0062] Additionally, the hyperparameter tuning system is configured to assign a weight to each metric utilized in the multi-objective optimization. In particular, the weights assigned to the metrics indicate the importance of the metric to the performance of the machine learning model. As described in more detail below, the assignment of weights to the metrics and different datasets is performed according to one or more policies that govern the hyperparameter tuning system.
[0063] Additionally, the hyperparameter tuning system allows for specifying one or more constraints when training a machine learning model. A constraint may be a requirement imposed on a machine learning model, i.e., a quality or characteristic that a user desires to achieve in a trained model. A constraint may relate to the training process itself. A constraint may be specified before starting training of a model. Thus, for a given set of constraints, the training infrastructure uses various automated techniques to automatically identify hyperparameters, set values of the hyperparameters, and tune the hyperparameter values to train a machine learning model such that the trained machine learning model conforms to and satisfies the set of constraints.
[0064] In some embodiments, the hyperparameter tuning system provides for validating machine learning models on a wide range of validation / test datasets. The hyperparameter tuning system associates a specific target value with one or more metrics used to evaluate the performance of the machine learning model. A hyperparameter objective function (e.g., a loss function) is constructed based on the target values of the multiple metrics. In addition, as described in more detail below with reference to FIG. 4, the hyperparameter tuning system employs an asymmetric loss mechanism (i.e., a larger penalty for not meeting the target compared to rewarding meeting or exceeding the target) to assign weights to different metrics when validating the machine learning model.
[0065] 4, a hyperparameter tuning system according to various embodiments is shown. The hyperparameter tuning system 400 includes a dataset weight assignment unit 410, a metric selection and weight assignment unit 420, a constraint establishment unit 430, and a hyperparameter tuner 450. The hyperparameter tuner 450 includes an optimizer 451 (also referred to herein as a tuning unit) and a set of hyperparameters 455.
[0066] The hyperparameter tuning system 400 is configured to train a machine learning model (e.g., a model associated with a chatbot) on multiple datasets (i.e., training datasets) and evaluate the performance of the machine learning model based on multiple metrics. The dataset weight assignment unit 410 obtains one or more datasets, for example, dataset 1 405A, dataset 2 405B, and dataset K 405C, and assigns a weight to each dataset according to some policies 415. The weight assigned to a dataset corresponds to the importance of the dataset in training the machine learning model. Assigning different weights to different datasets provides that the datasets have appropriate influence (i.e., according to their respective weights) on the training of the machine learning model.
[0067] As an example, one policy of the policies 415 may require the machine learning model to achieve low regression. Thus, the dataset weight assignment unit 410 assigns a higher weight to the regression dataset (e.g., dataset 1 405A) than another type of dataset. As another example, dataset 1 405A may correspond to a dataset obtained from a first client of the hyperparameter tuning system 400, and dataset 2 405B may correspond to a dataset obtained from a second client different from the first client. The training data included in dataset 1 and dataset 2 may correspond to different types of user utterances (provided by the respective clients) with respect to the context. Assuming that one of the policies 415 indicates that the first client is more important than the second client (e.g., the first client has a higher service level agreement (SLA) with the hyperparameter tuning system 400), the dataset corresponding to the first client, i.e., dataset 1 405A, is assigned a higher weight than dataset 2 405B. It is further understood that a system administrator of the hyperparameter tuning system 400 determines the policy 415 prior to training the machine learning model. The weighted dataset 405 is provided as a first input to the hyperparameter tuner 450.
[0068] The metric selection and weight assignment unit 420 selects multiple metrics 440, e.g., metric 1 440A, metric 2 440B, and metric M 440C, to evaluate the performance of the machine learning model on one or more datasets 405. It is noted that the metrics 440 correspond to metrics such as stability, accuracy rate, model size, regression error, etc., as shown and described with respect to FIG. 3. In one embodiment, the metric selection and weight assignment unit 420 selects multiple metrics, e.g., metric 1 440A, metric 2 440B, etc., from the set of available metrics 440 based on a certain criterion. For example, a first client of the hyperparameter tuning system 400 may want the machine learning model to emphasize an accuracy rate parameter, and another client of the hyperparameter tuning system 400 may want the machine learning model to emphasize another metric, e.g., a regression error metric. The requirements of different clients may be stored as one of the policies 415, based on which the metric selection and weight assignment unit 420 selects multiple metrics to evaluate the performance of the machine learning model.
[0069] The metric selection and weight assignment unit 420 is further configured to assign a weight to each of the selected metrics. The weight assigned to a particular metric indicates the importance of the metric to the performance of the machine learning model. In one embodiment, the metric selection and weight assignment unit 420 assigns weights to the metrics based on the level of importance of the clients of the hyperparameter tuning system 400. For example, if a first client is more important than a second client (i.e., the first client has a higher SLA than the second client), the metric requested by the first client is assigned a higher weight than the metric requested by the second client. As another example, consider a machine learning model trained for domain detection. In such a case, there are two metrics, namely, in-domain recall and out-of-domain recall, that are used to evaluate the performance of the machine learning model. In such a domain detection model, it is often desired that the model performs better, i.e., above a certain threshold level, for in-domain detection compared to out-of-domain detection. In this case, the weight assignment unit 420 assigns a higher weight to the in-domain recall metric compared to the out-of-domain recall metric. The multiple weighted metrics are provided as a second input to the hyper-parameter tuner 450.
[0070] Each of the metrics 440 is associated with a corresponding specification set. A specification set includes a number of specification parameters that define or characterize the metric. As shown in FIG. 4, metric 1 440A is associated with specification set 1 442A, metric 2 440B is associated with specification set 2 442B, and metric M 440C is associated with specification set M 442C. It should be appreciated that the specification set associated with a particular metric may be set independently with respect to the specification sets associated with other metrics. With reference to FIG. 5, the specification set of a metric includes: (1) a training data set; (2) a validation data set; (3) a metric definition that defines a measure of how well the model meets the target objective for the data set, e.g., the training data set and the validation data set; (4) a target score for the metric (i.e., the score of the metric that the model is expected to meet); (5) a penalty factor for the metric; and (6) a bonus factor for the metric.
[0071] According to some embodiments, metrics may be allowed to share training and / or validation data sets. However, machine learning models are expected to produce more robust results when there is diversity in training and validation data sets among different metrics. The specification parameters of each of specification sets 442A, 442B, and 442C may be set to specific values to achieve desired results. For example, for a regression error metric, the corresponding specification set may be set as follows: 1. The training dataset is modeled based on a specific set of customers, e.g., key customers. The validation dataset contains examples that previous machine learning models have correctly classified and are expected to be widely used by customers. 2. The metric definition of regression error is set to accuracy rate. 3. The target score is set to 95%, i.e., we hope to achieve that at least 95% of the examples that the old version of the machine learning model correctly labeled will also be correctly labeled in the new version of the machine learning model. 4. The penalty factor is set to 100 and the bonus factor is set to 1. In doing so, each percentage point below 95% is penalized 100 times more than each percentage point above 95%.
[0072] In one embodiment, for the stability metric, the corresponding specification set can be set as follows: 1. The training dataset is set to be a small dataset in size, since small datasets are expected to cause higher instability. The validation dataset may be set to be reasonably larger in size than the training dataset. 2. The stability metric definition is set to be, for example, the standard deviation in the accuracy score of the machine learning model on the validation dataset when the machine learning model is trained 10 times. 3. The target score is set to 5%, i.e., we want the accuracy score of the machine learning model to vary by a maximum of 5%. 4. The penalty factor is set to 10 and the bonus factor is set to 1. In doing so, each percentage point not meeting the target score incurs a loss 10 times greater than the percentage point improvement over the target score.
[0073] In one embodiment, for the confidence score metric, the corresponding specification set can be set as follows: 1. The training datasets can range in size from small to large and can vary by domain. The validation dataset may contain in-domain examples belonging to those intent class labels. 2. The metric definition for the confidence score metric is set to the fraction of sentences for which the model’s confidence threshold is greater than 25% (i.e., the prediction is both correct and at least 25% more trustworthy than other predictions). 3. The target score is set to 85%, i.e., we want at least 85% of the examples to be confidently labeled. 4. The penalty factor is set to 10 and the bonus factor is set to 1.
[0074] It is understood that the configuration of the specification sets described above is intended to be exemplary and non-limiting. A system administrator may configure each of the specification sets in any other manner based on different requirements. Furthermore, the use of different specification sets in validating machine learning models is described below with reference to hyperparameter tuner 450.
[0075] According to some embodiments, the hyperparameter tuning system 400 allows a user (e.g., a system administrator) to specify one or more constraints for hyperparameter tuning of a machine learning model. The one or more constraints are specified via the constraint establishment unit 430. The one or more constraints are provided to the hyperparameter tuner 450 as a third input. Each constraint is a requirement imposed on the hyperparameter tuning of the machine learning model, i.e., each constraint is a requirement to be satisfied by the trained machine learning model. Given the one or more constraints, the hyperparameter tuner 450 is configured to identify a set of hyperparameters that affect each constraint, specify values for the identified hyperparameters, and iteratively tune the hyperparameters until the trained machine learning model satisfies each of the one or more constraints as described below.
[0076] In one embodiment, for each of the one or more constraints, hyperparameter tuner 450 identifies one or more hyperparameters that affect each constraint from set of hyperparameters 455. Hyperparameter tuner 450 identifies the one or more hyperparameters that affect the constraint by varying the values of the hyperparameters and determining whether the change in the value of the hyperparameter affects the value associated with the constraint. Furthermore, it should be appreciated that a first set of hyperparameters that affect a first constraint may differ from a second set of hyperparameters that affect a second constraint.
[0077] Upon identifying one or more hyperparameters that affect each constraint, hyperparameter tuner 450 assigns values to a set of hyperparameters 455 and iteratively tunes the hyperparameters until each of the constraints is satisfied. As an example, consider that set of hyperparameters 455 includes five hyperparameters: H=[h1, h2, h3, h4, h5]. Further, for purposes of illustration, consider that a user assigns two constraints C1 and C2, and that hyperparameter tuner 450 identifies that hyperparameters h1 and h3 affect constraint C1, and hyperparameters h2, h3, and h5 affect constraint C2.
[0078] The optimizer 451 (also referred to herein as tuning unit) of the hyperparameter tuner 450 specifies values for a set of hyperparameters H, i.e., V(H)=[v(h1), v(h2), v(h3), v(h4), v(h5)], referred to herein as the setting of the hyperparameters. Note that the optimizer 451 assigns the initial settings of the hyperparameters in a random manner. Furthermore, with respect to the constraint C1, the optimizer iteratively changes the values of the hyperparameters h1 and / or h3 (while maintaining the values of the hyperparameters h2, h4, and h5) until the constraint C1 is satisfied. Note that a constraint is satisfied when the values of the hyperparameters that affect the constraint satisfy the requirements imposed by the constraint. With respect to the constraint C2, the optimizer 451 iteratively changes / modifies the values of the hyperparameters h2, h4, and / or h5 (while maintaining the values of the hyperparameters h1 and h3) until the constraint C2 is satisfied. It should be noted that the optimizer performs the above-mentioned iterations while training the machine learning model on one or more datasets. Specifically, as described below, the optimizer 451 determines optimal settings of hyperparameters that satisfy each constraint while optimizing an objective function (e.g., a cost or loss function) of the machine learning model over multiple metrics. In one embodiment, examples of user-specified constraints include constraints such as: Inference latency for a given batch should be below a certain threshold, e.g., latency should be below 50 ms for a batch size of 1. -The maximum size of a trained model must be below some certain threshold (e.g., 10MB). The training time of the model should be below some user-specific time threshold, e.g., the training time should be 5 minutes or less.
[0079] Furthermore, in some embodiments, multiple constraints specified by a user are prioritized. For example, each constraint is assigned an importance level that reflects the fulfillment of that constraint. In some embodiments, constraints may be specified such that a trained machine learning model must necessarily satisfy some constraints, while fulfillment of other constraints is desired but optional.
[0080] The optimizer 451 of the hyperparameter tuner 450 constructs / formulates an objective function to be optimized. The objective function is a loss or cost function that serves as a performance metric for training / validating the machine learning model using one or more training / validation datasets. In one embodiment, the argument of the objective function is a set of hyperparameters associated with the machine learning model to be optimized by the optimizer 451. The value of the objective function is a weighted combination of the difference between the actual value of each metric and the target value set for each metric. The weight of each metric in the weighted combination depends on whether the metric exceeds or does not exceed the target value. In particular, an asymmetric loss technique is utilized in which a higher weight is assigned to the metric associated with failing to achieve the target value (rather than exceeding the target value).
[0081] For example, according to one embodiment, the objective function may be formulated as follows: where v is a vector of hyper-parameter values, m i Let (v) be the value of the i-th metric on v, and t i is denoted as the target value of the i-th metric, and p i and b i If v is denoted as the penalty and bonus coefficients for the i-th metric, respectively, the objective or loss function (L(v)) can be formulated as:
[0082]
number
[0083] The optimizer 451 tunes a set of hyperparameters 455 associated with the machine learning model to optimize the objective function (e.g., obtain a minimum of the loss function) across multiple metrics. The optimizer may tune the set of hyperparameters utilizing one of a grid-based method, a gradient search method, and a Bayesian method. Details regarding tuning hyperparameters will now be described with reference to FIG. 5 and FIG. 6. In this manner, the hyperparameter tuner 450 trains / validates the machine learning model by tuning a set of hyperparameters to achieve optimal performance with respect to different weighted metrics while ensuring that each of the one or more constraints is satisfied. In other words, the hyperparameter tuning system 400 performs optimization of multiple weighted metrics by training the machine learning model on different weighted datasets while supporting one or more user-specified constraints. Upon optimizing the machine learning model for multiple metrics, the hyperparameter tuning system 400 outputs a trained / validated ML model with settings of hyperparameters that not only satisfy the one or more constraints but also optimize the objective function. In the above-described embodiment, the optimizer 451 constructs and optimizes the objective function. Note that the above-described configuration of the hyperparameter tuner 450 does not limit the scope of the present disclosure. For example, the hyperparameter tuner 450 may include an objective function formulation unit (not shown) that formulates an objective function to be optimized by the optimizer 451.
[0084] FIG. 6 illustrates a simplified flowchart 600 showing a training process performed by a hyperparameter tuning system according to some embodiments. The process illustrated in FIG. 6 may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of the respective system, hardware, or a combination thereof. The software may be stored on a non-transitory storage medium (e.g., on a memory device). The method presented in FIG. 6 and described below is intended to be exemplary and non-limiting. Although FIG. 6 illustrates various processing steps occurring in a particular sequence or order, this is not intended to be limiting. In certain alternative embodiments, the steps may be performed in some different order, or some steps may be performed in parallel.
[0085] In step 610, a dataset for training a machine learning model is obtained. In step 620, the hyperparameter tuning system assigns a weight to each of the obtained datasets according to a policy. It should be noted that assigning different weights to different datasets allows the datasets to have appropriate influence (i.e., according to their respective weights) on the training of the machine learning model.
[0086] In step 630, multiple metrics are selected to evaluate the performance of the machine learning model on the acquired dataset. For example, one or more metrics as shown in FIG. 3 are selected by a user (e.g., a system administrator) to evaluate the performance of the machine learning model. For each selected metric, a weight is assigned to the metric according to another policy to indicate the importance of the metric to the performance of the machine learning model (step 640). In step 650, the user establishes one or more constraints. Each constraint is a quality or characteristic that the user wants to achieve in the trained machine learning model. In other words, each constraint is a requirement imposed on the machine learning model.
[0087] In step 660, the process formulates / constructs a function (i.e., an objective function) based on the input weighted metrics and set of hyperparameters 455. In one embodiment, the objective function is a loss or cost function that serves as a performance measure for training the machine learning model with one or more datasets.
[0088] At step 670, the process iteratively tunes a set of hyperparameters associated with the machine learning model to optimize the machine learning model (e.g., obtain an optimal value of an objective function) with respect to multiple metrics. For example, when training the machine learning model on the weighted dataset, one or more hyperparameters that affect one or more constraints and / or functions are identified by varying the value of the hyperparameter and determining whether the variation in the value of the hyperparameter affects the value associated with the constraint and / or function.
[0089] In one embodiment, the process of tuning the hyperparameters evaluates the current settings of the hyperparameters (i.e., the values of the hyperparameters), the value of the function, and determines whether the current settings satisfy each of the one or more constraints. If at least one of the constraints is violated and / or the value of the function is not optimal, the tuning process modifies the values of the one or more hyperparameters to obtain new settings of the hyperparameters, and continues training the machine learning model based on the new settings. It should be noted that the determination of whether the current settings violate a particular constraint is performed by determining whether the values of one or more hyperparameters that affect the constraint satisfy the requirements imposed by the constraint. Furthermore, the determination of whether the value of the function (which indicates the performance of the machine learning model for the current settings) is optimal is performed by comparing the value of the function with the new value of the function obtained through different settings of the hyperparameters.
[0090] In this manner, the tuning process iterates through the space of hyperparameter values until a setting that results in an optimal value of the function (and does not violate any constraints) is achieved. It is further understood that the process of tuning the hyperparameters can begin with an initial setting of the hyperparameters that are assigned in a random manner. Furthermore, the tuning process can implement one of a random search method, a Bayesian search method, a branch and bound method, a grid search method, a genetic algorithm, etc., in searching the space of hyperparameter values to obtain new hyperparameter settings. Once the machine learning model is optimized, it is output to the user as a trained machine learning model (along with the values of the hyperparameters that achieve the optimized machine learning model).
[0091] FIG. 7 illustrates a simplified flowchart 700 showing a validation process performed by a hyperparameter tuning system, according to an embodiment. The process illustrated in FIG. 7 may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of the respective system, hardware, or a combination thereof. The software may be stored on a non-transitory storage medium (e.g., on a memory device). The method presented in FIG. 7 and described below is intended to be exemplary and non-limiting. Although FIG. 7 illustrates various processing steps occurring in a particular sequence or order, this is not intended to be limiting. In certain alternative embodiments, the steps may be performed in some different order, or some steps may be performed in parallel.
[0092] In step 710, multiple metrics are selected to evaluate the performance of the machine learning model and which hyperparameters of the machine learning model should be tuned. In step 720, a specification set associated with each selected metric is set according to a criterion. Specifically, values are assigned to the specification parameters included in the specification set based on the criterion. For example, if it is desired to reduce the regression error, the specification set associated with the regression error metric is set as follows: the target score is set to a low value, and the penalty coefficient corresponding to the regression error metric is set to a high value. As an example, the target score may be set to 90%, i.e., it is expected that at least 90% of the previously correctly labeled training examples will also be correctly labeled by the current version of the machine learning model. Furthermore, setting a high penalty coefficient, for example, a penalty coefficient of 100, means that each percentage point (i.e., the performance of the machine learning model) below 90% is penalized 100 times more than the percentage points above 90%. With this specification set for the regression error metric, the regression error dominates the objective function (i.e., the loss function), and the hyperparameter tuner of Figure 4 performs tuning of the hyperparameters to minimize the regression error.
[0093] In step 730, a metric score is calculated for each metric. Specifically, the selected metrics are evaluated on the validation dataset to generate a metric score for each metric. The calculated metric score for each metric is compared to the corresponding target score for that metric in step 740. In one embodiment, the difference between the metric score and the target score of the metric is calculated. If the metric score is higher than the target score, the difference is multiplied by a bonus factor associated with that metric. However, if the metric score is lower than the target score, the difference is multiplied by a penalty factor. In step 750, an objective function, e.g., a loss function, is formulated based on the processing performed in step 740. Specifically, the loss function is determined to be the sum of the differences (between the metric score and the target score) multiplied by either the corresponding bonus factor or penalty factor. The process then proceeds to step 760 to optimize the formulated objective function.
[0094] In step 760, the hyperparameter tuner iteratively adjusts the hyperparameters associated with the machine learning model to optimize the weighted loss function formulated in step 750 (e.g., obtain a minimum value of the loss function). In one embodiment, when tuning the hyperparameters, the hyperparameter tuner evaluates the value of the loss function for the current settings (i.e., values of the hyperparameters). The hyperparameter tuner further determines whether the value of the loss function is optimal by comparing the value of the loss function with new values of the loss function obtained through different settings of the hyperparameters.
[0095] In this manner, the tuning process iterates through the space of hyperparameter values until the settings that result in the optimal value of the loss function are achieved. Furthermore, the process of tuning the hyperparameters can begin with an initial setting of the hyperparameters that are assigned in a random manner. Furthermore, the tuning process can implement a search algorithm to explore the hyperparameter space to obtain new hyperparameter settings. The hyperparameter tuner can utilize either a random search method, a Bayesian search method, a branch and bound method, etc. in searching the hyperparameter space. Once the loss function is optimized (i.e., a minimum value of the loss function is obtained), the hyperparameter tuner provides the validated machine learning model to the user as an output, along with the values of the hyperparameters that achieve the optimized loss function.
[0096] Exemplary System 8 shows a simplified diagram of a distributed system 800. In the illustrated example, the distributed system 800 includes one or more client computing devices 802, 804, 806, and 808 coupled to a server 812 via one or more communication networks 810. The client computing devices 802, 804, 806, and 808 may be configured to run one or more applications.
[0097] In various examples, the server 812 may be adapted to execute one or more services or software applications that enable one or more embodiments described in this disclosure. In some examples, the server 812 may also provide other services or software applications, which may include non-virtual and virtual environments. In some examples, these services may be provided as web-based or cloud services, such as under a Software as a Service (SaaS) model, to users of the client computing devices 802, 804, 806, and / or 808. Users operating the client computing devices 802, 804, 806, and / or 808 may utilize the services provided by these components by interacting with the server 812 utilizing one or more client applications.
[0098] In the configuration shown in Figure 8, server 812 may include one or more components 818, 820, and 822 that implement the functions performed by server 812. These components may include software components that may be executed by one or more processors, hardware components, or a combination thereof. It should be appreciated that a wide variety of system configurations are possible that may differ from distributed system 800. Thus, the example shown in Figure 8 is one example of a distributed system for implementing the example system and is not intended to be limiting.
[0099] A user may use a client computing device 802, 804, 806, and / or 808 to execute one or more applications, models, or chatbots, which may generate one or more events or models, which may then be implemented or processed according to the teachings of this disclosure. A client device may provide an interface that allows a user of the client device to interact with the client device. The client device may also output information to the user via this interface. Although FIG. 8 shows only four client computing devices, any number of client computing devices may be supported.
[0100] Client devices may include various types of computing systems, such as portable handheld devices, general purpose computers such as personal computers and laptops, workstation computers, wearable devices, gaming systems, thin clients, various messaging devices, sensors or other sensing devices, etc. These computing devices may include various types and versions of software applications and operating systems (e.g., Microsoft Windows®, Apple Macintosh®, UNIX® or UNIX-like operating systems, Linux® or Linux-like operating systems, e.g., Google Chrome® OS, including various mobile operating systems (e.g., Microsoft Windows Mobile®, iOS®, Windows Phone®, Android®, BlackBerry®, Palm OS®). Portable handheld devices may include cellular phones, smartphones (e.g., iPhone®), tablets (e.g., iPad®), personal digital assistants (PDAs), etc. Wearable devices may include Google Glass® head-mounted displays and other devices. The gaming systems may include various handheld gaming devices, Internet-enabled gaming devices (e.g., Microsoft Xbox® gaming consoles with or without Kinect® gesture input devices, Sony PlayStation® systems, various gaming systems offered by Nintendo®, etc.) The client devices may be capable of running a wide variety of applications, such as various Internet-related applications, communication applications (e.g., email applications, short message service (SMS) applications), and may use a variety of communication protocols.
[0101] Network 810 may be any type of network known to those skilled in the art capable of supporting data communications using any of a variety of available protocols, including, but not limited to, TCP / IP (Transmission Control Protocol / Internet Protocol), SNA (Systems Network Architecture), IPX (Internet Packet Exchange), AppleTalk, etc. By way of example only, network 810 may include a local area network (LAN), an Ethernet-based network, a token ring, a wide area network (WAN), the Internet, a virtual network, a virtual private network (VPN), an intranet, an extranet, a public switched telephone network (PSTN), an infrared network, a wireless network (e.g., a wireless network operating under any of the Institute of Electrical and Electronics Engineers (IEEE) 802.11 protocol suite, Bluetooth, and / or any other wireless protocol), and / or any combination of these and / or other networks.
[0102] The servers 812 may be comprised of one or more general purpose computers, dedicated server computers (including, by way of example, PC (personal computer) servers, UNIX servers, mid-range servers, mainframe computers, rack-mounted servers, etc.), server farms, server clusters, or other suitable configurations and / or combinations. The servers 812 may include one or more virtual machines running a virtual operating system, or other computing architectures involving virtualization, such as one or more flexible pools of logical storage that can be virtualized to maintain virtual storage for the servers. In various examples, the servers 812 may be adapted to run one or more services or software applications that provide the functionality described in the disclosure above.
[0103] The computing systems in server 812 may run one or more operating systems, including any of the operating systems listed above, as well as commercially available server operating systems. Server 812 may also run any of a variety of other server and / or mid-tier applications, including an HTTP (Hypertext Transfer Protocol) server, an FTP (File Transfer Protocol) server, a CGI (Common Gateway Interface) server, a JAVA® server, a database server, and the like. Exemplary database servers include, but are not limited to, those commercially available from Oracle®, Microsoft®, Sybase®, IBM® (International Business Machines), and the like.
[0104] In some implementations, server 812 may include one or more applications for parsing and consolidating data feeds and / or event updates received from users of client computing devices 802, 804, 806, and 808. By way of example, the data feeds and / or event updates may include, but are not limited to, Twitter® feeds, Facebook® updates, or real-time updates received from one or more third party sources and continuous data streams that may include real-time events related to sensor data applications, financial stock ticker boards, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, etc. Server 812 may also include one or more applications for displaying the data feeds and / or real-time events via one or more display devices of client computing devices 802, 804, 806, and 808.
[0105] The distributed system 800 may also include one or more data repositories 814, 816. In certain examples, these data repositories may be used to store data and other information. For example, one or more of the data repositories 814, 816 may be used to store information such as information related to chatbot performance or generated models for use by the chatbot used by the server 812 in performing various functions according to various embodiments. The data repositories 814, 816 may be in a variety of locations. For example, the data repository used by the server 812 may be local to the server 812 or may be remote from the server 812 and communicate with the server 812 via a network-based or dedicated connection. The data repositories 814, 816 may be of different types. In certain examples, the data repository used by the server 812 may be a database, for example, a relational database such as databases provided by Oracle Corporation® and other manufacturers. One or more of these databases may be adapted to allow data to be stored, updated, and retrieved from the database in response to SQL-formatted commands.
[0106] In particular examples, one or more of the data repositories 814, 816 may be used by an application to store application data. The data repositories used by the application may be of various types, such as, for example, a key-value store repository, an object store repository, or a general-purpose storage repository supported by a file system.
[0107] In certain examples, the functionality described in this disclosure may be provided as a service via a cloud environment. FIG. 9 is a simplified block diagram of a cloud-based system environment that may provide various services as cloud services, according to certain examples. In the example shown in FIG. 9, a cloud infrastructure system 902 may provide one or more cloud services that users may request using one or more client computing devices 904, 906, and 908. The cloud infrastructure system 902 may include one or more computers and / or servers, which may include those previously described with respect to server 812. The computers in the cloud infrastructure system 902 may be organized as general purpose computers, dedicated server computers, server farms, server clusters, or any other suitable arrangement and / or combination.
[0108] The network 910 may facilitate communication and exchange of data between the clients 904, 906, and 908 and the cloud infrastructure system 902. The network 910 may include one or more networks. The networks may be of the same or different types. The network 910 may support one or more communication protocols, including wired and / or wireless protocols, to facilitate communication.
[0109] The example shown in Figure 9 is merely one example of a cloud infrastructure system and is not intended to be limiting. It should be understood that in other examples, cloud infrastructure system 902 may have more or fewer components than those shown in Figure 9, may combine two or more components, or may have components in a different configuration or arrangement. For example, while Figure 9 shows three client computing devices, in alternative examples, any number of client computing devices may be supported.
[0110] The term cloud services is generally used to refer to services made available to users on demand via a communication network such as the Internet by a service provider's system (e.g., cloud infrastructure system 902). Typically, in a public cloud environment, the servers and systems that make up the cloud service provider's system are different from the customer's own on-premise servers and systems. The cloud service provider's system is managed by the cloud service provider. Thus, customers can use cloud services provided by the cloud service provider without having to purchase separate licenses, support, or hardware and software resources for the services. For example, the cloud service provider's system may host applications, and users may order and use the applications on demand via the Internet without having to purchase infrastructure resources to run the applications. Cloud services are designed to provide easy and scalable access to applications, resources, and services. Several providers offer cloud services. For example, several cloud services, such as middleware services, database services, and Java cloud services, are offered by Oracle Corporation of Redwood Shores, California.
[0111] In particular examples, cloud infrastructure system 902 may provide one or more cloud services using a variety of models, such as a Software as a Service (SaaS) model, a Platform as a Service (PaaS) model, an Infrastructure as a Service (IaaS) model, etc., including a hybrid service model. Cloud infrastructure system 902 may include a suite of applications, middleware, databases, and other resources that enable the provisioning of various cloud services.
[0112] The SaaS model allows applications or software to be delivered as a service to customers over a communications network such as the Internet without the customer having to purchase the hardware or software for the underlying application. For example, the SaaS model may be used to provide customers with access to on-demand applications hosted by the cloud infrastructure system 902. Examples of SaaS services offered by Oracle Corporation include, but are not limited to, services for human resource / capital management, customer relationship management (CRM), enterprise resource planning (ERP), supply chain management (SCM), enterprise performance management (EPM), analytics services, and social applications.
[0113] The IaaS model is commonly used to provide flexible computing and storage capabilities by providing infrastructure resources (e.g., servers, storage, hardware and networking resources) to customers as cloud services. Various IaaS services are offered by Oracle Corporation.
[0114] The PaaS model is generally used to provide platform and environment resources as a service that enable customers to develop, run, and manage applications and services without having to procure, build, or manage the environment resources. Examples of PaaS services provided by Oracle Corporation (registered trademark) include, but are not limited to, Oracle Java Cloud Service (JCS), Oracle Database Cloud Service (DBCS), data management cloud services, various application development solution services, etc.
[0115] Cloud services are generally provided on an on-demand self-service basis, on a subscription basis, and in a flexible, scalable, reliable, highly available, and secure manner. For example, a customer may order one or more services provided by cloud infrastructure system 902 via a subscription order. Cloud infrastructure system 902 then performs processing to provide the services requested in the customer's subscription order. For example, a user may use an utterance to request the cloud infrastructure system to take a particular action (e.g., intent) as described above and / or provide a service for a chatbot system as described herein. Cloud infrastructure system 902 may be configured to provide one cloud service or even multiple cloud services.
[0116] Cloud infrastructure system 902 may provide cloud services through a variety of deployment models. In a public cloud model, cloud infrastructure system 902 may be owned by a third-party cloud service provider and cloud services are provided to general public customers. The customers may be individuals or businesses. In another example, under a private cloud model, cloud infrastructure system 902 may function within an organization (e.g., within a corporate organization) and services are provided to customers within the organization. For example, the customers may be various departments of a company, such as human resources, payroll, etc., or may be individuals within the company. In another example, under a community cloud model, cloud infrastructure system 902 and the services provided may be shared among various organizations within an associated community. Various other models may be used, including hybrids of the above models.
[0117] Client computing devices 904, 906, and 908 may be of different types (e.g., client computing devices 802, 804, 806, and 808 shown in FIG. 8) and may be capable of operating one or more client applications. Users may use the client devices to interact with cloud infrastructure system 902, such as to request services provided by cloud infrastructure system 902. For example, a user may use a client device to request information or actions from a chatbot, as described in this disclosure.
[0118] In some examples, the processing that cloud infrastructure system 902 performs to provide the services may include model training and deployment. This analysis may include using, analyzing, and processing a data set to train and deploy one or more models. This analysis may be performed by one or more processors, possibly processing the data in parallel, running simulations with the data, etc. For example, big data analysis may be performed by cloud infrastructure system 902 to generate and train one or more models for a chatbot system. The data used in this analysis may include structured data (e.g., data stored in a database or structured according to a structured model) and / or unstructured data (e.g., data blobs (binary large objects)).
[0119] 9, cloud infrastructure system 902 may include infrastructure resources 930 that are utilized to facilitate the provision of various cloud services offered by cloud infrastructure system 902. Infrastructure resources 930 may include, for example, processing resources, storage or memory resources, networking resources, etc. In a particular example, a storage virtual machine available to handle storage requested by an application may be part of cloud infrastructure system 902. In other examples, the storage virtual machine may be part of a different system.
[0120] In certain examples, to facilitate efficient provisioning of these resources to support various cloud services offered by cloud infrastructure system 902 to different customers, resources may be organized into resource sets or resource modules (also referred to as "pods"). Each resource module or pod may include a pre-integrated and optimized combination of one or more types of resources. In certain examples, different pods may be pre-provisioned for different types of cloud services. For example, a first set of pods may be provisioned for database services, a second set of pods may be provisioned for Java services, etc., which may include a different combination of resources than the pods in the first set of pods. For some services, resources allocated to provision these services may be shared between the services.
[0121] Cloud infrastructure system 902 itself may use services 932 internally that are shared by different components of cloud infrastructure system 902 and that facilitate provisioning of services by cloud infrastructure system 902. These internal shared services may include, but are not limited to, security and identity services, integration services, enterprise repository services, enterprise manager services, virus scanning and whitelist services, high availability, backup and recovery services, services enabling cloud support, email services, notification services, file transfer services, etc.
[0122] Cloud infrastructure system 902 may include multiple subsystems. These subsystems may be implemented in software, or hardware, or a combination thereof. As shown in FIG. 9 , the subsystems may include a user interface subsystem 912 that allows a user or customer of cloud infrastructure system 902 to interact with cloud infrastructure system 902. User interface subsystem 912 may include a variety of different interfaces, such as a web interface 914, an online store interface 916 where cloud services offered by cloud infrastructure system 902 are advertised and available for purchase by consumers, and other interfaces 918. For example, a customer may use a client device to request (service request 934) one or more services offered by cloud infrastructure system 902 using one or more of interfaces 914, 916, and 918. For example, a customer may access an online store, browse cloud services offered by cloud infrastructure system 902, and place a subscription order for one or more services offered by cloud infrastructure system 902 that the customer wishes to subscribe to. The service request may include information identifying the customer and the one or more services the customer wishes to subscribe to. For example, a customer may submit an order to subscribe to services provided by cloud infrastructure system 902. As part of the order, the customer may provide information identifying the chatbot system for which the services are to be provided, and optionally one or more credentials for the chatbot system.
[0123] 9, cloud infrastructure system 902 may include an order management subsystem (OMS) 920 configured to process new orders. As part of this processing, OMS 920 may be configured to create an account for the customer if not already created, receive billing and / or account information from the customer that will be used to charge the customer for providing the requested services to the customer, verify the customer information, and once verified, reserve the order for the customer, and prepare the order for provisioning by coordinating various workflows.
[0124] Upon proper validation, OMS 920 may invoke an order provisioning subsystem (OPS) 924 configured to provision resources for the order, including processing, memory, and networking resources. Provisioning may include allocating resources for the order and configuring the resources to facilitate the service requested by the customer order. The manner in which resources are provisioned for the order and the type of resources provisioned may depend on the type of cloud service ordered by the customer. For example, following a workflow, OPS 924 may be configured to determine the specific cloud service being requested and identify the number of pods that may be pre-configured for the specific cloud service. The number of pods allocated for an order may depend on the size / amount / level / scope of the service requested. For example, the number of pods to allocate may be determined based on the number of users the service should support, the duration for which the service is requested, etc. The allocated pods may then be customized to the specific requesting customer to provide the requested service.
[0125] In a particular example, the setup phase processing may be performed as part of the provisioning process, as described above, by cloud infrastructure system 902. Cloud infrastructure system 902 may generate an application ID and select a storage virtual machine for the application from among the storage virtual machines provided by cloud infrastructure system 902 itself or from storage virtual machines provided by other systems other than cloud infrastructure system 902.
[0126] Cloud infrastructure system 902 may send a response or notification 944 to the requesting customer to indicate when the requested service will be available for use. In some examples, information (e.g., a link) may be sent to the customer that enables the customer to begin using and utilizing the benefits of the requested service. In a particular example, for a customer requesting a service, the response may include a chatbot system ID generated by cloud infrastructure system 902 and information identifying the chatbot system selected by cloud infrastructure system 902 for the chatbot system corresponding to the chatbot system ID.
[0127] Cloud infrastructure system 902 may provide services to multiple customers. For each customer, cloud infrastructure system 902 is responsible for managing information associated with one or more subscription orders received from the customer, maintaining customer data associated with the orders, and providing the requested services to the customer. Cloud infrastructure system 902 may also collect usage statistics regarding the customer's use of the subscribed services. For example, statistics may be collected on the amount of storage used, the amount of data transferred, the number of users, and the amount of system uptime and system downtime, etc. This usage information may be used to bill the customer. Billing may be on a monthly basis, for example.
[0128] Cloud infrastructure system 902 may provide services to multiple customers in parallel. Cloud infrastructure system 902 may store information about these customers, possibly including copyright information. In a particular example, cloud infrastructure system 902 includes an identity management subsystem (IMS) 928 configured to manage information about customers and separate the managed information so that information about one customer is not accessed from information about another customer. IMS 928 may be configured to provide various security-related services, such as identity services such as information access management, authentication and authorization services, services for managing customer identities and roles and associated capabilities, and the like.
[0129] FIG. 10 illustrates an example of a computer system 1000. In some examples, the computer system 1000 may be used to implement any of the digital assistant or chatbot systems in a distributed environment, as well as the various servers and computer systems described above. As illustrated in FIG. 10, the computer system 1000 includes various subsystems, including a processing subsystem 1004 that communicates with several other subsystems via a bus subsystem 1002. These other subsystems may include a processing acceleration unit 1006, an I / O subsystem 1008, a storage subsystem 1018, and a communication subsystem 1024. The storage subsystem 1018 may include a non-transitory computer-readable storage medium, including a storage medium 1022 and a system memory 1010.
[0130] Bus subsystem 1002 provides a mechanism for allowing the various components and subsystems of computer system 1000 to communicate with each other as intended. Although bus subsystem 1002 is shown diagrammatically as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. Bus subsystem 1002 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, a local bus, etc., using any of a variety of bus architectures. For example, such architectures may include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, a Peripheral Component Interconnect (PCI) bus, which may be implemented as a mezzanine bus manufactured in accordance with the IEEE P1386.1 standard, and the like.
[0131] The processing subsystem 1004 controls the operation of the computer system 1000 and may include one or more processors, application specific integrated circuits (ASICs), or field programmable gate arrays (FPGAs). The processors may include single-core or multi-core processors. The processing resources of the computer system 1000 may be organized into one or more processing units 1032, 1034, etc. The processing units may include one or more processors, one or more cores from the same or different processors, combinations of cores and processors, or other combinations of cores and processors. In some examples, the processing subsystem 1004 may include one or more dedicated co-processors, such as graphics processors, digital signal processors (DSPs), etc. In some examples, some or all of the processing units of the processing subsystem 1004 may use customized circuitry, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs).
[0132] In some examples, the processing units in the processing subsystem 1004 may execute instructions stored in the system memory 1010 or the computer-readable storage medium 1022. In various examples, the processing units may execute various program or code instructions as well as maintain multiple programs or processes running simultaneously. At any given time, some or all of the program code to be executed may reside in the system memory 1010 and / or the computer-readable storage medium 1022, potentially including one or more storage devices. Through appropriate programming, the processing subsystem 1004 may provide the various functions described above. In examples where the computer system 1000 is running one or more virtual machines, one or more processing units may be assigned to each virtual machine.
[0133] In certain examples, a processing acceleration unit 1006 may be optionally provided to accelerate the overall processing performed by the computer system 1000, to perform customized processing, or to offload some of the processing performed by the processing subsystem 1004.
[0134] The I / O subsystem 1008 may include devices and mechanisms for inputting information to the computer system 1000 and / or outputting information from or through the computer system 1000. In general, use of the term "input device" is intended to include all conceivable types of devices and mechanisms for inputting information to the computer system 1000. User interface input devices may include, for example, keyboards, pointing devices such as mice or trackballs, touchpads or touchscreens integrated into displays, scroll wheels, click wheels, dials, buttons, switches, keypads, voice input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may also include motion sensing and / or gesture recognition devices, such as a Microsoft Kinect® motion sensor that allows a user to control and interact with the input device, a Microsoft Xbox® 360 game controller, and devices that provide an interface for receiving input using gestures and voice commands. The user interface input devices may also include eye gesture recognition devices, such as a Google Glass® blink detector, that detects eye movements from the user (e.g., "blinking" while taking a picture and / or making a menu selection) and translates the eye gestures as input to the input device (e.g., Google Glass®). The user interface input devices may also include a voice recognition sensing device that allows the user to interact with a voice recognition system (e.g., the Siri® navigator) via voice commands.
[0135] Other examples of user interface input devices may include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, game pads and graphic tablets, as well as audio / visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers 3D scanners, 3D printers, laser range finders, and eye-tracking devices. User interface input devices may also include medical imaging input devices, such as, for example, computed tomography, magnetic resonance imaging, position emission tomography, and medical ultrasound devices. User interface input devices may also include audio input devices, such as, for example, MIDI keyboards, digital musical instruments, and the like.
[0136] In general, use of the term output device is intended to include all conceivable types of devices and mechanisms for outputting information from computer system 1000 to a user or to another computer. User interface output devices may include display subsystems, indicator lights, or non-visual displays such as audio output devices, etc. Display subsystems may be flat panel devices such as those using cathode ray tubes (CRTs), liquid crystal displays (LCDs) or plasma displays, projection devices, touch screens, etc. For example, user interface output devices may include, but are not limited to, various display devices that visually convey text, graphics, and audio / visual information, such as monitors, printers, speakers, headphones, automobile navigation systems, plotters, audio output devices, and modems.
[0137] The storage subsystem 1018 provides a repository or data store for storing information and data used by the computer system 1000. The storage subsystem 1018 provides a tangible, non-transitory computer-readable storage medium for storing basic programming and data constructs that provide some example functionality. Software (e.g., programs, code modules, instructions) that, when executed by the processing subsystem 1004, provide the functionality described above may be stored in the storage subsystem 1018. The software may be executed by one or more processing units of the processing subsystem 1004. The storage subsystem 1018 may also provide authentication in accordance with the teachings of the present disclosure.
[0138] The storage subsystem 1018 may include one or more non-transitory memory devices, including volatile and non-volatile memory devices. As shown in FIG. 10, the storage subsystem 1018 includes a system memory 1010 and a computer-readable storage medium 1022. The system memory 1010 may include several memories, including a volatile main random access memory (RAM) for storing instructions and data during program execution, and a non-volatile read-only memory (ROM) or flash memory in which fixed instructions are stored. In some implementations, a basic input / output system (BIOS), containing the basic routines that help transfer information between elements within the computer system 1000, such as during start-up, may typically be stored in the ROM. Typically, the RAM contains data and / or program modules currently being operated on and executed by the processing subsystem 1004. In some implementations, the system memory 1010 may include several different types of memories, such as static random access memory (SRAM), dynamic random access memory (DRAM), and the like.
[0139] 10, system memory 1010 may load running application programs 1012, program data 1014, and operating system 1016, which may include various applications such as a web browser, a mid-tier application, a relational database management system (RDBMS), etc. By way of example, operating system 1016 may include Microsoft Windows®, Apple Macintosh®, and / or Linux operating systems, various commercially available UNIX® or UNIX-like operating systems (including but not limited to various GNU / Linux operating systems, Google Chrome® OS, etc.), and / or various versions of mobile operating systems such as iOS®, Windows Phone, Android® OS, BlackBerry® OS, Palm® OS operating systems, etc.
[0140] The computer-readable storage medium 1022 may store programming and data configurations that provide some example functionality. The computer-readable storage medium 1022 may provide storage of computer-readable instructions, data structures, program modules, and other data for the computer system 1000. Software (programs, code modules, instructions) that provide the above-mentioned functionality when executed by the processing subsystem 1004 may be stored in the storage subsystem 1018. As an example, the computer-readable storage medium 1022 may include non-volatile memory such as a hard disk drive, a magnetic disk drive, a CD ROM, a DVD, an optical disk drive such as a Blu-Ray® disk, or other optical media. The computer-readable storage medium 1022 may include, but is not limited to, a Zip® drive, a flash memory card, a Universal Serial Bus (USB) flash drive, a Secure Digital (SD) card, a DVD disk, a digital video tape, and the like. The computer-readable storage medium 1022 may also include solid-state drives (SSDs) based on non-volatile memory such as flash memory-based SSDs, enterprise flash drives, solid-state ROM, etc., SSDs based on volatile memory such as solid-state RAM, dynamic RAM, static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory-based SSDs.
[0141] In particular examples, the storage subsystem 1018 may also include a computer-readable storage medium reader 1020 that may be further connected to a computer-readable storage medium 1022. The reader 1020 may be configured to receive and read data from a memory device such as a disk, a flash drive, or the like.
[0142] In certain examples, computer system 1000 may support virtualization techniques, including but not limited to virtualization of processing and memory resources. For example, computer system 1000 may provide support for running one or more virtual machines. In certain examples, computer system 1000 may execute a program, such as a hypervisor, that facilitates configuration and management of virtual machines. Each virtual machine may be assigned memory, computing (e.g., processors, cores), I / O, and networking resources. Each virtual machine typically runs independently from other virtual machines. A virtual machine typically runs its own operating system, which may be the same or different from the operating systems run by other virtual machines executed by computer system 1000. Thus, potentially multiple operating systems may be run simultaneously by computer system 1000.
[0143] The communication subsystem 1024 provides an interface to other computer systems and networks. The communication subsystem 1024 serves as an interface for sending and receiving data between other systems and the computer system 1000. For example, the communication subsystem 1024 may enable the computer system 1000 to establish a communication channel to one or more client devices over the Internet to send and receive information to and from the one or more client devices. For example, if the computer system 1000 is used to implement the bot system 120 shown in FIG. 1, the communication subsystem may be used to communicate with a chatbot system selected for the application.
[0144] The communications subsystem 1024 may support both wired and / or wireless communication protocols. In certain examples, the communications subsystem 1024 may include a radio frequency (RF) transceiver component for accessing wireless voice and / or data networks (e.g., using cellular telephone technology, advanced data network technologies such as 3G, 4G, or EDGE (Enhanced Data Rates for Global Evolution), WiFi (IEEE 802.XX family of standards, or other mobile communications technologies, or any combination thereof), a global positioning system (GPS) receiver component, and / or other components. In some examples, the communications subsystem 1024 may provide a wired network connection (e.g., Ethernet) in addition to or in lieu of a wireless interface.
[0145] The communications subsystem 1024 may receive and transmit data in a variety of formats. In some examples, the communications subsystem 1024 may receive incoming communications in the form of structured and / or unstructured data feeds 1026, event streams 1028, event updates 1030, etc., in addition to other formats. For example, the communications subsystem 1024 may be configured to receive (or transmit) data feeds 1026 in real time from users of social media networks and / or other communications services, such as web feeds, such as Twitter® feeds, Facebook® updates, Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third party sources, etc.
[0146] In particular examples, the communications subsystem 1024 may be configured to receive data in the form of a continuous data stream, which may include an event stream 1028 of real-time events and / or event updates 1030 that may be continuous or infinite in nature without a clear end. Examples of applications that generate continuous data may include, for example, sensor data applications, financial stock ticker boards, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, and the like.
[0147] The communications subsystem 1024 may be configured to communicate data from the computer system 1000 to other computer systems or networks. This data may be communicated in a variety of different formats, such as structured and / or unstructured data feeds 1026, event streams 1028, event updates 1030, etc., to one or more databases that may be in communication with one or more streaming data source computers coupled to the computer system 1000.
[0148] The computer system 1000 may be one of a variety of types, including a handheld portable device (e.g., an iPhone® cellular phone, an iPad® computing tablet, a PDA), a wearable device (e.g., a Google Glass® head-mounted display), a personal computer, a workstation, a mainframe, a kiosk, a server rack, or other data processing system. Due to the ever-changing nature of computers and networks, the description of the computer system 1000 shown in FIG. 10 is intended only as a specific example. Many other configurations are possible having more or fewer components than the system shown in FIG. 10. It should be recognized that there are other aspects and / or methods for implementing the various examples based on the disclosure and teachings herein.
[0149] Although specific examples have been described, various variations, modifications, alternative configurations, and equivalents are possible. The examples are not limited to operation in a particular data processing environment, but may freely operate in multiple data processing environments. Moreover, while the examples have been described using a particular sequence of transactions and steps, it should be apparent to one skilled in the art that this is not intended to be limiting. Although some flow charts describe operations as a sequential process, many of these operations may be performed in parallel or simultaneously. In addition, the order of operations may be re-specified. A process may have additional steps not included in the figures. Various features and aspects of the above examples may be used individually or together.
[0150] Additionally, while particular examples have been described using particular combinations of hardware and software, it should be understood that other combinations of hardware and software are possible. Particular examples may be implemented exclusively in hardware, exclusively in software, or using a combination thereof. The various processes described herein may be implemented on the same processor or on different processors in any combination.
[0151] Where a device, system, component or module is described as being configured to perform a particular operation or function, such configuration may be achieved, for example, by designing an electronic circuit to perform the operation, by programming a programmable electronic circuit (such as a microprocessor) to perform the operation, by executing, for example, computer instructions or code, or a processor or core programmed to execute code or instructions stored in a non-transitory memory medium or any combination thereof. Processes may communicate using a variety of techniques, including, but not limited to, conventional techniques for inter-process communication, and different pairs of processes may use different techniques, and the same pair of processes may use different techniques at different times.
[0152] In this disclosure, specific details are provided to ensure that the examples are thoroughly understood. However, the examples may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques are shown without unnecessary detail so as not to obscure the examples. This specification provides only illustrative examples and is not intended to limit the scope, applicability, or configuration of other examples. Rather, the above description of the examples provides those skilled in the art with an enabling description for implementing various examples. Various changes are possible within the functionality and configuration of the elements.
[0153] Accordingly, the specification and drawings are to be regarded in an illustrative rather than restrictive sense. It will be apparent, however, that additions, subtractions, deletions, and other modifications and changes may be made thereto without departing from the broader spirit and scope as set forth in the claims. Thus, while specific examples have been described, they are not intended to be limiting. Various modifications and equivalents are within the scope of the appended claims.
[0154] In the above specification, aspects of the disclosure are described with reference to specific examples thereof, but those skilled in the art will recognize that the disclosure is not limited thereto. Various features and aspects of the above disclosure may be used individually or together. Moreover, the examples may be utilized in various environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. Thus, the specification and drawings should be regarded as illustrative rather than restrictive.
[0155] In the above description, the methods have been described in a particular order for illustrative purposes. It should be understood that in alternative examples, the methods may be performed in an order different from that described. It should also be understood that the above methods may be performed by hardware components or embodied in a sequence of machine-executable instructions that, when used, may cause a machine, such as a general-purpose or special-purpose processor or logic circuitry programmed with such instructions, to perform the method. These machine-executable instructions may be stored on one or more machine-readable media, such as a CD-ROM or other type of optical disk, a floppy disk, a ROM, a RAM, an EPROM, an EEPROM, a magnetic or optical card, a flash memory, or other type of machine-readable medium suitable for storing electronic instructions. Alternatively, these methods may be performed by a combination of hardware and software.
[0156] Where a component is described as being configured to perform particular operations, such configuration may be achieved by, for example, designing electronic circuitry or other hardware to perform the particular operations, programming a programmable electronic circuitry (e.g., a microprocessor or other suitable electronic circuitry) to perform the particular operations, or any combination thereof.
[0157] Although illustrative examples of the present application have been described in detail herein, it is to be understood that the concepts of the present invention may be variously embodied and employed in other forms, and the claims are intended to be construed to include such modifications except insofar as limited by the prior art.
Claims
1. A method executed by a processor of a computing device, comprising: selecting a number of metrics for which hyperparameters of a machine learning model are to be tuned, each metric being associated with a number of specification parameters including a target score for the metric, a penalty factor, and a bonus factor, the method further comprising: setting the specification parameters for each metric of the plurality of metrics according to a first criterion; evaluating the machine learning model using one or more validation datasets to obtain a metric score for each metric of the plurality of metrics; formulating a weighted loss function based on the difference between the metric score and the target score for each metric, the penalty factor or the bonus factor; tuning the hyperparameters associated with the machine learning model to optimize the weighted loss function; and in response to the weighted loss function being optimized, providing the machine learning model as a validated machine learning model.
2. The method of claim 1 , wherein setting the plurality of specification parameters comprises setting values of the target score, the penalty factor, and the bonus factor according to the first criterion.
3. Formulating the weighted loss function further comprises: for each metric, in response to determining that the metric score is greater than the target score for that metric, assigning the bonus factor to the difference between the metric score and the target score as a weight associated with the metric; and in response to determining that the metric score is lower than the target score for the metric, assigning the penalty factor to the difference between the target score and the metric score as the weight associated with the metric.
4. 4. The method of claim 1, wherein the plurality of metrics includes at least a size of the machine learning model, a training time of the machine learning model, an accuracy rate of the machine learning model, a stability of the machine learning model, a regression error of the machine learning model, and a confidence score of the machine learning model.
5. 3. The method of claim 2, wherein the first criterion corresponds to minimizing a regression error of the machine learning model, and wherein the setting includes assigning a first value to the bonus factor and assigning a second value to the penalty factor, the second value being greater than the first value.
6. Tuning the hyperparameters associated with the machine learning model may further include: (i) selecting initial values for the hyperparameters, and the machine learning model is constructed based on the initial values; and tuning the hyperparameters associated with the machine learning model further comprises: (ii) evaluating the weighted loss function using the initial values of the hyperparameters; and (iii) determining whether the weighted loss function is optimized based on the evaluation; and (iv) in response to the weighted loss function being sub-optimal, searching for new values for the hyperparameters, reconfiguring the machine learning model with the new values, and repeating steps (ii)-(iii) using the reconfigured machine learning model.
7. 7. The method of claim 1, wherein the machine learning model is a neural network model and hyperparameters associated with the machine learning model include at least a number of layers of the machine learning model, a learning rate of the machine learning model, a number of hidden units in each layer of the machine learning model, and a learning algorithm utilized to train the machine learning model.
8. 1. A computing device comprising: A processor; and a memory containing instructions that, when executed by the processor, cause the computing device to perform at least: and selecting a plurality of metrics for which hyperparameters of a machine learning model are to be tuned, each metric being associated with a plurality of specification parameters including a target score for the metric, a penalty factor, and a bonus factor. The instructions, when executed by the processor, further cause the computing device to: setting the plurality of specification parameters for each metric of the plurality of metrics according to a first criterion; Evaluating the machine learning model using one or more validation datasets to obtain a metric score for each metric of the plurality of metrics; Formulating a weighted loss function based on the difference between the metric score and the target score for each metric, the penalty coefficient, or the bonus coefficient; tuning the hyperparameters associated with the machine learning model to optimize the weighted loss function; and in response to the weighted loss function being optimized, causing the machine learning model to be provided as a validated machine learning model.
9. The computing device of claim 8 , wherein setting the plurality of specification parameters comprises setting values of the target score, the penalty factor, and the bonus factor according to the first criterion.
10. The processor is further configured to formulate the weighted loss function, the formulating comprising: for each metric, in response to determining that the metric score is greater than the target score for that metric, assigning the bonus factor to the difference between the metric score and the target score as a weight associated with the metric; 10. The computing device of claim 9, wherein the penalty factor is determined as the weight associated with the metric in response to determining that the metric score is lower than the target score for the metric.
11. 11. The computing device of claim 8, wherein the plurality of metrics includes at least a size of the machine learning model, a training time of the machine learning model, an accuracy rate of the machine learning model, a stability of the machine learning model, a regression error of the machine learning model, and a confidence score of the machine learning model.
12. 10. The computing device of claim 9, wherein the first criterion corresponds to minimizing a regression error of the machine learning model, and wherein the setting includes assigning a first value to the bonus factor and assigning a second value to the penalty factor, the second value being greater than the first value.
13. The processor, (i) selecting initial values for the hyperparameters, and the machine learning model is configured based on the initial values, and the processor further: (ii) evaluating the weighted loss function using the initial values of the hyperparameters; (iii) determining whether the weighted loss function is optimized based on the evaluation; 13. The computing device of claim 8, further comprising: (iv) in response to the weighted loss function being sub-optimal, searching for new values for the hyper-parameters, reconfiguring the machine learning model with the new values, and repeating steps (ii)-(iii) using the reconfigured machine learning model.
14. 14. The computing device of claim 8, wherein the machine learning model is a neural network model and hyperparameters associated with the machine learning model include at least a number of layers of the machine learning model, a learning rate of the machine learning model, a number of hidden units in each layer of the machine learning model, and a learning algorithm utilized to train the machine learning model.
15. A program for causing a processor to execute the method according to any one of claims 1 to 7.
Citation Information
Patent Citations
Data analysis device, analysis method, and program thereof
JP2016042322A
Systems and methods for implementing an intelligent machine learning optimization platform for multiple tuning criteria
US20200065705A1