Application usage model with privacy protection

By using differential privacy technology to train the model on the client side and using federated learning to generate synthetic data, the problem of protecting user privacy and improving application ease of use in the existing technology is solved, and efficient and accurate application improvement is achieved.

CN119744398APending Publication Date: 2025-04-01MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380060971.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-09-20
Filing Date
2023-08-24
Publication Date
2025-04-01

AI Technical Summary

Technical Problem

The prior art is difficult to improve the ease of use of applications by analyzing application usage data while protecting user privacy, especially because old usage data fails over time, resulting in low model accuracy.

Method used

Differential privacy technology is used to train the client side model, and synthetic data is generated through the federated learning system to replace the original usage data and form a global model. This global model is used to generate synthetic data that cannot be traced back to individual users and is used to provide contextual suggestions and recommendations.

Benefits of technology

It effectively protects user privacy, and at the same time, the global model generated by synthesizing data improves the ease of application and user productivity, and reduces model deviations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119744398A_ABST
    Figure CN119744398A_ABST
Patent Text Reader

Abstract

Methods, systems, and computer programs are presented for generating a usage model for predicting user commands in an application. A method includes receiving model information from a client device. A model is obtained at each client device by training a machine learning program with the application using the data. The server generates synthetic data using the model from the client device. A machine learning program is trained using the synthesized data to obtain a global model that receives as input information about recent commands input on the application and generates an output having a prediction for a next command expected to be received by the application. Information of the global model is transmitted to the first client device, and the application provides at least one command option in the application user interface based on a prediction of an expected next command generated by the global model.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The subject matter disclosed herein relates generally to methods, systems, and machine-readable storage media for improving the usability of applications by leveraging application usage data while protecting customer privacy. Background Art

[0002] Understanding the usage and command behavior of an application (e.g., commands entered by a user) helps make better contextual suggestions in the application and helps improve future features of the application. For example, by knowing that users most often click on the image crop button after selecting an image, or that users often click on the bold or italic buttons after highlighting text in a document, developers can improve the application to provide quick access to these possible next commands. Better suggestions increase user productivity by enabling users to select the most likely next command more easily and quickly and with less effort.

[0003] Similarly, by understanding usage patterns of groups of users (e.g., financial services users who frequently utilize certain combinations of features, commands entered by a user preparing a resume), product developers can improve features so that users get the greatest possible benefit from the product.

[0004] However, detailed tracking of app usage may undermine users' expectations of privacy, so any usage data that would undermine privacy cannot be used for analysis and improvement. In addition, users' behavior when using apps may change over time, making old usage data increasingly less representative of the current population, and if that data is used for modeling, the resulting model will have low accuracy. BRIEF DESCRIPTION OF THE DRAWINGS

[0005] The various drawings illustrate only example embodiments of the present disclosure and are not to be considered limiting of its scope.

[0006] Figure 1 is a user interface with suggestions for application commands according to some example embodiments.

[0007] Figure 2 is a simplified schematic diagram of a computer system used to implement the embodiments described herein.

[0008] Figure 3 The training and use of a machine learning model according to some example embodiments is shown.

[0009] Figure 4 Methods for generating a global model using federated learning are shown according to some example embodiments.

[0010] Figure 5 Methods for generating a global model using synthetic data from a client are shown according to some example embodiments.

[0011] Figure 6 A method for generating a global model using synthetic data generated at a server according to some example embodiments is shown.

[0012] Figure 7 A method for generating an international global model of a company utilizing model information from multiple regions is shown according to some example embodiments.

[0013] Figure 8 is a flowchart of a method for generating a model of a user group according to some example embodiments.

[0014] Fig. 9 Generation of a dataset using a global model according to some example embodiments is shown.

[0015] Fig.10 is a flowchart of a method for generating a usage model for predicting user commands in an application according to some example embodiments.

[0016] Fig.11 is a block diagram illustrating an example of a machine on or by which one or more of the example process embodiments described herein may be implemented. DETAILED DESCRIPTION

[0017] Example methods, systems, and computer programs relate to generating a usage model for predicting user commands in an application. Examples represent possible variations only. Unless otherwise explicitly stated, components and functions are optional and may be combined or subdivided, and operations may be varied or combined or subdivided in sequence. In the following description, for the purpose of explanation, many specific details are set forth to provide a thorough understanding of the example embodiments. However, it will be apparent to those skilled in the art that the subject matter may be practiced without these specific details.

[0018] One aspect relates to telemetry and improved methods for detailed tracking of application usage that provide enhanced user privacy using a client-side model trained with captured usage data. Differential privacy is applied to the input data and the model is uploaded to a cloud service to update a global usage model that in turn generates synthetic data that cannot be traced back to individual users.

[0019] Another aspect includes a telemetry framework that employs a federated learning system to retrain a global usage model to generate synthetic data that replaces raw usage data collected from individual users in a privacy-enhancing manner. Another aspect includes using the synthetic data as further input to a specialized model for providing contextual suggestions and recommendations to users as they utilize applications (also referred to herein as apps).

[0020] The global model is used to generate synthetic data (data generated by a model that represents (e.g., simulates) the use of the application) about users who utilize the application, and is used to answer questions about how users utilize the application (e.g., which usage patterns are more common for specific groups?) to provide reports and insights used by product developers. Because the model is based on synthetic data, the model does not use the data of any specific user or organization; thereby protecting user privacy.

[0021] The synthetic data can also be used as input to specialized models for providing contextual suggestions, recommendations, etc. to users based on predicted user input. Models can also be randomly sampled for specific groups (e.g., users who process certain types of documents (resumes, financial spreadsheets, etc.) without collecting user-specific metadata. As a result, the service can reduce bias and ensure better representation of any group using the application.

[0022] One general aspect includes a method that includes operations for receiving model information from a plurality of client devices at a server. The model information is used for a model obtained at each client device by training a machine learning program with application usage data obtained at the client device. The method also includes operations for generating synthetic data generated using the models from the plurality of client devices at the server. The method also includes training the machine learning program with the synthetic data to obtain a global model. The global model receives as input information about at least one recent command entered on an application, and generates an output that includes at least one prediction of a next command expected to be received by the application. The method also includes transmitting information of the global model to a first client device from the plurality of client devices, wherein the application executed on the first client device provides at least one command option in an application user interface based on the prediction of the expected next command generated by the global model.

[0023] Figure 1 1 is a user interface 102 with suggestions 106 for application commands according to some example embodiments. The example shown is for utilizing of When the user selects the search input field 104, the application provides suggestions 106 on the user interface 102. The suggestions 106 are also referred to as suggested actions. In addition, as used herein, the actions performed by the user on the user interface 102 of the application are also referred to as commands.

[0024] The user may continue to enter text in search input field 104 or select one of suggestions 106 (eg, by clicking on one of suggestions 106, by using arrow keys to select suggestion 106 and then pressing the enter key).

[0025] In some example embodiments, suggestions 106 are selected by the application based on one or more factors, such as recent commands entered by the user (e.g., user selecting a block of text, user selecting an image, user opening a new document), usage patterns of users in the same context, usage patterns of users utilizing the application, and the like.

[0026] The suggestions 106 may be of different types, such as a user's recent actions, context-based suggested actions (e.g., finding text, performing a spell check, starting a slide show), initiating a communication with another user, opening a file (e.g., a recently used PowerPoint file, a recently opened Microsoft Office file). Although the sample user interface 102 is for PowerPoint, the same principles presented here may be used for other applications, such as Microsoft Office. Microsoft Microsoft web browsers, mobile phone applications, etc.

[0027] In addition, suggestions can also be provided when using other elements of the user interface, such as when the user is entering text or the user has selected a block of text. Suggestions can include actions to perform on the text, such as highlighting, bolding, creating bullets, deleting text, etc.

[0028] Figure 2 2 is a simplified schematic diagram of a computer system for implementing the embodiments described herein. Application 206 executes on a client device 204 (eg, a personal computer) that interfaces with user 202, although other devices such as mobile phone 212 or laptop computer 210 may also be utilized.

[0029] In some example embodiments, the client device 204 includes code for implementing the application 206. In addition, the application 206 may also interface with an application server 216 that provides additional functionality. The application server 216 may be implemented as part of a cloud architecture. In some cases, the application server 216 may provide functionality of the application 206 that is accessed via a browser 208 executing on the client device 204; that is, the client device 204 does not need to have the application 206 installed to run a browser-based version.

[0030] Additionally, information server 218 interfaces with client device 204 and application server 216 to collect application usage information (eg, telemetry information) for analyzing usage data and generating models for predicting commands to be entered by user 202 based on application 206 context.

[0031] The predictive model can use as input a sequence of recent commands entered by the user, where these commands define a context useful for predicting the next command to be entered. The application can provide shortcuts or suggestions to quickly and easily access these predicted commands.

[0032] As referenced above Figure 1 As discussed, an example of providing suggestions when a user selects the search input field 104 is presented. In addition, the same principles can be used for other application enhancement purposes, such as predicting the next text to be entered, enhancing text based on document purpose, recommending image positions and sizes, etc. The embodiments are described with reference to next command prediction, but the same principles can be used for other purposes.

[0033] Figure 3 The training and use of machine learning models according to some example embodiments are shown. In some example embodiments, the machine learning (ML) model 316 is used to perform operations associated with application commands, such as predicting the next command that a user may enter into an application, or generating synthetic data using commands for an application.

[0034] Machine learning (ML) is the application of providing computer systems with the ability to perform tasks without explicit programming by making inferences based on patterns discovered in data analysis. Machine learning explores the study and construction of algorithms (also referred to herein as tools) that can learn from existing data and make predictions about new data. Such machine learning algorithms operate by building an ML model 316 from example training data 312 in order to make data-driven predictions or decisions expressed in the form of outputs or evaluations 320. Although example embodiments are presented with respect to some machine learning tools, the principles presented herein can be applied to other machine learning tools.

[0035] Data representation refers to the method by which data is organized for storage on a computer system, including a structure for the identified features and their values. In ML, data is usually represented as vectors or matrices of two or more dimensions. Data representation is important when dealing with large amounts of data and many features, so that training can identify correlations within the data.

[0036] There are two common modes of ML: supervised ML and unsupervised ML. Supervised ML uses prior knowledge (e.g., examples that relate inputs to outputs or outcomes) to learn the relationship between inputs and outputs. The goal of supervised ML is to learn a function that, given some training data, best approximates the relationship between the training inputs and outputs so that the ML model can achieve the same relationship when given an input to generate the corresponding output. Unsupervised ML is the use of unclassified or unlabeled information to train a machine learning algorithm and allow the algorithm to act on that information without guidance. Unsupervised ML is useful in exploratory analysis because it can automatically identify structure in the data.

[0037] Common tasks for supervised ML are classification problems and regression problems. Classification problems, also known as categorization problems, aim to classify an item into one of several category values ​​(e.g., is this object an apple or an orange?). Regression algorithms aim to quantify some items (e.g., by providing a score to some input value). Some examples of commonly used supervised ML algorithms are logistic regression (LR), naive-Bayes, random forest (RF), neural network (NN), deep neural network (DNN), matrix factorization, and support vector machine (SVM).

[0038] Some common tasks of unsupervised ML include clustering, representation learning, and density estimation. Some examples of commonly used unsupervised ML algorithms are K-means clustering, principal component analysis, and autoencoders.

[0039] In some embodiments, the example ML model 316 provides a next command prediction and a confidence level (i.e., a score representing the probability that the user will next select the predicted command). For example, the confidence level can be a number from 1 to 100, but other scales are possible. In another example, another ML model 316 generates a synthetic command for an application.

[0040] Training data 312 includes examples of values ​​for features 302. In some example embodiments, training data 312 includes labeled data with examples of values ​​for features 302 and labels indicating results, such as selected commands. The machine learning algorithm uses training data 312 to find correlations between identified features 302 that affect results. Features 302 are individual measurable characteristics of observed phenomena. The concept of features is related to the concept of explanatory variables used in statistical techniques such as linear regression. Selecting informative, discriminative, and independent features is important for the effective operation of ML in pattern recognition, classification, and regression. Features can be of different types, such as numbers, strings, categorical, and graphics. Categorical features are features that can be assigned values ​​from multiple predetermined possible values ​​(e.g., the animal is a dog, a cat, or a bird).

[0041] In an example embodiment, the features 302 may be of different types and may include one or more of the following: an input command 303, a sequence identifier (ID) 304 for marking a command sequence, a timestamp 305 when the command was input, a user context 306, an application 307 used by the user, user information 308, group information 309, device information 310 of a client device used by the user, etc. Fig. 9 More details of feature 302 are provided.

[0042] During training 314, an ML program (also referred to as an ML algorithm or ML tool) analyzes training data 312 based on identified features 302 and configuration parameters defined for training 314. The result of training 314 is an ML model 316 that is capable of accepting input to produce an evaluation.

[0043] Training an ML algorithm involves analyzing large amounts of data (e.g., from several GB to 1 TB or more) to find data correlations. The ML algorithm utilizes the training data 312 to find correlations between the identified features 302 that influence the outcome or evaluation 320. In some example embodiments, the training data 312 includes labeled data, which is known data of one or more identified features 302 and one or more outcomes (such as commands entered by a user).

[0044] ML algorithms typically explore many possible functions and parameters before finding what the ML algorithm identifies as the best correlation within the data; therefore, training can utilize significant computing resources and time.

[0045] When the ML model 316 is used to perform an evaluation, new data 318 is provided as an input to the ML model 316, and the ML model 316 generates an evaluation 320 as an output. For example, when a user action or command is detected (e.g., a user selects a block of text), the ML model 316 uses user and application information as input to generate an output that includes one or more command IDs and a confidence level for each command to be selected next. In other embodiments, possible command sequences and confidence levels are outputs of the ML model 316.

[0046] In some example embodiments, the new data 318 input includes a history of a predetermined number of recent commands entered by the user, as well as other values ​​of one or more features 302 (e.g., where the cursor was placed in the document, the image the user last selected, the cell the user is working in a table, the user is adding bullet points to a presentation page).

[0047] In some example embodiments, results obtained by ML model 316 during operation (e.g., evaluations 320 generated by model 316 in response to inputs) are used to improve training data 312, which is then used to generate newer versions of model 316. Thus, a feedback loop is formed to improve model 316 using results obtained by model 316.

[0048] Figure 4 A method for generating a global model 408 using federated learning 406 is shown according to some example embodiments. A plurality of client devices 204 execute applications 206. In some example embodiments, a model 402 is generated at a client device 204 to make a prediction, for example, to predict the next command of an application 206.

[0049] The training data for each model is generated at least in part using data collected during execution of the application 206 at the client device 204. Since the model 402 at each client device 204 uses different training data, the model 402 can be different for each client device 204.

[0050] In some example embodiments, each client device 204 sends model information to the information server 218. The model information includes data required to use the model 404 at the information server 218. For example, the model information may include the number of layers of the neural network and the weight of each neuron in the neural network.

[0051] Using the model 404 sent by the client device 204, federated learning 406 is used to generate a global model 408. Federated learning is a machine learning technique that trains an algorithm across multiple decentralized edge devices or servers that hold local data samples without exchanging the local data samples. This approach contrasts with traditional centralized machine learning techniques, in which all local data sets are uploaded to one server, and also contrasts with more classic decentralized approaches, which typically assume that local data samples are identically distributed. In this approach, privacy is preserved because local data samples are not shared with other devices. In addition, privacy is preserved because federated learning is configured to avoid reverse engineering of the resulting model to derive the training data used for training.

[0052] Federated learning enables multiple participants to build common, robust machine learning models without sharing data, allowing key issues such as data privacy, data security, data access rights, and access to heterogeneous data to be addressed.

[0053] The global model 408 can then be used to make predictions, for example, to predict the next command in the application 206. In some embodiments, the global model 408 can be transmitted back to one or more client devices 204, and the client devices 204 can update their own models 402. In addition, the global model 408 can be used to make predictions when the user is utilizing a web application 410 executed at the information server 218 or at another server such as the application server 216.

[0054] The information server 218 captures knowledge from each client device 204 and aggregates that knowledge into a global model 408 that is built with more information than any model 402 from a client device 204. The global model 408 is shared back to the client devices 204 so that each client device 204 benefits from the knowledge of the application user group. For example, users utilizing Microsoft Outlook can benefit from better features, such as text predictions, based on the Outlook user group.

[0055] Note that model 402 may be a different type than global model 408. For example, model 402 at client device 204 may be a long short-term memory (LSTM) model (a fairly simple ML model), while global model 408 may be a complex neural network.

[0056] Figure 5 A method of generating a global model using synthetic data 504 from a client according to some example embodiments is shown. In some example embodiments, model 402 is used to generate synthetic data. Synthetic data is data generated by a model that simulates the use of an application. That is, synthetic data 504 is not real data of a command entered in application 206.

[0057] Input is provided to the model 402, and the output from the model 402 is the synthesized data 502. The input may be random or generated in some other form, such as a list of commands previously entered by the user, etc. In one example, the input to the model 402 is a list of commands previously entered by the user, and the output is the synthesized data 502 as the next predicted command. The input to the model 402 may also include information about the user or the value of some other feature, such as the value of the command previously entered by the user, such as the value of the command previously entered by the user, etc. Figure 3 Describe the characteristics.

[0058] Since the synthesized data 502 is not the user's actual usage data, the user's privacy is maintained when the synthesized data 502 is used to build the global model 508 .

[0059] The synthetic data 502 from multiple client devices 204 is sent to the information server 218. The collection of synthetic data 502 is the synthetic data 504 used to train the global model 508. The global model 508 can be used to make predictions, and the global model 508 will be more accurate than the individual model 402 because it has richer data from multiple users. The global model 508 is then transmitted to all or some of the client devices 204 to update the model 402 executed on the client device 204. The global model 508 can also be used to make predictions for users executing the web application 410.

[0060] The model 402 downloaded to the client device 204 may also be updated over time at the client device 204 to keep improving the model 402. This process may be iterated multiple times to improve the global model 508. As more data becomes available, the predictive accuracy of the global model 508 will increase.

[0061] The benefit of synthetic data 504 is that it captures knowledge and understanding about how to use the application, and synthetic data 504 can be used to train models for multiple purposes while protecting the privacy of the user. That is, synthetic data 504 is not tied to a specific user or their specific behavior in the application, so the risk of privacy violation is much smaller.

[0062] In some example embodiments, some of the actual application usage data generated by the user may be transmitted in addition to sending the synthesized data 502. The data may be transmitted if the user has authorized the use of the data, or if the data is anonymized so that it cannot be traced back to a specific user.

[0063] Figure 6 A method for generating a global model 608 using synthetic data 604 generated at a server is shown according to some example embodiments. Figure 4 As depicted, data for model 402 is transmitted to information server 218 .

[0064] Instead of using federated learning, the information server 218 uses the transmitted model 404 to generate synthetic data 604, as described above with reference to Figure 5 as described.

[0065] Once the synthetic data 604 is generated, the information server 218 performs training 606 using the synthetic data 604 as a training set. The result is a global model 608 that captures information from multiple client devices 204 while protecting privacy. Actual usage data at the client device 204 is not transmitted; therefore, privacy is protected. The global model 608 can be transmitted back to the client device 204 or used to make predictions for users utilizing the web application 410.

[0066] The global model 608 generated using the synthetic data 604 provides a valuable tool for command prediction. For example, by understanding which commands are more likely to be executed, shortcuts can be provided and user productivity can be improved when using the application 206.

[0067] Furthermore, by periodically updating the global model 608 with new synthetic data 604 (derived from the updated model 404), the system can adapt to changing trends regarding how the application is used.

[0068] One of the advantages of generating synthetic data 604 at information server 218 is that only model information is transmitted, rather than having to send all application usage information from multiple clients. This results in savings in network bandwidth utilization and computer resource utilization (e.g., client device 204 saves CPU because it has to transmit less data).

[0069] Figure 7 A method for generating a company's international global model 708 using model information from multiple regions is shown according to some example embodiments. In some countries or regions, there are requirements on where customer data is stored, and some regulations or contractual commitments prohibit the transfer of user data outside of a region or border.

[0070] However, sometimes a company may want to use data from multiple regions to improve a training dataset, but since the data may not be transmitted to a central location, this can be a difficult proposition.

[0071] One solution is to use federated learning, which in some cases means training a model across multiple computers, each of which has access to a subset of the data.

[0072] Another solution to the regional data problem is to use synthetic data 604, such as Figure 7 As shown, the models 404 from different regions are transmitted to the information server 218, and then the models 404 are used to generate the synthetic data 604. Since the models 404 do not include user data, there is no transmission of user data across regions.

[0073] After training 606 with synthetic data 604, an international global model 708 may be used. The international global model 708 is built based on information from different regions, but no actual user data is transmitted. This is one of the advantages of using synthetic data 604: synthetic data 604 is not actual user data, but synthetic data 604 does reflect user behavior in different regions.

[0074] Figure 88 is a flow diagram of a method 800 for generating a model of user groups, according to some example embodiments. As used herein, a group refers to a group of users that share one or more characteristics, such as the company they work for, the type of entity (e.g., corporation, government agency, small business), functional area (e.g., marketing, engineering), job title (e.g., software developer, marketing specialist), geographic location (e.g., United States, Europe, India), work status (e.g., employed, retired, looking for a new job), etc.

[0075] Understanding how a group uses an application can help improve the application for a specific group by providing application features that assist group members. For example, a user group may be patent attorneys who typically perform edits to claims. Once a text processor (e.g., Microsoft Word) detects that patent attorneys are modifying claims, it can provide shortcuts to "clean" the claims by eliminating insertions and deletions, changing claim status (e.g., from "Currently Amended" to "Previously Presented"), providing text predictions (e.g., based on terms defined on the claims), etc.

[0076] However, some groups may be too small to obtain sufficient training data. In addition, as mentioned above, it may not be possible to send data across regions. By using synthetic data, improved prediction models can be created for specific groups. Although user data may be sparse for machine learning, large amounts of synthetic data can be generated for groups.

[0077] In an embodiment of the method 800 , at operation 802 , a client model is generated for each group device (a client device used by a member of the group).

[0078] From operation 802 , method 800 flows to operation 804 , where synthetic data is generated using the client model generated at operation 802 .

[0079] At operation 806 , the group model is trained using synthetic data generated using the client model.

[0080] Additionally, at operation 808, group application usage is inferred (eg, command prediction) using the group model.

[0081] Fig. 9 Utilization of a global model 608 according to some example embodiments is shown to generate a data set 902. In some example embodiments, the global model 608 generates as output synthetic usage data for an application, ie, data simulating user input (eg, commands) in an application.

[0082] In one embodiment, the input to global model 608 is simply the commands for generating synthetic usage data. In other embodiments, the input may include one or more feature values ​​to limit the generation of synthetic data to a specific environment. For example, the input may include a group identifier, and global model 608 will generate one or more synthetic commands to be entered by members of the group.

[0083] The output of global model 608 includes one or more commands (e.g., the input may be an integer for requesting the generation of 1000 entries). The output is shown in data set 902, which is a table where each row corresponds to a user command and each column refers to one of the features for the data set.

[0084] The examples shown include features such as command ID, sequence ID, timestamp, context information, application information, user information, group ID (or multiple IDs if the user belongs to several groups), device information, etc.

[0085] A command ID is a numeric identifier assigned to a command, where each command in an application has a different identifier. A sequence ID is a numerical value indicating the order of commands entered, where the sequence ID increases by 1 for each new command. The sequence ID can be used to track the sequence of commands entered.

[0086] The timestamp reflects the time when the command was entered. The context provides information about the state of the application when the command was entered (e.g., the user has selected a block of text, the user has placed the cursor within a table, the user is editing a presentation document). The user information includes information about the user who entered the command, such as years of experience using the application, the region the user is in, the language used, etc.

[0087] Additionally, the group ID includes identifiers of one or more groups of the user.The device information includes data about the client device the user uses to interact with the application, such as the type of device (eg, personal computer, laptop, mobile phone), operating system, and the like.

[0088] Once the data set 902 is generated, the data set 902 can be used to train 904 other models, such as a model that predicts the next command entered by the user. The data set can also be analyzed to generate reports 906, such as statistics on the most frequently used commands, the context in which users access the help function, a histogram of commands used by a specific group, etc.

[0089] Data set 902 can be helpful in generating application improvements 908. For example, by analyzing when a user needs help, the application's user interface (UI) can be improved to add shortcuts or suggestions. Also, a new command can be generated that can include a series of other commands (e.g., a single command to "clean up" claims to accept amendments in the case of a patent attorney group). Another command can automatically format a document (e.g., a resume) or a portion of a document (e.g., format a table of contents).

[0090] Fig.10 1 is a flowchart of a method 1000 for generating a usage model for predicting user commands in an application according to some example embodiments. Although various operations in the flowchart are presented and described sequentially, one of ordinary skill will appreciate that some or all operations may be performed in a different order, combined or omitted, or performed in parallel.

[0091] Operation 1002 is for receiving model information from a plurality of client devices at a server. The model information is for a model obtained at each client device, the model being obtained by training a machine learning program using application usage data obtained at the client device.

[0092] From operation 1002 , method 1000 flows to operation 1004 for generating, at a server, synthetic data generated using the model from a plurality of client devices.

[0093] From operation 1004, method 1000 flows to operation 1006 for training a machine learning program using synthetic data to obtain a global model. The global model receives as input information about at least one recent command entered on an application and generates an output including at least one prediction for a next command expected to be received by the application.

[0094] Method 1000 flows from operation 1006 to operation 1008 for transmitting information of the global model to a first client device from a plurality of client devices, wherein an application executed on the first client device provides at least one command option in an application user interface based on a prediction of an expected next command generated by the global model.

[0095] In one example, a model of the client device is configured for input including recent commands entered on an application and produces an output of at least one predicted command to be entered in the application.

[0096] In one example, training is based on features including a command identifier (ID), a timestamp, a usage context in the application, information about a user interacting with the application, and information about the client device.

[0097] In one example, generating synthetic data includes using random inputs to one of the models, and generating outputs including simulated commands entered in the application.

[0098] In one example, synthetic data includes data generated by a model that simulates usage of an application.

[0099] In one example, a global model is generated using models from client devices in multiple regions, where actual usage data from users is not transmitted to the information service.

[0100] In one example, at least one command option in an application user interface includes a shortcut to a next command expected to be received by the application.

[0101] In one example, method 1000 also includes using the synthetic data corresponding to the group of users to generate a group model for making predictions for the group of users utilizing the application.

[0102] In one example, method 1000 also includes utilizing the global model to make predictions for a server-based version of the application.

[0103] In one example, method 1000 also includes generating, by the server, a federated model using federated learning and model information from a plurality of client devices.

[0104] Another general aspect is a system comprising a memory containing instructions and one or more computer processors. The instructions, when executed by the one or more computer processors, cause the one or more computer processors to perform operations, the operations comprising: receiving model information from a plurality of client devices, the model information being used for a model obtained at the client devices by training a machine learning program with application usage data obtained at each client device; generating synthetic data generated using the model from the plurality of client devices; training the machine learning program with the synthetic data to obtain a global model, the global model receiving as input information about at least one recent command entered on the application and generating outputs, the outputs comprising at least one prediction for a next command expected to be received by the application; and transmitting information of the global model to a first client device from the plurality of client devices, wherein the application executed on the first client device provides at least one command option in the application user interface based on the prediction of the next expected command generated by the global model.

[0105] In yet another general aspect, a tangible machine-readable storage medium (e.g., a non-transitory storage medium) includes instructions that, when executed by a machine, cause the machine to perform operations, the operations comprising: receiving model information from a plurality of client devices, the model information being used for a model obtained at the client devices by training a machine learning program with application usage data obtained at each client device; generating synthetic data generated using the models from the plurality of client devices; training the machine learning program with the synthetic data to obtain a global model, the global model receiving as input information about at least one recent command entered on the application and generating outputs including at least one prediction of the next command expected to be received by the application; and transmitting information of the global model to a first client device from the plurality of client devices, wherein the application executed on the first client device provides at least one command option in the application user interface based on the prediction of the expected next command generated by the global model.

[0106] The presented embodiments minimize the data collected from client applications, thereby reducing the complexity and amount of computing resources required on the cloud. The embodiments also reduce the privacy risks of collecting sensitive data from users.

[0107] Fig.11 1 is a block diagram showing an example of a machine 1100 on which or by which one or more example process embodiments described herein may be implemented or controlled. In alternative embodiments, the machine 1100 may operate as a standalone device, or may be connected (e.g., networked) to other machines. In a networked deployment, the machine 1100 may operate in the capacity of a server machine, a client machine, or both in a server-client network environment. In an example, the machine 1100 may act as a peer machine in a peer-to-peer (P2P) (or other distributed) network environment. In addition, although only a single machine 1100 is shown, the term "machine" should also be deemed to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methods discussed herein, such as via cloud computing, software as a service (SaaS) or other computer cluster configurations.

[0108] As described herein, examples may include logic, multiple components or mechanisms, or may be operated by logic, multiple components or mechanisms. A circuit system is a collection of circuits implemented in a tangible entity (e.g., simple circuits, gates, logic) including hardware. Circuit system qualifications can change flexibly over time and with changes in the underlying hardware. A circuit includes members that can perform specified operations individually or in combination when in operation. In an example, the hardware of the circuit system can be variably designed to perform specific operations (e.g., hardwired). In an example, the hardware of the circuit system may include variably connected physical components (e.g., execution units, transistors, simple circuits) that include physically modified (e.g., magnetically, electrically, by removable placement of unchanged polymer particles) to encode computer-readable media for instructions for specific operations. When connecting physical components, the underlying electrical properties of the hardware components are changed (e.g., from insulators to conductors or vice versa). Instructions enable embedded hardware (e.g., execution units or loading mechanisms) to create members of the circuit system in hardware via variable connections to perform parts of specific operations when in operation. Therefore, when the device is operating, the computer-readable medium is communicatively coupled to other components of the circuit system. In an example, any of the physical components can be used in more than one member of more than one circuit system. For example, in operation, an execution unit can be used in a first circuit in a first circuit system at one point in time and reused by a second circuit in the first circuit system or a third circuit in the second circuit system at a different time.

[0109] The machine (e.g., computer system) 1100 may include a hardware processor 1102 (e.g., a central processing unit (CPU), a hardware processor core, or any combination thereof), a graphics processing unit (GPU) 1103, a main memory 1104, and a static memory 1106, some or all of which may communicate with each other via an interconnect (e.g., a bus) 1108. The machine 1100 may also include a display device 1110, an alphanumeric input device 1112 (e.g., a keyboard), and a user interface (UI) navigation device 1114 (e.g., a mouse). In an example, the display device 1110, the alphanumeric input device 1112, and the UI navigation device 1114 may be a touch screen display. The machine 1100 may additionally include a mass storage device (e.g., a drive unit) 1116, a signal generating device 1118 (e.g., a speaker), a network interface device 1120, and one or more sensors 1121, such as a global positioning system (GPS) sensor, a compass, an accelerometer, or another sensor. The machine 1100 may include an output controller 1128, such as a serial (e.g., universal serial bus (USB)), parallel, or other wired or wireless (e.g., infrared (IR), near field communication (NFC)) connection to communicate with or control one or more peripheral devices (e.g., printer, card reader).

[0110] The mass storage device 1116 may include a machine-readable medium 1122 on which is stored one or more sets of data structures or instructions 1124 (e.g., software) embodying or utilized by any one or more of the techniques or functionality described herein. The instructions 1124 may also reside, completely or at least partially, within the main memory 1104, within the static memory 1106, within the hardware processor 1102, or within the GPU 1103 during execution by the machine 1100. In an example, one or any combination of the hardware processor 1102, the GPU 1103, the main memory 1104, the static memory 1106, or the mass storage device 1116 may constitute a machine-readable medium.

[0111] Although the machine-readable medium 1122 is illustrated as a single medium, the term “machine-readable medium” may include a single medium or multiple media (eg, a centralized or distributed database and / or associated caches and servers) configured to store one or more instructions 1124 .

[0112] The term "machine-readable medium" may include any medium capable of storing, encoding, or carrying instructions 1124 for execution by the machine 1100 and causing the machine 1100 to perform any one or more of the techniques of the present disclosure, or any medium capable of storing, encoding, or carrying data structures used by or associated with such instructions 1124. Non-limiting examples of machine-readable media may include solid-state memory and optical and magnetic media. In an example, a large-scale machine-readable medium includes a machine-readable medium 1122 having a plurality of particles with a constant (e.g., stationary) mass. Therefore, a large-scale machine-readable medium is not a transient propagating signal. Specific examples of large-scale machine-readable media may include non-volatile memory, such as semiconductor memory devices (e.g., electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM)) and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.

[0113] The instructions 1124 may also be sent or received over the communication network 1126 via the network interface device 1120 using a transmission medium.

[0114] Throughout this specification, multiple instances can implement components, operations or structures described as single instances. Although the individual operations of one or more methods are shown and described as separate operations, one or more of the individual operations can be performed simultaneously, and the operations do not need to be performed in the order shown. The structure and function presented as separate components in the example configuration can be implemented as a combined structure or component. Similarly, the structure and function presented as a single component can be implemented as a separate component. These and other changes, modifications, additions and improvements fall within the scope of this paper theme.

[0115] The embodiments described herein are described in sufficient detail to enable those skilled in the art to practice the disclosed teachings. Other embodiments may be used and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of the present disclosure. Therefore, the specific embodiments should not be considered limiting, and the scope of the various embodiments is limited only by the appended claims and the full scope of equivalents to which such claims are entitled.

[0116] In addition, as used in the present disclosure, phrases of the form "at least one of A, B, or C", "at least one of A, B, and C", etc. should be interpreted as selecting at least one from the group including "A, B, and C". Unless otherwise explicitly stated in conjunction with a specific example, in the present disclosure, this wording does not mean "at least one of A, at least one of B, and at least one of C". As used in the present disclosure, the example "at least one of A, B, or C" will cover any of the following selections: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, and {A, B, C}.

[0117] In addition, multiple instances may be provided for resources, operations, or structures described herein as a single instance. In addition, the boundaries between various resources, operations, modules, engines, and data stores are arbitrary to some extent, and specific operations are shown in the context of a specific illustrative configuration. Other allocations of functions can be envisioned and may fall within the scope of various embodiments of the present disclosure. Typically, structures and functions presented as separate resources in the example configuration may be implemented as combined structures or resources. Similarly, structures and functions presented as a single resource may be implemented as separate resources. These and other changes, modifications, additions, and improvements fall within the scope of embodiments of the present disclosure as represented by the appended claims. Therefore, the specification and drawings are considered to be illustrative rather than restrictive.

Claims

1. A computer-implemented method comprising: receiving, at a server, model information from a plurality of client devices, the model information being for a model obtained at each client device, the model being obtained by training a machine learning program using application usage data obtained at the client device; generating, at the server, synthetic data generated using the model from the plurality of client devices; training a machine learning program using the synthetic data to obtain a global model that receives as input information about at least one recent command entered on an application and generates an output that includes at least one prediction for a next command expected to be received by the application; as well as Information of the global model is transmitted to a first client device from among the plurality of client devices, wherein an application executed on the first client device provides at least one command option in an application user interface based on a prediction of the expected next command generated by the global model.

2. The method according to claim 1, wherein: The model of each client device is configured for input including recent commands entered on the application, and the model produces an output of at least one predicted command to be entered in the application.

3. The method according to claim 1, wherein: The training is based on features including a command identifier (ID), a timestamp, a context of use in the application, information about a user interacting with the application, and information about the client device.

4. The method according to claim 1, wherein: Generating the synthetic data comprises: Using random input from one of the models; and An output is generated that includes simulation commands input in the application.

5. The method according to claim 1, wherein: The synthetic data includes data generated by a model that simulates usage of the application.

6. The method according to claim 1, wherein: The global model is generated using models from client devices in multiple regions, wherein actual usage data from users is not transmitted to the server.

7. The method according to claim 1, wherein: The at least one command option in the application user interface includes a shortcut to the next command expected to be received by the application.

8. The method according to claim 1, further comprising: Synthetic data corresponding to a group of users is used to generate a group model for making predictions for the group of users utilizing the application.

9. The method according to claim 1, further comprising: The global model is utilized to make predictions for a server-based version of the application.

10. The method according to claim 1, further comprising: A federated model is generated by the server using federated learning and the model information from the plurality of client devices.

11. A server, comprising: a memory including instructions; as well as one or more computer processors, wherein the instructions, when executed by the one or more computer processors, cause the system to perform operations comprising: receiving model information from a plurality of client devices, the model information being for a model obtained at each client device, the model being obtained by training a machine learning program using application usage data obtained at the client device; generating synthetic data generated using the model from the plurality of client devices; training a machine learning program using the synthetic data to obtain a global model that receives as input information about at least one recent command entered on an application and generates an output that includes at least one prediction for a next command expected to be received by the application; and Information of the global model is transmitted to a first client device from among the plurality of client devices, wherein an application executed on the first client device provides at least one command option in an application user interface based on a prediction of the expected next command generated by the global model.

12. The server according to claim 11, wherein: The model of each client device is configured for input including recent commands entered on the application, and the model produces an output of at least one predicted command to be entered in the application.

13. The server according to claim 11, wherein: The training is based on features including a command identifier (ID), a timestamp, a context of use in the application, information about a user interacting with the application, and information about the client device.

14. A system comprising means for performing the method according to any one of claims 1-10.

15. At least one machine-readable medium comprising instructions which, when executed by a machine, cause the machine to perform the method according to any one of claims 1-10.