BR112021009042A2 - automated generation of machine learning models - Google Patents

automated generation of machine learning models Download PDF

Info

Publication number
BR112021009042A2
BR112021009042A2 BR112021009042-8A BR112021009042A BR112021009042A2 BR 112021009042 A2 BR112021009042 A2 BR 112021009042A2 BR 112021009042 A BR112021009042 A BR 112021009042A BR 112021009042 A2 BR112021009042 A2 BR 112021009042A2
Authority
BR
Brazil
Prior art keywords
model
models
child
parent
candidate
Prior art date
Application number
BR112021009042-8A
Other languages
Portuguese (pt)
Inventor
Debadeepta Dey
Hanzhang HU
Richard A. Caruana
John C. LANGFORD
Eric J. Horvitz
Original Assignee
Microsoft Technology Licensing, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112021009042A2 publication Critical patent/BR112021009042A2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/086Learning methods using evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout

Abstract

geração automatizada de modelos de aprendizagem por máquina. a presente invenção refere-se à geração automatizada de modelos de aprendizagem por máquina, como redes neurais. um exemplo do sistema inclui uma unidade de processamento de hardware e um recurso de armazenamento. o recurso de armazenamento pode armazenar instruções legíveis por computador fazem com que a unidade de processamento de hardware realize um processo de crescimento do modelo iterativo que envolve modificar modelos principais para obter modelos filho. o processo de crescimento do modelo iterativo pode ainda incluir selecionar camadas candidatas para incluir nos modelos filho com base pelo menos em pesos aprendidos em um processo de inicialização das camadas candidatas. o sistema pode ainda emitir um modelo final selecionado dos modelos filho.automated generation of machine learning models. the present invention relates to the automated generation of machine learning models such as neural networks. an example system includes a hardware processing unit and a storage facility. the storage resource can store computer-readable instructions causes the hardware processing unit to perform an iterative model growth process that involves modifying parent models to obtain child models. the iterative model growth process may also include selecting candidate layers to include in the child models based on at least learned weights in an initialization process of the candidate layers. the system can still output a final model selected from the child models.

Description

Relatório Descritivo da Patente de Invenção para "GERAÇÃO AUTOMATIZADA DE MODELOS DE APRENDIZAGEM POR MÁQUINA". AntecedentesDescriptive Report of the Patent of Invention for "AUTOMATED GENERATION OF MACHINE LEARNING MODELS". background

[001] Tradicionalmente, os modelos de aprendizado por máquina eram construídos manualmente por especialistas que definiriam uma estrutura do modelo e, em seguida, usariam técnicas automatizadas para treinamento do modelo. Conforme os modelos de aprendizado por máquina se tornaram mais complexos, várias tentativas foram feitas para automatizar o processo de geração de modelos de aprendizado por máquina. No entanto, esses esforços tiveram sucesso limitado. Sumário[001] Traditionally, machine learning models were built manually by experts who would define a model structure and then use automated techniques to train the model. As machine learning models have become more complex, several attempts have been made to automate the process of generating machine learning models. However, these efforts have met with limited success. summary

[002] Este Sumário é fornecido para apresentar uma seleção de conceitos de uma forma simplificada que são descritos mais detalhadamente abaixo na Descrição Detalhada. Este Sumário não se destina a identificar características-chave ou características essenciais do assunto reivindicado, nem se destina a ser usado para limitar o escopo do assunto reivindicado.[002] This Table of Contents is provided to present a selection of concepts in a simplified form which are described in more detail below in the Detailed Description. This Table of Contents is not intended to identify key features or essential features of the claimed subject, nor is it intended to be used to limit the scope of the claimed subject.

[003] A presente invenção geralmente refere-se a técnicas para geração automatizada de modelos de aprendizado por máquina. Um exemplo inclui um método ou técnica que pode ser executado em um dispositivo de computação. O método ou a técnica pode incluir realizar duas ou mais iterações de um processo de crescimento do modelo iterativo. O processo de crescimento do modelo iterativo pode incluir selecionar um modelo pai particular de um grupo de modelo pai de um ou mais modelos principais, gerar uma pluralidade de camadas candidatas, e inicializar a pluralidade de camadas candidatas enquanto reutiliza parâmetros aprendidos e/ou a estrutura do modelo pai particular. O processo de crescimento do modelo iterativo pode ainda incluir selecionar componentes candidatos particulares como camadas para incluir em modelos filho para treinamento. Os respectivos modelos filho podem incluir o modelo pai particular e uma ou mais das camadas candidatas particulares ou outras estruturas. O processo de crescimento do modelo iterativo pode ainda incluir treinamento a pluralidade de modelos filho para obter modelos filho treinados, e avaliar os modelos filho treinados usando um ou mais critérios. O processo de crescimento do modelo iterativo pode ainda incluir designar um modelo filho treinado individual como um novo modelo pai com base pelo menos na avaliação e adicionar o novo modelo pai ao grupo de modelo pai. O método ou técnica pode ainda incluir selecionar pelo menos um modelo filho treinado como um modelo final após as duas ou mais iterações, e emitir o modelo final.[003] The present invention generally refers to techniques for automated generation of machine learning models. An example includes a method or technique that can be performed on a computing device. The method or technique may include performing two or more iterations of an iterative model growth process. The iterative model growth process may include selecting a particular parent model from a parent model group of one or more main models, generating a plurality of candidate layers, and initializing the plurality of candidate layers while reusing learned parameters and/or the structure. of the particular parent model. The iterative model growth process may also include selecting particular candidate components as layers to include in child models for training. The respective child models can include the particular parent model and one or more of the particular candidate layers or other structures. The iterative model growth process may further include training the plurality of child models to obtain trained child models, and evaluating the trained child models using one or more criteria. The iterative model growth process may also include designating an individual trained child model as a new parent model based on at least evaluation and adding the new parent model to the parent model group. The method or technique may further include selecting at least one trained child model as a final model after the two or more iterations, and emitting the final model.

[004] Outro exemplo inclui um sistema que envolve uma unidade de processamento de hardware e um recurso de armazenamento. O recurso de armazenamento pode armazenar instruções legíveis por computador que, quando executadas pela unidade de processamento de hardware, fazem com que a unidade de processamento de hardware realize um processo de crescimento do modelo iterativo que envolve modificar modelos principais para obter modelos filho. O processo de crescimento do modelo iterativo pode incluir selecionar camadas candidatas para incluir nos modelos filho com base pelo menos em pesos aprendidos em um processo de inicialização das camadas candidatas. As instruções legíveis por computador podem ainda fazer com que a unidade de processamento de hardware emita um modelo final selecionado dos modelos filho.[004] Another example includes a system that involves a hardware processing unit and a storage facility. The storage facility can store computer-readable instructions that, when executed by the hardware processing unit, cause the hardware processing unit to perform an iterative model growth process that involves modifying parent models to obtain child models. The iterative model growth process may include selecting candidate layers to include in child models based on at least weights learned in an initialization process of the candidate layers. Computer-readable instructions can also cause the hardware processing unit to output a final model selected from the child models.

[005] Outro exemplo inclui um meio de armazenamento legível por computador que armazena instruções que, quando executadas por um dispositivo de processamento, fazem com que o dispositivo de processamento realize ações. As ações podem incluir realizar duas ou mais iterações de um processo de crescimento de modelo iterativo. O processo de crescimento do modelo iterativo pode incluir selecionar um modelo pai particular de um grupo de modelo pai de um ou mais modelos principais, inicializar uma pluralidade de camadas candidatas, e selecionar uma pluralidade de modelos filho para treinamento. Os respectivos modelos filho podem incluir uma estrutura herdada do modelo pai particular e pelo menos uma das camadas candidatas. O processo de crescimento do modelo iterativo pode ainda incluir treinamento a pluralidade de modelos filho para obter modelos filho treinados, e designando um modelo filho treinado individual como um novo modelo pai com base pelo menos em um ou mais critérios. O processo de crescimento do modelo iterativo pode ainda incluir adicionar o novo modelo pai ao grupo de modelo pai. As ações podem ainda incluir selecionar pelo menos um modelo filho treinado como um modelo final após as duas ou mais iterações, e emitir o modelo final.[005] Another example includes a computer-readable storage medium that stores instructions that, when executed by a processing device, cause the processing device to perform actions. Actions can include performing two or more iterations of an iterative model growth process. The iterative model growth process may include selecting a particular parent model from a parent model group of one or more parent models, initializing a plurality of candidate layers, and selecting a plurality of child models for training. The respective child models can include a structure inherited from the particular parent model and at least one of the candidate layers. The iterative model growth process may further include training the plurality of child models to obtain trained child models, and designating an individual trained child model as a new parent model based on at least one or more criteria. The iterative model growth process may also include adding the new parent model to the parent model group. Actions may also include selecting at least one trained child model as a final model after the two or more iterations, and emitting the final model.

[006] Os exemplos listados acima se destinam a fornecer uma referência rápida para ajudar o leitor e não se destinam a definir o escopo dos conceitos descritos neste documento. Breve Descrição dos Desenhos[006] The examples listed above are intended to provide a quick reference to assist the reader and are not intended to define the scope of the concepts described in this document. Brief Description of Drawings

[007] A descrição detalhada é descrita com referência às Figuras anexas. Nas Figuras, o(s) dígito(s) mais à esquerda de um número de referência identifica a Figura em que o número de referência aparece pela primeira vez. O uso de números de referência semelhantes em diferentes instâncias na descrição e nas Figuras pode indicar itens semelhantes ou idênticos.[007] The detailed description is described with reference to the attached Figures. In Figures, the leftmost digit(s) of a reference number identifies the Figure in which the reference number first appears. The use of similar reference numbers in different instances in the description and Figures may indicate similar or identical items.

[008] A Figura 1 ilustra um exemplo de método ou técnica para geração automatizada de modelos de aprendizagem por máquina, consistente com algumas implementações dos presentes conceitos.[008] Figure 1 illustrates an example of a method or technique for automated generation of machine learning models, consistent with some implementations of the present concepts.

[009] A Figura 2 ilustra uma abordagem exemplar para gerar camadas candidatas de um modelo de aprendizagem por máquina,[009] Figure 2 illustrates an exemplary approach to generate candidate layers of a machine learning model,

consistente com algumas implementações dos presentes conceitos.consistent with some implementations of the present concepts.

[0010] A Figura 3 ilustra uma abordagem exemplar para inicializar camadas candidatas de um modelo de aprendizagem por máquina, consistente com algumas implementações dos presentes conceitos.[0010] Figure 3 illustrates an exemplary approach to initializing candidate layers of a machine learning model, consistent with some implementations of the present concepts.

[0011] A Figura 4 ilustra outra abordagem exemplar para inicializar camadas candidatas de um modelo de aprendizagem por máquina, consistente com algumas implementações dos presentes conceitos.[0011] Figure 4 illustrates another exemplary approach to initializing candidate layers of a machine learning model, consistent with some implementations of the present concepts.

[0012] A Figura 5 ilustra uma abordagem exemplar para treinamento um modelo filho, consistente com algumas implementações dos presentes conceitos.[0012] Figure 5 illustrates an exemplary approach to training a child model, consistent with some implementations of the present concepts.

[0013] As Figuras 6-8 ilustram gráficos de dispersão associados com iterações consecutivas de um processo de crescimento do modelo iterativo, consistente com algumas implementações dos presentes conceitos.[0013] Figures 6-8 illustrate scatter plots associated with consecutive iterations of an iterative model growth process, consistent with some implementations of the present concepts.

[0014] A Figura 9 ilustra um exemplo de fluxo de processamento para geração automatizada de modelos de aprendizagem por máquina, consistente com algumas implementações dos presentes conceitos.[0014] Figure 9 illustrates an example of a processing flow for automated generation of machine learning models, consistent with some implementations of the present concepts.

[0015] A Figura 10 ilustra um exemplo do sistema, consistente com algumas implementações dos presentes conceitos.[0015] Figure 10 illustrates an example of the system, consistent with some implementations of the present concepts.

[0016] A Figura 11 ilustra um exemplo da interface de usuário gráfica, consistente com algumas implementações dos presentes conceitos. Descrição Detalhada Visão Geral[0016] Figure 11 illustrates an example of the graphical user interface, consistent with some implementations of the present concepts. Detailed Description Overview

[0017] Existem vários tipos de frameworks de aprendizado por máquina que podem ser treinados usando aprendizado supervisionado e/ou não supervisionado. Máquinas de vetor de suporte, árvores de decisão e redes neurais são apenas alguns exemplos de estruturas de aprendizado por máquina adequadas para aprendizado supervisionado, onde os modelos podem aprender a partir de dados de treinamento rotulados. Algumas estruturas de aprendizado por máquina, como redes neurais, usam camadas de nós que executam operações específicas.[0017] There are several types of machine learning frameworks that can be trained using supervised and/or unsupervised learning. Support vector machines, decision trees, and neural networks are just a few examples of machine learning frameworks suitable for supervised learning, where models can learn from labeled training data. Some machine learning frameworks, such as neural networks, use layers of nodes that perform specific operations.

[0018] Em uma rede neural, os nós são conectados uns aos outros por meio de uma ou mais margens. Uma rede neural pode incluir uma camada de entrada, uma camada de saída e uma ou mais camadas intermediárias. Nós individuais podem processar suas respectivas entradas de acordo com uma função predefinida e fornecer uma saída para uma camada subsequente ou, em alguns casos, uma camada anterior. As entradas para um determinado nó podem ser multiplicadas por um valor de peso correspondente para uma aresta entre a entrada e o nó. Além disso, os nós podem ter valores de polarização individuais que também são usados para produzir saídas. Vários procedimentos de treinamento podem ser aplicados para aprender os pesos das bordas e/ou valores de polarização. Para os fins deste documento, o termo "parâmetros aprendidos" se refere a parâmetros como bordas e valores de polarização que são aprendidos treinando um modelo de aprendizado por máquina em camadas, como uma rede neural.[0018] In a neural network, nodes are connected to each other through one or more edges. A neural network may include an input layer, an output layer, and one or more intermediate layers. Individual nodes can process their respective inputs according to a predefined function and provide an output to a subsequent layer or, in some cases, a previous layer. Inputs for a given node can be multiplied by a corresponding weight value for an edge between the input and the node. In addition, nodes can have individual bias values that are also used to produce outputs. Various training procedures can be applied to learn edge weights and/or polarization values. For the purposes of this document, the term "learned parameters" refers to parameters such as edges and polarization values that are learned by training a layered machine learning model, such as a neural network.

[0019] Uma estrutura de rede neural pode ser construída de forma modular. Por exemplo, uma ou mais camadas de nós podem executar coletivamente uma operação específica, como uma operação de agrupamento ou convolução. Em seguida, diferentes camadas podem ser conectadas para formar a estrutura geral da rede. Para os fins deste documento, o termo "camada" se refere a um grupo de nós que compartilham conectividade com uma ou mais camadas de entrada e uma ou mais camadas de destino que recebem saída dos nós nessa camada. O termo "operação" se refere a uma função que pode ser realizada por uma ou mais camadas de nós. O termo "estrutura de modelo" se refere a uma arquitetura geral de um modelo em camadas, incluindo o número de camadas, a conectividade das camadas e o tipo de operações realizadas por camadas individuais. O termo "estrutura de rede neural" refere-se à estrutura do modelo de uma rede neural. As implementações divulgadas usam principalmente estruturas de rede neural como estruturas de modelo de exemplo para modelos de aprendizado por máquina em camadas. O termo "modelo treinado" se refere a uma estrutura de modelo junto com os parâmetros aprendidos para a estrutura do modelo. Observe que dois modelos treinados podem compartilhar a mesma estrutura de modelo e ainda ter diferentes parâmetros aprendidos, por exemplo, se os dois modelos treinados em dados de treinamento diferentes ou se houver processos estocásticos subjacentes no processo de treinamento.[0019] A neural network structure can be built in a modular way. For example, one or more layers of nodes can collectively perform a specific operation, such as a grouping or convolution operation. Then different layers can be connected to form the overall structure of the network. For the purposes of this document, the term "layer" refers to a group of nodes that share connectivity with one or more input layers and one or more destination layers that receive output from nodes in that layer. The term "operation" refers to a function that can be performed by one or more layers of nodes. The term "model structure" refers to an overall architecture of a layered model, including the number of layers, the connectivity of layers, and the type of operations performed by individual layers. The term "neural network structure" refers to the model structure of a neural network. The disclosed implementations primarily use neural network frameworks as example model frameworks for layered machine learning models. The term "trained model" refers to a model structure along with the learned parameters for the model structure. Note that two trained models can share the same model structure and still have different parameters learned, for example if the two models trained on different training data or if there are underlying stochastic processes in the training process.

[0020] Conforme observado anteriormente, uma maneira de gerar uma estrutura de modelo é um ser humano definir manualmente a estrutura do modelo. Em seguida, a estrutura do modelo pode ser treinada em algum conjunto de dados de treinamento por um computador para obter um modelo treinado e, em seguida, o modelo treinado pode ser validado usando um conjunto de dados de validação. Posteriormente, as modificações na estrutura do modelo podem ser geradas manualmente, por exemplo, adicionando ou removendo camadas ou conexões entre as camadas. Em seguida, as estruturas modificadas podem ser treinadas novamente do zero para obter modelos treinados adicionais e os modelos treinados adicionais podem ser comparados entre si para selecionar um modelo final e a estrutura correspondente que funcione bem para uma determinada tarefa. No entanto, essa abordagem requer o envolvimento de um ser humano com experiência no domínio para criar a estrutura do modelo inicial e as modificações, e também para selecionar a estrutura do modelo final.[0020] As noted earlier, one way to generate a model structure is for a human to manually define the model structure. Then the model structure can be trained on some training dataset by a computer to get a trained model, and then the trained model can be validated using a validation dataset. Later, modifications to the model structure can be generated manually, for example, adding or removing layers or connections between layers. Then, the modified frameworks can be retrained from scratch to obtain additional trained models, and the additional trained models can be compared against each other to select a final model and corresponding framework that works well for a given task. However, this approach requires the involvement of a human with domain expertise to create the initial model structure and modifications, and also to select the final model structure.

[0021] Outra abordagem é automatizar o processo usando um computador para gerar diferentes estruturas de modelo e selecionar uma estrutura de modelo final entre as estruturas geradas. No entanto, os esforços anteriores para automatizar a geração de estruturas de modelo tiveram sucesso limitado. Embora os computadores modernos tenham avançado tremendamente em capacidade computacional, as abordagens existentes para a geração automatizada de estruturas de modelo, como estruturas de rede neural, tendem a explorar espaços de busca limitados ou requerem quantidades impraticáveis de recursos computacionais. Na prática, a geração de estruturas de modelo tende a ser computacionalmente viável, mas o treinamento independente de muitas estruturas de modelo diferentes tende a ser computacionalmente inviável dado o hardware de computação disponível atualmente.[0021] Another approach is to automate the process using a computer to generate different model structures and select a final model structure among the generated structures. However, previous efforts to automate the generation of model structures have had limited success. Although modern computers have advanced tremendously in computational power, existing approaches to automated generation of model structures, such as neural network structures, tend to exploit limited search spaces or require impractical amounts of computational resources. In practice, generating model structures tends to be computationally feasible, but independent training of many different model structures tends to be computationally infeasible given the computing hardware currently available.

[0022] Uma maneira de quantificar o tempo de treinamento para uma estrutura de modelo é definir um recurso computacional de referência, como uma máquina virtual ou um processador, e a quantidade de tempo que o treinamento leva para ser concluído no recurso computacional de referência. Por exemplo, um dia de treinamento em um tipo específico de unidade de processamento gráfico ("GPU") pode ser referido como um dia de GPU e o custo computacional de treinamento de um determinado modelo pode ser especificado como um número de dias de GPU. Outras abordagens também são possíveis, por exemplo, o número de horas de treinamento em um determinado modelo de CPU ou FPGA, a quantidade de tempo gasto em uma máquina virtual, etc.[0022] One way to quantify the training time for a model structure is to define a reference computational resource, such as a virtual machine or a processor, and the amount of time that training takes to complete on the reference computational resource. For example, a day of training on a specific type of graphics processing unit ("GPU") can be referred to as a GPU day, and the computational cost of training a particular model can be specified as a number of GPU days. Other approaches are also possible, for example the number of hours of training on a given CPU or FPGA model, the amount of time spent in a virtual machine, etc.

[0023] Uma abordagem para automatizar a geração de estruturas de modelo é simplesmente definir um espaço de busca e gerar todas as estruturas de modelo dentro do espaço de busca. Então, todas as estruturas de modelo possíveis podem ser treinadas independentemente para obter modelos treinados e um dos modelos treinados pode ser selecionado como um modelo final. Geralmente, o espaço de busca pode ser definido restringindo a profundidade da estrutura do modelo, as operações realizadas pelo modelo e a conectividade do modelo. Por exemplo, um computador pode ser programado para considerar todas as estruturas modelo totalmente conectadas de profundidade cinco, onde cada uma das cinco camadas executa uma das várias operações possíveis.[0023] One approach to automating the generation of model structures is to simply define a search space and generate all model structures within the search space. Then, all possible model structures can be trained independently to obtain trained models and one of the trained models can be selected as a final model. Generally, the search space can be defined by constraining the depth of the model structure, the operations performed by the model, and the connectivity of the model. For example, a computer can be programmed to consider all fully connected model structures of depth five, where each of the five layers performs one of several possible operations.

[0024] No entanto, esta abordagem não é viável para muitos modelos. Primeiro, as estruturas de modelo podem crescer muito, com muitas camadas e nós diferentes. Em segundo lugar, o treinamento pode levar muito tempo para estruturas de modelo tão grandes. Finalmente, essa abordagem não considera outras estruturas de modelo fora do espaço de pesquisa que podem ser mais adequadas para a tarefa em questão. Por exemplo, se a tarefa for o reconhecimento de imagem e um modelo de seis camadas for significativamente melhor para essa tarefa do que qualquer modelo de cinco camadas plausível, o modelo de seis camadas não será encontrado se o espaço de busca for restrito a cinco camadas.[0024] However, this approach is not feasible for many models. First, model structures can grow very large, with many different layers and nodes. Second, training can take a long time for such large model structures. Finally, this approach does not consider other model structures outside the search space that may be better suited to the task at hand. For example, if the task is image recognition and a six-layer model is significantly better for this task than any plausible five-layer model, the six-layer model will not be found if the search space is constrained to five layers. .

[0025] Uma abordagem mais sofisticada para a geração automatizada de estruturas de modelo envolve a criação de um modelo de "controlador" separado que é treinado para gerar novas estruturas de modelo para uma determinada tarefa. No entanto, os esforços anteriores para usar modelos de controlador para gerar novas estruturas de modelo ainda sofrem de algumas das desvantagens mencionadas acima. Se um grande espaço de busca for considerado, por exemplo, espera-se que o modelo de controlador considere uma ampla gama de estruturas de modelo em potencial, cada estrutura de modelo precisa ser gerada, totalmente treinada e então avaliada em relação a outros modelos. Como o treinamento pode levar dias em grandes conjuntos de dados, os esforços para automatizar o aprendizado de novas estruturas de modelo com espaços de busca relativamente irrestritos tiveram sucesso limitado. Por exemplo, tais abordagens podem levar centenas ou milhares de dias por GPU para produzir uma estrutura de modelo final com níveis aceitáveis de desempenho.[0025] A more sophisticated approach to automated generation of model structures involves creating a separate "controller" model that is trained to generate new model structures for a given task. However, previous efforts to use controller models to generate new model structures still suffer from some of the drawbacks mentioned above. If a large search space is considered, for example the controller model is expected to consider a wide range of potential model structures, each model structure needs to be generated, fully trained and then evaluated against other models. Because training can take days on large datasets, efforts to automate learning new model structures with relatively unconstrained search spaces have met with limited success. For example, such approaches can take hundreds or thousands of days per GPU to produce a final model framework with acceptable levels of performance.

[0026] Outra abordagem para a geração automatizada de estruturas de modelo é restringir o espaço de pesquisa significativamente e, em seguida, pesquisar entre um conjunto relativamente limitado de modelos dentro do espaço de pesquisa restrito. Por exemplo, algumas abordagens anteriores definem um esqueleto de modelo externo com um número especificado de camadas modularizadas e tipos de conexões entre os módulos. Essas abordagens, então, geram e avaliam diferentes subestruturas candida- tas ou "células", que são então repetidas dentro dos esqueletos do modelo externo. No entanto, essas abordagens não consideram esqueletos externos alternativos, conexões alternativas entre as células ou o uso de diferentes tipos de subestruturas em cada célula.[0026] Another approach to automated generation of model structures is to narrow the search space significantly and then search among a relatively limited set of models within the restricted search space. For example, some previous approaches define an external model skeleton with a specified number of modularized layers and types of connections between modules. These approaches then generate and evaluate different candidate substructures or "cells", which are then repeated within the skeletons of the external model. However, these approaches do not consider alternative external skeletons, alternative connections between cells, or the use of different types of substructures in each cell.

[0027] Em contraste com as deficiências das técnicas convencionais descritas acima, as implementações divulgadas podem gerar estruturas de modelo em um espaço de busca relativamente irrestrito, enquanto economiza tempo de treinamento significativo em relação às técnicas discutidas acima. Ao considerar um amplo espaço de busca, as implementações divulgadas podem potencialmente encontrar novas estruturas de modelo que oferecem melhor desempenho do que seria possível em um espaço de busca mais restrito. Por exemplo, as implementações divulgadas podem encontrar estruturas de modelo que não estão limitadas a um esqueleto externo predefinido e também podem encontrar estruturas de modelo que têm vários tipos de operações em diferentes camadas do modelo.[0027] In contrast to the shortcomings of the conventional techniques described above, the disclosed implementations can generate model structures in a relatively unconstrained search space, while saving significant training time over the techniques discussed above. When considering a large search space, disclosed implementations can potentially find new model structures that offer better performance than would be possible in a more restricted search space. For example, disclosed implementations may find model structures that are not limited to a predefined external skeleton, and they may also find model structures that have various types of operations on different layers of the model.

[0028] As implementações divulgadas podem utilizar várias técnicas para evitar gerar e treinamento separadamente cada estrutura de modelo no espaço de busca. Em vez disso, as implementações divulgadas guiam o crescimento de novas estruturas de modelo em direção a uma porção do espaço de busca que se espera que contenha estruturas de modelo melhoradas em relação às estruturas que já foram avaliadas, evitando procurar outras porções do espaço de busca que são menos prováveis para conter estruturas de modelo aprimoradas. Método de Geração de Estrutura de Modelo[0028] The disclosed implementations may use various techniques to avoid separately generating and training each model structure in the search space. Instead, the disclosed implementations guide the growth of new model structures towards a portion of the search space that is expected to contain improved model structures over structures that have already been evaluated, avoiding looking for other portions of the search space. that are less likely to contain improved model structures. Model Structure Generation Method

[0029] A discussão a seguir apresenta uma visão geral da funcionalidade que pode permitir a geração automatizada de estruturas de modelo, como estruturas de rede neural, a serem realizadas. A Figura 1 ilustra um método de exemplo 100, consistente com os presentes conceitos. Conforme discutido mais abaixo, o método 100 pode ser implementado em muitos tipos diferentes de dispositivos, por exemplo, por um ou mais servidores em nuvem, por um dispositivo cliente, como um laptop, tablet ou smartphone, ou por combinações de um ou mais servidores, dispositivos clientes, etc.[0029] The following discussion presents an overview of functionality that can allow the automated generation of model structures, such as neural network structures, to be performed. Figure 1 illustrates an example method 100, consistent with the present concepts. As discussed further below, method 100 can be implemented on many different types of devices, for example by one or more cloud servers, by a client device such as a laptop, tablet or smartphone, or by combinations of one or more servers. , client devices, etc.

[0030] O método 100 começa no bloco 102, onde um conjunto de modelos pai é inicializado. Por exemplo, um ou mais modelos pai iniciais podem ser adicionados ao conjunto de modelos pai. Os modelos pai iniciais podem ser modelos conhecidos que foram previamente determinados para um bom desempenho em uma tarefa específica, podem ser gerados aleatoriamente ou podem simplesmente ser modelos de semente padrão predefinidos.[0030] Method 100 starts at block 102, where a set of parent models is initialized. For example, one or more initial parent models can be added to the set of parent models. Initial parent models can be known models that have been predetermined to perform well on a specific task, they can be randomly generated, or they can simply be predefined default seed models.

[0031] O método 100 continua no bloco 104, onde um modelo pai particular é selecionado do grupo. Por exemplo, modelos principais podem ser selecionados do grupo aleatória ou deterministicamente. O modelo pai particular tem uma estrutura de modelo correspondente que pode ser modificada, conforme discutido em mais detalhes abaixo.[0031] Method 100 continues at block 104, where a particular parent model is selected from the group. For example, master models can be selected from the group randomly or deterministically. The particular parent model has a corresponding model structure that can be modified, as discussed in more detail below.

[0032] O método 100 continua no bloco 106, onde camadas candidatas são geradas e inicializadas. De modo geral, gerar uma camada candidata pode incluir selecionar uma ou mais camadas do modelo pai particular para fornecer entradas à camada candidata, e selecionar outra camada do modelo pai particular "de destino" para receber saídas da camada candidata. Assim, as camadas candidatas podem ser consideradas como adições à estrutura do modelo pai particular. Além disso, gerar uma camada candidata pode incluir selecionar operações para realizar nas entradas fornecidas pelas camadas selecionadas do modelo pai particular. Inicializar uma camada candidata pode incluir realizar algum treinamento inicial na camada candidata, conforme discutido ainda neste documento.[0032] Method 100 continues at block 106, where candidate layers are generated and initialized. Generally speaking, generating a candidate layer may include selecting one or more layers from the particular parent model to provide inputs to the candidate layer, and selecting another "target" particular parent model layer to receive output from the candidate layer. Thus, candidate layers can be considered as additions to the structure of the particular parent model. Furthermore, generating a candidate layer may include selecting operations to perform on inputs provided by selected layers of the particular parent model. Initializing a candidate layer may include performing some initial training on the candidate layer, as discussed later in this document.

[0033] O método 100 continua no bloco 108, onde camadas candidatas particulares são selecionadas para incluir em um ou mais modelos filho derivados do modelo pai. Por exemplo, as camadas candidatas particulares podem ser selecionadas com base nos parâmetros inicializados aprendidos quando inicializar as camadas candidatas, conforme discutido em mais detalhes abaixo. Em outros casos, cada uma das camadas candidatas é selecionada para inclusão em um modelo filho. Em qualquer caso, um modelo filho pode ser considerado um modelo que herda a estrutura de modelo pai e, adicionalmente, inclui uma ou mais das camadas candidatas selecionadas.[0033] Method 100 continues at block 108, where particular candidate layers are selected to include in one or more child models derived from the parent model. For example, particular candidate layers can be selected based on initialized parameters learned when initializing candidate layers, as discussed in more detail below. In other cases, each of the candidate layers is selected for inclusion in a child model. In any case, a child model can be considered a model that inherits the parent model structure and additionally includes one or more of the selected candidate layers.

[0034] O método 100 continua no bloco 110, onde os modelos filho são treinados. Em alguns casos, os modelos filho são treinados reutilizando parâmetros aprendidos dos modelos principais, conforme discutido em mais detalhes abaixo. Nestes casos, os modelos filho pode, ainda ser considerados para inicialmente herdar parâmetros aprendidos do modelo pai, embora esses parâmetros aprendidos possam ainda ser ajustados durante o treinamento dos modelos filho.[0034] Method 100 continues in block 110, where child models are trained. In some cases, child models are trained by reusing parameters learned from parent models, as discussed in more detail below. In these cases, the child models may still be considered to initially inherit learned parameters from the parent model, although these learned parameters may still be adjusted during training of the child models.

[0035] O método 100 continua no bloco 112, onde os modelos filho treinados são avaliados de acordo com um ou mais critérios. Geralmente, os critérios podem se relacionar ao desempenho do modelo em uma determinada tarefa, por exemplo, precisão e/ou outros fatores, como o custo computacional de treinamento do modelo filho.[0035] Method 100 continues at block 112, where the trained child models are evaluated against one or more criteria. Generally, the criteria can relate to the performance of the model in a given task, for example, accuracy and/or other factors such as the computational cost of training the child model.

[0036] O método 100 continua no bloco 114, onde um modelo filho individual é designado como um novo modelo pai com base na avaliação no bloco 112. O novo modelo pai é adicionado ao grupo de modelo pai.[0036] Method 100 continues at block 114, where an individual child model is designated as a new parent model based on the evaluation in block 112. The new parent model is added to the parent model group.

[0037] O método 100 continua no bloco de decisão 116, onde uma determinação é feita se uma condição de parada foi atingida. A condição de parada pode definir uma quantidade especificada de recursos computacionais a serem usados (por exemplo, um orçamento em dias de GPU), um critério de desempenho especificado (por exemplo, uma precisão de limite), uma quantidade de tempo especificada, etc.[0037] Method 100 continues at decision block 116, where a determination is made whether a stop condition has been met. The stop condition can define a specified amount of compute resources to be used (e.g. a budget in GPU days), a specified performance criterion (e.g. a threshold precision), a specified amount of time, etc.

[0038] Se a condição de parada não foi alcançada, o método continua no bloco 104, onde as iterações subsequentes dos blocos 104-116 podem ser realizadas. De um modo geral, os blocos 104-116 podem ser considerados um processo iterativo de crescimento do modelo que pode ser repetido em várias iterações até que uma condição de parada seja alcançada.[0038] If the stop condition has not been reached, the method continues at block 104, where subsequent iterations of blocks 104-116 can be performed. Generally speaking, blocks 104-116 can be considered an iterative process of model growth that can be repeated over multiple iterations until a stop condition is reached.

[0039] Se a condição de parada foi alcançada, o método se move para o bloco 118, onde um modelo final é produzido. Por exemplo, o modelo final pode ser selecionado a partir de todos os modelos filho de acordo com um ou mais critérios, tais como aqueles discutidos acima em relação ao bloco 112.[0039] If the stop condition has been reached, the method moves to block 118, where a final model is produced. For example, the final model may be selected from all child models according to one or more criteria, such as those discussed above in relation to block 112.

[0040] Em muitos casos, o método 100 é realizado para gerar modelos que são adequados para uma aplicação específica. Por exemplo, em um cenário de reconhecimento facial, os dados de treinamento podem incluir exemplos rotulados de imagens, indicando se os rostos estão incluídos nas imagens e também onde os rostos estão localizados nas imagens. Em um exemplo de segmentação de cena, os dados de treinamento podem incluir exemplos rotulados de vídeo que foi segmentado em segmentos predeterminados. Gerando iterativamente novos modelos filho e avaliando-os em relação a um conjunto de dados de treinamento para uma tarefa específica, o método 100 pode produzir um modelo final que tem um bom desempenho nessa tarefa específica. Geração da Camada Candidata[0040] In many cases, method 100 is performed to generate models that are suitable for a specific application. For example, in a face recognition scenario, the training data might include labeled examples of images, indicating whether faces are included in the images and also where the faces are located in the images. In a scene segmentation example, the training data might include labeled examples of video that was segmented into predetermined segments. By iteratively generating new child models and evaluating them against a training dataset for a specific task, method 100 can produce a final model that performs well on that specific task. Candidate Layer Generation

[0041] A Figura 2 mostra um modelo pai 210 e uma camada candidata 220. O seguinte descreve um exemplo de como as camadas candidatas podem ser derivadas das estruturas de modelo pai. Observe que a Figura 2 representa uma abordagem para gerar múltiplas camadas candidatas de um dado modelo pai, em vez de instâncias únicas de um modelo pai e uma camada candidata, conforme discutido em mais detalhes abaixo.[0041] Figure 2 shows a parent model 210 and a candidate layer 220. The following describes an example of how candidate layers can be derived from parent model structures. Note that Figure 2 represents an approach to generating multiple candidate layers from a given parent model, rather than single instances of a parent model and a candidate layer, as discussed in more detail below.

[0042] Na Figura 2, os elementos do modelo pai são mostrados em linhas sólidas e os elementos da camada candidata são mostrados em linhas pontilhadas. Neste caso, o modelo pai inclui entradas de modelo 211, camadas 212, 213, 214 e 215 e saídas de modelo 216. O modelo pai também pode incluir uma ou mais outras camadas que não são mostradas, representadas pelas elipses mostradas na Figura 2. Geralmente, as entradas do modelo podem incluir recursos que são processados pelo modelo, como imagem bruta, vídeo, áudio e/ou dados de texto. As saídas podem representar resultados computacionais do modelo, por exemplo, identificação de faces em imagens, vídeo segmentado, áudio transcrito, representações semânticas de texto, etc.[0042] In Figure 2, elements from the parent model are shown in solid lines and elements from the candidate layer are shown in dotted lines. In this case, the parent model includes model inputs 211, layers 212, 213, 214, and 215, and model outputs 216. The parent model may also include one or more other layers that are not shown, represented by the ellipses shown in Figure 2. Generally, model inputs can include features that are processed by the model, such as raw image, video, audio, and/or text data. The outputs can represent computational results of the model, for example, identification of faces in images, segmented video, transcribed audio, semantic representations of text, etc.

[0043] Neste exemplo, a camada candidata inclui operações individuais 221, 222 e 223 e operação agregada 224. Geralmente, as operações individuais 221, 223 e 223 podem envolver convoluções, agrupamento, etc., conforme discutido mais adiante neste documento. A operação agregada 224 pode envolver a manipulação de saídas das operações individuais para se conformar a uma camada de destino do modelo pai que receberá a saída da operação agregada, por exemplo, a camada 215. Por exemplo, a operação agregada pode concatenar as saídas das operações individuais e projete-os em uma forma ou forma que corresponda à entrada da camada de destino.[0043] In this example, the candidate layer includes individual operations 221, 222, and 223 and aggregate operation 224. Generally, individual operations 221, 223, and 223 may involve convolutions, grouping, etc., as discussed later in this document. The aggregate operation 224 may involve manipulating the outputs of the individual operations to conform to a target layer of the parent model that will receive the output of the aggregate operation, for example, the layer 215. For example, the aggregate operation may concatenate the outputs of the individual operations and project them to a shape or shape that matches the input from the target layer.

[0044] Conforme discutido acima, o bloco 106 do método 100 pode ser usado para gerar camadas candidatas. Gerar camadas candidatas pode envolver selecionar uma ou mais camadas de entrada do modelo pai, selecionar uma ou mais camadas de destino do modelo pai para receber as saídas da camada candidata, e selecionar uma ou mais operações a serem realizadas pela camada candidata nas entradas. Além disso, gerar camadas candidatas pode incluir selecionar parâmetros operacionais das operações, por exemplo, tamanhos de convolução, passos de convolução, janelas de agrupamento, etc.[0044] As discussed above, block 106 of method 100 can be used to generate candidate layers. Generating candidate layers may involve selecting one or more input layers from the parent model, selecting one or more target layers from the parent model to receive the candidate layer's outputs, and selecting one or more operations to be performed by the candidate layer on the inputs. Furthermore, generating candidate layers may include selecting operational parameters of operations, e.g. convolution sizes, convolution steps, cluster windows, etc.

[0045] Neste exemplo, o espaço de busca de possíveis camadas candidatas pode ser definido como segue. Sejam x1, ..., xL todas as camadas existentes no modelo pai. Uma camada candidata pode ser definida por uma tupla (xout,xin,1,op1,xin,2,op2, ..., xin,J,opJ), onde J é um número inteiro positivo, xout,xin,1,...,Xίn,k são camadas existentes e op1...opJ são operações como convoluções e agrupamento. xout pode ser definido como estritamente atrás de todos xin,i na ordem topológica do gráfico computacional do modelo pai, assim nenhum ciclo direto pode ser formado. Uma camada candidata pode ser computada de , e então adicionada para obter entradas de uma ou mais camadas de entrada e fornecer sua saída a xout.[0045] In this example, the search space of possible candidate layers can be defined as follows. Let x1, ..., xL be all existing layers in the parent model. A candidate layer can be defined by a tuple (xout,xin,1,op1,xin,2,op2, ..., xin,J,opJ), where J is a positive integer, xout,xin,1,. ..,Xίn,k are existing layers and op1...opJ are operations like convolutions and grouping. xout can be defined as strictly behind all xin,i in the topological order of the parent model's computational graph, so no direct cycle can be formed. A candidate layer can be computed from , and then added to take inputs from one or more input layers and output its output to xout.

[0046] Um algoritmo específico para formar uma camada candidata xc é como segue. Primeiro, aleatoriamente amostrar uma camada de destino x0ut de camadas que estavam no modelo pai 210. A seguir, três camadas de entrada xin,i para i = 1,2,3 podem ser escolhidas. Para garantir que xc tenha acesso a camadas locais, xin1 pode ser selecionada como a entrada mais profunda de xout que estava no modelo pai inicial xin,2 e xin,3 podem ser mostrados com substituição uniformemente aleatoriamente de todas as camadas do modelo pai que são topologicamente mais cedo do que xout. A seguir, as operações a serem realizadas em cada camada de entrada podem ser selecionadas uniformemente aleatoriamente de um grupo de operações.[0046] A specific algorithm for forming a candidate layer xc is as follows. First, randomly sample a target layer x0ut from layers that were in the parent model 210. Next, three input layers xin,i for i = 1,2,3 can be chosen. To ensure that xc has access to local layers, xin1 can be selected as the deepest entry of xout that was in the initial parent model xin,2 and xin,3 can be shown with evenly random replacement of all layers of the parent model that are topologically earlier than xout. Next, the operations to be performed on each input layer can be selected evenly at random from a group of operations.

[0047] Por exemplo, o grupo de operações pode ser predefinido. Exemplos específicos de operações incluem convolução, agrupamento e operações de identidade. Cada tipo de operação pode ter diferentes parâmetros de operação. Por exemplo, as operações de convolução podem ter parâmetros de tamanho de kernel especificados - 1x1, 3x3, 5x5, 7x7, etc. As convoluções também podem ter um parâmetro de tamanho de filtro, por exemplo, 16, 32 ou 64 filtros e assim por diante, bem como parâmetros de passo, parâmetros de preenchimento, etc. As operações de agrupamento podem incluir operações de agrupamento máximas e médias e podem ser aplicadas em uma janela que varia com base em um parâmetro de tamanho de janela. Geralmente, esses parâmetros são referidos neste documento como "parâmetros de operação" para distingui-los de "parâmetros aprendidos", como pesos e valores de polarização obtidos por meio de treinamento de modelo. A geração de camadas candidatas pode incluir a seleção de diferentes operações e/ou diferentes parâmetros de operação, deterministicamente ou aleatoriamente.[0047] For example, the operation group can be predefined. Specific examples of operations include convolution, grouping, and identity operations. Each operation type can have different operation parameters. For example, convolution operations can have kernel size parameters specified - 1x1, 3x3, 5x5, 7x7, etc. Convolutions can also have a filter size parameter, for example 16, 32, or 64 filters and so on, as well as step parameters, fill parameters, etc. Grouping operations can include maximum and average grouping operations and can be applied to a window that varies based on a window size parameter. These parameters are generally referred to in this document as "operating parameters" to distinguish them from "learned parameters", such as weights and bias values obtained through model training. The generation of candidate layers can include the selection of different operations and/or different operation parameters, deterministically or randomly.

[0048] Em algumas implementações, convoluções separáveis podem ser aplicadas duas vezes. As saídas de cada operação podem ser concatenadas por meio da operação agregada 224 e, em seguida, projetadas para a mesma forma que a camada de destino xout usando uma convolução 1x1. O resultado é a camada candidata xc.[0048] In some implementations, separable convolutions may be applied twice. The outputs of each operation can be concatenated via aggregate operation 224 and then projected to the same shape as the destination layer xout using a 1x1 convolution. The result is the candidate layer xc.

[0049] Algumas implementações podem restringir a conectividade da camada candidata para reduzir o espaço de pesquisa. Na profundidade i em um determinado modelo pai, há i - 1 camadas iniciais potenciais e qualquer subconjunto das camadas anteriores pode ser escolhido como entrada para a camada candidata. Como consequência, há um número exponencial de opções de entradas para a camada candidata. Portanto, algumas implementações podem limitar as opções de entrada aprendendo apenas um módulo de célula repetível e implantando a célula em uma estrutura de macro de esqueleto projetada manualmente. Nessas implementações, as camadas em módulos de células só podem receber entrada de outras camadas na mesma célula e das saídas das duas células anteriores mais recentes. Outras implementações não são limitadas a qualquer esqueleto específico ou arranjo de conectividade e podem permitir conexões de salto esparsas entre camadas arbitrárias de um esqueleto de modelo que varia conforme a estrutura do modelo cresce.[0049] Some implementations may restrict candidate layer connectivity to reduce search space. At depth i in a given parent model, there are i - 1 potential initial layers and any subset of the previous layers can be chosen as input to the candidate layer. As a consequence, there are an exponential number of input options for the candidate layer. Therefore, some implementations may limit input options by learning only a repeatable cell module and deploying the cell in a manually designed skeleton macro structure. In these implementations, layers in cell modules can only receive input from other layers in the same cell and from the outputs of the two most recent previous cells. Other implementations are not limited to any specific skeleton or connectivity arrangement and may allow sparse hop connections between arbitrary layers of a model skeleton that vary as the model structure grows.

[0050] O bloco 106 do método 100 pode envolver a geração de uma ou mais camadas candidatas usando a abordagem discutida acima para cada iteração do método. Em alguns casos, as estruturas de modelo podem incluir milhares ou milhões de camadas diferentes que estão conectadas em qualquer número de combinações diferentes e, portanto, o número de camadas candidatas em potencial que podem ser geradas a partir de um único modelo pai em uma única iteração pode ser grande. O seguinte discute algumas abordagens que podem reduzir a carga computacional de treinar independentemente todo o espaço de possíveis estruturas de modelo filho.[0050] Block 106 of method 100 may involve generating one or more candidate layers using the approach discussed above for each iteration of the method. In some cases, model structures can include thousands or millions of different layers that are connected in any number of different combinations, and thus the number of potential candidate layers that can be generated from a single parent model in a single iteration can be large. The following discusses some approaches that can reduce the computational burden of independently training the entire space of possible child model structures.

Inicialização da Camada CandidataCandidate Layer Initialization

[0051] Conforme observado acima, o bloco 106 do método 100 também pode incluir a inicialização de camadas candidatas. Geralmente, a inicialização da camada candidata pode servir a vários propósitos. Em primeiro lugar, inicializar os parâmetros das camadas candidatas permite que os modelos filho sejam treinados desde a inicialização, em vez do zero. Em outras palavras, os modelos filho já estão parcialmente treinados quando o treinamento final ocorre no bloco 110 do método 100. Em segundo lugar, a inicialização da camada candidata pode fornecer informações sobre as camadas candidatas para que as camadas candidatas possam ser adicionadas seletivamente aos modelos pai, enquanto omite outro candidato camadas, como discutido mais abaixo.[0051] As noted above, block 106 of method 100 may also include initialization of candidate layers. Generally, candidate layer initialization can serve several purposes. Firstly, initializing the parameters of candidate layers allows child models to be trained from initialization rather than from scratch. In other words, the child models are already partially trained when the final training takes place in block 110 of method 100. Second, candidate layer initialization can provide information about candidate layers so that candidate layers can be selectively added to models. parent, while omitting other candidate layers, as discussed further below.

[0052] A Figura 3 ilustra operações de inicialização exemplares para uma implementação onde a camada candidata 220 é treinada, impedindo inicialmente que a camada candidata afete o modelo principal 210. Para fazer isso, as operações 221, 222 e 223 podem ser aumentadas com uma operação de gradiente de parada (sg) que se aplica às respectivas entradas de cada operação. sg(x) é x durante a propagação direta e é zero durante a retropropagação. Durante a retropropagação, os gradientes são calculados para cada camada para ajustar os parâmetros aprendidos do modelo. A operação sg evita que o gradiente afete qualquer um dos parâmetros aprendidos em qualquer camada anterior do modelo pai.[0052] Figure 3 illustrates exemplary initialization operations for an implementation where the candidate layer 220 is trained, initially preventing the candidate layer from affecting the main model 210. To do this, operations 221, 222 and 223 can be augmented with a stop gradient (sg) operation that applies to the respective inputs of each operation. sg(x) is x during forward propagation and is zero during backpropagation. During backpropagation, gradients are calculated for each layer to adjust learned model parameters. The sg operation prevents the gradient from affecting any of the parameters learned in any previous layer of the parent model.

[0053] Uma operação stop-forward (sf) 302 pode ser aplicada à saída da operação agregada 224 antes que a saída seja fornecida para a camada alvo 215. Aqui, sf(x) é zero durante a propagação para a frente e é a função de identidade durante a propagação para trás. Isso permite que a camada candidata 220 receba as informações de gradiente durante a inicialização sem afetar a camada de destino.[0053] A stop-forward (sf) operation 302 can be applied to the output of the aggregate operation 224 before the output is provided to the target layer 215. Here, sf(x) is zero during forward propagation and is the identity function during backward propagation. This allows candidate layer 220 to receive gradient information during initialization without affecting the target layer.

Portanto, durante a inicialização, a camada candidata pode acumular o gradiente da perda em relação à camada alvo, sem realmente afetar os valores emitidos pela camada alvo ou quaisquer saídas subsequentes.Therefore, during initialization, the candidate layer can accumulate the gradient of the loss with respect to the target layer, without actually affecting the values emitted by the target layer or any subsequent outputs.

[0054] Assim, na inicialização da camada candidata, os parâmetros aprendidos do modelo pai podem permanecer estáveis enquanto determinam os valores inicializados dos parâmetros aprendidos para a camada candidata. Em alguns casos, diferentes camadas candidatas geradas na mesma iteração podem compartilhar margens. Quando este for o caso, os pesos para as margens compartilhadas podem ser inicializados e/ou treinados independentemente para cada camada candidata. Alternativamente, a inicialização e/ou treinamento podem ser realizados de modo que diferentes camadas candidatas compartilhem pesos para margens que elas têm em comum. Por exemplo, as operações de propagação direta e retropropagação podem ser compartilhadas durante a inicialização e/ou treinamento de margens compartilhadas e realizadas de forma independente para outras margens que não são compartilhadas entre as camadas candidatas. Economias significativas em custos computacionais podem ser obtidas por inicialização compartilhada e/ou treinamento de margens em uma determinada camada candidata e/ou modelo filho.54 Camadas Candidatas de Poda[0054] Thus, at the initialization of the candidate layer, the parameters learned from the parent model can remain stable while determining the initialized values of the parameters learned for the candidate layer. In some cases, different candidate layers generated in the same iteration may share margins. When this is the case, weights for the shared margins can be independently initialized and/or trained for each candidate layer. Alternatively, initialization and/or training can be performed so that different candidate layers share weights for margins they have in common. For example, forward propagation and backpropagation operations can be shared during initialization and/or training of shared margins and performed independently for other margins that are not shared between candidate layers. Significant savings in computational costs can be realized by shared initialization and/or margin training on a given candidate layer and/or child model.54 Pruning Candidate Layers

[0055] Em alguns casos, o bloco 108 do método 100 pode envolver a seleção de todas as camadas candidatas geradas no bloco 106 para inclusão em modelos filho para treinamento e avaliação subsequentes. Quando este for o caso, o método 100 ainda pode fornecer benefícios significativos em relação às técnicas anteriores, porque apenas certos modelos filho são designados como modelos pai no bloco 114. Como consequência, os modelos filho em cada iteração são derivados de bons modelos pai conhecidos. Essa abordagem permite que uma parte significativa do espaço de pesquisa seja omitida ao desenvolver novos modelos filho.[0055] In some cases, block 108 of method 100 may involve selecting all candidate layers generated in block 106 for inclusion in child models for subsequent training and evaluation. When this is the case, method 100 can still provide significant benefits over previous techniques, because only certain child models are designated as parent models in block 114. As a consequence, the child models in each iteration are derived from known good parent models. . This approach allows a significant part of the search space to be omitted when developing new child models.

[0056] No entanto, dependendo das operações potenciais, parâmetros de operação e tipos de conectividade em consideração, o número de camadas candidatas possíveis em qualquer iteração pode ser muito grande. Portanto, o número de possíveis modelos filho imediatos de um determinado pai pode ser grande. Como um refinamento adicional para reduzir a carga computacional de treinamento de novos modelos filho, algumas implementações podem filtrar certas camadas candidatas antes de treinar os modelos filho no bloco 110. Isso pode reduzir ainda mais o espaço de modelos filho que precisam ser treinados e avaliados em cada iteração, conforme discutido acima.[0056] However, depending on the potential operations, operation parameters and connectivity types under consideration, the number of possible candidate layers in any iteration can be very large. Therefore, the number of possible immediate child models of a given parent can be large. As a further refinement to reduce the computational burden of training new child models, some implementations may filter out certain candidate layers before training the child models in block 110. This can further reduce the space of child models that need to be trained and evaluated in each iteration, as discussed above.

[0057] Uma abordagem para reduzir o número de filho para treinamento é aleatoriamente amostrar as possíveis camadas candidatas no bloco 108 do método 100, de modo que menos filho sejam treinados. Em outras implementações, o bloco 108 pode envolver usar parâmetros inicializados de camadas candidatas para determinar que camadas candidatas deveriam ser incorporadas aos modelos filho para treinamento. Considere um cenário onde múltiplas camadas candidatas compartilham conectividade a uma ou mais camadas de entrada e uma camada de destino de um dado modelo pai, ainda realizando diferentes operações. Diferentes pesos podem ser inicializados para as margens das camadas candidatas que são inseridas e/ou emitidas pelas diferentes operações. Esses pesos inicializados podem ser usados para selecionar certas camadas candidatas para incluir em modelos filho para treinamento adicional. Outras camadas candidatas podem ser podadas de modo que nenhum modelo filho com essas camadas candidatas seja treinado, assim economizando tempo adicional de treinamento.[0057] One approach to reducing the number of children for training is to randomly sample the possible candidate layers in block 108 of method 100, so that fewer children are trained. In other implementations, block 108 may involve using initialized parameters from candidate layers to determine which candidate layers should be incorporated into child models for training. Consider a scenario where multiple candidate layers share connectivity to one or more input layers and a target layer of a given parent model, still performing different operations. Different weights can be initialized to the margins of the candidate layers that are inserted and/or emitted by the different operations. These initialized weights can be used to select certain candidate layers to include in child models for further training. Other candidate layers can be pruned so that no child models with these candidate layers are trained, thus saving additional training time.

[0058] A Figura 4 ilustra uma técnica para usar parâmetros inicializados para podar camadas candidatas que são improváveis de serem úteis. Especificamente, a Figura 4 mostra um cenário onde múltiplas operações podem ser inicializadas juntas derivando uma camada candidata agregada 402 de um modelo pai 210. De modo geral, a camada candidata agregada 402 representa múltiplas camadas candidatas que compartilham conectividade ao modelo pai, mas realizam diferentes operações. Conforme discutido mais abaixo, a Figura 4 oferece uma alternativa para adicionar todas as camadas candidatas aos modelos principais para obter os modelos filho, ou aleatoriamente selecionar camadas candidatas. Observe que, para brevidade, a Figura 4 omite a camada 212 que foi mostrada nas Figuras 2 e 3.[0058] Figure 4 illustrates a technique for using initialized parameters to prune candidate layers that are unlikely to be useful. Specifically, Figure 4 shows a scenario where multiple operations can be initialized together by deriving an aggregate candidate layer 402 from a parent model 210. Generally speaking, aggregate candidate layer 402 represents multiple candidate layers that share connectivity to the parent model, but perform different operations. As discussed further below, Figure 4 offers an alternative to adding all candidate layers to the main models to get the child models, or randomly selecting candidate layers. Note that, for brevity, Figure 4 omits layer 212 that was shown in Figures 2 and 3.

[0059] A seguir, um algoritmo específico para podar as camadas candidatas. Para cada entrada xin,i, as operações possíveis até xin,i podem ser instanciadas como opi,1,...opi,k, onde k é o número de operações possíveis. Na Figura 4, essas entradas são fornecidas pelas camadas 213 e 214, por exemplo. Dadas as entradas J xin,i isso dá um total de tensores Jk o1,o2,...oJK. Essas operações podem ser treinadas simultaneamente. Uma vez treinado, um subconjunto das operações pode ser somado para finalizar uma operação de camada candidata agregada 404 por meio da fórmula xc como xc =[0059] The following is a specific algorithm for pruning candidate layers. For each input xin,i, the possible operations up to xin,i can be instantiated as opi,1,...opi,k, where k is the number of possible operations. In Figure 4, these inputs are provided by layers 213 and 214, for example. Given the inputs J xin,i this gives a total of tensors Jk o1,o2,...oJK. These operations can be trained simultaneously. Once trained, a subset of the operations can be summed to end an aggregate candidate layer operation 404 via the formula xc as xc =

[0060] Uma vez treinada, a camada candidata agregada 402 inclui diferentes pesos para bordas conectadas a diferentes operações. Assim, a camada candidata agregada pode ser concebida como várias camadas candidatas inicializadas com diferentes conjuntos de pesos para bordas conectando diferentes operações. Essas ponderações podem ser inseridas em uma técnica de seleção de recursos para selecionar uma ou mais das camadas candidatas para usar em modelos filho e, da mesma forma, podar uma ou mais outras camadas candidatas de modo que não sejam usadas em modelos filho. Este processo de seleção de recursos é representado na Figura 4 pela operação selecionada 406. Observe que a Figura 4 também mostra o emprego da operação stop-forward 408 e operações stop-gradient 410 e 412 de uma maneira semelhante à discutida acima em relação à Figura 3.[0060] Once trained, the aggregate candidate layer 402 includes different weights for edges connected to different operations. Thus, the aggregate candidate layer can be thought of as multiple candidate layers initialized with different sets of edge weights connecting different operations. These weights can be fed into a feature selection technique to select one or more of the candidate layers for use in child models and similarly prune one or more other candidate layers so that they are not used in child models. This resource selection process is represented in Figure 4 by the selected trade 406. Note that Figure 4 also shows the employment of the stop-forward trade 408 and stop-gradient trades 410 and 412 in a similar manner as discussed above with respect to Figure 3.

[0061] Uma abordagem para alcançar a seleção de recursos esparsos na operação de seleção 406 é combinar linearmente as opções o1,...oJK e usar L - 1 regularização de norma, como redução absoluta e operador de seleção ("lasso"), no pesos lineares. A dispersão pode ser aplicada adicionando a seguinte regularização à perda geral: onde ƛout é um parâmetro associado com a camada de destino 215 (xout) para gerenciar o nível de esparsidade. Outra alternativa é substituir a perda linear com perda ao quadrado como segue:[0061] One approach to achieve sparse feature selection in selection operation 406 is to linearly combine options o1,...oJK and use L - 1 norm regularization such as absolute reduction and selection operator ("lasso"), in linear weights. Scattering can be applied by adding the following regularization to the overall loss: where ƛout is a parameter associated with destination layer 215 (xout) to manage the sparsity level. Another alternative is to replace linear loss with squared loss as follows:

[0062] Observe que, em algumas implementações e, assim, a equação anterior é equivalente a:[0062] Note that in some implementations and thus the previous equation is equivalent to:

[0063] Visto de uma perspectiva, as implementações discutidas acima empregam seleção de recursos e compartilhamento de parâmetros aprendidos para inicializar um número combinatório de camadas candidatas e selecionar um subconjunto delas para incluir em modelos filho para treinamento adicional. Esta abordagem pode favorecer a seleção de camadas candidatas que provavelmente melhorarão o desempenho do modelo e desfavorecer a seleção de camadas candidatas que provavelmente não melhorarão o desempenho do modelo. Como consequência, menos modelos filho totais precisam ser treinados para avaliação como modelos pai em potencial, e os modelos filho treinados têm maior probabilidade de produzir descendentes que exibam um desempenho desejável. Treinamento de Modelo Filho[0063] Viewed from one perspective, the implementations discussed above employ feature selection and learned parameter sharing to initialize a combinatorial number of candidate layers and select a subset of them to include in child models for further training. This approach may favor the selection of candidate layers that are likely to improve model performance and disfavor the selection of candidate layers that are unlikely to improve model performance. As a consequence, fewer total child models need to be trained for evaluation as potential parent models, and the trained child models are more likely to produce offspring that exhibit desirable performance. Son Model Training

[0064] Após a inicialização, um dado modelo filho pode incluir parâmetros aprendidos herdados do modelo pai e ainda parâmetros inicializados para quaisquer camadas candidatas incluídas neste modelo filho. Conforme discutido acima, o bloco 110 de método 100 pode incluir treinamento de modelos filho como um todo, por exemplo, as camadas candidatas podem ser treinadas juntas com o resto do modelo pai. Isso pode ser visto como uma técnica "partida a quente", onde o modelo filho tem parâmetros de camada candidata inicializada e parâmetros de modelo pai herdados no início do treinamento, ambos podendo ser modificados ao treinar um dado modelo filho como um todo.[0064] After initialization, a given child model can include learned parameters inherited from the parent model and also initialized parameters for any candidate layers included in this child model. As discussed above, block 110 of method 100 can include training of child models as a whole, for example, candidate layers can be trained together with the rest of the parent model. This can be seen as a "hot start" technique, where the child model has both initialized candidate layer parameters and parent model parameters inherited at the beginning of training, both of which can be modified when training a given child model as a whole.

[0065] A Figura 5 ilustra uma abordagem de exemplo para treinar um modelo filho. Na Figura 5, as operações de stop-gradient nas entradas podem ser removidas. Além disso, a operação de stop-[0065] Figure 5 illustrates an example approach to training a child model. In Figure 5, stop-gradient operations on entries can be removed. In addition, the stop-

forward pode ser substituída por um multiplicador escalar 502. O escalar é treinável e pode ser inicializado para ser zero. Portanto, imediatamente após a inicialização, os modelos filho representam as mesmas funções que os modelos pai. Da mesma forma, o modelo filho tem uma estrutura diferente do modelo pai, mas a funcionalidade do modelo pai é preservada. Os modelos filho são então treinados a partir da combinação de parâmetros pai e parâmetros candidatos inicializados, pois o multiplicador escalar pode mudar ao longo do tempo e a camada candidata adicionada começa lentamente a contribuir para a camada de destino e as saídas subsequentes do modelo. Essa abordagem pode evitar que as camadas candidatas desestabilizem os parâmetros aprendidos herdados do modelo pai, que podem estar próximos do ideal, visto que o modelo pai foi totalmente treinado.forward can be replaced by a scalar multiplier of 502. The scalar is trainable and can be initialized to be zero. Therefore, immediately after initialization, the child models represent the same functions as the parent models. Likewise, the child model has a different structure than the parent model, but the functionality of the parent model is preserved. The child models are then trained from the combination of parent parameters and initialized candidate parameters, as the scalar multiplier can change over time and the added candidate layer slowly starts to contribute to the target layer and subsequent model outputs. This approach can prevent candidate layers from destabilizing learned parameters inherited from the parent model, which can be close to ideal given that the parent model has been fully trained.

[0066] Observe que algumas implementações podem omitir as operações sg e sf mostradas na Figura 3 e, em vez disso, permitir imediatamente que as camadas candidatas afetem o modelo pai enquanto as camadas candidatas estão sendo treinadas. Usar sf-sg como pré e pós-correção da camada candidata, conforme mostrado na Figura 3, pode fazer com que as camadas candidatas convirjam mais rapidamente. No entanto, isso pode envolver a formulação de objetivos adicionais para os candidatos durante a inicialização.[0066] Note that some implementations may omit the sg and sf operations shown in Figure 3 and instead immediately allow candidate layers to affect the parent model while candidate layers are being trained. Using sf-sg as a pre- and post-correction of the candidate layer, as shown in Figure 3, can make the candidate layers converge faster. However, this may involve formulating additional goals for candidates during startup.

[0067] Por outro lado, permitir que os valores fluam livremente entre as camadas pai e candidata permite que as novas camadas candidatas contribuam diretamente para ajustar a perda final. No entanto, os valores iniciais para as camadas candidatas podem estar muito longe do ideal em comparação aos modelos no pai, e isso pode afetar negativamente os parâmetros do modelo pai. Uma abordagem alternativa para resolver esse problema é usar uma taxa de aprendizado para inicializar as camadas candidatas que é muito menor do que a usada no treinamento do modelo pai (0,1 ~ 0,02 vezes o original). Avaliar e Designar Modelos Filho como Pai[0067] On the other hand, allowing values to flow freely between the parent and candidate layers allows the new candidate layers to directly contribute to adjusting the final loss. However, the initial values for candidate layers can be very far from ideal compared to models in the parent, and this can negatively affect the parameters of the parent model. An alternative approach to solve this problem is to use a learning rate to initialize the candidate layers that is much lower than the one used in training the parent model (0.1 ~ 0.02 times the original). Evaluate and Assign Child Models as Parents

[0068] Conforme observado anteriormente, certos modelos filho são adicionados ao conjunto de modelos pai no bloco 114 do método[0068] As noted earlier, certain child models are added to the set of parent models in block 114 of the method

100. Uma abordagem para decidir quais modelos filho adicionar ao grupo de modelos pai envolve o uso de um ou mais critérios para prever quais modelos filho provavelmente produzirão descendência que, em iterações subsequentes, exibirá melhorias em relação aos modelos previamente descobertos. Geralmente, os critérios podem considerar fatores como a perda de um determinado modelo filho, bem como o esforço computacional para treinar um determinado modelo filho. Uma perda maior implica em uma precisão menor durante a validação do modelo e um custo mais alto implica em tempos de treinamento mais longos em um conjunto de dados de treinamento. Os modelos filho que exibem perda relativamente baixa e baixo esforço de treinamento podem ser preferidos para inclusão no grupo de modelos pai.100. One approach to deciding which child models to add to the parent model pool involves using one or more criteria to predict which child models are likely to produce offspring that, in subsequent iterations, will exhibit improvements over previously discovered models. Generally, the criteria can consider factors such as the loss of a given child model as well as the computational effort to train a given child model. Higher loss implies lower accuracy during model validation and higher cost implies longer training times on a training dataset. Child models that exhibit relatively low loss and low training effort may be preferred for inclusion in the parent model group.

[0069] Uma abordagem específica para selecionar modelos filho para o conjunto pai é mostrada aqui com relação à Figura 6. Esta Figura ilustra um exemplo de gráfico de dispersão 600 para vários modelos treinados. Para cada modelo filho que conclui o treinamento, o custo computacional para treinar esse modelo filho pode ser calculado e plotado no eixo x 602. Além disso, a perda desse modelo filho pode ser calculada e plotada no eixo y 604. Uma vez que todos os modelos para uma dada iteração ter sido plotada, um casco convexo inferior 606 pode ser calculado a partir dos valores plotados. Observe que o custo computacional pode ser calculado como um valor, como dias de GPU, que reflete a quantidade de tempo necessária para treinar o modelo em hardware padronizado (por exemplo, um modelo específico de GPU). Em outras implementações, o custo computacional reflete o custo do tempo de teste, por exemplo, o número de operações envolvidas no uso de um determinado modelo para fazer uma previsão, independentemente dos valores específicos de treinamento, como o número de períodos de treinamento e/ou aumentos de dados envolvidos em treinamento. O custo computacional pode ser normalizado para um número entre 0 e 1, conforme mostrado na Figura 6.[0069] A specific approach to selecting child models for the parent set is shown here with respect to Figure 6. This Figure illustrates an example 600 scatterplot for various trained models. For each child model that completes training, the computational cost to train that child model can be calculated and plotted on the x-axis 602. In addition, the loss of this child model can be calculated and plotted on the y-axis 604. Since all models for a given iteration has been plotted, a lower convex hull 606 can be calculated from the plotted values. Note that the computational cost can be calculated as a value, such as GPU days, that reflects the amount of time required to train the model on standardized hardware (for example, a specific GPU model). In other implementations, the computational cost reflects the cost of testing time, for example, the number of operations involved in using a given model to make a prediction, regardless of specific training values, such as the number of training periods and/or or data augmentations involved in training. The computational cost can be normalized to a number between 0 and 1, as shown in Figure 6.

[0070] O casco convexo inferior 606 pode ser usado como um mecanismo para decidir se um determinado modelo filho é adicionado ao conjunto de modelos pai. Por exemplo, um modelo filho no casco convexo inferior pode ser adicionado ao conjunto de modelos pai com uma probabilidade definida usando o seguinte algoritmo específico. Se m1 e m2 são dois modelos adjacentes no casco, com custos computacionais c1 e c2 (c1 <c2), então o peso da probabilidade de em 1 pode ser definido proporcionalmente a c2 - c1. O modelo mais preciso, que não tem o modelo a seguir na curva, pode ser selecionado para inclusão no pool do modelo pai com probabilidade 0,5. Na Figura 6, o modelo mais preciso é o modelo 608, pois este modelo apresenta a menor perda.[0070] The lower convex hull 606 can be used as a mechanism to decide whether a particular child model is added to the parent model set. For example, a child model in the lower convex hull can be added to the set of parent models with a defined probability using the following specific algorithm. If m1 and m2 are two adjacent models in the hull, with computational costs c1 and c2 (c1 < c2), then the probability weight of in 1 can be defined proportionally to c2 - c1. The most accurate model, which does not have the next model on the curve, can be selected for inclusion in the parent model pool with probability 0.5. In Figure 6, the most accurate model is the 608 model, as this model has the lowest loss.

[0071] Geralmente, um casco convexo inferior é um subconjunto da eficiência de Pareto e, portanto, outra abordagem é selecionar modelos filho na eficiência de Pareto para inclusão no grupo pai. Qualquer uma das abordagens pode fornecer um bom desempenho para selecionar modelos filho para adicionar ao grupo de modelos pai. Uma forma de visualizar o casco convexo inferior e/ou a fronteira de Pareto é a seguinte. Um determinado modelo no casco convexo inferior ou na fronteira de Pareto não pode ser melhorado com relação a um critério mudando para outro modelo no casco convexo inferior/eficiência de Pareto sem degradar os outros critérios.[0071] Generally, a lower convex hull is a subset of the Pareto efficiency and therefore another approach is to select child models in the Pareto efficiency for inclusion in the parent group. Either approach can provide good performance for selecting child models to add to the parent model group. One way to visualize the lower convex hull and/or the Pareto boundary is as follows. A given model on the lower convex hull or Pareto frontier cannot be improved with respect to one criterion by switching to another model on the lower convex hull/Pareto efficiency without degrading the other criteria.

[0072] Observe que os mesmos modelos podem ter erros de validação diferentes devido à aleatoriedade na formação de gradientes estocásticos. Como consequência, o casco convexo inferior ou fronteira de Pareto pode ser relaxada com uma largura de banda multiplicativa. Assim, um modelo filho cujo erro de validação está dentro de (1+y) vezes o erro de validação do casco convexo inferior com o mesmo custo computacional pode ser considerado como estando no casco convexo inferior e pode ser escolhido como pai. Algumas implementações podem definir y = 0,025. Esta abordagem permite que certos modelos filho que estão próximos ao casco convexo inferior, mas não estritamente localizados nele, ainda sejam designados como modelos pai.[0072] Note that the same models may have different validation errors due to randomness in the formation of stochastic gradients. As a consequence, the lower convex hull or Pareto boundary can be relaxed with a multiplicative bandwidth. Thus, a child model whose validation error is within (1+y) times the validation error of the lower convex hull with the same computational cost can be considered to be in the lower convex hull and can be chosen as a parent. Some implementations may set y = 0.025. This approach allows certain child models that are close to the lower convex hull, but not strictly located on it, to still be designated as parent models.

[0073] Outras abordagens também podem ser usadas para permitir que modelos filho que têm localizações dentro de uma vizinhança predeterminada do casco convexo inferior sejam selecionados como modelos pai. Por exemplo, algumas implementações podem definir uma distância limite do casco convexo inferior e permitir que modelos filho dentro da distância limite do casco convexo inferior sejam selecionados como modelos pai. Esta é apenas uma das várias abordagens que podem ser usadas para selecionar um subconjunto de um ou mais modelos filho como um modelo pai, com base em um ou mais critérios.[0073] Other approaches can also be used to allow child models that have locations within a predetermined neighborhood of the lower convex hull to be selected as parent models. For example, some implementations may define a lower convex hull threshold distance and allow child models within the lower convex hull threshold distance to be selected as parent models. This is just one of several approaches that can be used to select a subset of one or more child models as a parent model, based on one or more criteria.

[0074] A Figura 6 mostra os modelos que concluíram o treinamento como pontos pretos. Para fins de explicação, suponha que a Figura 6 represente o estado do gráfico de dispersão 600 após a iteração N. Um ou mais dos modelos filho no casco convexo inferior ou próximo a 606 podem ser selecionados como modelos pai para uma iteração subsequente N+1, onde camadas candidatas adicionais podem ser adicionadas e inicializadas para formar mais modelos filho, como discutido acima.[0074] Figure 6 shows the models that have completed training as black dots. For the sake of explanation, suppose Figure 6 represents the state of the scatterplot 600 after iteration N. One or more of the child models in the convex hull below or close to 606 can be selected as parent models for a subsequent iteration N+1 , where additional candidate layers can be added and initialized to form more child models, as discussed above.

[0075] A Figura 7 mostra o gráfico de dispersão 600 em um estado subsequente após a iteração N+1. Modelos filho treinados durante a iteração N+1 são mostrados na Figura 7 usando quadrados. Um novo casco convexo inferior 702 pode ser calculado. O casco convexo inferior anterior 606 é mostrado em linhas pontilhadas para ilustrar o movimento do casco convexo inferior para baixo na iteração N+1.[0075] Figure 7 shows the scatterplot 600 in a subsequent state after the N+1 iteration. Child models trained during the N+1 iteration are shown in Figure 7 using squares. A new lower convex hull 702 can be calculated. The anterior lower convex hull 606 is shown in dotted lines to illustrate the downward movement of the lower convex hull in the N+1 iteration.

[0076] Novamente, um ou mais dos modelos filho no ou próximo ao casco convexo inferior 702 podem ser selecionados para uma iteração subsequente N+2. Modelos filho treinados durante a iteração N 2 são mostrados na Figura 8 como triângulos. Um novo casco convexo inferior 802 pode ser calculado e os cascos convexos inferiores anteriores 606 e 702 são mostrados em linhas pontilhadas para ilustrar sua posição em relação ao casco convexo inferior 802.[0076] Again, one or more of the child models at or near the lower convex hull 702 may be selected for a subsequent iteration N+2. Child models trained during the N 2 iteration are shown in Figure 8 as triangles. A new lower convex hull 802 can be calculated and the previous lower convex hulls 606 and 702 are shown in dotted lines to illustrate their position relative to the lower convex hull 802.

[0077] Uma maneira de visualizar a abordagem mostrada nas Figuras 6-8 é uma abordagem gananciosa para encontrar preditores de baixo custo. Observe que esta é uma abordagem multi-objetivo, considerando tanto o custo computacional de treinamento/validação quanto a precisão do modelo. Implementações alternativas podem usar critérios diferentes e/ou adicionais, por exemplo, gráficos multidimensionais de três ou mais critérios, uma função objetivo definida sobre um ou mais critérios, etc.[0077] One way to visualize the approach shown in Figures 6-8 is a greedy approach to finding low-cost predictors. Note that this is a multi-objective approach, considering both the computational cost of training/validation and the accuracy of the model. Alternative implementations may use different and/or additional criteria, e.g. multidimensional plots of three or more criteria, an objective function defined on one or more criteria, etc.

[0078] A abordagem estabelecida acima geralmente desenvolve redes usando uma abordagem aleatória. No entanto, em vez de uma abordagem puramente aleatória que pode ser computacionalmente inviável, a abordagem é guiada por critérios de predição que tendem a favorecer o uso de modelos bons conhecidos como base para modificações posteriores. Conforme observado anteriormente, treinar um modelo do zero pode ser muito intensivo em termos de computação. Por exemplo, um conjunto de dados de treinamento pode incluir milhões de itens de dados de treinamento e um determinado modelo pode precisar ser treinado em várias épocas de treinamento antes da convergência. Uma época de treinamento pode envolver uma operação de propagação direta e uma operação de retropropagação por meio de um modelo inteiro para cada item de dados no conjunto de dados de treinamento.[0078] The approach set out above generally develops networks using a random approach. However, instead of a purely random approach that may be computationally infeasible, the approach is guided by prediction criteria that tend to favor the use of known good models as a basis for further modifications. As noted earlier, training a model from scratch can be very computationally intensive. For example, a training dataset might include millions of training data items, and a given model might need to be trained at multiple training epochs before convergence. A training epoch can involve a forward propagation operation and a backpropagation operation through an entire model for each data item in the training dataset.

[0079] A abordagem estabelecida acima oferece vários benefícios em relação às abordagens convencionais para geração automatizada de modelos. Observe que nem todo modelo filho é usado para derivar camadas candidatas para treinamento subsequente. Em vez disso, usando um subconjunto de modelos filho que ocorrem ao longo do casco convexo inferior como novos modelos pai, as implementações divulgadas começam cada nova iteração com estruturas de modelo filho que herdam a estrutura do modelo pai de modelos bons conhecidos. Isso permite que as iterações subsequentes prossigam sem modelos de treinamento que ocupem uma parte significativa do espaço de busca que está longe do casco convexo inferior e podem economizar uma quantidade enorme de tempo de treinamento. Além disso, ao usar não apenas a precisão, mas o custo de treinamento como um critério para selecionar quais modelos filho usar como novos modelos pai, as implementações divulgadas desfavorecem a geração de novos modelos que são mais intensivos em computação. Isso, por sua vez, reduz o tempo de treinamento para o treinamento não apenas desses modelos, mas dos modelos filho deles derivados.[0079] The approach set out above offers several benefits over conventional approaches to automated model generation. Note that not every child model is used to derive candidate layers for subsequent training. Instead, using a subset of child models that occur along the lower convex hull as new parent models, the disclosed implementations begin each new iteration with child model structures that inherit the parent model structure from known good models. This allows subsequent iterations to proceed without training models that occupy a significant part of the search space that is far from the lower convex hull and can save a huge amount of training time. Furthermore, by using not only accuracy, but training cost as a criterion for selecting which child models to use as new parent models, the disclosed implementations disfavor the generation of new models that are more computationally intensive. This, in turn, reduces the training time for training not only these models, but the child models derived from them.

[0080] Além disso, lembre-se de que a inicialização da camada candidata pode ser realizada em modelos filho que herdam não apenas a estrutura do modelo pai, mas também os parâmetros aprendidos do modelo pai. Como consequência, os parâmetros de novas camadas candidatas podem ser inicializados de forma relativamente rápida para valores razoáveis. Além disso, isso permite o treinamento de "partida a quente" do modelo infantil como um todo. Isso pode acelerar a convergência, por exemplo, exigindo muito menos períodos de treinamento ou amostras de treinamento do que seria o caso se cada modelo filho fosse totalmente treinado do zero.[0080] Also, remember that candidate layer initialization can be performed on child models that inherit not only the structure of the parent model, but also the parameters learned from the parent model. As a consequence, the parameters of new candidate layers can be initialized relatively quickly to reasonable values. In addition, this allows for "hot start" training of the child model as a whole. This can speed up convergence, for example by requiring far fewer training periods or training samples than would be the case if each child model were fully trained from scratch.

[0081] Além disso, lembre-se de que as margens compartilhadas entre quaisquer dois modelos filho podem ser inicializadas e treinadas juntas. Considerando que os modelos filho são derivados de um conjunto compartilhado de modelos pai, a probabilidade de bordas compartilhadas é relativamente alta. Assim, um tempo significativo de treinamento pode ser economizado em relação às alternativas onde as margens compartilhadas são inicializadas e treinadas separadamente para cada modelo filho.[0081] Also, remember that the margins shared between any two child models can be initialized and trained together. Considering that child models are derived from a shared set of parent models, the probability of shared edges is relatively high. Thus, significant training time can be saved over alternatives where shared margins are initialized and trained separately for each child model.

[0082] Lembre-se de que as técnicas anteriores para geração automatizada de modelos de aprendizado por máquina sofriam de cargas de treinamento computacionalmente inviáveis ou apenas consideravam modelos em um espaço de busca muito restrito. Tomados em conjunto, os benefícios observados acima permitem a geração automatizada de modelos de aprendizado por máquina grandes e precisos a partir de um espaço de busca relativamente irrestrito, sem impor cargas computacionais desordenadas aos recursos computacionais usados para gerar os modelos. Exemplo de Fluxo de Processamento[0082] Remember that previous techniques for automated generation of machine learning models suffered from computationally infeasible training loads or only considered models in a very restricted search space. Taken together, the benefits noted above allow the automated generation of large and accurate machine learning models from a relatively unconstrained search space, without imposing inordinate computational loads on the computational resources used to generate the models. Processing Flow Example

[0083] A Figura 9 fornece uma visão geral de alto nível de um fluxo de processamento 900 para o crescimento incremental de uma estrutura de modelo. O fluxo de processamento ilustra como um conjunto de modelos pai pode ser aumentado iterativamente. Esse fluxo de processamento é um exemplo de abordagem para atribuir certas tarefas a processos de trabalho, como máquinas virtuais. Por exemplo, o fluxo de processamento pode ser adequado para sistemas distribuídos ou servidores de torre onde um hipervisor ou sistema operacional está agendando novos trabalhos ao longo do tempo conforme os processos de trabalho se tornam disponíveis.[0083] Figure 9 provides a high-level overview of a processing flow 900 for incremental growth of a model structure. The processing flow illustrates how a set of parent models can be iteratively augmented. This processing flow is an example of an approach to assigning certain tasks to worker processes such as virtual machines. For example, the processing flow might be suitable for distributed systems or tower servers where a hypervisor or operating system is scheduling new work over time as work processes become available.

[0084] Na fase 910, um grupo de modelo pai 912 é determinado. Por exemplo, em alguns casos, uma técnica humana ou automatizada pode escolher um ou mais modelos para o grupo com base no desempenho conhecido dos modelos. Para simplificar, suponha que o grupo inclua um único modelo 914 na inicialização.[0084] In phase 910, a parent model group 912 is determined. For example, in some cases, a human or automated technique may choose one or more models for the group based on the known performance of the models. For simplicity, suppose the group includes a single model 914 at startup.

[0085] Na fase 920, as camadas candidatas são inicializadas dos modelos principais. Por exemplo, a Figura 9 mostra camadas candidatas 922, 924, e 926. Conforme observado, cada camada candidata pode ser adicionada ao grupo de modelo pai 912. As camadas candidatas podem ser adicionadas a uma fila de camadas candidatas 928. Quando um determinado processo de trabalho se torna disponível, o processo de trabalho pode puxar uma camada candidata da fila de camada candidata e inicializar essa camada candidata como discutido neste documento, por exemplo, realizando várias iterações iniciais de treinamento.[0085] In phase 920, the candidate layers are initialized from the main models. For example, Figure 9 shows candidate layers 922, 924, and 926. As noted, each candidate layer can be added to the parent model group 912. Candidate layers can be added to a queue of candidate layers 928. When a given process becomes available, the worker process can pull a candidate layer from the candidate layer queue and initialize that candidate layer as discussed in this document, for example, performing several initial training iterations.

[0086] Uma vez inicializado, um subconjunto das camadas candidatas pode ser selecionado para inclusão em uma fila de modelo filho 932 para treinamento na fase 930. Um processo de trabalho disponível pode puxar um determinado modelo filho da fila de modelo filho para treinamento na fase 930. A Figura 9 mostra um modelo filho 934 na fase 930 incluindo a camada candidata 924, mas não a camada candidata 922 ou 926. Isso representa a ideia de que as camadas candidatas 922 e/ou 926 foram removidas na fase anterior 920, por exemplo, conforme discutido no recurso implementações de seleção mencionadas acima.[0086] Once initialized, a subset of the candidate layers can be selected for inclusion in a child model queue 932 for training in phase 930. An available worker process can pull a given child model from the child model queue for training in phase 930. Figure 9 shows a child model 934 in phase 930 including candidate layer 924, but not candidate layer 922 or 926. This represents the idea that candidate layers 922 and/or 926 were removed in previous phase 920, for example, as discussed in the selection implementations feature mentioned above.

[0087] Como mencionado anteriormente, os modelos filho não são necessariamente treinados do zero, mas podem ser treinados a partir dos parâmetros aprendidos do modelo pai e também parâmetros inicializados determinados na fase 920 ao inicializar as camadas candidatas que são adicionadas aos modelos filho. Além disso, observe que vários modelos filho podem ser treinados em conjunto como parte de um modelo maior, como também discutido acima.[0087] As mentioned earlier, child models are not necessarily trained from scratch, but can be trained from the parameters learned from the parent model and also initialized parameters determined in phase 920 when initializing the candidate layers that are added to the child models. Also, note that multiple child models can be trained together as part of a larger model, as also discussed above.

[0088] Na fase 930, certos modelos filho da fila de modelos filho 932 podem ser escolhidos para adicionar ao conjunto de modelos pai 912, conforme mostrado pela seta 936. Conforme discutido anteriormente, os modelos filho adicionados ao conjunto de modelos pai podem ser escolhidos com base em vários critérios . Por exemplo, algumas implementações podem avaliar os modelos filho treinados em conjuntos de dados de validação e determinar a respectiva perda para cada modelo filho, e a perda pode ser usada como um critério para o qual os modelos filho são adicionados ao conjunto de modelos pai. Alternativa e/ou adicionalmente, a despesa computacional de treinamento de um determinado modelo filho pode ser usada como um critério para determinar se esse modelo filho é adicionado ao conjunto de modelos pai. Outras abordagens podem alavancar cálculos formais do valor líquido esperado da adição de um modelo filho ao pool de modelos pai com base na consideração da despesa computacional e nas projeções calculadas sobre o valor esperado da adição. Uma vez que o pool de modelo pai tenha sido atualizado, o processamento pode retornar à fase 910 para as iterações subsequentes. Exemplo de Sistema[0088] In phase 930, certain child models from the child model queue 932 can be chosen to add to the parent model set 912, as shown by arrow 936. As discussed earlier, child models added to the parent model set can be chosen based on various criteria. For example, some implementations can evaluate trained child models on validation datasets and determine the respective loss for each child model, and the loss can be used as a criterion for which child models are added to the parent model set. Alternatively and/or additionally, the computational expense of training a given child model can be used as a criterion to determine whether that child model is added to the set of parent models. Other approaches can leverage formal calculations of the net expected value of adding a child model to the parent model pool based on consideration of computational expense and calculated projections of the expected value of the addition. Once the parent model pool has been updated, processing can return to phase 910 for subsequent iterations. System Example

[0089] As presentes implementações podem ser realizadas em vários cenários em vários dispositivos. A Figura 10 mostra um sistema de exemplo 1000 no qual as presentes implementações podem ser empregadas, conforme discutido mais abaixo.[0089] The present implementations can be performed in various scenarios on various devices. Figure 10 shows an example system 1000 in which the present implementations may be employed, as discussed further below.

[0090] Conforme mostrado na Figura 10, o sistema 1000 inclui um dispositivo cliente 1010, um servidor 1020, um servidor 1030 e um dispositivo cliente 1040, conectado por uma ou mais rede(s) 1050.[0090] As shown in Figure 10, the system 1000 includes a client device 1010, a server 1020, a server 1030 and a client device 1040, connected by one or more network(s) 1050.

Observe que os dispositivos cliente podem ser incorporados tanto como móveis dispositivos como smartphones ou tablets, bem como dispositivos fixos como desktops, dispositivos de servidor, etc. Da mesma forma, os servidores podem ser implementados usando vários tipos de dispositivos de computação. Em alguns casos, qualquer um dos dispositivos mostrados na Figura 10, mas particularmente os servidores, podem ser implementados em data centers, torres de servidores, etc.Note that client devices can be embedded either as mobile devices such as smartphones or tablets, as well as fixed devices such as desktops, server devices, etc. Likewise, servers can be implemented using various types of computing devices. In some cases, any of the devices shown in Figure 10, but particularly servers, can be deployed in data centers, server towers, etc.

[0091] Certos componentes dos dispositivos mostrados na Figura 10 podem ser referidos neste documento por números de referência entre parênteses. Para os fins da seguinte descrição, o entre parênteses (1) indica uma ocorrência de um determinado componente no dispositivo cliente 1010, (2) indica uma ocorrência de um determinado componente no servidor 1020, (3) indica uma ocorrência no servidor 1030, e (4) indica uma ocorrência no dispositivo cliente[0091] Certain components of the devices shown in Figure 10 may be referred to in this document by reference numbers in parentheses. For the purposes of the following description, the parentheses (1) indicate an occurrence of a particular component on client device 1010, (2) indicate an occurrence of a particular component on server 1020, (3) indicate an occurrence on server 1030, and (4) indicates an occurrence on the client device

1040. A menos que identifique uma instância específica de um determinado componente, este documento se referirá geralmente aos componentes sem parênteses.1040. Unless identifying a specific instance of a particular component, this document will generally refer to components without parentheses.

[0092] Geralmente, os dispositivos 1010, 1020, 1030 e/ou 1040 podem ter respectivos recursos de processamento 1001 e recursos de armazenamento 1002, que são discutidos em mais detalhes abaixo. Os dispositivos também podem ter vários módulos que funcionam usando os recursos de processamento e armazenamento para executar as técnicas aqui discutidas. Os recursos de armazenamento podem incluir recursos de armazenamento persistente, como unidades magnéticas ou de estado sólido, e armazenamento volátil, como um ou mais dispositivos de memória de acesso aleatório. Em alguns casos, os módulos são fornecidos como instruções executáveis que são armazenadas em dispositivos de armazenamento persistentes, carregados nos dispositivos de memória de acesso aleatório e lidos da memória de acesso aleatório pelos recursos de processamento para execução.[0092] Generally, devices 1010, 1020, 1030, and/or 1040 may have respective processing capabilities 1001 and storage capabilities 1002, which are discussed in more detail below. Devices can also have multiple modules that work by using processing and storage resources to perform the techniques discussed here. Storage resources can include persistent storage resources, such as magnetic or solid-state drives, and volatile storage, such as one or more random-access memory devices. In some cases, modules are provided as executable instructions that are stored on persistent storage devices, loaded into random-access memory devices, and read from random-access memory by processing resources for execution.

[0093] O dispositivo do cliente 1010 pode incluir um módulo de configuração 1011 que pode interagir com um módulo de geração de modelo 1021 no servidor 1020. De um modo geral, o módulo de configuração pode fornecer certos parâmetros de configuração para o módulo de geração de modelo. O módulo de geração de modelo usa esses parâmetros de configuração para executar a funcionalidade de geração de modelo conforme discutido neste documento. Em particular, o módulo de geração de modelo pode executar o método 100 com base nos parâmetros de configuração. Conforme observado acima, o processo de crescimento do modelo iterativo pode envolver a modificação de modelos pai para obter modelos filho, seleção de camadas candidatas a serem incluídas nos modelos filho com base, pelo menos, nos pesos aprendidos em um processo de inicialização das camadas candidatas e saída de um modelo final selecionado de os modelos infantis. O módulo de geração de modelo pode incluir vários submódulos (não mostrados) para cada bloco do método 100.[0093] Client device 1010 may include a configuration module 1011 that can interact with a template generation module 1021 on server 1020. Generally speaking, the configuration module may provide certain configuration parameters to the generation module of model. The model generation module uses these configuration parameters to perform model generation functionality as discussed in this document. In particular, the model generation module can execute method 100 based on configuration parameters. As noted above, the iterative model growth process may involve modifying parent models to obtain child models, selecting candidate layers to include in child models based at least on the weights learned in an initialization process of the candidate layers and output of a final model selected from the children's models. The model generation module can include multiple submodules (not shown) for each method block 100.

[0094] O módulo de geração de modelo 1021 pode enviar um modelo final para o servidor 1030. O módulo de execução de modelo 1031 pode executar o modelo final em resposta às entradas recebidas. Por exemplo, o módulo de gravação 1041 no dispositivo cliente 1040 pode gravar dados, como imagens ou voz para processamento pelo modelo final, e um aplicativo local 1042 pode carregar os dados gravados para o servidor 1030 para processamento. O módulo de execução do modelo pode processar os dados carregados usando o modelo final e fornecer saídas do modelo para o aplicativo local para processamento posterior. Exemplo de Interface Gráfica[0094] Model generation module 1021 may send a final model to server 1030. Model execution module 1031 may execute the final model in response to incoming inputs. For example, the recording module 1041 in the client device 1040 can record data such as images or voice for processing by the final model, and a local application 1042 can upload the recorded data to the server 1030 for processing. The model execution module can process the data loaded using the final model and provide output from the model to the local application for further processing. Example of Graphical Interface

[0095] Conforme observado acima, o módulo de configuração[0095] As noted above, the configuration module

1011 no dispositivo cliente 1010 pode fornecer parâmetros de configuração inicial para o módulo de geração de modelo 1021. O módulo de geração de modelo 1021 pode executar o método 100 de acordo com os parâmetros de configuração fornecidos pelo módulo de configuração. A Figura 11 ilustra um exemplo de interface gráfica do usuário de configuração ("GUI") 1100 que pode ser apresentada no dispositivo cliente 1010 para um usuário definir esses parâmetros de configuração.1011 on client device 1010 may provide initial configuration parameters to template generation module 1021. Template generation module 1021 may perform method 100 in accordance with configuration parameters provided by the configuration module. Figure 11 illustrates an example configuration graphical user interface ("GUI") 1100 that can be presented on the client device 1010 for a user to set these configuration parameters.

[0096] O elemento do modelo pai 1101 permite que o usuário especifique que tipo de modelo ou modelos pai inicial deve ser usado para iniciar o processo de crescimento do modelo. Na Figura 11, o usuário é mostrado tendo selecionado um modelo pai padrão. Por exemplo, o módulo de geração de modelo 1021 pode fornecer uma estrutura de rede neural padrão para uso como um modelo pai inicial genérico. Outras opções podem incluir um modelo gerado aleatoriamente, onde o módulo de geração de módulo seleciona uma estrutura de modelo aleatório para uso como o pai inicial. Outra opção é o usuário navegar até um modelo existente que é conhecido por fornecer um desempenho relativamente bom para uma tarefa específica. Neste caso, o módulo de configuração 1011 pode carregar o modelo designado para o módulo de geração de modelo para uso como o modelo pai inicial.[0096] Parent model element 1101 allows the user to specify what type of initial parent model or models should be used to start the model growth process. In Figure 11, the user is shown having selected a default parent model. For example, the 1021 model generation module can provide a standard neural network structure for use as a generic initial parent model. Other options might include a randomly generated model, where the module generation module selects a random model structure to use as the initial parent. Another option is for the user to navigate to an existing model that is known to provide relatively good performance for a specific task. In this case, the configuration module 1011 can load the model assigned to the model generation module for use as the initial parent model.

[0097] O elemento de operações 1102 permite ao usuário especificar quais tipos de operações são considerados pelo módulo de geração de modelo 1021. Por exemplo, o módulo de geração de modelo pode fornecer várias opções para grupos de operações enumeradas que podem ser selecionadas para camadas candidatas. Uma primeira opção, grupo 1, pode definir duas operações, uma única operação de convolução (por exemplo, 5x5) e uma única operação de agrupamento (por exemplo, agrupamento máximo). Uma segunda opção, grupo 2, pode definir um total de quatro operações possíveis - duas operações de convolução, por exemplo, 5x5 e 7x7, e duas operações de agrupamento, agrupamento médio e agrupamento máximo. Uma terceira opção, grupo 3, pode definir um total de sete operações possíveis - convoluções 1x1, 3x3, 5x5 e 7x7, agrupamento médio e máximo e uma operação de identidade. As operações enumeradas também podem ter parâmetros de operação predeterminados ou selecionáveis, por exemplo, tamanhos de janela ajustáveis, passadas, etc.[0097] Operations element 1102 allows the user to specify which types of operations are considered by model generation module 1021. For example, model generation module can provide various options for groups of enumerated operations that can be selected for layers candidates. A first option, group 1, can define two operations, a single convolution operation (eg 5x5) and a single grouping operation (eg maximum grouping). A second option, group 2, can define a total of four possible operations - two convolution operations, for example, 5x5 and 7x7, and two grouping operations, average grouping and maximum grouping. A third option, group 3, can define a total of seven possible operations - 1x1, 3x3, 5x5, and 7x7 convolutions, average and maximum grouping, and an identity operation. Enumerated operations can also have predetermined or selectable operation parameters, e.g. adjustable window sizes, passes, etc.

[0098] O elemento de entrada de orçamento 1103 permite que o usuário especifique um orçamento computacional para geração de modelo. Por exemplo, o usuário pode especificar um orçamento de[0098] Budget input element 1103 allows the user to specify a computational budget for model generation. For example, the user can specify a budget of

10.000 GPU-dias, e o módulo de geração de modelo 1021 pode usar este orçamento como uma condição de parada no bloco de decisão 116 do método 100. Implementações alternativas podem usar outras métricas, como uma série de processamento operações, uma série de máquinas virtuais, uma quantidade de tempo, etc., como orçamentos computacionais.10,000 GPU-days, and model generation module 1021 can use this budget as a stopping condition in decision block 116 of method 100. Alternative implementations can use other metrics such as a series of processing operations, a series of virtual machines , an amount of time, etc., such as computational budgets.

[0099] O elemento 1104 do critério 1 permite que o usuário especifique um primeiro critério para avaliar modelos, e o elemento 1105 do critério 2 permite que o usuário especifique um segundo critério. Na Figura 11, esses critérios são mostrados como custo e perda computacional, respectivamente, conforme discutido acima. No entanto, os usuários podem desejar especificar outros critérios, como o tamanho geral da estrutura do modelo, número de conexões, o número total de parâmetros passíveis de filtração do modelo, etc. Para aplicativos com recursos limitados, como executar o modelo em um dispositivo móvel ou um dispositivo de Internet das Coisas (IoT), o tamanho do modelo em bytes pode ser um critério importante, pois esses dispositivos tendem a ter capacidades de armazenamento e/ou memória limitadas. Além disso, o tempo computacional para executar o modelo também pode ser um critério útil nesses cenários, pois esses dispositivos podem ter recursos de processamento restritos que podem fazer com que o usuário perceba a latência quando um determinado modelo demora muito para ser executado.[0099] Criterion 1 element 1104 allows the user to specify a first criterion for evaluating models, and criterion 2 element 1105 allows the user to specify a second criterion. In Figure 11, these criteria are shown as cost and computational loss, respectively, as discussed above. However, users may wish to specify other criteria, such as the overall size of the model structure, number of connections, the total number of filterable parameters of the model, etc. For applications with limited resources, such as running the model on a mobile device or an Internet of Things (IoT) device, model size in bytes can be an important criterion, as these devices tend to have storage and/or memory capabilities. limited. In addition, computational time to run the model can also be a useful criterion in these scenarios, as these devices may have constrained processing resources that can cause the user to notice latency when a given model takes too long to run.

[00100] Observe que os parâmetros de configuração mostrados na Figura 11 são meramente exemplificativos e várias outras implementações são contempladas. Por exemplo, em alguns casos, os usuários podem especificar parâmetros de conectividade. Como exemplo, um usuário pode especificar que as camadas candidatas recebam entradas de um número especificado de camadas anteriores ou um número variável (por exemplo, aleatório) de camadas anteriores. Como outro exemplo, o usuário pode especificar se as conexões de salto são permitidas, por exemplo, onde uma camada pode não fornecer entradas para uma camada imediatamente subsequente, mas em vez disso pode ignorar a camada imediatamente subsequente e se conectar a outra camada subsequente. Os usuários também podem especificar uma arquitetura DenseNet em que cada camada é conectada a todas as camadas anteriores no modelo.[00100] Note that the configuration parameters shown in Figure 11 are merely examples and several other implementations are contemplated. For example, in some cases, users can specify connectivity parameters. As an example, a user can specify that candidate layers receive input from a specified number of previous layers or a variable number (eg random) from previous layers. As another example, the user can specify whether hop connections are allowed, for example, where a layer may not provide input to an immediately subsequent layer, but instead can ignore the immediately subsequent layer and connect to another subsequent layer. Users can also specify a DenseNet architecture where each layer is connected to all previous layers in the model.

[00101] Além disso, observe que algumas implementações podem fornecer uma ou mais GUIs para mostrar o progresso do método 100. Por exemplo, algumas implementações podem gerar GUIs que mostram o gráfico de dispersão 600 mudando em diferentes iterações de crescimento do modelo de uma maneira semelhante àquela mostrada nas Figuras 6-8. Outras implementações podem mostrar representações gráficas de modelos individuais e/ou camadas candidatas à medida que são gerados. Exemplo de Aplicações[00101] Also note that some implementations may provide one or more GUIs to show the progress of method 100. For example, some implementations may generate GUIs that show the scatterplot 600 changing in different iterations of model growth in a similar to that shown in Figures 6-8. Other implementations may show graphical representations of individual models and/or candidate layers as they are generated. Application example

[00102] As técnicas aqui discutidas podem ser usadas para várias aplicações, sem limitação. No entanto, o que se segue apresenta alguns exemplos específicos a título ilustrativo.[00102] The techniques discussed here can be used for various applications without limitation. However, the following presents some specific examples by way of illustration.

[00103] Como um primeiro exemplo, suponha que uma entidade deseja comercializar um aplicativo que marca todos os amigos do usuário em sua coleção de fotos. Esta entidade pode ter um modelo preexistente que eles usam atualmente para esta finalidade, e esse modelo pode ser executado pelo módulo de execução de modelo 1031 no servidor 1030 em fotos fornecidas pelo aplicativo local 1042 no dispositivo cliente 1040. No entanto, a entidade pode sentir que o modelo pré-existente não é suficientemente preciso e pode fornecer uma experiência de usuário insatisfatória em algumas circunstâncias.[00103] As a first example, suppose an entity wants to market an application that tags all of the user's friends in its photo collection. This entity may have a pre-existing model that they currently use for this purpose, and that model may be executed by model execution module 1031 on server 1030 on photos provided by local application 1042 on client device 1040. However, the entity may feel that the pre-existing model is not accurate enough and can provide a poor user experience in some circumstances.

[00104] Em primeiro lugar, a entidade pode carregar o modelo preexistente para o módulo de geração de modelo 1021 no servidor 1020 e pode configurar vários parâmetros iniciais conforme discutido acima. Em seguida, o módulo de geração de modelo pode aumentar iterativamente o modelo preexistente até que uma condição de parada seja alcançada e exportar o modelo final para o servidor 1030. O servidor 1030 pode então substituir o modelo inicial pelo modelo final recebido e continuar marcando fotos do usuário conforme discutido.[00104] First, the entity can load the preexisting model to model generation module 1021 on server 1020 and can configure various initial parameters as discussed above. Then the model generation module can iteratively augment the preexisting model until a stop condition is reached and export the final model to server 1030. Server 1030 can then replace the initial model with the final model received and continue tagging photos user as discussed.

[00105] Como alternativa, o dispositivo cliente pode fornecer dados de áudio gravados para transcrição de voz pelo modelo final. Como outra alternativa, o dispositivo do cliente pode fornecer texto em um primeiro idioma para tradução para um segundo idioma pelo modelo final. Como exemplos adicionais, o modelo final pode realizar segmentação de cena em vídeo, detecção de objeto em imagens ou vídeo (por exemplo, identificando faces, veículos, etc.), realizando análise gramatical em texto, etc.[00105] Alternatively, the client device can provide recorded audio data for voice transcription by the final model. As another alternative, the customer device can provide text in a first language for translation into a second language by the final model. As additional examples, the final model can perform scene segmentation on video, object detection on images or video (e.g. identifying faces, vehicles, etc.), performing parsing on text, etc.

[00106] Ainda como outro exemplo, o modelo final pode ser usado para mapear documentos e consultas em um vetor semântico. Neste caso, o servidor 1030 pode fornecer funcionalidade de mecanismo de pesquisa que usa distâncias de vetor entre documentos indexados e consultas recebidas para classificar os resultados da pesquisa para um usuário do dispositivo cliente 1040. Mais geralmente, o modelo final pode executar qualquer tarefa adequada para a qual os dados de treinamento são disponíveis, incluindo, mas não se limitando a tarefas de classificação, tradução automática e reconhecimento de padrões.[00106] As yet another example, the final model can be used to map documents and queries into a semantic vector. In this case, the server 1030 can provide search engine functionality that uses vector distances between indexed documents and incoming queries to sort search results for a user of the client device 1040. More generally, the final model can perform any task suitable for which training data is available, including but not limited to classification, machine translation, and pattern recognition tasks.

[00107] Além disso, algumas implementações podem permitir que as entidades forneçam conjuntos de dados para treinamento, validação e/ou teste. Por exemplo, uma primeira entidade pode enviar um conjunto de dados do dispositivo cliente 1010 para uma segunda entidade que controla o servidor 1020. A segunda entidade pode gerar um modelo final usando o conjunto de dados fornecido pela primeira entidade. Em alguns casos, a segunda entidade pode fornecer o modelo final para a primeira entidade, por exemplo, para execução no servidor 1030 pela primeira entidade. Em outros casos, a segunda entidade não fornece o modelo em si, mas permite que a primeira entidade chame o modelo. Nesse caso, a segunda entidade pode controlar o servidor 1020 e o servidor 1030 e/ou implementar a geração e a execução do modelo no mesmo dispositivo.[00107] Additionally, some implementations may allow entities to provide datasets for training, validation, and/or testing. For example, a first entity may send a dataset from client device 1010 to a second entity that controls server 1020. The second entity may generate a final model using the dataset provided by the first entity. In some cases, the second entity may provide the final model for the first entity, for example, for execution on server 1030 by the first entity. In other cases, the second entity does not provide the model itself, but allows the first entity to call the model. In that case, the second entity may control server 1020 and server 1030 and/or implement model generation and execution on the same device.

[00108] Além disso, observe que o termo "modelo final" é usado apenas aqui para implicar que um determinado modelo filho é designado para uso prático em um aplicativo. Em algumas implementações, uma saída de modelo final e usada por uma entidade também pode ser usada como um modelo pai inicial para iterações subsequentes do processo de crescimento do modelo aqui descrito. Em alguns casos, uma entidade obterá novos dados ao longo do uso de um determinado modelo final, e os novos dados podem ser usados como dados de treinamento/validação/teste para as iterações subsequentes do processo. Isso pode resultar na saída de um novo modelo final, que pode então ser usado por algum tempo à medida que novos dados são obtidos, e o processo pode ser repetido continuamente ao longo do tempo de vida de um determinado aplicativo prático direcionado por uma determinada entidade.[00108] Also, note that the term "final model" is only used here to imply that a particular child model is designed for practical use in an application. In some implementations, a final model output used by an entity can also be used as an initial parent model for subsequent iterations of the model growth process described here. In some cases, an entity will obtain new data over the course of using a given final model, and the new data can be used as training/validation/testing data for subsequent iterations of the process. This can result in the output of a new final model, which can then be used for some time as new data is obtained, and the process can be repeated continuously over the lifetime of a given practical application driven by a given entity. .

[00109] Além disso, observe que as implementações divulgadas se concentram em exemplos em que as camadas candidatas são adicionadas às estruturas de modelo. No entanto, em alguns casos, outros tipos de componentes candidatos podem ser usados em vez de camadas. Geralmente, os componentes candidatos podem ser implementados usando qualquer tipo de funcionalidade matemática e/ou lógica, desde simples aritmética ou operadores booleanos até módulos mais complexos e treináveis. Implementações do Dispositivo[00109] Also, note that the disclosed implementations focus on examples where candidate layers are added to model structures. However, in some cases, other types of candidate components may be used instead of layers. Generally, candidate components can be implemented using any type of math and/or logic functionality, from simple arithmetic or Boolean operators to more complex, trainable modules. Device Implementations

[00110] Conforme observado acima em relação à Figura 10, o sistema 1000 inclui vários dispositivos, incluindo um dispositivo cliente 1010, um servidor 1020, um servidor 1030 e um dispositivo cliente[00110] As noted above with respect to Figure 10, the system 1000 includes a number of devices, including a client device 1010, a server 1020, a server 1030, and a client device.

1040. Como também observado, nem todas as implementações de dispositivo podem ser ilustradas e outras implementações de dispositivo deve ser evidente para o especialista na técnica a partir da descrição acima e abaixo.1040. As also noted, not all device implementations can be illustrated and other device implementations should be apparent to the person skilled in the art from the description above and below.

[00111] O termo "dispositivo", "computador", "dispositivo de computação", "dispositivo cliente" e/ou "dispositivo servidor", conforme usado neste documento, pode significar qualquer tipo de dispositivo que tenha alguma quantidade de capacidade de processamento de hardware e/ou armazenamento/memória de hardware capacidade. A capacidade de processamento pode ser fornecida por um ou mais processadores de hardware (por exemplo, unidades/núcleos de processamento de hardware) que podem executar dados na forma de instruções legíveis por computador para fornecer funcionalidade. Instruções e/ou dados legíveis por computador podem ser armazenados em armazenamento, como armazenamento/memória e/ou armazenamento de dados. O termo "sistema", conforme usado neste documento, pode se referir a um único dispositivo, vários dispositivos, etc.[00111] The term "device", "computer", "computing device", "client device", and/or "server device", as used in this document, may mean any type of device that has some amount of processing power hardware and/or hardware storage/memory capacity. Processing power may be provided by one or more hardware processors (eg, hardware processing units/cores) that can execute data in the form of computer-readable instructions to provide functionality. Computer readable instructions and/or data may be stored in storage, such as storage/memory and/or data storage. The term "system" as used in this document may refer to a single device, multiple devices, etc.

[00112] Os recursos de armazenamento podem ser internos ou externos aos respectivos dispositivos aos quais estão associados. Os recursos de armazenamento podem incluir qualquer um ou mais de memória volátil ou não volátil, discos rígidos, dispositivos de armazenamento flash e/ou dispositivos de armazenamento óptico (por exemplo, CDs, DVDs, etc.), entre outros. Conforme usado neste documento, o termo "mídia legível por computador" pode incluir sinais. Em contraste, o termo "mídia de armazenamento legível por computador" exclui sinais. A mídia de armazenamento legível por computador inclui "dispositivos de armazenamento legíveis por computador". Exemplos de dispositivos de armazenamento legíveis por computador incluem mídia de armazenamento volátil, como RAM, e mídia de armazenamento não volátil, como discos rígidos, discos ópticos e memória flash, entre outros.[00112] Storage resources can be internal or external to the respective devices they are associated with. Storage resources may include any one or more of volatile or non-volatile memory, hard drives, flash storage devices, and/or optical storage devices (eg, CDs, DVDs, etc.), among others. As used in this document, the term "computer readable media" may include signs. In contrast, the term "computer readable storage media" excludes signals. Computer readable storage media includes "computer readable storage devices". Examples of computer-readable storage devices include volatile storage media such as RAM and non-volatile storage media such as hard drives, optical discs, and flash memory, among others.

[00113] Em alguns casos, os dispositivos são configurados com um processador de hardware de uso geral e recursos de armazenamento. Em outros casos, um dispositivo pode incluir um projeto do tipo sistema em um chip (SOC). Em implementações de design de SOC, a funcionalidade fornecida pelo dispositivo pode ser integrada em um único SOC ou em vários SOCs acoplados. Um ou mais processadores associados podem ser configurados para coordenar com recursos compartilhados, como memória, armazenamento, etc., e/ou um ou mais recursos dedicados, como blocos de hardware configurados para executar certa funcionalidade específica. Assim, o termo "processador", "processador de hardware" ou "unidade de processamento de hardware", tal como aqui utilizado, também pode se referir a unidades de processamento central (CPUs), unidades de processamento gráfico (GPUs), controladores, microcontroladores, núcleos de processador ou outros tipos de dispositivos de processamento adequados para implementação tanto em arquiteturas de computação convencionais quanto em projetos de SOC.[00113] In some cases, devices are configured with a general purpose hardware processor and storage capabilities. In other cases, a device may include a system-on-a-chip (SOC) design. In SOC design implementations, the functionality provided by the device can be integrated into a single SOC or into multiple coupled SOCs. One or more associated processors can be configured to coordinate with shared resources, such as memory, storage, etc., and/or one or more dedicated resources, such as hardware blocks configured to perform certain specific functionality. Thus, the term "processor", "hardware processor" or "hardware processing unit", as used herein, may also refer to central processing units (CPUs), graphics processing units (GPUs), controllers, microcontrollers, processor cores, or other types of processing devices suitable for implementation in both conventional computing architectures and SOC designs.

[00114] Alternativamente, ou além disso, a funcionalidade aqui descrita pode ser realizada, pelo menos em parte, por um ou mais componentes lógicos de hardware. Por exemplo, e sem limitação, tipos ilustrativos de componentes lógicos de hardware que podem ser usados incluem Arranjo de Portas Programáveis em Campo (FPGAs), Circuitos integrados específicos por aplicação (ASICs), Produtos padrão específicos por aplicação (ASSPs), Sistemas System-on-a-chip (SOCs), dispositivos lógicos programáveis complexos (CPLDs), etc.[00114] Alternatively, or in addition, the functionality described herein may be performed, at least in part, by one or more logical hardware components. For example, and without limitation, illustrative types of hardware logic components that may be used include Field Programmable Gate Arrays (FPGAs), Application-Specific Integrated Circuits (ASICs), Application-Specific Standard Products (ASSPs), System- on-a-chip (SOCs), complex programmable logic devices (CPLDs), etc.

[00115] Em algumas configurações, qualquer um dos módulos/código discutidos neste documento pode ser implementado em software, hardware e/ou firmware. Em qualquer caso, os módulos/código podem ser fornecidos durante a fabricação do dispositivo ou por um intermediário que prepara o dispositivo para venda ao usuário final. Em outros casos, o usuário final pode instalar esses módulos/código mais tarde, por exemplo, baixando o código executável e instalando o código executável no dispositivo correspondente.[00115] In some configurations, any of the modules/code discussed in this document may be implemented in software, hardware and/or firmware. In any case, the modules/code may be provided during device manufacturing or by an intermediary who prepares the device for sale to the end user. In other cases, the end user can install these modules/code later, for example by downloading the executable code and installing the executable code on the corresponding device.

[00116] Observe também que os dispositivos geralmente podem ter funcionalidade de entrada e/ou saída. Por exemplo, os dispositivos de computação podem ter vários mecanismos de entrada, como teclados, mouses, touchpads, reconhecimento de voz, reconhecimento de gestos (por exemplo, usando câmeras de profundidade, como sistemas de câmera estereoscópica ou de tempo de voo, sistemas de câmera infravermelha, sistemas de câmera RGB ou usando acelerômetros/giroscópios, reconhecimento facial, etc.). Os dispositivos também podem ter vários mecanismos de saída, como impressoras, monitores, etc.[00116] Also note that devices can often have input and/or output functionality. For example, computing devices may have multiple input mechanisms such as keyboards, mice, touchpads, speech recognition, gesture recognition (e.g. using depth cameras such as stereoscopic or time-of-flight camera systems, infrared camera, RGB camera systems or using accelerometers/gyroscopes, face recognition, etc.). Devices can also have multiple output mechanisms such as printers, monitors, etc.

[00117] Observe também que os dispositivos descritos neste documento podem funcionar de maneira autônoma ou cooperativa para implementar as técnicas descritas. Por exemplo, os métodos e a funcionalidade aqui descritos podem ser realizados em um único dispositivo de computação e/ou distribuídos em vários dispositivos de computação que se comunicam pela(s) rede(s) 1050. Sem limitação, a(s) rede(s) 1050 podem incluir uma ou mais redes locais (LANs), redes de longa distância (WANs), a Internet e semelhantes. Exemplos Adicionais[00117] Also note that the devices described in this document may work autonomously or cooperatively to implement the techniques described. For example, the methods and functionality described herein may be performed on a single computing device and/or distributed across multiple computing devices that communicate over the 1050 network(s). Without limitation, the network(s) s) 1050 may include one or more local area networks (LANs), wide area networks (WANs), the Internet and the like. Additional Examples

[00118] Vários exemplos de dispositivos são descritos acima. Exemplos adicionais são descritos abaixo. Um exemplo inclui um método realizado em um dispositivo de computação, e o método pode incluir realizar duas ou mais iterações de um processo de crescimento do modelo iterativo. O processo de crescimento do modelo iterativo pode incluir selecionar um modelo pai particular de um grupo de modelo pai de um ou mais modelos principais, gerar uma pluralidade de camadas candidatas, e inicializar a pluralidade de camadas candidatas enquanto reutiliza parâmetros aprendidos do modelo pai particular. O processo de crescimento do modelo iterativo pode ainda incluir selecionar camadas candidatas particulares para incluir em modelos filho para treinamento, e respectivos modelos filho pode incluir o modelo pai particular e uma ou mais das camadas candidatas particulares. O processo de crescimento do modelo iterativo pode ainda incluir treinamento a pluralidade de modelos filho para obter modelos filho treinados, avaliar os modelos filho treinados usando um ou mais critérios, e, com base pelo menos na avaliação, designando um modelo filho treinado individual como um novo modelo pai e adicionar o novo modelo pai ao grupo de modelo pai. O método pode ainda incluir selecionar pelo menos um modelo filho treinado como um modelo final após duas ou mais iterações, e emitir o modelo final.[00118] Several example devices are described above. Additional examples are described below. An example includes a method performed on a computing device, and the method may include performing two or more iterations of an iterative model growth process. The iterative model growth process may include selecting a particular parent model from a parent model group of one or more main models, generating a plurality of candidate layers, and initializing the plurality of candidate layers while reusing parameters learned from the particular parent model. The iterative model growth process may also include selecting particular candidate layers to include in child models for training, and respective child models may include the particular parent model and one or more of the particular candidate layers. The iterative model growth process may further include training the plurality of child models to obtain trained child models, evaluating the trained child models using one or more criteria, and, based at least on the evaluation, designating an individual trained child model as a new parent model and add the new parent model to the parent model group. The method may also include selecting at least one trained child model as a final model after two or more iterations, and emitting the final model.

[00119] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde o método ainda inclui determinar custos computacionais de treinamento ou testar os modelos filho e usando os custos computacionais como um primeiro critério quando avaliar os modelos filho treinados.[00119] Another example may include any of the examples above and/or below where the method still includes determining computational costs of training or testing the child models and using computational costs as a first criterion when evaluating the trained child models.

[00120] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde o método ainda inclui determinar perdas associadas com os modelos filho treinados e usando as perdas como um segundo critério quando avaliar os modelos filho treinados.[00120] Another example may include any of the examples above and/or below where the method still includes determining losses associated with the trained child models and using the losses as a second criterion when evaluating the trained child models.

[00121] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde o método ainda inclui representar os modelos filho em um gráfico tendo um primeiro eixo refletindo os custos computacionais e um segundo eixo refletindo as perdas, e selecionar o novo modelo pai com base pelo menos em uma localização correspondente do novo modelo pai no gráfico.[00121] Another example may include any of the examples above and/or below where the method still includes representing the child models on a graph having a first axis reflecting computational costs and a second axis reflecting losses, and selecting the new parent model based on at least one matching location of the new parent model in the chart.

[00122] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde o método ainda inclui determinar pelo menos um dentre um casco convexo inferior ou uma eficiência de Pareto no gráfico, e selecionar o novo modelo pai com base pelo menos na proximidade do novo modelo pai ao casco convexo inferior ou à eficiência de Pareto.[00122] Another example may include any of the examples above and/or below where the method still includes determining at least one of a lower convex hull or Pareto efficiency on the graph, and selecting the new parent model based on at least proximity from the new parent model to the lower convex hull or Pareto efficiency.

[00123] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde a seleção inclui identificar um subconjunto de modelos filho treinados que estão dentro de uma proximidade predeterminada do casco convexo inferior ou da eficiência de Pareto, determinar as respectivas probabilidades para o subconjunto do modelos filho treinados, e selecionar o novo modelo pai com base pelo menos nas respectivas probabilidades.[00123] Another example may include any of the examples above and/or below where the selection includes identifying a subset of trained child models that are within a predetermined proximity of the lower convex hull or Pareto efficiency, determining the respective probabilities for the subset of the trained child models, and select the new parent model based on at least the respective probabilities.

[00124] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde gerar uma camada candidata individual inclui selecionar uma camada de destino do modelo pai particular para receber saídas da camada candidata individual, selecionar uma ou mais camadas de entrada do modelo pai particular para fornecer entradas à camada candidata individual, e selecionar uma operação particular a ser realizada pela camada candidata individual nas entradas.[00124] Another example may include any of the above and/or below examples where generating an individual candidate layer includes selecting a target layer of the particular parent model to receive outputs from the individual candidate layer, selecting one or more input layers from the parent model to provide inputs to the individual candidate layer, and to select a particular operation to be performed by the individual candidate layer on the inputs.

[00125] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde selecionar a operação particular inclui definir um grupo de operações e aleatoriamente selecionar a operação particular do grupo de operações.[00125] Another example may include any of the above and/or below examples where selecting the particular operation includes defining a group of operations and randomly selecting the particular operation from the group of operations.

[00126] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde o método ainda inclui selecionar a camada de destino e pelo menos uma camada de entrada aleatoriamente do modelo pai particular[00126] Another example may include any of the examples above and/or below where the method still includes selecting the target layer and at least one input layer randomly from the particular parent model

[00127] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde o modelo final é uma rede neural.[00127] Another example may include any of the examples above and/or below where the final model is a neural network.

[00128] Outro exemplo inclui um sistema que inclui uma unidade de processamento de hardware e um recurso de armazenamento armazenando instruções legíveis por computador que, quando executadas pela unidade de processamento de hardware, fazem com que a unidade de processamento de hardware realize um processo de crescimento de modelo iterativo que envolve modificar modelos principais para obter modelos filho. O processo de crescimento do modelo iterativo pode incluir selecionar camadas candidatas para incluir nos modelos filho com base pelo menos em pesos aprendidos em um processo de inicialização das camadas candidatas. As instruções legíveis por computador podem ainda fazem com que a unidade de processamento de hardware ainda emita um modelo final selecionado de modelos filho.[00128] Another example includes a system that includes a hardware processing unit and a storage facility storing computer-readable instructions that, when executed by the hardware processing unit, cause the hardware processing unit to perform a process of iterative model growth that involves modifying parent models to get child models. The iterative model growth process may include selecting candidate layers to include in child models based on at least weights learned in an initialization process of the candidate layers. Computer readable instructions can still cause the hardware processing unit to still output a final model selected from child models.

[00129] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde as instruções legíveis por computador, quando executadas pela unidade de processamento de hardware, fazem com que a unidade de processamento de hardware gerem diferentes camadas candidatas que compartilham conectividade aos modelos principais e realizam diferentes operações, e inicializam as diferentes camadas candidatas juntas para obter diferentes pesos para as diferentes camadas candidatas.[00129] Another example may include any of the examples above and/or below where computer-readable instructions, when executed by the hardware processing unit, cause the hardware processing unit to generate different candidate layers that share connectivity to the models. and perform different operations, and initialize the different candidate layers together to obtain different weights for the different candidate layers.

[00130] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde as instruções legíveis por computador, quando executadas pela unidade de processamento de hardware, fazem com que a unidade de processamento de hardware selecione as camadas candidatas individuais para inclusão nos modelos filho, com base pelo menos nos diferentes pesos de diferentes camadas candidatas.[00130] Another example may include any of the examples above and/or below where computer-readable instructions, when executed by the hardware processing unit, cause the hardware processing unit to select individual candidate layers for inclusion in models child, based at least on the different weights of different candidate layers.

[00131] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde as instruções legíveis por computador, quando executadas pela unidade de processamento de hardware, fazem com que a unidade de processamento de hardware realize uma técnica de seleção de recurso em diferentes pesos das diferentes camadas candidatas para selecionar as camadas candidatas individuais para inclusão nos modelos filho.[00131] Another example may include any of the above and/or below examples where computer readable instructions, when executed by the hardware processing unit, cause the hardware processing unit to perform a feature selection technique on different weights of the different candidate layers to select individual candidate layers for inclusion in child models.

[00132] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde a técnica de seleção de recurso inclui menor encolhimento absoluto e operador de seleção (LASSO).[00132] Another example may include any of the above and/or below examples where the feature selection technique includes least absolute shrinkage and selection operator (LASSO).

[00133] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde as diferentes operações incluem operações de convolução e operações de agrupamento.[00133] Another example may include any of the examples above and/or below where the different operations include convolution operations and grouping operations.

[00134] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde as instruções legíveis por computador, quando executadas pela unidade de processamento de hardware,[00134] Another example may include any of the examples above and/or below where computer readable instructions, when executed by the hardware processing unit,

fazem com que a unidade de processamento de hardware treine o modelo final usando dados de treinamento para pelo menos uma classificação, tradução por máquina, ou tarefa de reconhecimento padrão, e fornecer o modelo final para execução, o modelo final sendo adaptado para realizar pelo menos uma classificação, tradução por máquina, ou tarefa de reconhecimento padrão.cause the hardware processing unit to train the final model using training data for at least one classification, machine translation, or pattern recognition task, and provide the final model for execution, the final model being adapted to perform at least a classification, machine translation, or pattern recognition task.

[00135] Outro exemplo inclui um meio de armazenamento legível por computador armazenando instruções que, quando executadas por um dispositivo de processamento, fazem com que o dispositivo de processamento realize ações que incluem realizar duas ou mais iterações de um processo de crescimento do modelo iterativo. O processo de crescimento do modelo iterativo pode incluir: selecionar um modelo pai particular de um grupo de modelo pai de uma ou mais modelos principais, inicializar uma pluralidade de camadas candidatas, selecionar uma pluralidade de modelos filho para treinamento, respectivos modelos filho herdando uma estrutura do modelo pai particular e incluindo pelo menos uma dentre as camadas candidatas, treinando a pluralidade de modelos filho para obter modelos filho treinados, e designando um modelo filho treinado individual como um novo modelo pai com base pelo menos em parte de um ou mais critérios e adicionar o novo modelo pai ao grupo de modelo pai. As ações podem ainda incluir selecionar pelo menos um modelo filho treinado como um modelo final após duas ou mais iterações, e emitindo o modelo final.[00135] Another example includes a computer-readable storage medium storing instructions that, when executed by a processing device, cause the processing device to perform actions that include performing two or more iterations of an iterative model growth process. The iterative model growth process may include: selecting a particular parent model from a parent model group of one or more parent models, initializing a plurality of candidate layers, selecting a plurality of child models for training, respective child models inheriting a structure of the particular parent model and including at least one of the candidate layers, training the plurality of child models to obtain trained child models, and designating an individual trained child model as a new parent model based on at least part of one or more criteria, and add the new parent model to the parent model group. Actions may also include selecting at least one trained child model as a final model after two or more iterations, and emitting the final model.

[00136] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde as ações ainda incluem simultaneamente inicializar uma pluralidade de camadas candidatas para obter parâmetros inicializados e selecionar camadas candidatas individuais para incluir em modelos filho individuais com base pelo menos nos parâmetros inicializados.[00136] Another example may include any of the examples above and/or below where the actions still include simultaneously initializing a plurality of candidate layers to get initialized parameters and selecting individual candidate layers to include in individual child models based on at least the initialized parameters .

[00137] Outro exemplo pode incluir qualquer um dos exemplos acima e/ou abaixo onde as ações ainda incluem aleatoriamente selecionar operações de um grupo de operações enumeradas para incluir na pluralidade de camadas candidatas. Conclusão[00137] Another example may include any of the examples above and/or below where the actions further include randomly selecting operations from a group of enumerated operations to include in the plurality of candidate layers. Conclusion

[00138] Embora o assunto tenha sido descrito em linguagem específica para recursos estruturais e/ou atos metodológicos, deve ser entendido que o assunto definido nas reivindicações anexas não está necessariamente limitado aos recursos ou atos específicos descritos acima. Em vez disso, os recursos e atos específicos descritos acima são divulgados como formas de exemplo de implementação das reivindicações e outros recursos e atos que seriam reconhecidos por um versado na técnica se destinam a estar dentro do escopo das reivindicações.[00138] Although the subject has been described in language specific to structural features and/or methodological acts, it should be understood that the subject defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific remedies and acts described above are disclosed as exemplary forms of implementation of the claims and other remedies and acts that would be recognized by one skilled in the art are intended to be within the scope of the claims.

Claims (15)

REIVINDICAÇÕES 1. Método realizado em um dispositivo de computação, caracterizado pelo fato de que compreende: realizar duas ou mais iterações de um processo de crescimento do modelo iterativo, o processo de crescimento do modelo iterativo compreendendo: selecionar um modelo pai particular de um grupo de modelo pai de um ou mais modelos principais; gerar uma pluralidade de camadas candidatas e inicializar a pluralidade de camadas candidatas enquanto reutiliza os parâmetros aprendidos do modelo pai particular; selecionar camadas candidatas particulares para incluir em modelos filho para treinamento, os respectivos modelos filho incluindo o modelo pai particular e uma ou mais das camadas candidatas particulares; treinar a pluralidade de modelos filho para obter modelos filho treinados; avaliar os modelos filho treinados usando um ou mais critérios; e com base pelo menos na avaliação, designando um modelo filho treinado individual como um novo modelo pai e adicionar o novo modelo pai ao grupo de modelo pai; e após as duas ou mais iterações, selecionar pelo menos um modelo filho treinado como um modelo final e emitir o modelo final.1. Method performed on a computing device, characterized in that it comprises: performing two or more iterations of an iterative model growth process, the iterative model growth process comprising: selecting a particular parent model from a model group parent of one or more parent models; generating a plurality of candidate layers and initializing the plurality of candidate layers while reusing parameters learned from the particular parent model; select particular candidate layers to include in child models for training, the respective child models including the particular parent model and one or more of the particular candidate layers; train the plurality of child models to get trained child models; evaluate trained child models using one or more criteria; and based at least on evaluation, designating an individual trained child model as a new parent model and adding the new parent model to the parent model group; and after the two or more iterations, select at least one trained child model as a final model and output the final model. 2. Método, de acordo com a reivindicação 1, ainda caracterizado pelo fato de que compreende: determinar custos computacionais para treinamento ou testar os modelos filho; e usar os custos computacionais como um primeiro critério ao avaliar os modelos filho treinados.2. Method, according to claim 1, further characterized by the fact that it comprises: determining computational costs for training or testing the child models; and using computational costs as a first criterion when evaluating trained child models. 3. Método, de acordo com a reivindicação 2, ainda caracterizado pelo fato de que compreende: determinar perdas associadas com os modelos filho treinados; e usar as perdas como um segundo critério ao avaliar os modelos filho treinados.3. Method, according to claim 2, further characterized by the fact that it comprises: determining losses associated with the trained child models; and using losses as a second criterion when evaluating trained child models. 4. Método, de acordo com a reivindicação 3, ainda caracterizado pelo fato de que compreende: representar os modelos filho em um gráfico tendo um primeiro eixo refletindo os custos computacionais e um segundo eixo refletindo as perdas; e selecionar o novo modelo pai com base pelo menos em uma localização correspondente do novo modelo pai no gráfico.4. Method, according to claim 3, further characterized by the fact that it comprises: representing the child models in a graph having a first axis reflecting computational costs and a second axis reflecting losses; and select the new parent model based on at least a matching location of the new parent model in the chart. 5. Método, de acordo com a reivindicação 4, ainda caracterizado pelo fato de que compreende: determinar pelo menos um dentre um casco convexo inferior ou uma eficiência de Pareto no gráfico; e selecionar o novo modelo pai com base pelo menos na proximidade do novo modelo pai ao casco convexo inferior ou à eficiência de Pareto.5. Method, according to claim 4, further characterized by the fact that it comprises: determining at least one of a lower convex hull or a Pareto efficiency in the graph; and selecting the new parent model based at least on the proximity of the new parent model to the lower convex hull or Pareto efficiency. 6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que a seleção compreende: identificar um subconjunto dos modelos filho treinados que estão dentro de uma proximidade predeterminada do casco convexo inferior ou da eficiência de Pareto; determinar as respectivas probabilidades para o subconjunto dos modelos filho treinados; e selecionar o novo modelo pai com base pelo menos nas respectivas probabilidades.6. Method according to claim 5, characterized in that the selection comprises: identifying a subset of the trained child models that are within a predetermined proximity of the lower convex hull or Pareto efficiency; determine the respective probabilities for the subset of the trained child models; and select the new parent model based at least on the respective probabilities. 7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que gerar uma camada candidata individual compreende: selecionar uma camada de destino do modelo pai particular para receber saídas da camada candidata individual; selecionar uma ou mais camadas de entrada do modelo pai particular para fornecer entradas à camada candidata individual; e selecionar uma operação particular a ser realizada pela camada candidata individual nas entradas.7. Method according to claim 1, characterized in that generating an individual candidate layer comprises: selecting a target layer of the particular parent model to receive outputs from the individual candidate layer; selecting one or more input layers from the particular parent model to provide inputs to the individual candidate layer; and selecting a particular operation to be performed by the individual candidate layer on the inputs. 8. Método, de acordo com a reivindicação 7, a seleção da operação particular caracterizada pelo fato de que compreende: definir um grupo de operações; e aleatoriamente selecionar a operação particular do grupo de operações.8. Method, according to claim 7, the selection of the particular operation characterized by the fact that it comprises: defining a group of operations; and randomly select the particular operation from the group of operations. 9. Método, de acordo com a reivindicação 7, ainda caracterizado pelo fato de que compreende: selecionar a camada de destino e pelo menos uma camada de entrada aleatoriamente do modelo pai particular.9. Method according to claim 7, further characterized by the fact that it comprises: selecting the target layer and at least one input layer randomly from the particular parent model. 10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o modelo final sendo uma rede neural.10. Method, according to claim 1, characterized by the fact that the final model being a neural network. 11. Sistema, caracterizado pelo fato de que compreende: uma unidade de processamento de hardware; e um recurso de armazenamento armazenando instruções legíveis por computador que, quando executadas pela unidade de processamento de hardware, fazem com que a unidade de processamento de hardware: realize um processo de crescimento do modelo iterativo que envolve modificar modelos principais para obter modelos filho, o processo de crescimento do modelo iterativo compreendendo selecionar camadas candidatas para incluir nos modelos filho com base pelo menos nos pesos aprendidos em um processo de inicialização das camadas candidatas; e emitir um modelo final, o modelo final sendo selecionado dos modelos filho.11. System, characterized in that it comprises: a hardware processing unit; and a storage facility storing computer-readable instructions that, when executed by the hardware processing unit, cause the hardware processing unit to: perform an iterative model growth process that involves modifying parent models to obtain child models, the iterative model growth process comprising selecting candidate layers to include in child models based on at least the weights learned in an initialization process of the candidate layers; and emit a final model, the final model being selected from the child models. 12. Sistema, de acordo com a reivindicação 11, caracterizado pelo fato de que as instruções legíveis por computador, quando executadas pela unidade de processamento de hardware, fazem com que a unidade de processamento de hardware: gere diferentes camadas candidatas que compartilham conectividade aos modelos principais e realizam diferentes operações; e inicialize as diferentes camadas candidatas juntas para obter diferentes pesos para as diferentes camadas candidatas.12. System according to claim 11, characterized in that computer-readable instructions, when executed by the hardware processing unit, cause the hardware processing unit to: generate different candidate layers that share connectivity to the models principals and carry out different operations; and initialize the different candidate layers together to get different weights for the different candidate layers. 13. Sistema, de acordo com a reivindicação 12, caracterizado pelo fato de que as instruções legíveis por computador, quando executadas pela unidade de processamento de hardware, fazem com que a unidade de processamento de hardware: com base pelo menos nos diferentes pesos das diferentes camadas candidatas, selecione camadas candidatas individuais para inclusão nos modelos filho.13. System according to claim 12, characterized in that computer-readable instructions, when executed by the hardware processing unit, cause the hardware processing unit: based at least on the different weights of the different candidate layers, select individual candidate layers for inclusion in child models. 14. Sistema, de acordo com a reivindicação 11, caracterizado pelo fato de que as instruções legíveis por computador, quando executadas pela unidade de processamento de hardware, fazem com que a unidade de processamento de hardware: treine o modelo final usando dados de treinamento para pelo menos uma classificação, tradução por máquina, ou tarefa de reconhecimento padrão; e forneça o modelo final para execução, o modelo final sendo adaptado para realizar pelo menos uma classificação, tradução por máquina, ou tarefa de reconhecimento padrão.14. System according to claim 11, characterized in that computer-readable instructions, when executed by the hardware processing unit, cause the hardware processing unit to: train the final model using training data to at least one classification, machine translation, or pattern recognition task; and provide the final model for execution, the final model being adapted to perform at least one classification, machine translation, or pattern recognition task. 15. Sistema, de acordo com a reivindicação 11, caracterizado pelo fato de que as instruções legíveis por computador,15. System according to claim 11, characterized in that the computer-readable instructions, quando executadas pela unidade de processamento de hardware, fazem com que a unidade de processamento de hardware: execute o modelo final para realizar pelo menos uma classificação, tradução por máquina, ou tarefa de reconhecimento padrão.when performed by the hardware processing unit, they cause the hardware processing unit to: execute the final model to perform at least one classification, machine translation, or pattern recognition task.
BR112021009042-8A 2018-12-07 2019-11-01 automated generation of machine learning models BR112021009042A2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/213,470 2018-12-07
US16/213,470 US11556778B2 (en) 2018-12-07 2018-12-07 Automated generation of machine learning models
PCT/US2019/059353 WO2020117411A1 (en) 2018-12-07 2019-11-01 Automated generation of machine learning models

Publications (1)

Publication Number Publication Date
BR112021009042A2 true BR112021009042A2 (en) 2021-08-10

Family

ID=68655703

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021009042-8A BR112021009042A2 (en) 2018-12-07 2019-11-01 automated generation of machine learning models

Country Status (14)

Country Link
US (2) US11556778B2 (en)
EP (1) EP3891662A1 (en)
JP (1) JP7478145B2 (en)
KR (1) KR20210093931A (en)
CN (1) CN113168559A (en)
AU (1) AU2019394750A1 (en)
BR (1) BR112021009042A2 (en)
CA (1) CA3119027A1 (en)
IL (1) IL283463A (en)
MX (1) MX2021006555A (en)
PH (1) PH12021551336A1 (en)
SG (1) SG11202105300TA (en)
WO (1) WO2020117411A1 (en)
ZA (1) ZA202103317B (en)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11797876B1 (en) * 2019-06-26 2023-10-24 Amazon Technologies, Inc Unified optimization for convolutional neural network model inference on integrated graphics processing units
CA3155096A1 (en) * 2019-09-25 2021-04-01 Deepmind Technologies Limited Augmenting attention-based neural networks to selectively attend to past inputs
CN110826344B (en) * 2019-10-24 2022-03-01 北京小米智能科技有限公司 Neural network model compression method, corpus translation method and apparatus thereof
US20210125065A1 (en) * 2019-10-25 2021-04-29 Affectiva, Inc. Deep learning in situ retraining
US11620582B2 (en) 2020-07-29 2023-04-04 International Business Machines Corporation Automated machine learning pipeline generation
US11688111B2 (en) * 2020-07-29 2023-06-27 International Business Machines Corporation Visualization of a model selection process in an automated model selection system
US20220058449A1 (en) * 2020-08-20 2022-02-24 Capital One Services, Llc Systems and methods for classifying data using hierarchical classification model
US20220121922A1 (en) * 2020-10-20 2022-04-21 Deci.Ai Ltd. System and method for automated optimazation of a neural network model
CN114936631B (en) * 2021-04-26 2023-06-09 华为技术有限公司 Model processing method and device
US20230115321A1 (en) * 2021-10-12 2023-04-13 Oracle International Corporation Fine-tuning multi-head network from a single transformer layer of pre-trained language model
KR102508886B1 (en) * 2022-03-07 2023-03-13 주식회사 에너자이(ENERZAi) A method of neural network weight lightening, and a device of neural network weight lightening
CN115293276A (en) * 2022-08-15 2022-11-04 国网智能电网研究院有限公司 Power grid equipment defect identification method and device, electronic equipment and storage medium
WO2024085342A1 (en) * 2022-10-21 2024-04-25 Samsung Electronics Co., Ltd. A device and a method for building a tree-form artificial intelligence model
CN116502679B (en) * 2023-05-15 2023-09-05 之江实验室 Model construction method and device, storage medium and electronic equipment

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7502763B2 (en) * 2005-07-29 2009-03-10 The Florida International University Board Of Trustees Artificial neural network design and evaluation tool
WO2017154284A1 (en) * 2016-03-09 2017-09-14 ソニー株式会社 Information processing method and information processing device
US20180018555A1 (en) * 2016-07-15 2018-01-18 Alexander Sheung Lai Wong System and method for building artificial neural network architectures
JP6603182B2 (en) * 2016-07-22 2019-11-06 ファナック株式会社 Machine learning model construction device, numerical control device, machine learning model construction method, machine learning model construction program, and recording medium
DE202017106532U1 (en) * 2016-10-28 2018-02-05 Google Llc Search for a neural architecture
US11461656B2 (en) * 2017-03-15 2022-10-04 Rakuten Group Inc. Genetic programming for partial layers of a deep learning model
US20180336453A1 (en) * 2017-05-19 2018-11-22 Salesforce.Com, Inc. Domain specific language for generation of recurrent neural network architectures
US10387777B2 (en) * 2017-06-28 2019-08-20 Liquid Biosciences, Inc. Iterative feature selection methods
EP3740893A1 (en) * 2018-01-17 2020-11-25 Signify Holding B.V. System and method for object recognition using neural networks
US10282864B1 (en) * 2018-09-17 2019-05-07 StradVision, Inc. Method and device for encoding image and testing method and testing device using the same
US20200097847A1 (en) * 2018-09-21 2020-03-26 Gloudera, lnc. Hyperparameter tuning using visual analytics in a data science platform

Also Published As

Publication number Publication date
KR20210093931A (en) 2021-07-28
US20200184327A1 (en) 2020-06-11
SG11202105300TA (en) 2021-06-29
CN113168559A (en) 2021-07-23
AU2019394750A1 (en) 2021-06-03
US20230115700A1 (en) 2023-04-13
WO2020117411A1 (en) 2020-06-11
US11556778B2 (en) 2023-01-17
MX2021006555A (en) 2021-07-07
JP2022510782A (en) 2022-01-28
EP3891662A1 (en) 2021-10-13
ZA202103317B (en) 2022-08-31
IL283463A (en) 2021-07-29
PH12021551336A1 (en) 2021-12-06
JP7478145B2 (en) 2024-05-02
CA3119027A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
BR112021009042A2 (en) automated generation of machine learning models
US11836610B2 (en) Concurrent training of functional subnetworks of a neural network
US11741361B2 (en) Machine learning-based network model building method and apparatus
Van Der Maaten Accelerating t-SNE using tree-based algorithms
US20190258925A1 (en) Performing attribute-aware based tasks via an attention-controlled neural network
US9792530B1 (en) Generating and using a knowledge base for image classification
Andonie et al. Weighted random search for CNN hyperparameter optimization
BR112021008296A2 (en) TECHNIQUES FOR RECOMMENDING ITEMS TO USERS
US20220027738A1 (en) Distributed synchronous training architecture using stale weights
WO2020209860A1 (en) Leveraging lagging gradients in machine-learning model training
CN109993208A (en) A kind of clustering processing method having noise image
WO2018196676A1 (en) Non-convex optimization by gradient-accelerated simulated annealing
CN116188941A (en) Manifold regularized width learning method and system based on relaxation annotation
US20220121924A1 (en) Configuring a neural network using smoothing splines
KR102039244B1 (en) Data clustering method using firefly algorithm and the system thereof
WO2019180314A1 (en) Artificial neural networks
US20220043681A1 (en) Memory usage prediction for machine learning and deep learning models
US11816185B1 (en) Multi-view image analysis using neural networks
CN113408693A (en) Method and apparatus for recognizing image
WO2023113693A2 (en) Optimal knowledge distillation scheme
US20230229570A1 (en) Graph machine learning for case similarity
CN108460453B (en) Data processing method, device and system for CTC training
JP2023548201A (en) Task learning systems and methods and related devices
RU2718409C1 (en) System for recovery of rock sample three-dimensional structure
US20240144051A1 (en) Hardware-aware generation of machine learning models