BR112017023028B1 - Especificidade de filtro como critério de treinamento para redes neurais - Google Patents

Especificidade de filtro como critério de treinamento para redes neurais Download PDF

Info

Publication number
BR112017023028B1
BR112017023028B1 BR112017023028-3A BR112017023028A BR112017023028B1 BR 112017023028 B1 BR112017023028 B1 BR 112017023028B1 BR 112017023028 A BR112017023028 A BR 112017023028A BR 112017023028 B1 BR112017023028 B1 BR 112017023028B1
Authority
BR
Brazil
Prior art keywords
filters
filter
training
specificity
neural network
Prior art date
Application number
BR112017023028-3A
Other languages
English (en)
Other versions
BR112017023028A2 (pt
Inventor
Regan Blythe Towal
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112017023028A2 publication Critical patent/BR112017023028A2/pt
Publication of BR112017023028B1 publication Critical patent/BR112017023028B1/pt

Links

Images

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/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Image Analysis (AREA)
  • Networks Using Active Elements (AREA)
  • Filters That Use Time-Delay Elements (AREA)
  • Measurement Of Resistance Or Impedance (AREA)

Abstract

ESPECIFICIDADE DE FILTRO COMO CRITÉRIO DE TREINAMENTO PARA REDES NEURAIS. Um método de treinar um modelo de rede neural inclui a determinação de uma especificidade de múltiplos filtros depois de um número predeterminado de interações de treinamento. O método também inclui o treinamento de cada um dos filtros com base na especificidade.

Description

Referência Cruzada a Pedido Relacionado
[001] Esse pedido reivindica os benefícios sob 35 U.S.C. § 119(e) do pedido de patente provisório U.S. No. 62/154.089 intitulado "FILTER SPECIFICITY AS TRAINING CRITERION FOR NEURAL NETWORKS," depositado em 28 de abril de 2015, a descrição do qual é expressamente incorporada aqui por referência em sua totalidade.
Fundamentos Campo
[002] Determinados aspectos da presente descrição geralmente se refere à engenharia do sistema neural e, mais particularmente, a sistemas e métodos para utilização de especificidade de filtro como um critério de treinamento para redes neurais.
Fundamentais
[003] Uma rede neural artificial, que pode compreender um grupo interconectado de neurônios artificiais (por exemplo, modelos de neurônio), é um dispositivo de computação ou representa um método a ser realizado por um dispositivo de computação.
[004] As redes neurais de convolução são de um tipo de rede neural artificial de alimentação de avanço. As redes neurais de convolução podem incluir coleções de neurônios que possuem, cada uma, um campo receptivo e que coletivamente criam um espaço de entrada. As redes neurais de convolução (CNNs) possuem inúmeras aplicações. Em particular, CNNs têm sido utilizadas de forma ampla na área de reconhecimento de classificação de padrão.
[005] Arquiteturas de aprendizado profundas, tal como redes de crenças profundas e redes de convolução profunda são arquiteturas de redes neurais em camadas onde a saída de uma primeira camada de neurônios se torna uma entrada para uma segunda camada de neurônios, a saída de uma segunda camada de neurônios se torna a entrada para uma terceira camada de neurônios, e assim por diante. As redes neurais profundas podem ser treinadas para reconhecer uma hierarquia de características e, dessa forma, têm sido cada vez mais utilizadas em aplicativos de reconhecimento de objeto. Como as redes neurais de convolução, a computação nessas arquiteturas de aprendizagem profunda pode ser distribuída através de uma população de nós de processamento, que podem ser configurados em uma ou mais correntes de computação. Essas arquiteturas de multicamadas podem ser treinadas uma camada de cada vez e podem ser sintonizadas de forma fina utilizando propagação de retorno.
[006] Outros modelos também são disponíveis para reconhecimento de objeto. Por exemplo, as máquinas de vetor de suporte (SVMs) são ferramentas de aprendizagem que podem ser aplicadas para classificação. As máquinas de vetor de suporte incluem um hiperplano de separação (por exemplo, limite de decisão) que categoriza os dados. O hiperplano é definido pelo aprendizado supervisionado. Um hiperplano desejado aumenta a margem de dados de treinamento. Em outras palavras, o hiperplano deve ter a maior distância mínima para os exemplos de treinamento.
[007] Apesar de essas soluções alcançarem resultados excelentes em vários marcos de classificação, sua complexidade computacional pode ser proibitivamente alta. Adicionalmente, o treinamento de modelos pode ser um desafio.
Sumário
[008] Em um aspecto da presente descrição, um método para treinamento de um modelo de rede neural é descrito. O método inclui a determinação de uma especificidade de múltiplos filtros depois de um número predeterminado de iterações de treinamento. O método também inclui o treinamento de cada um dos filtros com base na especificidade.
[009] Outro aspecto da presente descrição é direcionado para um aparelho incluindo meios para determinar uma especificidade de múltiplos filtros depois de um número predeterminado das iterações de treinamento. O aparelho também inclui meios para o treinamento de cada um dos filtros com base na especificidade.
[0010] Em outro aspecto da presente descrição, um meio legível por computador não transitório possui um código de programa não transitório gravado no mesmo. O código de programa é executado por um processador e inclui código de programa para determinar uma especificidade de múltiplos filtros depois de um número predeterminado de iterações de treinamento. O código de programa também inclui um código de programa para treinar cada um dos filtros com base na especificidade.
[0011] Outro aspecto da presente descrição é direcionado para um aparelho para treinamento de um modelo de rede neural possuindo uma memória e um ou mais processadores acoplados à memória. Os processadores são configurados para determinar uma especificidade de múltiplos filtros depois de um número predeterminado de iterações de treinamento. Os processadores são configurados também para treinar cada um dos filtros com base na especificidade.
[0012] Características e vantagens adicionais da descrição serão descritas abaixo. Deve ser apreciado pelos versados na técnica que essa descrição pode ser prontamente utilizada como uma base para a modificação ou projeto de outras estruturas para realizar as mesmas finalidades da presente descrição. Deve ser percebido também pelos versados na técnica que tais construções equivalentes não se distanciem dos ensinamentos da descrição como apresentado nas reivindicações em anexo. As características novas, que são consideradas como sendo características da descrição, tanto em termos de organização quanto em termos de método de operação, juntamente com objetivos e vantagens adicionais, serão mais bem compreendidas a partir da descrição a seguir quando considerada com relação às figuras em anexo. Deve-se compreender expressamente, no entanto, que cada uma das figuras é fornecida para a finalidade de ilustração e descrição apenas e não deve servir como uma definição dos limites da presente descrição.
Breve Descrição dos Desenhos
[0013] As características, natureza e vantagens da presente descrição serão mais aparentes a partir da descrição detalhada apresentada abaixo quando levada em consideração em conjunto com os desenhos nos quais caracteres de referência similares identificam caracteres similares correspondentes por todas as vistas.
[0014] A figura 1 ilustra uma implementação ilustrativa do projeto de uma rede neural utilizando um sistema em um chip (SOC), incluindo um processador de finalidade geral de acordo com determinados aspectos da presente descrição.
[0015] A figura 2 ilustra uma implementação ilustrativa de um sistema de acordo com os aspectos da presente descrição.
[0016] A figura 3A é um diagrama ilustrando uma rede neural de acordo com os aspectos da presente descrição.
[0017] A figura 3B é um diagrama em bloco ilustrando uma rede de convolução profunda ilustrativa (DCN) de acordo com os aspectos da presente descrição;
[0018] A figura 4 é um diagrama em bloco ilustrando uma arquitetura de software ilustrativa que pode modularizar as funções de inteligência artificial (AI) de acordo com os aspectos da presente descrição;
[0019] A figura 5 é um diagrama em bloco ilustrando a operação de tempo de funcionamento de um aplicativo AI em um smartphone de acordo com os aspectos da presente descrição;
[0020] A figura 6 é um fluxograma ilustrando um processo convencional para a propagação de retorno;
[0021] As figuras de 7 a 10 ilustram exemplos de filtros depois de várias iterações de treinamento de acordo com os aspectos da presente descrição;
[0022] As figuras 11 e 12 são fluxogramas ilustrando os métodos para treinamento de filtros de acordo com os aspectos da presente descrição.
Descrição Detalhada
[0023] A descrição detalhada apresentada abaixo, com relação aos desenhos em anexo, deve servir como uma descrição de várias configurações e não pretende representar as únicas configurações nas quais os conceitos descritos aqui podem ser praticados. A descrição detalhada inclui detalhes específicos para fins de fornecimento de uma compreensão profunda dos vários conceitos. No entanto, será aparente aos versados na técnica que esses conceitos podem ser praticados sem esses detalhes específicos. Em alguns casos, estruturas e componentes bem conhecidos são ilustrados na forma de diagrama em bloco a fim de evitar obscurecer tais conceitos.
[0024] Com base nos ensinamentos, os versados na técnica devem apreciar que o escopo da descrição deve cobrir qualquer aspecto da descrição, seja implementado independentemente ou combinado com qualquer outro aspecto da descrição. Por exemplo, um aparelho pode ser implementado ou um método pode ser praticado utilizando qualquer número de aspectos apresentados. Adicionalmente, o escopo da descrição deve cobrir tal aparelho ou método praticado utilizando outra estrutura, funcionalidade, ou estrutura e funcionalidade em adição a ou outro além dos vários aspectos da descrição apresentados. Deve-se compreender que qualquer aspecto da descrição descrito pode ser consubstanciado por um ou mais elementos de uma reivindicação.
[0025] O termo "ilustrativo" é utilizado aqui para significar "servindo como um exemplo, caso ou ilustração". Qualquer aspecto descrito aqui como "ilustrativo" não deve ser necessariamente considerado como preferido ou vantajoso sobre outros aspectos.
[0026] Apesar de os aspectos particulares serem descritos aqui, muitas variações e permutas desses aspectos se encontram dentro do escopo da descrição. Apesar de alguns benefícios e vantagens dos aspectos preferidos serem mencionados, o escopo da descrição não deve ser limitado aos benefícios, usos ou objetivos particulares. Em vez disso, os aspectos da descrição devem ser amplamente aplicáveis a diferentes tecnologias, configurações de sistema, redes e protocolos, alguns dos quais são ilustrados por meio de exemplo nas figuras e na descrição a seguir dos aspectos preferidos. A descrição detalhada e os desenhos são meramente ilustrativos da descrição em vez de limitadores do escopo da descrição sendo definida pelas reivindicações em anexo e suas equivalências.
[0027] Para redes neurais e/ou outros sistemas, os filtros podem ser utilizados para determinar o conteúdo de uma entrada. Por exemplo, um filtro pode ser aplicado a uma entrada de áudio para determinar se uma voz específica está presente. Em outro exemplo, um filtro pode ser aplicado a uma imagem para determinar se um objeto específico, tal como um carro, está presente na imagem. Em alguns casos, a qualidade dos filtros pode ser reduzida quando o conjunto de treinamento é pequeno, o modelo é muito grande, e/ou o conjunto de treinamento inclui erros. Os filtros com uma qualidade reduzida podem ser referidos como filtros fracos. Os filtros fracos ou filtros parcialmente aprendidos podem não fornecer base de discriminação que é especificada para determinar o conteúdo de uma entrada.
[0028] Dessa forma, os aspectos da presente descrição são direcionados ao aperfeiçoamento da qualidade de filtros. Especificamente, em uma configuração, quando do treinamento de um modelo de rede neural, uma especificidade de um ou mais filtros é determinada depois de um número predeterminado de iterações de treinamento. Adicionalmente, nessa configuração, a rede determina se continua a treinar cada filtro com base na especificidade.
[0029] A figura 1 ilustra uma implementação ilustrativa do treinamento de rede mencionado acima utilizando um sistema em um chip (SOC) 100, que pode incluir um processador de finalidade geral (CPU) ou processadores de finalidade geral de múltiplos núcleos (CPUs) 102 de acordo com determinados aspectos da presente descrição. Variáveis (por exemplo, sinais neurais e pesos sinápticos), parâmetros de sistema associados com um dispositivo de computação (por exemplo, rede neural com pesos), retardos, informação de compartimento de frequência, e informação de tarefa podem ser armazenados em um bloco de memória associado com uma unidade de processamento neural (NPU) 108 ou em um bloco de memória dedicado 118. Instruções executadas no processador de finalidade geral 102 podem ser carregadas a partir de uma memória de programa associada com a CPU 102 ou podem ser carregadas a partir de um bloco de memória dedicado 118.
[0030] O SOC 100 também pode incluir blocos de processamento adicionais personalizados para funções específicas, tal como a unidade de processamento gráfico (GPU) 104, um processador de sinal digital (DSP) 106, um bloco de conectividade 110, que pode incluir conectividade de evolução de longo termo de quarta geração (LTE 4G), conectividade Wi-Fi não licenciada, conectividade USB, conectividade Bluetooth, e similares, e um processador de multimídia 112 que pode, por exemplo, detectar e reconhecer gestos. SOC 100 também pode incluir um processador de sensor 114, processadores de sinal de imagem (ISPs) e/ou navegação 120, que podem incluir um sistema de posicionamento global. O SOC pode ser baseado em um conjunto de instruções ARM.
[0031] SOC 100 também pode incluir blocos de processamento adicionais personalizados para funções específicas, tal como uma GPU 104, um DSP 106, um bloco de conectividade 110, que podem incluir conectividade de evolução de longo termo de quarta geração (LTE 4G), conectividade Wi-Fi não licenciada, conectividade USB, conectividade Bluetooth, e similares, e um processador de multimídia 112 que pode, por exemplo, detectar e reconhecer gestos. Em uma implementação, NPU é implementada na CPU, DSP e/ou GPU. SOC 100 também pode incluir um processador de sensor 114, processadores de sinal de imagem (ISPs) e/ou navegação 120, que pode incluir um sistema de posicionamento global.
[0032] SOC 100 pode ser baseado em um conjunto de instruções ARM. Em um aspecto da presente descrição, as instruções carregadas no processador de finalidade geral 102 podem compreender um código para determinação de uma especificidade de múltiplos filtros depois de um número predeterminado de iterações de treinamento. As instruções carregadas no processador de finalidade geral 102 também podem compreender um código para treinamento de cada filtro dentre os múltiplos filtros com base pelo menos em parte na especificidade.
[0033] A figura 2 ilustra uma implementação ilustrativa de um sistema 200 de acordo com determinados aspectos da presente descrição. Como ilustrado na figura 2, o sistema 200 pode ter múltiplas unidades de processamento local 202 que podem realizar várias operações dos métodos descritos aqui. Cada unidade de processamento local 202 pode compreender uma memória de estado local 204 e uma memória de parâmetro local 206 que pode armazenar parâmetros de uma rede neural. Adicionalmente, a unidade de processamento local 202 pode ter uma memória de programa de modelo local (neurônio) (LMP) 208 para armazenamento de um programa de modelo local, uma memória de programa de aprendizado local (LLP) 210 para ao armazenamento de um programa de aprendizado local, e uma memória de conexão local 212. Adicionalmente, como ilustrado na figura 2, cada unidade de processamento local 202 pode interfacear com uma unidade de processador de configuração 214 para fornecer configurações para as memórias locais da unidade de processamento local, e com uma unidade de processamento de conexão de direcionamento 216 que fornece o direcionamento entre as unidades de processamento local 202.
[0034] As arquiteturas de aprendizagem profunda podem realizar uma tarefa de reconhecimento de objeto aprendendo a representar as entradas em níveis sucessivamente mais altos de abstração em cada camada, construindo, assim, uma representação de característica útil dos dados de entrada. Dessa forma, a aprendizagem profunda soluciona um estrangulamento importante do aprendizado de máquina tradicional. Antes do advento da aprendizagem profunda, uma abordagem de aprendizagem de máquina para um problema de reconhecimento de objeto pode ter se baseado muito nas características da engenharia humana, talvez em combinação com um classificador raso. Um classificador raso pode ser um classificador linear de duas classes, por exemplo, no qual uma soma ponderada dos componentes de vetor de característica pode ser comparada com um limite para prever a qual classe a entrada pertence. As características de engenharia humana podem ser gabaritos ou núcleos personalizados para um domínio de problema específico por engenheiros com expertise de domínio. As arquiteturas de aprendizagem profunda, em contraste, podem aprender a representar as características que são similares ao que um engenheiro humano deve projetar, mas através de treinamento. Adicionalmente, uma rede profunda pode aprender a representar e reconhecer novos tipos de características que um humano pode não ter considerado.
[0035] Uma arquitetura de aprendizagem profunda pode aprender uma hierarquia de características. Se apresentada com dados visuais, por exemplo, a primeira camada pode aprender a reconhecer características relativamente simples, tal como bordas, na sequência de entrada. Em outro exemplo, se apresentada com dados audíveis, a primeira camada pode aprender a reconhecer a energia espectral em frequências específicas. A segunda camada, considerando a saída da primeira camada como entrada, pode aprender a reconhecer as combinações de características, tal como formatos simples para dados visuais ou combinações de sons para dados audíveis. Por exemplo, camadas superiores podem aprender a representar formatos complexos nos dados visuais ou palavras nos dados audíveis. Camadas ainda mais altas podem aprender a reconhecer os objetos visuais comuns ou frases faladas.
[0036] As arquiteturas de aprendizagem profunda podem ter um desempenho especialmente bom quando aplicadas a problemas que possuem uma estrutura hierárquica natural. Por exemplo, a classificação de veículos motorizados pode se beneficiar de primeiro a se aprender a reconhecer rodas, para brisas, e outras características. Essas características podem ser combinadas em camadas superiores de formas diferentes para reconhecer carros, caminhões e aeronaves.
[0037] Asa redes neurais podem ser projetadas com uma variedade de padrões de conectividade. Em redes de avanço de alimentação, a informação é passada das camadas inferiores para superiores, com cada neurônio em uma camada determinada se comunicando com os neurônios nas camadas superiores. Uma representação hierárquica pode ser construída em camadas sucessivas de uma rede de alimentação de avanço, como descrito acima. As redes neurais também podem ter conexões recorrentes ou de retorno (também chamadas de conexões de cima para baixo). Em uma conexão recorrente, a saída de um neurônio em uma camada determinada pode ser comunicada para outro neurônio na mesma camada. Uma arquitetura recorrente pode ser útil no reconhecimento de padrões que abrangem mais de um dos pedaços de dados de entrada que são distribuídos para a rede neural em uma sequência. Uma conexão de um neurônio em uma camada determinada com um neurônio em uma camada inferior é chamada de conexão de retorno (ou, de cima para baixo). Uma rede com muitas conexões de retorno pode ser útil quando o reconhecimento de um conceito de nível alto pode auxiliar na discriminação das características de nível baixo em particular de um registro.
[0038] Com referência à figura 3A, as conexões entre as camadas de uma rede neural podem ser totalmente conectadas 302 ou localmente conectadas 304. Em uma rede totalmente conectada 302, um neurônio em uma primeira camada pode comunicar sua saída para cada neurônio em uma segunda camada, de modo que cada neurônio na segunda camada receba a entrada de cada neurônio na primeira camada. Alternativamente, em uma rede localmente conectada 304, um neurônio em uma primeira camada pode ser conectado a um número limitado de neurônios na segunda camada. Uma rede de convolução 306 pode ser conectada localmente e é adicionalmente configurada de modo que a intensidade da conexão associada às entradas para cada neurônio na segunda camada seja compartilhada (por exemplo, 308). De forma mais geral, uma camada conectada localmente de uma rede pode ser configurada de modo que cada neurônio em uma camada tenha o mesmo padrão de conectividade ou um padrão similar, mas com intensidade de conexões que podem ter valores diferentes (por exemplo 310, 312, 314 e 316). O padrão de conectividade localmente conectado pode dar lugar a campos respectivos espacialmente distintos em uma camada superior, visto que os neurônios da camada superior em uma determinada região podem receber registros que são sintonizados através de treinamento a propriedades de uma parte restrita da entrada total para a rede.
[0039] Redes neurais conectadas localmente podem ser bem adequadas aos problemas nos quais a localização espacial das entradas é significativa. Por exemplo, uma rede 300 projetada para reconhecer as características visuais de uma câmera a bordo de um carro pode desenvolver neurônios de camada alta com diferentes propriedades dependendo de sua associação com a parte inferior X superior da imagem. Os neurônios associados com a parte inferior da imagem podem aprender a reconhecer as marcações de faixa, por exemplo, enquanto os neurônios associados com a parte superior da imagem podem aprender a reconhecer os sinais de trânsito, as placas de trânsito, e similares.
[0040] Uma DCN pode ser treinada com aprendizado supervisionado. Durante o treinamento, uma DCN pode receber uma imagem, tal como uma imagem recortada de uma placa de limite de velocidade 326, e uma "passagem de avanço" pode então ser computada para produzir uma saída 322. A saída 322 pode ser um vetor de valores correspondentes às características tipo "placa" "60" e "100". O projetista da rede pode desejar que a DCN envie uma alta marcação para alguns dos neurônios no vetor de característica de saída, por exemplo, os que correspondem a "placa" e "60" como ilustrado na saída 322 para uma rede 300 que foi treinada. Antes do treinamento, a saída produzida pela DCN estará provavelmente incorreta, e, assim, um erro pode ser calculado entre a saída real e a saída alvo. Os pesos da DCN podem, então, ser ajustados de modo que as marcações de saída da DCN sejam alinhadas de forma mais próxima ao alvo.
[0041] Para se ajustar os pesos, um algoritmo de aprendizado pode computar um vetor de gradiente para os pesos. O gradiente pode indicar uma quantidade de aumento ou redução de erro se o peso fosse ajustado ligeiramente. Na camada superior, o gradiente pode corresponder diretamente ao valor de um peso conectando um neurônio ativado na penúltima camada e um neurônio na camada de saída. Nas camadas inferiores, o gradiente pode depender do valor dos pesos e dos gradientes de erro computados das camadas superiores. Os pesos podem então ser ajustados de modo a reduzir o erro. Essa forma de ajuste de pesos pode ser referida como "propagação de retorno" visto que envolve uma "passagem de retorno" através da rede neural.
[0042] Na prática, o gradiente de erro dos pesos pode ser calculado através de um número pequeno de exemplos, de modo que o gradiente calculado se aproxime do gradiente de erro verdadeiro. Esse método de aproximação pode ser referido como redução estocástica de gradiente. A redução estocástica de gradiente pode ser repetida até que a taxa de erro obtenível de todo o sistema tenha parado de diminuir ou até que a taxa de erro tenha alcançado um nível alvo.
[0043] Depois de aprender, a DCN pode receber novas imagens 326 e uma passagem de avanço através da rede pode resultar em uma saída 322 que pode ser considerada uma inferência ou uma previsão de DCN.
[0044] Redes de crenças profundas (DBNs) são modelos probabilísticos compreendendo múltiplas camadas de nós ocultos. DBNs podem ser utilizas para extrair uma representação hierárquica dos conjuntos de dados de treinamento. Uma DBN pode ser obtida pelo empilhamento de camadas de Máquinas Boltzmann Restritas (RBMs). Uma RBM é um tipo de rede neural artificial que pode aprender uma distribuição de probabilidade através de um conjunto de entradas. Visto que RBMs podem aprender uma distribuição de probabilidade na ausência de informação sobre a classe à qual cada entrada deve ser categorizada, RBMs são frequentemente utilizadas em aprendizado não supervisionado. Utilizando-se um paradigma híbrido não supervisionado e supervisionado, RBMs inferiores de uma DBN podem ser treinadas de uma forma não supervisionada e podem servir como extratores de característica, e a RBM superior pode ser treinada de uma forma supervisionada (em uma distribuição conjunta de entradas das classes de camada anterior e alvo) e pode servir como um classificador.
[0045] Redes de convolução profundas (DCNs) são redes de redes de convolução, configuradas com camadas de agrupamento e normalização adicionais. DCNs têm alcançado o desempenho de estado da técnica em muitas tarefas. DCNs podem ser treinadas utilizando-se o aprendizado supervisionado no qual ambos os alvos de entrada e saída são conhecidos por muitos exemplares e são utilizados para modificar os pesos da rede pelo uso de métodos de redução de gradiente.
[0046] DCNs podem ser redes de alimentação de avanço. Adicionalmente, como descrito acima, as conexões de um neurônio em uma primeira camada de uma DCN com um grupo de neurônios na próxima camada superior são compartilhadas através dos neurônios na primeira camada. As conexões de alimentação de avanço e compartilhadas de DCNs podem ser exploradas para processamento rápido. O peso computacional de uma DCN pode ser muito menor, por exemplo do que o de uma rede neural de tamanho similar que compreende conexões recorrentes ou de retorno.
[0047] O processamento de cada camada de uma rede de convolução pode ser considerado um gabarito ou projeção de base espacialmente invariável. Se a entrada for decomposta em primeiro lugar em múltiplos canais, tal como canais vermelho, verde e azul de uma imagem colorida, então a rede de convolução treinada nessa entrada pode ser considerada tridimensional, com duas dimensões espaciais ao longo dos eixos geométricos da imagem e uma terceira dimensão capturando a informação de cor. As saídas das conexões de convolução podem ser consideradas para formar um mapa de característica na camada subsequente 318 e 320, com cada elemento do mapa de característica (por exemplo, 320) recebendo a entrada de uma faixa de neurônios na camada anterior (por exemplo, 318) e de cada um dos múltiplos canais. Os valores no mapa de característica podem ser adicionalmente processados com uma não linearidade, tal como uma retificação, max (0,x). Os valores de neurônios adjacentes podem ser adicionalmente agrupados, o que corresponde à redução de amostragem, e pode fornecer uma não variação local adicional e redução de dimensão. A normalização, que corresponde ao clareamento, também pode ser aplicada através da inibição lateral entre os neurônios no mapa de características.
[0048] O desempenho das arquiteturas de aprendizagem profunda pode aumentar à medida que mais pontos de dados rotulados se tornam disponíveis ou à medida que a energia de computação aumenta. As redes neurais profundas modernas são rotineiramente treinadas com recursos de computação que são milhares de vezes maiores do que o que era disponível para um pesquisador típico há apenas 15 anos atrás. Novas arquiteturas e paradigmas de treinamento podem amplificar adicionalmente o desempenho do aprendizado profundo. As unidades lineares retificadas podem reduzir um problema de treinamento conhecido como desaparecimento de gradientes. Novas técnicas de treinamento podem reduzir o encaixe excessivo e, dessa forma, permitir que modelos maiores alcancem uma generalização melhor. As técnicas de encapsulamento podem abstrair dados em um determinado campo receptivo e amplificar, adicionalmente, o desempenho como um todo.
[0049] A figura 3B é um diagrama em bloco ilustrando uma rede de convolução profunda ilustrativa 350. A rede de convolução profunda 350 pode incluir múltiplos tipos diferentes de camadas com base na conectividade e compartilhamento de peso. Como ilustrado na figura 3B, a rede de convolução profunda ilustrativa 350 inclui múltiplos blocos de convolução (por exemplo, C1 e C2). Cada um dos blocos de convolução pode ser configurado com uma camada de convolução, uma camada de normalização (LNorm), e uma camada de agrupamento. As camadas de convolução podem incluir um ou mais filtros de convolução, que podem ser aplicados aos dados de entrada para gerar um mapa de característica. Apesar de apenas dois blocos de convolução serem ilustrados, a presente descrição não é tão limitadora, e, em vez disso, qualquer número de blocos de convolução pode ser incluído na rede de convolução profunda 350 de acordo com a preferência de desenho. A camada de normalização pode ser utilizada para normalizar a saída dos filtros de convolução. Por exemplo, a camada de normalização pode fornecer clareamento ou inibição lateral. A camada de agrupamento pode fornecer agregação de amostragem descendente através do espaço para não variação local e redução de dimensão.
[0050] Os bancos de filtro paralelos, por exemplo, de uma rede de convolução profunda podem ser carregados em uma CPU 102 ou GPU 104 de um SOC 100, com base, opcionalmente em um conjunto de instruções ARM, para alcançar o alto desempenho e o baixo consumo de energia. Em modalidades alternativas, os bancos de filtro paralelos podem ser carregados no DSP 106 ou um ISP 116 de um SOC 100. Adicionalmente, a DCN pode acessar outros blocos de processamento que podem estar presentes no SOC, tal como blocos de processamento dedicados aos sensores 114 e navegação 120.
[0051] A rede de convolução profunda 350 também pode incluir uma ou mais camadas totalmente conectadas (por exemplo, FC1 e FC2). A rede de convolução profunda 350 pode incluir adicionalmente uma camada de regressão logística (LR). Entre cada camada de rede de convolução profunda 350 encontram-se pesos (não ilustrados) que devem ser atualizados. A saída de cada camada pode servir como uma entrada de uma camada posterior na rede de convolução profunda 350 para aprender as representações de característica hierárquica a partir de dados de entrada (por exemplo, dados de imagens, áudio, vídeo, sensor e/ou outros dados de entrada) supridos no primeiro bloco de convolução C1.
[0052] A figura 4 é um diagrama em bloco ilustrando uma arquitetura de software ilustrativa 400 que pode modularizar as funções de inteligência artificial (AI). Utilizando-se a arquitetura, os aplicativos 402 podem ser projetados para fazer com que vários blocos de processamento de um SOC 420 (por exemplo, CPU 422, SP 424, GPU 426 e/ou uma NPU 428) realizem computações de suporte durante a operação de tempo de funcionamento do aplicativo 402.
[0053] O aplicativo AI 402 pode ser configurado para chamar as funções definidas em um espaço de usuário 404 que podem, por exemplo, fornecer detecção e reconhecimento de uma cena indicativa de localização na qual o dispositivo opera no momento. O aplicativo AI 402 pode, por exemplo, configurar um microfone e uma câmera diferentemente dependendo de se a cena reconhecida é um escritório, uma sala de conferência, um restaurante ou um ambiente externo tal como um lago. O aplicativo de AI 402 pode solicitar que um código de programa compilado associado com uma biblioteca definida em uma interface de programação de aplicativo SceneDetect (API) 406 forneça uma estimativa da cena atual. Essa solicitação pode, por fim, se basear na saída de uma rede neural profunda configurada para fornecer estimativas de cena com base nos dados de vídeo e posicionamento, por exemplo.
[0054] Um mecanismo de funcionamento de tempo 408, que pode ser código compilado de uma Estrutura de Tempo de Tempo de Funcionamento, pode ser adicionalmente acessível para o aplicativo API 402. O aplicativo API 402 pode fazer com que o mecanismo de tempo de funcionamento, por exemplo, solicite uma estimativa de cena em um intervalo de tempo particular ou acionado por um evento detectado pela interface de usuário do aplicativo. Quando causado para estimar a cena, o mecanismo de tempo de funcionamento pode, por sua vez, enviar um sinal para um sistema operacional 410, tal como Linux Kernel 412, rodando no SOC 420. O sistema operacional 410, por sua vez, pode fazer com que uma computação seja realizada na CPU 422, DSP 424, GPU 426, NPU 428 ou alguma combinação dos mesmos. A CPU 422 pode ser acessada diretamente pelo sistema operacional, e outros blocos de processamento podem ser acessados através de um acionador, tal como um acionador 414-418 para um DSP 424, para uma GPU 426 ou para uma NPU 428. No exemplo ilustrativo, a rede neural profunda pode ser configurada para rodar em uma combinação de blocos de processamento, tal como uma CPU 422 e uma GPU 426, ou pode rodar em uma NPU 428, se presente.
[0055] A figura 5 é um diagrama em bloco ilustrando a operação de tempo de funcionamento 500 de um aplicativo AI em um smartphone 502. O aplicativo AI pode incluir um módulo de pré-processamento 504 que pode ser configurado (utilizando-se, por exemplo, a linguagem de programação JAVA) para converter o formato de uma imagem 506 e então recortar e/ou redimensionar a imagem 508. A imagem pré-processada pode, então, ser comunicada para um aplicativo de classificação 510 que contém um Mecanismo de Extremidade Traseira SceneDetect 512 que pode ser configurado (utilizando-se, por exemplo, a linguagem de programação C) para detectar e classificar as cenas com base em entrada visual. O Mecanismo de Extremidade Traseira SceneDetect 512 pode ser configurado para pré-processar adicionalmente 514 a imagem por escalonamento 516 e recorte 518. Por exemplo, a imagem pode ser escalonada e recortada de modo que a imagem resultante tenha 224 pixels por 224 pixels. Essas dimensões podem mapear as dimensões de entrada de uma rede neural. A rede neural pode ser configurada por um bloco de rede neural profunda 520 para fazer com que os blocos de processamento do SOC 100 processem adicionalmente os pixels de imagem com uma rede neural profunda. Os resultados da rede neural profunda podem então ser limitados 522 e passados através de um bloco de suavização exponencial 524 no aplicativo de classificação 510. Os resultados suavizados podem, então, causar uma mudança nas configurações e/ou na exibição do smartphone 502.
[0056] Em uma configuração, um modelo de aprendizagem de máquina é configurado para determinar uma especificidade de múltiplos filtros depois de um número predeterminado de iterações de treinamento, e treinando cada filtro dentre os múltiplos filtros com base pelo menos em parte na especificidade. O modelo inclui um meio de determinação e/ou meio de treinamento. Em um aspecto, o meio de determinação e/ou o meio de treinamento pode ser o processador de finalidade geral 102, a memória de programa associada com o processador de finalidade geral 102, o bloco de memória 118, as unidades de processamento local 02, e/ou as unidades de processamento de conexão de direcionamento 216 configuradas para realizar as funções mencionadas. Em outra configuração, os meios mencionados acima podem ser qualquer módulo ou qualquer aparelho configurado para realizar as funções mencionadas pelos meios mencionados acima.
[0057] De acordo com determinados aspectos da presente descrição, cada unidade de processamento local 202 pode ser configurado para determinar os parâmetros do modelo com base em uma ou mais características funcionais desejadas do modelo, e desenvolver uma ou mais características funcionais na direção das características funcionais desejadas à medida que os parâmetros determinados são adicionalmente adaptados, sintonizados e atualizados. Especificidade de Filtro como Critério de Treinamento para Redes Neurais
[0058] Em sistemas convencionais, um filtro pode ser especificado para modificar e/ou melhorar uma entrada, tal como uma imagem. Adicionalmente, um filtro pode ser utilizado para determinar se um elemento específico está presente em uma entrada. Por exemplo, o filtro pode determinar se uma linha horizontal está presente em uma parte de 3 x 3 pixels de uma imagem. Dessa forma, um sistema pode determinar se o conteúdo específico está presente em uma entrada pela aplicação de vários tipos de filtros. De acordo, vários filtros podem ser utilizados para classificação da entrada. Aspectos da presente descrição são descritos para uma imagem como uma entrada. Adicionalmente, aspectos da presente descrição não estão limitados a uma imagem e são contemplados para outros tipos de entradas, tal como áudio, vídeo, dados de sensor, e/ou outros dados de entrada.
[0059] Em sistemas convencionais, a convolução pode ser especificada para a filtragem linear de uma imagem. Especificamente, a saída de convolução é a soma ponderada dos pixels de entrada. A matriz de pesos pode ser referida como núcleo de convolução, ou filtro. A convolução pode ser obtida por uma matriz multiplicando uma imagem linearizada e um filtro linearizado.
[0060] Adicionalmente, as redes neurais convencionais utilizam a propagação de retorno para treinamento. A propagação de retorno utiliza uma saída conhecida, para cada valor de entrada, para calcular o gradiente de função de perda (isso é, erro). Isso é, a propagação de retorno é especificada para calcular o gradiente de erro da rede a partir dos pesos modificáveis da rede. Na maior parte dos casos, o gradiente é utilizado para determinar os pesos para filtros que reduzem o erro.
[0061] A figura 6 ilustra um exemplo de um diagrama de fluxo 600 para propagação de retorno. Nesse exemplo, uma saída conhecida (isso é, rótulo) da imagem é um gato. Dessa forma, o rótulo é configurado para gato e o rótulo previsto deve ser o gato. Adicionalmente, uma imagem 602 de um gato é registrada em uma primeira camada de convolução 604. A primeira camada de convolução 604 envia os resultados da convolução para a segunda camada de convolução 606. Adicionalmente, a segunda camada de convolução 606 envia os resultados da convolução para uma terceira camada de convolução 608. Finalmente, um rótulo previsto 610 é enviado da terceira camada de convolução 608. Obviamente, aspectos da presente descrição não estão limitados a três camadas de convolução e mais ou menos camadas de convolução podem ser especificadas como desejado.
[0062] Os rótulos de uma imagem podem ser representados como vetores. Por exemplo, com base no exemplo da figura 6, os rótulos para gato e cachorro podem ser um vetor tal como (1,0), de modo que 1 seja o vetor para gatos e 0 seja o vetor para cachorros. Adicionalmente, como um exemplo, com base no treinamento da rede, a rede pode ter uma confiança de 50% de que a imagem seja de um gato. A confiança pode ser referida como probabilidade prevista. Isso é, a saída do rótulo previsto para gato pode ser de 0,5. Portanto, o erro para esse gato é uma função de uma diferença entre 1 e 0,5 (isso é, (1 - 0,5)). Adicionalmente, a rede pode ter uma confiança de 20%, com base no treinamento, de que a imagem de entrada seja a de um cachorro. Dessa forma, a saída de rótulo prevista para cachorro pode ser de 0,2. Portanto, o erro para cachorro é uma função de uma diferença entre 0 e 0,2 (isso é, (0 - 0,2)).
[0063] A função de erro é utilizada para treinar a rede com base na diferença entre os rótulos e os rótulos previstos. Especificamente, um erro pode ser determinado como segue: Erro = f(rótulos - rótulos previstos) (1)
[0064] A função de erro é baseada em uma saída de confiança da rede com base em uma imagem de entrada. Adicionalmente, com base no erro calculado, tal como 0,5 para gato, os pesos dos filtros são ajustados de acordo com as seguintes equações:
Figure img0001
[0065] As equações 2 e 3 são equações de propagação de retorno convencionais. Nas equações 2 e 3 wij é o peso entre os neurônios i e j. Adicionalmente, como ilustrado na equação 2, uma derivativa parcial de erro é calculada com relação ao peso do filtro (wij). O lado direito da equação 2 é baseado na regra de corrente convencional. Para atualizar o peso (wij) utilizando a redução de gradiente, uma taxa de aprendizado α é selecionada. Como ilustrado na equação 3, uma mudança no peso Δwij, que é adicionado ao peso antigo, wij, é igual ao produto da taxa de aprendizado e gradiente, multiplicado por -1. O -1 é especificado para atualizar na direção de uma função de erro mínimo, não máximo.
[0066] Com base na equação 3, se o peso de um filtro for alto e o peso contribuir para o erro, peso pode ser reduzido por uma quantidade maior em comparação com um peso que era baixo e não contribuiu para o erro. Adicionalmente, com base na equação 3, um filtro é atualizado se a derivativa parcial do erro for diferente de zero.
[0067] Na maior parte dos casos, visto que a função de erro é uma função global, os pesos individuais da rede não são considerados desde que o erro seja reduzido de modo que o rótulo previsto seja preciso. A função global pode ser utilizada para gerar vários filtros específicos. Como discutido previamente, os filtros fracos podem ser obtidos quando o treinamento determinado é pequeno, o modelo é muito grande e/ou o conjunto de treinamento inclui erros.
[0068] A figura 7 ilustra um conjunto de filtros fracos 702 em comparação com um conjunto de filtros fortes 704. Como ilustrado na figura 7, os filtros fracos 702 não possuem definições específicas. Por exemplo, cada um dos filtros fracos 702 é generalizado e não possui um contorno bem definido. Em contraste, a definição de filtros fortes 704 é maior do que a definição de filtros fracos 702, de modo que várias linhas e ângulos sejam visíveis. Os filtros fortes 704 aperfeiçoam a detecção das características específicas de uma entrada, tal como se uma ou mais linhas adicionais estão presentes em uma imagem.
[0069] Como um exemplo, a rede pode ser encarregada de discriminar entre um cachorro e um gato. Nesse exemplo, um número limitado de amostras de treinamento ou um erro no treinamento pode estar presente. Por exemplo, os filtros podem ser treinados apenas em imagens de gatos brancos e cachorros pretos. Portanto, nesse exemplo, os filtros podem ser generalizados para vários tons de cinza devido às amostras de treinamento limitadas. Dessa forma, nesse exemplo, os filtros de escala cinza podem discriminar entre cachorros pretos e gatos brancos. Ainda assim, os filtros de escala cinza podem não discriminar entre gatos e cachorros de cores diferentes, tal como um cachorro marrom ou um gato laranja. Portanto, é desejável se mitigar o uso de filtros que são fracos devido, por exemplo, a um número limitado de amostras de treinamento e/ou erros no treinamento. Ainda assim, erros nas amostras de treinamento podem ser desconhecidos. Por exemplo, a orientação de conjuntos de treinamento no mundo real pode ser desconhecida ou limitada. Especificamente, um conjunto de treinamento de um dispositivo móvel pode ser limitado apenas a imagens capturadas pelo usuário.
[0070] Para se mitigar os filtros fracos resultantes dos conjuntos de treinamento limitados e/ou erros no treinamento, aspectos da presente descrição são direcionados ao treinamento da rede com base no erro calculado da propagação de retorno e treinamento da rede com base na especificidade de filtro. A especificidade de filtro se refere à resistência de um filtro.
[0071] A especificidade do filtro pode ser calculada com base em vários fatores, tal como distribuição dos pesos. Em uma configuração, a especificidade de filtro é medida com base em entropia ∑iP(wi)log2 p(wt). A entropia é uma medição de uma diferença nos pixels em um filtro. Em outra configuração, a especificidade de filtro é medida com base em uma mudança de um valor original ∑iW[(t) — Wi(t0). Em outra configuração, a especificidade de filtro é medida com base em uma variação de valores de peso 1 ∑i(wi — w)2. Em outra configuração adicional, a especificidade de filtro é medida com base em uma diferença de outros filtros ∑bf∑l (wa,i -wb,i)2. Em outra configuração, a especificidade de filtro é medida com base na correlação cruzada com outros filtros. Nas equações mencionadas acima, w é o peso do filtro. Apesar de várias métricas terem sido listadas, a presente descrição deve englobar qualquer métrica de similaridade.
[0072] Adicionalmente, em uma configuração, um termo de erro é especificado para a especificidade de filtro. Por exemplo, o erro de especificidade de filtro 1 pode ser calculado por . Nesse exemplo, se a especificidade de filtro especificidade de filtro for baixa, então o erro é grande. Alternativamente, se a especificidade de filtro for alta, então o erro é baixo.
[0073] Dessa forma, com base nos aspectos da presente descrição, o treinamento é especificado para enviar um rótulo correto em adição à obtenção de filtros com especificidade aperfeiçoada. Isso é, aspectos da presente descrição são direcionados à obtenção de filtros que são específicos com relação às várias características.
[0074] A figura 8 ilustra um exemplo de filtros 800 treinados a partir de uma primeira iteração de treinamento (época 1) e os mesmos filtros 800 depois de uma nonagésima iteração de treinamento (época 90). As iterações de treinamento podem, algumas vezes, ser referidas como passagens de treinamento. Nesse exemplo, um conjunto de dados pode ter um número específico de imagens, tal como dez mil. O treinamento utiliza as imagens dos conjuntos de dados para ajustar os pesos dos filtros com base na equação de atualização de peso (equação 3). Os pesos dos filtros podem ser ajustados depois do treinamento em um número específico de imagens a partir do conjunto de dados, tal como cem imagens. Dessa forma, nesse exemplo, com base nas dez mil imagens e atualização do peso depois de cem imagens, os pesos seriam ajustados cem vezes durante cada época.
[0075] Como ilustrado na figura 8 na primeira passagem de treinamento, cada filtro possui uma entropia específica. Por exemplo, um primeiro filtro 802 possui uma entropia de 2.006 e um segundo filtro 804 possui uma entropia de 2.018. Os filtros na primeira passagem de treinamento são ordenados a partir de entropia baixa para entropia alta. Adicionalmente, como ilustrado na figura 8, a entropia de cada filtro é modificada depois da nonagésima passagem de treinamento (época 90). Os filtros na nonagésima passagem de treinamento são ordenados de entropia baixa para entropia alta. Deve-se notar que visto que os filtros na época 1 e na época 90 são ordenados de baixa entropia para entropia alta, os mesmos filtros não possuem as mesmas posições em cada figura. Isso é, o primeiro filtro 808 da época 1 pode ou não ser o primeiro filtro 808 da época 90. Em outras palavras, o primeiro filtro 802 da época 1 pode ter tido uma mudança maior na entropia em comparação com os filtros vizinhos de modo que o primeiro filtro 802 da época 1 possa ser, por exemplo, um décimo primeiro filtro 814 da época 90.
[0076] Mais especificamente, na primeira passagem de treinamento, os filtros são randomizados. Adicionalmente, depois de um número determinado de passagens de treinamento, tal como noventa, quando os filtros não são ajustados com base em especificidade, alguns filtros apresentam uma alta especificidade enquanto outros filtros apresentam uma baixa especificidade. Nesse exemplo, a especificidade é determinada com base na entropia do filtro.
[0077] Como ilustrado na figura 8, a entropia dos filtros da época 90 é aumentada depois de aproximadamente noventa passagens de treinamento. Ainda, alguns filtros podem ter pouca mudança entre as passagens de treinamento. Por exemplo, um segundo filtro 810 da época 90 possui uma entropia de 2.494 e um terceiro filtro 812 da época 90 possui uma entropia de 2.584. Dessa forma, as entropias do segundo filtro 810 e do terceiro filtro 812 tiveram uma mudança pequena desde a passagem de treinamento inicial.
[0078] Como discutido previamente, os aspectos da presente descrição não estão limitados à determinação da especificidade dos filtros com base apenas em entropia. A especificidade também pode ser determinada através de outros cálculos.
[0079] Adicionalmente, como previamente discutido, é desejável se ter filtros detalhados para determinar as características específicas de um objeto. Por exemplo, o décimo primeiro filtro 814 da época 90 possui um baixo nível de detalhamento representado por baixa entropia. Dessa forma, o décimo primeiro filtro 814 da época 90 pode adicionar apenas o ruído adicional a camadas subsequentes. Em contraste, um quadragésimo sexto filtro 816 da época 90 possui uma entropia alta e inclui detalhes para linhas horizontais. Dessa forma, o quadragésimo sexto filtro 816 pode determinar se as linhas horizontais estão presentes em uma imagem.
[0080] Em alguns casos, é desejável se aperfeiçoar a especificidade de filtro enquanto se reduz o erro da propagação de retorno. Uma função de custo conjunta pode ser especificada para a propagação de retorno para determinar o erro total proveniente da propagação de retorno. Em uma configuração, a função de custo conjunta é uma soma do erro de rotulação e a função da especificidade de filtro. Por exemplo, a função de custo conjunta é 1 (erro de rotulação + ). Isso é, a função de erro é especificidade de filtro aumentada com uma medição agregada da especificidade de filtros. A função de custo conjunta pode ser baseada em uma medição de sumário de todas as especificidades de filtro em uma rede ou pode ser baseada em camada. Adicionalmente, é desejável se reduzir o erro total durante o treinamento. Dessa forma, em uma configuração, os pesos de filtro são alterados para aperfeiçoar a especificidade de filtro se os pesos calculados com base nos erros resultarem em baixa especificidade de filtro.
[0081] Em outra configuração, o treinamento dos filtros que possuem uma especificidade particular é encerrado para reduzir os custos de computação. Isso é, a aprendizagem dos filtros que possui uma especificidade que é maior do que ou igual a um limite é parada de modo que os pesos dos filtros não sejam mais atualizados.
[0082] A figura 9 ilustra um exemplo de um conjunto de filtros 900 que são utilizados para treinamento. Os filtros para a trigésima terceira passagem (época 33) são ordenados a partir de entropia baixa para alta. Como ilustrado na figura 9, a partir dos filtros 900 da época 33, um quadragésimo terceiro filtro 904 possui uma entropia de 4,2 e um sexagésimo quarto filtro 906 possui uma entropia de 4.1078. Adicionalmente, como ilustrado na figura 9, os filtros 900 da época 90 são ordenados da entropia baixa para alta com base na nonagésima passagem de treinamento. A partir dos filtros 900 da época 90, o trigésimo oitavo filtro 908 possui uma entropia de 4.151 e um quinquagésimo sétimo filtro 910 possui uma entropia de 4.550. A entropia do trigésimo oitavo filtro 908 e a entropia do quinquagésimo sétimo filtro 910 são ambas superiores a um limite. Portanto, nesse exemplo, o treinamento do trigésimo oitavo filtro 908 e do quinquagésimo sétimo filtro 910 pode ser encerrado para reduzir os custos de computação. O limite pode ser predeterminado e/ou ajustado com base nos resultados do treinamento.
[0083] Adicionalmente ou alternativamente, em uma configuração, a rede pode monitorar a especificidade dos filtros com o tempo. Como um exemplo, como ilustrado na figura 9, o quadragésimo terceiro filtro 904 da época 33 correlaciona com o trigésimo oitavo filtro 908 da época 90. Adicionalmente, como ilustrado na figura 9, o sexagésimo quarto filtro 906 da época 33 correlaciona com o quinquagésimo sétimo filtro 910 da época 90.
[0084] Como ilustrado na figura 9, a entropia do quadragésimo terceiro filtro 904 e sexagésimo quarto filtro 906 da época 33 não aumentou ou diminuiu mais do que um limite específico entre a trigésima terceira passagem e a nonagésima passagem. Portanto, nesse exemplo, depois de a especificidade de um filtro ser maior do que um limite, uma mudança pode ser encerrada para reduzir os custos de computação quando a mudança da especificidade é inferior a um limite com o tempo.
[0085] Em outra configuração, os filtros são selecionados para treinamento com base em uma complexidade de rede alvo. A complexidade de rede alvo pode ser baseada em uma especificação de memória, tal como uma quantidade de memória especificada para a rede, e/ou especificações de energia, tal como uma quantidade de energia de computação especificada para a rede. Nessa configuração, um número específico de filtros pode ser treinado com base na complexidade determinada. O número específico de filtros pode ser selecionado antes do encerramento do treinamento para um ou mais filtros com base na especificidade de filtro ou depois do encerramento do treinamento para um ou mais filtros com base na especificidade de filtro.
[0086] Adicionalmente, ou alternativamente, com base na complexidade de rede alvo, a rede pode priorizar os filtros específicos para continuar com o treinamento. A priorização pode ser realizada antes do encerramento do treinamento para um ou mais filtros com base na especificidade de filtro ou depois do encerramento do treinamento para um ou mais filtros com base na especificidade de filtro.
[0087] Em outra configuração, antes do encerramento do treinamento para um ou mais filtros com base na especificidade de filtro ou depois do encerramento do treinamento para um ou mais filtros com base na especificidade de filtro, os filtros podem ser prioridades com base na especificidade de cada filtro. A priorização pode ser utilizada para determinar os filtros que podem ser aplicados a uma entrada. Adicionalmente, de acordo com um aspecto da presente descrição, um número de filtros pode ser selecionado a partir dos filtros priorizados com base na complexidade de rede alvo.
[0088] Em outra configuração, depois de um número predeterminado de passagens de treinamento, filtros com uma especificidade que é inferior a um limite podem ser eliminados do treinamento. A figura 10 ilustra um exemplo de um conjunto de filtros 1000 depois de noventa passagens de treinamento. Como ilustrado na figura 10, os filtros são ordenados de baixo para alto com base na entropia. Nesse exemplo, os primeiros seis filtros 1002-1012 possuem uma entropia que é inferior a um limite, tal como três. Portanto, visto que a entropia dos filtros 1002-1012 é inferior a três, os primeiros seis filtros 1002-1012 são eliminados do treinamento. Adicionalmente, visto que os filtros fracos podem adicionar ruído às entradas, os filtros que são removidos do treinamento podem não ser aplicados a uma entrada.
[0089] A figura 11 ilustra um método 1100 de treinamento de um modelo de rede neural. No bloco 1102, uma especificidade de múltiplos filtros é determinada depois de um número predeterminado de iterações de treinamento. No bloco 1104, cada um dos filtros é treinado com base na especificidade.
[0090] A figura 12 ilustra um fluxograma 1200 para treinamento de um modelo de rede neural. No bloco 1202, o treinamento é iniciado para múltiplos filtros. Como discutido previamente, um filtro pode ser utilizado para determinar se um elemento específico está presente em uma entrada. Adicionalmente, os filtros podem ser treinados utilizando-se propagação de retorno. Adicionalmente, no bloco 1204, o modelo de rede neural determina uma especificidade de múltiplos filtros depois de um número predeterminado de iterações de treinamento. Adicionalmente, no bloco 1206, o modelo de rede neutral determina se continua com o treinamento de um filtro com base na especificidade determinada.
[0091] Em uma configuração, se a especificidade determinada de um filtro for maior do que um limite, a rede interrompe o treinamento do filtro (bloco 1208). Adicionalmente, ou alternativamente, a rede interrompe o treinamento do filtro (bloco 1208) quando uma mudança na especificidade do filtro específico é inferior a um limite depois do número predeterminado de iterações de treinamento. Em outra configuração, como ilustrado no bloco 1210, um filtro é eliminado do modelo de rede neural quando a especificidade do filtro específico é inferior a um limite depois do número predeterminado de iterações de treinamento.
[0092] Em outra configuração, o treinamento de um filtro pode continuar com base na especificidade determinada (bloco 1212). Por exemplo, o treinamento pode continuar se a especificidade for superior a um primeiro limite e inferior a um segundo limite. Adicionalmente, ou alternativamente, a rede continua com o treinamento do filtro (bloco 1212) quando uma mudança na especificidade do filtro específico é maior do que um primeiro limite e menor que um segundo limite depois de um número predeterminado de iterações de treinamento.
[0093] As várias operações dos métodos descritos acima podem ser realizadas por qualquer meio adequado capaz de realizar as funções correspondentes. Os meios podem incluir vários componentes e/ou módulos de hardware e/ou software, incluindo, mas não limitado a um circuito, um circuito integrado específico de aplicativo (ASIC), ou processador. Geralmente, onde existem operações ilustradas nas figuras, essas operações podem ter componentes de meios mais função de contraparte correspondentes com numeração similar.
[0094] Como utilizado aqui, o termo "determinando" engloba uma ampla variedade de ações. Por exemplo, "determinando" pode incluir calculando, computando, processando, derivando, investigando, consultando (por exemplo, consultando uma tabela, uma base de dados ou outra estrutura de dados), determinando e similares. Adicionalmente, "determinando" pode incluir recebendo (por exemplo, recebendo informação), acessando (por exemplo, acessado dados em uma memória) e similares. Adicionalmente, "determinando" pode incluir resolvendo, selecionando, escolhendo, estabelecendo e similares.
[0095] Como utilizada aqui, uma frase referindo-se a "pelo menos um dentre" uma lista de itens se refere a qualquer combinação desses itens, incluindo, elementos singulares. Como um exemplo, "pelo menos um dentre: a, b ou c" deve cobrir: a, b, c, a-b, a-c, b-c e a- b-c.
[0096] Os vários blocos lógicos, módulos e circuitos ilustrativos descritos com relação à presente descrição podem ser implementados ou realizados com um processador de finalidade geral, um processador de sinal digital DSP), um circuito integrado específico de aplicativo (ASIC), um sinal de conjunto de porta programável em campo (FPGA), ou outro dispositivo lógico programável (PLD), porta discreta ou lógica de transistor, componentes de hardware discretos ou qualquer combinação dos mesmos projetada para realizar as funções descritas aqui. Um processador de finalidade geral pode ser um microprocessador, mas na alternativa, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado comercialmente disponível. Um processador também pode ser implementado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo DSP, ou qualquer outra configuração similar.
[0097] As etapas de um método ou algoritmo descritas com relação à presente descrição podem ser consubstanciadas diretamente em hardware, em um módulo de software executado por um processador, ou em uma combinação dos dois. Um módulo de software pode residir em qualquer forma de meio de armazenamento que seja conhecida da técnica. Alguns exemplos do meio de armazenamento que podem ser utilizados incluem memória de acesso randômico (RAM), memória de leitura apenas (ROM), memória flash, memória de leitura apenas programável e eliminável (EPROM), memória de leitura apenas eletricamente programável e eliminável (EEPROM), registros, um disco rígido, um disco removível, um CD-ROM e assim por diante. Um módulo de software pode compreender uma instrução singular ou muitas instruções, e pode ser distribuído através de vários segmentos de código diferentes, entre programas diferentes e através de múltiplos meios de armazenamento. Um meio de armazenamento pode ser acoplado a um processador de modo que o processador possa ler informação a partir de e escrever informação no meio de armazenamento. Na alternativa, o meio de armazenamento pode ser integral ao processador.
[0098] Os métodos descritos aqui compreendem uma ou mais etapas ou ações para alcançar o método descrito. As etapas e/ou ações de método podem ser intercambiáveis uma com a outra sem se distanciar do escopo das reivindicações. Em outras palavras, a menos que uma ordem específica de etapas ou ações seja especificada, a ordem e/ou uso das etapas e/ou ações específicas podem ser modificado sem se distanciar do escopo das reivindicações.
[0099] As funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em hardware, uma configuração de hardware ilustrativa pode compreender um sistema de processamento em um dispositivo. O sistema de processamento pode ser implementado com uma arquitetura de barramento. O barramento pode incluir qualquer número de barramentos e pontes de interconexão dependendo da aplicação específica do sistema de processamento e das restrições de projeto como um todo. O barramento pode conectar vários circuitos juntos incluindo um processador, meio legível por máquina e uma interface de barramento. A interface de barramento pode ser utilizada para conectar um adaptador de rede, entre outras coisas, ao sistema de processamento através do barramento. O adaptador de rede pode ser utilizado para implementar as funções de processamento de sinal. Para determinados aspectos, uma interface de usuário (por exemplo, teclado, monitor, mouse, joystick, etc.) também pode ser conectada ao barramento. O barramento também pode conectar vários outros circuitos tal como fontes de temporização, periféricos, reguladores de voltagem, circuitos de gerenciamento de energia, e similares, que são bem conhecidos da técnica, e, portanto, não serão descritos adicionalmente.
[00100] O processador pode ser responsável pelo gerenciamento do barramento e do processamento geral, incluindo a execução de software armazenado no meio legível por máquina. O processador pode ser implementado com um ou mais dentre os processadores de finalidade geral e/ou finalidade especial. Exemplos incluem microprocessadores, microcontroladores, processadores DSP e outro conjunto de circuitos que podem executar o software. O software deve ser construído de forma ampla para significar instruções, dados ou qualquer combinação dos mesmos, referida como software, firmware, middleware, microcódigo, linguagem de descrição de hardware ou de outra forma. O meio legível por máquina pode incluir, por meio de exemplo, memória de acesso randômico (RAM), memória flash, memória de leitura apenas (ROM), memória de leitura apenas programável (PROM), memória de leitura apenas programável e eliminável (EPROM), memória de leitura apenas eletricamente programável e eliminável (EEPROM), registros, discos magnéticos, discos óticos, discos rígidos ou qualquer outro meio de armazenamento adequado, ou qualquer combinação dos mesmos. O meio legível por máquina pode ser consubstanciado em um produto de programa de computador. O produto de programa de computador pode compreender materiais de empacotamento.
[00101] Em uma implementação de hardware, o meio legível por máquina pode ser parte do sistema de processamento separado do processador. No entanto, como os versados na técnica apreciarão prontamente, o meio legível por máquina, ou qualquer parte do meio, pode ser externa ao sistema de processamento. Por meio de exemplo, o meio legível por máquina pode incluir uma linha de transmissão, uma onda portadora modulada por dados, e/ou um produto de computador separado do dispositivo, todos os quais podem ser acessados pelo processador através da interface de barramento. Alternativamente, ou adicionalmente, o meio legível por máquina, ou qualquer parte do mesmo, pode ser integrado ao processador, tal como o caso pode ser com a memória temporária e/ou os arquivos de registro geral. Apesar de vários componentes discutidos poderem ser descritos como tendo uma localização específica, tal como um componente local, os mais também podem ser configurados de várias formas, tal como determinados componentes sendo configurados como parte de um sistema de computação distribuído.
[00102] O sistema de processamento pode ser configurado como um sistema de processamento de finalidade geral com um ou mais microprocessadores fornecendo a funcionalidade de processador e a memória externa fornecendo pelo menos uma parte do meio legível por máquina, todos conectados juntos a outro conjunto de circuito de suporte através de uma arquitetura de barramento externa. Alternativamente, o sistema de processamento pode compreender um ou mais processadores neuromórficos para implementação dos modelos de neurônio e modelos de sistemas neurais descritos aqui. Como outra alternativa, o sistema de processamento pode ser implementado com um circuito integrado específico de aplicativo (ASIC) com o processador, a interface de barramento, a interface de usuário, o conjunto de circuitos de suporte, e pelo menos uma parte do meio legível por máquina integrada a um único chip, ou com um ou mais conjuntos de porta programáveis em campo (FPGAs), dispositivos lógicos programáveis (PLDs), controladores, máquinas de estado, lógica com porta, componentes de hardware discretos, ou qualquer outro conjunto de circuito adequado, ou qualquer combinação de circuitos que possa realizar as várias funcionalidades descritas por toda essa descrição. Os versados na técnica reconhecerão como melhor implementar a funcionalidade descrita para o sistema de processamento dependendo da aplicação particular e das restrições de projeto como um todo impostas ao sistema como um todo.
[00103] O meio legível por máquina pode compreender vários módulos de software. Os módulos de software incluem instruções que, quando executadas pelo processador, fazem com que o sistema de processamento realize várias funções. Os módulos de software podem incluir um módulo de transmissão e um módulo de recepção. Cada módulo de software pode residir em um único dispositivo de armazenamento ou pode ser distribuído através de múltiplos dispositivos de armazenamento. Por meio de exemplo, um módulo de software pode ser carregado na RAM a partir de um disco rígido quando um evento de acionamento ocorre. Durante a execução do módulo de software, o processador pode carregar algumas das instruções na memória temporária para aumentar a velocidade de acesso. Uma ou mais linhas de memória podem então ser carregadas para um arquivo de registro geral para execução pelo processador. Quando fazendo referência à funcionalidade de um módulo de software abaixo, será compreendido que tal funcionalidade é implementada pelo processador quando da execução das instruções a partir desse módulo de software.
[00104] Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio legível por computador. O meio legível por computador inclui ambos o meio de armazenamento em computador e o meio de comunicação incluindo qualquer meio que facilite a transferência de um progrma de computador de um lugar para outro. Um meio de armazenamento pode ser qualquer meio disponível que possa ser acessado por um computador. Por meio de exemplo, e não de limitação, tal meio legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético ou qualquer outro meio que possa ser utilizado para portar ou armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Adicionalmente, qualquer conexão é adequadamente chamada de meio legível por computador. Por exemplo, se o software for transmitido a partir de um sitio de rede, servidor ou outra fonte remota utilizando um cabo coaxial, um cabo de fibra ótica, um par torcido, linha de assinante digital (DSL), ou tecnologias sem fio, tal como infravermelho (IR), rádio, e micro-ondas, então o cabo coaxial, o cabo de fibra ótica, o par torcido, DSL, ou tecnologias sem fio tal como infravermelho, rádio e microondas são incluídos na definição de meio. Disquete e disco, como utilizados aqui, incluem disco compacto (CD), disco a laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu-ray®, onde disquetes normalmente reproduzem os dados magneticamente, enquanto discos reproduzem os dados oticamente com lasers. Dessa forma, em alguns aspectos, o meio legível por computador pode compreender meio legível por computador não transitório (por exemplo, meio tangível). Adicionalmente, para outros aspectos o meio legível por computador pode compreender meio legível por computador transitório (por exemplo, um sinal). Combinações do acima devem ser incluídas também dentro do escopo de meio legível por computador.
[00105] Dessa forma, determinados aspectos podem compreender um produto de programa de computador para realizar as operações apresentadas aqui. Por exemplo, tal produto de programa de computador pode compreender um meio legível por computador possuindo instruções armazenadas (e/ou codificadas) no mesmo, as instruções sendo executáveis por um ou mais processadores para realizar as operações descritas aqui. Para determinados aspectos, o produto de programa de computador pode incluir o material de empacotamento.
[00106] Adicionalmente, deve-se apreciar que os módulos e/ou outros meios adequados para a realização dos métodos e técnicas descritos aqui podem ser descarregados e/ou de outra forma obtidos por um terminal de usuário e/ou estação base como aplicável. Por exemplo, tal dispositivo pode ser acoplado a um servidor para facilitar a transferência de meios para a realização de métodos descritos aqui. Alternativamente, vários métodos descritos aqui podem ser fornecidos através dos meios de armazenamento (por exemplo, RAM, ROM, um meio de armazenamento físico tal como um disco compacto (CD) ou disquete, etc.), de modo que um terminal de usuário e/ou estação ase possa obter os vários métodos mediante acoplamento ou fornecimento de meios de armazenamento para o dispositivo. Ademais, qualquer outra técnica adequada para o fornecimento de métodos e técnicas descritos aqui para um dispositivo pode ser utilizada.
[00107] Deve-se compreender que as reivindicações não estão limitadas à configuração precisa e componentes ilustrados acima. Várias modificações, mudanças e variações podem ser feitas na disposição, operação e detalhes dos métodos e aparelho descritos acima com referência ao escopo das reivindicações.

Claims (15)

1. Método implementado por computador de treinamento de um modelo de rede neural, compreendendo: determinar, depois de um número predeterminado de iterações de treinamento, uma especificidade de cada filtro dentre uma pluralidade de filtros (1102, 1204) ou uma combinação dos mesmos; determinar se continua o treinamento de cada filtro com base pelo menos em parte na especificidade (1206) determinada de cada filtro; caracterizado pelo fato de que a especificidade de cada filtro é baseada em pelo menos um dentre entropia, mudança do peso do filtro a partir do peso do filtro original, variação de valores de peso, diferença dos pesos de cada filtro a partir dos pesos dos outros filtros, correlação cruzada com outros filtros; determinar uma complexidade alvo do modelo de rede neural com base em pelo menos uma dentre uma especificação de memória, uma especificação de energia, ou uma combinação das mesmas; em que a complexidade alvo determinada é utilizada para pelo menos um dentre treinar seletivamente filtros, priorizar filtros a serem treinados, ou uma combinação dos mesmos.
2. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente interromper o treinamento para um filtro específico dentre a pluralidade de filtros quando a especificidade do filtro específico for maior do que um limite.
3. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente interromper o treinamento de um filtro específico quando uma mudança na especificidade do filtro específico é inferior a um limite depois do número predeterminado de iterações de treinamento.
4. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente eliminar um filtro específico (1210) a partir do modelo de rede neural quando a especificidade do filtro específico é inferior a um limite depois do número predeterminado de iterações de treinamento.
5. Método implementado por computador, de acordo com a reivindicado 4, caracterizado pelo fato de que compreende adicionalmente continuar o treinamento do modelo de rede neural depois da eliminação do filtro específico.
6. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o modelo de rede neural é treinado enquanto uma função de erro é aumentada com uma medida agrupada da especificidade dentre a pluralidade de filtros.
7. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: priorizar filtros para aplicar a uma entrada com base pelo menos em parte na especificidade de cada um dentre a pluralidade de filtros; e selecionar um número de filtros priorizados com base pelo menos em parte em uma complexidade alvo do modelo de rede neural.
8. Método implementado por computador, de acordo com a reivindicação 7, caracterizado pelo fato de que a complexidade alvo é baseada em pelo menos uma dentre uma especificação de memória, uma especificação de energia ou uma combinação das mesmas.
9. Aparelho para treinamento de um modelo de rede neural, compreendendo: uma unidade de memória; e pelo menos um processador acoplado à unidade de memória, o pelo menos um processador configurado: para determinar, depois de um número predeterminado de iterações de treinamento, uma especificidade de cada filtro dentre uma pluralidade de filtros, ou uma combinação dos mesmos; para treinar cada filtro dentre a pluralidade de filtros com base pelo menos em parte na especificidade; e para determinar se continua com o treinamento de cada filtro com base pelo menos em parte na especificidade determinada de cada filtro; caracterizado pelo fato de que a especificidade de cada filtro é baseada em pelo menos uma dentre entropia, mudança a partir de valores originais, variação de valores de peso, diferença dos pesos de cada filtro a partir de outros filtros, correlação cruzada com outros filtros; determinar uma complexidade alvo do modelo de rede neural com base em pelo menos uma dentre uma especificação de memória, uma especificação de energia, ou uma combinação das mesmas; em que a complexidade alvo determinada é utilizada para pelo menos um dentre treinar seletivamente filtros, priorizar filtros a serem treinados, ou uma combinação dos mesmos.
10. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que o pelo menos um processador é configurado para interromper o treinamento para um filtro específico dentre a pluralidade de filtros quando a especificidade do filtro específico for maior do que um limite.
11. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que o pelo menos um processador é configurado para interromper o treinamento de um filtro específico quando uma mudança na especificidade do filtro específico é inferior a um limite depois do número predeterminado de iterações de treinamento.
12. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que o pelo menos um processador é configurado para eliminar um filtro específico (1210) a partir do modelo de rede neural quando a especificidade do filtro específico é inferior a um limite depois do número predeterminado de iterações de treinamento.
13. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que o pelo menos um processador é configurado adicionalmente para realizar um dentre os seguintes: i) treinar o modelo de rede neural enquanto aumenta uma função de erro com uma medida agrupada da especificidade dentre a pluralidade de filtros; ii) priorizar filtros para aplicar a uma entrada com base pelo menos em parte na especificidade de cada um dentre a pluralidade de filtros; e selecionar um número de filtros priorizados com base pelo menos em parte em uma complexidade alvo do modelo de rede neural.
14. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que o pelo menos um processador é adicionalmente configurado para utilizar a complexidade alvo determinada para pelo menos um dentre treinar seletivamente filtros, priorizar filtros a serem treinados ou uma combinação dos mesmos.
15. Memória legível por computador caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executáveis por um computador para realizar as etapas de método conforme definido em qualquer uma das reivindicações 1 a 8.
BR112017023028-3A 2015-04-28 2016-03-10 Especificidade de filtro como critério de treinamento para redes neurais BR112017023028B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562154089P 2015-04-28 2015-04-28
US62/154,089 2015-04-28
US14/848,283 US10515304B2 (en) 2015-04-28 2015-09-08 Filter specificity as training criterion for neural networks
US14/848,283 2015-09-08
PCT/US2016/021886 WO2016175923A1 (en) 2015-04-28 2016-03-10 Filter specificity as training criterion for neural networks

Publications (2)

Publication Number Publication Date
BR112017023028A2 BR112017023028A2 (pt) 2018-07-03
BR112017023028B1 true BR112017023028B1 (pt) 2023-04-11

Family

ID=55629125

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112017023028-3A BR112017023028B1 (pt) 2015-04-28 2016-03-10 Especificidade de filtro como critério de treinamento para redes neurais

Country Status (9)

Country Link
US (1) US10515304B2 (pt)
EP (1) EP3289528B1 (pt)
JP (1) JP2018520404A (pt)
KR (1) KR20170140214A (pt)
CN (1) CN107533669B (pt)
BR (1) BR112017023028B1 (pt)
CA (1) CA2979046A1 (pt)
TW (1) TW201706918A (pt)
WO (1) WO2016175923A1 (pt)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170178346A1 (en) * 2015-12-16 2017-06-22 High School Cube, Llc Neural network architecture for analyzing video data
US11288573B2 (en) * 2016-05-05 2022-03-29 Baidu Usa Llc Method and system for training and neural network models for large number of discrete features for information rertieval
EP3520038A4 (en) 2016-09-28 2020-06-03 D5A1 Llc LEARNING TRAINER FOR MACHINE LEARNING SYSTEM
US20180096261A1 (en) * 2016-10-01 2018-04-05 Intel Corporation Unsupervised machine learning ensemble for anomaly detection
US11308350B2 (en) 2016-11-07 2022-04-19 Qualcomm Incorporated Deep cross-correlation learning for object tracking
US10685285B2 (en) * 2016-11-23 2020-06-16 Microsoft Technology Licensing, Llc Mirror deep neural networks that regularize to linear networks
US10068140B2 (en) * 2016-12-02 2018-09-04 Bayerische Motoren Werke Aktiengesellschaft System and method for estimating vehicular motion based on monocular video data
CN110088797B (zh) * 2016-12-19 2023-04-21 株式会社安川电机 工业设备图像识别处理器及控制器
KR102499396B1 (ko) 2017-03-03 2023-02-13 삼성전자 주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
KR101878490B1 (ko) * 2017-03-10 2018-07-13 만도헬라일렉트로닉스(주) 차선 인식 시스템 및 방법
EP3602316A4 (en) * 2017-03-24 2020-12-30 D5A1 Llc LEARNING COACH FOR AUTOMATIC LEARNING SYSTEM
US10902312B2 (en) * 2017-03-28 2021-01-26 Qualcomm Incorporated Tracking axes during model conversion
US20180336468A1 (en) * 2017-05-16 2018-11-22 Nec Laboratories America, Inc. Pruning filters for efficient convolutional neural networks for image recognition in surveillance applications
DE102017209262A1 (de) 2017-06-01 2018-12-06 Audi Ag Verfahren und Vorrichtung zur automatischen Gestenerkennung
JP6595151B2 (ja) * 2017-06-29 2019-10-23 株式会社Preferred Networks 訓練方法、訓練装置、プログラム及び非一時的コンピュータ可読媒体
WO2019051658A1 (en) * 2017-09-13 2019-03-21 Intel Corporation INCREMENTAL NETWORK QUANTIFICATION
TWI651687B (zh) 2017-11-24 2019-02-21 財團法人工業技術研究院 三維模型建構方法及其系統
WO2019107900A1 (ko) * 2017-11-28 2019-06-06 주식회사 날비컴퍼니 컨볼루션 신경망 내 필터 프루닝 장치 및 방법
CN109961138B (zh) * 2017-12-14 2020-04-14 中科寒武纪科技股份有限公司 神经网络训练方法及相关产品
US11321612B2 (en) 2018-01-30 2022-05-03 D5Ai Llc Self-organizing partially ordered networks and soft-tying learned parameters, such as connection weights
JP7006401B2 (ja) * 2018-03-13 2022-01-24 富士通株式会社 学習プログラム、学習方法および学習装置
US10936913B2 (en) * 2018-03-20 2021-03-02 The Regents Of The University Of Michigan Automatic filter pruning technique for convolutional neural networks
CN110503181B (zh) * 2018-05-18 2022-03-01 百度在线网络技术(北京)有限公司 用于生成多层神经网络的方法和装置
CN109102065B (zh) * 2018-06-28 2022-03-11 广东工业大学 一种基于PSoC的卷积神经网络加速器
US11449728B2 (en) 2018-07-01 2022-09-20 Al Falcon Ltd. Method of optimization of operating a convolutional neural network and system thereof
EP3605404B1 (de) 2018-08-03 2023-10-04 Siemens Healthcare Diagnostics, Inc. Verfahren und vorrichtung zum trainieren einer maschinellen lernroutine zum steuern eines technischen systems
US11449756B2 (en) * 2018-09-24 2022-09-20 Samsung Electronics Co., Ltd. Method to balance sparsity for efficient inference of deep neural networks
KR20200046145A (ko) 2018-10-15 2020-05-07 펑션베이(주) 예측 모델 훈련 관리 시스템, 예측 모델 훈련 관리 방법, 예측 모델 학습 관리를 위한 마스터 장치 및 슬레이브 장치
WO2020086774A1 (en) 2018-10-24 2020-04-30 The Climate Corporation Detecting infection of plant diseases with improved machine learning
JP7135750B2 (ja) * 2018-11-12 2022-09-13 富士通株式会社 学習プログラム、学習方法、学習装置、検知プログラム、検知方法及び検知装置
WO2020105144A1 (ja) * 2018-11-21 2020-05-28 三菱電機株式会社 画像生成装置及び画像生成方法
EP3899811A4 (en) * 2018-12-18 2022-09-28 Movidius Ltd. NERVE NETWORK COMPRESSION
EP3912106A4 (en) * 2019-01-18 2022-11-16 Nokia Technologies Oy NERVE NETWORK COMPRESSION APPARATUS AND METHOD
CN111507362B (zh) * 2019-01-30 2023-12-19 中强光电股份有限公司 神经网络的训练方法、基于神经网络的分类方法及其装置
CN109784490B (zh) * 2019-02-02 2020-07-03 北京地平线机器人技术研发有限公司 神经网络的训练方法、装置和电子设备
JP7345262B2 (ja) * 2019-03-11 2023-09-15 キヤノン株式会社 データ圧縮装置、データ処理装置、データ圧縮方法、プログラム、及び学習済みモデル
CA3134088A1 (en) * 2019-03-29 2020-10-08 Sony Semiconductor Solutions Corporation Information processing method, program, and information processing apparatus
US11556615B2 (en) * 2019-05-03 2023-01-17 Tesla, Inc. Data path for scalable matrix node engine with mixed data formats
US11836624B2 (en) 2019-08-26 2023-12-05 D5Ai Llc Deep learning with judgment
KR20210059466A (ko) 2019-11-15 2021-05-25 삼성전자주식회사 영상 제공 장치 및 이에 의한 영상 제공 방법, 및 디스플레이 장치 및 이에 의한 디스플레이 방법
GB2593757B (en) * 2020-04-02 2022-04-06 Graphcore Ltd Control of processing node operations
JP7309060B2 (ja) 2020-05-14 2023-07-14 三菱電機株式会社 空調機器のメンテナンスの学習装置および推論装置
CN111767985B (zh) * 2020-06-19 2022-07-22 深圳市商汤科技有限公司 一种神经网络的训练方法、视频识别方法及装置
US11055617B1 (en) * 2020-06-30 2021-07-06 DeepCube LTD. Partial-activation of neural network based on heat-map of neural network activity
WO2022109610A1 (en) * 2020-11-20 2022-05-27 Ephesoft Inc. Adaptive filter generator, identifying lines and table morphology
CN113313197B (zh) * 2021-06-17 2022-06-10 哈尔滨工业大学 一种全连接神经网络训练方法
JP2023040492A (ja) 2021-09-10 2023-03-23 富士通株式会社 高速化プログラム、高速化方法および情報処理装置
CN114670856B (zh) * 2022-03-30 2022-11-25 湖南大学无锡智能控制研究院 一种基于bp神经网络的参数自整定纵向控制方法及系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4040259B2 (ja) 2001-02-16 2008-01-30 株式会社リコー 画像評価装置
US6917926B2 (en) * 2001-06-15 2005-07-12 Medical Scientists, Inc. Machine learning method
US7016529B2 (en) 2002-03-15 2006-03-21 Microsoft Corporation System and method facilitating pattern recognition
CN1262104C (zh) * 2003-09-27 2006-06-28 哈尔滨工业大学 采用神经网络技术对图像进行滤波的方法
US8160354B2 (en) 2008-12-26 2012-04-17 Five Apes, Inc. Multi-stage image pattern recognizer
US8229209B2 (en) 2008-12-26 2012-07-24 Five Apes, Inc. Neural network based pattern recognizer
US8369595B1 (en) 2012-08-10 2013-02-05 EyeVerify LLC Texture features for biometric authentication
US20140310208A1 (en) 2013-04-10 2014-10-16 Machine Perception Technologies Inc. Facilitating Operation of a Machine Learning Environment
US9053365B2 (en) 2013-09-16 2015-06-09 EyeVerify, Inc. Template update for biometric authentication
US10579922B2 (en) * 2014-04-08 2020-03-03 Microsoft Technology Licensing, Llc Deep learning using alternating direction method of multipliers
KR102276339B1 (ko) * 2014-12-09 2021-07-12 삼성전자주식회사 Cnn의 근사화를 위한 학습 장치 및 방법

Also Published As

Publication number Publication date
US20160321540A1 (en) 2016-11-03
EP3289528B1 (en) 2020-10-14
CA2979046A1 (en) 2016-11-03
BR112017023028A2 (pt) 2018-07-03
US10515304B2 (en) 2019-12-24
TW201706918A (zh) 2017-02-16
WO2016175923A1 (en) 2016-11-03
CN107533669B (zh) 2021-07-20
KR20170140214A (ko) 2017-12-20
CN107533669A (zh) 2018-01-02
JP2018520404A (ja) 2018-07-26
EP3289528A1 (en) 2018-03-07

Similar Documents

Publication Publication Date Title
BR112017023028B1 (pt) Especificidade de filtro como critério de treinamento para redes neurais
KR102595399B1 (ko) 미지의 클래스들의 검출 및 미지의 클래스들에 대한 분류기들의 초기화
US11334789B2 (en) Feature selection for retraining classifiers
EP3869415A1 (en) Transfer learning in neural networks
US10083378B2 (en) Automatic detection of objects in video images
US10318848B2 (en) Methods for object localization and image classification
US10019631B2 (en) Adapting to appearance variations when tracking a target object in video sequence
CA2993011C (en) Enforced sparsity for classification
US20160283864A1 (en) Sequential image sampling and storage of fine-tuned features
US20170032247A1 (en) Media classification
KR20200023708A (ko) 객체 검출 방법, 객체 검출을 위한 학습 방법 및 그 장치들
WO2016122787A1 (en) Hyper-parameter selection for deep convolutional networks
US11710344B2 (en) Compact encoded heat maps for keypoint detection networks
BR112018004219B1 (pt) Esparsidade forçada para classficação
BR112018003434B1 (pt) Método implementado em computador e aparelho para melhorar desempenho de um modelo de aprendizagem de máquina treinado para reconhecimento de padrão ou objeto de uma imagem e memória legível por computador

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 10/03/2016, OBSERVADAS AS CONDICOES LEGAIS