Rede neural convolucional - Convolutional neural network

No aprendizado profundo , uma rede neural convolucional ( CNN ou ConvNet ) é uma classe de rede neural artificial , mais comumente aplicada para analisar imagens visuais. Eles também são conhecidos como redes neurais artificiais invariantes de deslocamento ou invariantes no espaço ( SIANN ), com base na arquitetura de peso compartilhado dos núcleos de convolução ou filtros que deslizam ao longo dos recursos de entrada e fornecem respostas equivariantes de tradução conhecidas como mapas de recursos. Contra-intuitivamente, a maioria das redes neurais convolucionais são apenas equivariantes , em oposição a invariantes , à tradução. Eles têm aplicações em imagem e vídeo reconhecimento , sistemas de recomendação , classificação de imagens , segmentação de imagens , análise de imagem médica , processamento de linguagem natural , interfaces cérebro-computador , e financeiros séries temporais .

CNNs são versões regularizadas de perceptrons multicamadas . Perceptrons multicamadas geralmente significam redes totalmente conectadas, ou seja, cada neurônio em uma camada está conectado a todos os neurônios na próxima camada . A "conectividade total" dessas redes as torna propensas a overfitting de dados. Formas típicas de regularização, ou prevenção de sobreajuste, incluem: penalizar parâmetros durante o treinamento (como queda de peso) ou reduzir a conectividade (conexões ignoradas, abandono, etc.) CNNs têm uma abordagem diferente em relação à regularização: eles tiram proveito do padrão hierárquico nos dados e montar padrões de complexidade crescente usando padrões menores e mais simples gravados em seus filtros. Portanto, em uma escala de conectividade e complexidade, as CNNs estão no extremo inferior.

As redes convolucionais foram inspiradas por processos biológicos em que o padrão de conectividade entre os neurônios se assemelha à organização do córtex visual animal . Neurônios corticais individuais respondem a estímulos apenas em uma região restrita do campo visual conhecida como campo receptivo . Os campos receptivos de diferentes neurônios se sobrepõem parcialmente, cobrindo todo o campo visual.

CNNs usam relativamente pouco pré-processamento em comparação com outros algoritmos de classificação de imagem . Isso significa que a rede aprende a otimizar os filtros (ou kernels) por meio do aprendizado automatizado, enquanto nos algoritmos tradicionais esses filtros são projetados à mão . Essa independência de conhecimento prévio e intervenção humana na extração de recursos é uma grande vantagem.

Definição

O nome "rede neural convolucional" indica que a rede emprega uma operação matemática chamada convolução . As redes convolucionais são um tipo especializado de redes neurais que usam convolução no lugar da multiplicação geral da matriz em pelo menos uma de suas camadas.

Arquitetura

Comparação da convolução LeNet e AlexNet, pooling e camadas densas

Uma rede neural convolucional consiste em uma camada de entrada, camadas ocultas e uma camada de saída. Em qualquer rede neural feed-forward, quaisquer camadas intermediárias são chamadas de ocultas porque suas entradas e saídas são mascaradas pela função de ativação e pela convolução final . Em uma rede neural convolucional, as camadas ocultas incluem camadas que realizam convoluções. Normalmente, isso inclui uma camada que realiza um produto escalar do kernel de convolução com a matriz de entrada da camada. Este produto é geralmente o produto interno Frobenius e sua função de ativação é comumente ReLU . Conforme o kernel de convolução desliza ao longo da matriz de entrada para a camada, a operação de convolução gera um mapa de recursos, que por sua vez contribui para a entrada da próxima camada. Isso é seguido por outras camadas, como camadas de pool, camadas totalmente conectadas e camadas de normalização.

Camadas convolucionais

Em uma CNN, a entrada é um tensor com uma forma: (número de entradas) x (altura de entrada) x (largura de entrada) x ( canais de entrada ). Depois de passar por uma camada convolucional, a imagem torna-se abstraída para um mapa de feições, também chamado de mapa de ativação, com a forma: (número de entradas) x (altura do mapa de feições) x (largura do mapa de feições) x ( canais do mapa de feições ).

Camadas convolucionais envolvem a entrada e passam seu resultado para a próxima camada. Isso é semelhante à resposta de um neurônio no córtex visual a um estímulo específico. Cada neurônio convolucional processa dados apenas para seu campo receptivo . Embora redes neurais feedforward totalmente conectadas possam ser usadas para aprender recursos e classificar dados, essa arquitetura geralmente é impraticável para entradas maiores, como imagens de alta resolução. Isso exigiria um número muito alto de neurônios, mesmo em uma arquitetura rasa, devido ao grande tamanho de entrada das imagens, onde cada pixel é um recurso de entrada relevante. Por exemplo, uma camada totalmente conectada para uma imagem (pequena) de tamanho 100 x 100 tem 10.000 pesos para cada neurônio na segunda camada. Em vez disso, a convolução reduz o número de parâmetros livres, permitindo que a rede seja mais profunda. Por exemplo, independentemente do tamanho da imagem, usar uma região de lado a lado 5 x 5, cada uma com os mesmos pesos compartilhados, requer apenas 25 parâmetros aprendíveis. O uso de pesos regularizados em menos parâmetros evita os gradientes de desaparecimento e os problemas de gradientes de explosão vistos durante a retropropagação em redes neurais tradicionais. Além disso, as redes neurais convolucionais são ideais para dados com uma topologia semelhante a uma grade (como imagens), pois as relações espaciais entre recursos separados são levadas em consideração durante a convolução e / ou agrupamento.

Camadas de agrupamento

As redes convolucionais podem incluir camadas de pooling locais e / ou globais juntamente com as camadas convolucionais tradicionais. As camadas agrupadas reduzem as dimensões dos dados, combinando as saídas dos clusters de neurônios em uma camada em um único neurônio na próxima camada. O pooling local combina pequenos clusters, tamanhos de ladrilhos como 2 x 2 são comumente usados. O pooling global atua em todos os neurônios do mapa de características. Existem dois tipos comuns de pool de uso comum: máximo e médio. O pooling máximo usa o valor máximo de cada cluster local de neurônios no mapa de características, enquanto o pooling médio usa o valor médio.

Camadas totalmente conectadas

Camadas totalmente conectadas conectam todos os neurônios em uma camada a todos os neurônios em outra camada . É o mesmo que uma rede neural perceptron multicamada (MLP) tradicional . A matriz achatada passa por uma camada totalmente conectada para classificar as imagens.

Campo receptivo

Em redes neurais, cada neurônio recebe entrada de alguns locais na camada anterior. Em uma camada convolucional, cada neurônio recebe entrada de apenas uma área restrita da camada anterior chamada de campo receptivo do neurônio . Normalmente, a área é um quadrado (por exemplo, 5 por 5 neurônios). Ao passo que, em uma camada totalmente conectada, o campo receptivo é toda a camada anterior . Assim, em cada camada convolucional, cada neurônio recebe entrada de uma área maior na entrada do que as camadas anteriores. Isso se deve à aplicação repetida da convolução, que leva em consideração o valor de um pixel, bem como seus pixels circundantes. Ao usar camadas dilatadas , o número de pixels no campo receptivo permanece constante, mas o campo é mais esparsamente povoado à medida que suas dimensões aumentam ao combinar o efeito de várias camadas.

Pesos

Cada neurônio em uma rede neural calcula um valor de saída aplicando uma função específica aos valores de entrada recebidos do campo receptivo na camada anterior. A função que é aplicada aos valores de entrada é determinada por um vetor de pesos e uma tendência (normalmente números reais). O aprendizado consiste em ajustar iterativamente esses vieses e pesos.

O vetor de pesos e a polarização são chamados de filtros e representam características particulares da entrada (por exemplo, uma forma particular). Uma característica distintiva das CNNs é que muitos neurônios podem compartilhar o mesmo filtro. Isso reduz a pegada de memória porque um único viés e um único vetor de pesos são usados ​​em todos os campos receptivos que compartilham esse filtro, ao contrário de cada campo receptivo ter seu próprio viés e ponderação vetorial.

História

A CNN é freqüentemente comparada à maneira como o cérebro realiza o processamento da visão em organismos vivos .

Campos receptivos no córtex visual

O trabalho de Hubel e Wiesel nas décadas de 1950 e 1960 mostrou que o córtex visual do gato contém neurônios que respondem individualmente a pequenas regiões do campo visual . Desde que os olhos não estejam se movendo, a região do espaço visual dentro da qual os estímulos visuais afetam o disparo de um único neurônio é conhecida como seu campo receptivo . As células vizinhas têm campos receptivos semelhantes e sobrepostos. O tamanho e a localização do campo receptivo variam sistematicamente ao longo do córtex para formar um mapa completo do espaço visual. O córtex em cada hemisfério representa o campo visual contralateral .

Seu artigo de 1968 identificou dois tipos básicos de células visuais no cérebro:

Hubel e Wiesel também propuseram um modelo em cascata desses dois tipos de células para uso em tarefas de reconhecimento de padrões.

Neocognitron, origem da arquitetura CNN

O " neocognitron " foi introduzido por Kunihiko Fukushima em 1980. Ele foi inspirado no trabalho acima mencionado de Hubel e Wiesel. O neocognitron introduziu os dois tipos básicos de camadas nas CNNs: camadas convolucionais e camadas de redução da resolução. Uma camada convolucional contém unidades cujos campos receptivos cobrem um trecho da camada anterior. O vetor de peso (o conjunto de parâmetros adaptativos) de tal unidade é freqüentemente chamado de filtro. As unidades podem compartilhar filtros. As camadas de redução da resolução contêm unidades cujos campos receptivos cobrem manchas de camadas convolucionais anteriores. Essa unidade normalmente calcula a média das ativações das unidades em seu patch. Essa redução da resolução ajuda a classificar corretamente os objetos em cenas visuais, mesmo quando os objetos são deslocados.

Em uma variante do neocognitron chamada cresceptron, em vez de usar a média espacial de Fukushima, J. Weng et al. introduziu um método chamado max-pooling, onde uma unidade de downsampling calcula o máximo das ativações das unidades em seu patch. O pool máximo é frequentemente usado nas CNNs modernas.

Vários algoritmos de aprendizagem supervisionada e não supervisionada foram propostos ao longo das décadas para treinar os pesos de um neocognitron. Hoje, no entanto, a arquitetura CNN geralmente é treinada por meio de retropropagação .

O neocognitron é o primeiro CNN que requer unidades localizadas em várias posições de rede para ter pesos compartilhados.

Redes neurais convolucionais foram apresentadas no Workshop de Processamento de Informação Neural em 1987, analisando automaticamente sinais que variam no tempo, substituindo a multiplicação aprendida pela convolução no tempo, e demonstrada para reconhecimento de fala.

Redes neurais de retardo de tempo

A rede neural de atraso de tempo (TDNN) foi introduzida em 1987 por Alex Waibel et al. e foi uma das primeiras redes convolucionais, pois alcançou invariância de deslocamento. Ele fez isso utilizando a divisão de peso em combinação com o treinamento de retropropagação . Assim, ao mesmo tempo que utiliza uma estrutura piramidal como no neocognitron, realizou uma otimização global dos pesos ao invés de local.

Os TDNNs são redes convolucionais que compartilham pesos ao longo da dimensão temporal. Eles permitem que os sinais de voz sejam processados ​​de forma invariável no tempo. Em 1990, Hampshire e Waibel introduziram uma variante que realiza uma convolução bidimensional. Uma vez que esses TDNNs operavam em espectrogramas, o sistema de reconhecimento de fonema resultante era invariante para ambas as mudanças no tempo e na frequência. Esta invariância de tradução inspirada no processamento de imagens com CNNs. O agrupamento de saídas de neurônios pode cobrir estágios cronometrados.

Os TDNNs agora alcançam o melhor desempenho em reconhecimento de voz à distância.

Pooling máximo

Em 1990, Yamaguchi et al. introduziu o conceito de pooling máximo, que é uma operação de filtragem fixa que calcula e propaga o valor máximo de uma determinada região. Eles fizeram isso combinando TDNNs com pooling máximo para realizar um sistema de reconhecimento de palavras isolado independente de alto-falante. Em seu sistema, eles usaram vários TDNNs por palavra, um para cada sílaba . Os resultados de cada TDNN sobre o sinal de entrada foram combinados usando o pooling máximo e as saídas das camadas de pooling foram então passadas para as redes que executam a classificação de palavras real.

Reconhecimento de imagem com CNNs treinados por gradiente descendente

Um sistema para reconhecer números de CEP escritos à mão envolvia circunvoluções nas quais os coeficientes do kernel foram laboriosamente projetados à mão.

Yann LeCun et al. (1989) usaram retropropagação para aprender os coeficientes do kernel de convolução diretamente de imagens de números escritos à mão. O aprendizado era, portanto, totalmente automático, tinha um desempenho melhor do que o design de coeficiente manual e era adequado a uma ampla gama de problemas de reconhecimento de imagem e tipos de imagem.

Essa abordagem se tornou a base da visão computacional moderna .

LeNet-5

LeNet-5, uma rede convolucional de 7 níveis pioneira de LeCun et al. em 1998, que classifica dígitos, foi aplicado por vários bancos para reconhecer números escritos à mão em cheques ( inglês britânico : cheques ) digitalizados em imagens de 32x32 pixels. A capacidade de processar imagens de resolução mais alta requer camadas maiores e mais de redes neurais convolucionais, portanto, essa técnica é limitada pela disponibilidade de recursos de computação.

Rede neural invariante ao deslocamento

Da mesma forma, uma rede neural invariante ao deslocamento foi proposta por W. Zhang et al. para reconhecimento de caracteres de imagem em 1988. A arquitetura e o algoritmo de treinamento foram modificados em 1991 e aplicados para processamento de imagens médicas e detecção automática de câncer de mama em mamografias .

Um projeto baseado em convolução diferente foi proposto em 1988 para aplicação na decomposição de sinais convolvidos de eletromiografia unidimensional via deconvolução. Este projeto foi modificado em 1989 para outros projetos baseados em deconvolução.

Pirâmide de abstração neural

Neural Abstraction Pyramid
Pirâmide de abstração neural

A arquitetura feed-forward das redes neurais convolucionais foi estendida na pirâmide de abstração neural por conexões laterais e de feedback. A rede convolucional recorrente resultante permite a incorporação flexível de informações contextuais para resolver ambiguidades locais de forma iterativa. Em contraste com os modelos anteriores, saídas semelhantes a imagens na resolução mais alta foram geradas, por exemplo, para segmentação semântica, reconstrução de imagem e tarefas de localização de objeto.

Implementações de GPU

Embora as CNNs tenham sido inventadas na década de 1980, sua descoberta na década de 2000 exigiu implementações rápidas em unidades de processamento gráfico (GPUs).

Em 2004, foi mostrado por KS Oh e K. Jung que as redes neurais padrão podem ser bastante aceleradas em GPUs. Sua implementação foi 20 vezes mais rápida do que uma implementação equivalente na CPU . Em 2005, outro artigo também enfatizou o valor do GPGPU para o aprendizado de máquina .

A primeira implementação de GPU de uma CNN foi descrita em 2006 por K. Chellapilla et al. Sua implementação foi 4 vezes mais rápida do que uma implementação equivalente na CPU. Trabalhos subsequentes também usaram GPUs, inicialmente para outros tipos de redes neurais (diferentes das CNNs), especialmente redes neurais não supervisionadas.

Em 2010, Dan Ciresan et al. na IDSIA mostrou que mesmo redes neurais de padrão profundo com muitas camadas podem ser rapidamente treinadas em GPU por aprendizado supervisionado por meio do método antigo conhecido como retropropagação . Sua rede superou os métodos de aprendizado de máquina anteriores no benchmark de dígitos manuscritos MNIST . Em 2011, eles estenderam essa abordagem de GPU às CNNs, alcançando um fator de aceleração de 60, com resultados impressionantes. Em 2011, eles usaram tais CNNs na GPU para ganhar um concurso de reconhecimento de imagem, onde alcançaram um desempenho sobre-humano pela primeira vez. Entre 15 de maio de 2011 e 30 de setembro de 2012, suas CNNs ganharam nada menos que quatro competições de imagem. Em 2012, eles também melhoraram significativamente no melhor desempenho na literatura para vários bancos de dados de imagens , incluindo o banco de dados MNIST , o banco de dados NORB, o conjunto de dados HWDB1.0 (caracteres chineses) e o conjunto de dados CIFAR10 (conjunto de dados de 60000 imagens RGB rotuladas de 32x32 ) .

Posteriormente, uma CNN baseada em GPU semelhante por Alex Krizhevsky et al. venceu o Desafio de Reconhecimento Visual em Grande Escala da ImageNet 2012. Uma CNN muito profunda com mais de 100 camadas da Microsoft venceu o concurso ImageNet 2015.

Implementações Intel Xeon Phi

Comparado ao treinamento de CNNs usando GPUs , pouca atenção foi dada ao coprocessador Intel Xeon Phi . Um desenvolvimento notável é um método de paralelização para treinar redes neurais convolucionais no Intel Xeon Phi, denominado Hogwild Controlado com Ordem Arbitrária de Sincronização (CHAOS). O CHAOS explora o paralelismo em nível de thread e SIMD que está disponível no Intel Xeon Phi.

Características distintas

No passado, os modelos tradicionais de perceptron multicamadas (MLP) eram usados ​​para reconhecimento de imagem. No entanto, a conectividade total entre os nós causou a maldição da dimensionalidade e foi computacionalmente intratável com imagens de resolução mais alta. Uma imagem de 1000 × 1000 pixels com canais de cores RGB tem 3 milhões de pesos, o que é muito alto para ser processado com eficiência em escala com conectividade total.

Camadas CNN organizadas em 3 dimensões

Por exemplo, no CIFAR-10 , as imagens têm apenas o tamanho de 32 × 32 × 3 (32 de largura, 32 de altura, 3 canais de cores), portanto, um único neurônio totalmente conectado na primeira camada oculta de uma rede neural regular teria 32 * 32 * 3 = 3.072 pesos. Uma imagem 200 × 200, no entanto, levaria a neurônios com pesos 200 * 200 * 3 = 120.000.

Além disso, tal arquitetura de rede não leva em consideração a estrutura espacial dos dados, tratando os pixels de entrada que estão distantes da mesma forma que os pixels que estão próximos. Isso ignora a localidade de referência nos dados com uma topologia de grade (como imagens), tanto computacionalmente quanto semanticamente. Assim, a conectividade total de neurônios é um desperdício para propósitos como reconhecimento de imagem que são dominados por padrões de entrada espacialmente locais .

Redes neurais convolucionais são variantes de perceptrons multicamadas, projetadas para emular o comportamento de um córtex visual . Esses modelos mitigam os desafios impostos pela arquitetura MLP, explorando a forte correlação espacial local presente em imagens naturais. Ao contrário das MLPs, as CNNs têm as seguintes características distintas:

  • Volumes 3D de neurônios. As camadas de uma CNN possuem neurônios dispostos em 3 dimensões : largura, altura e profundidade. Onde cada neurônio dentro de uma camada convolucional está conectado a apenas uma pequena região da camada anterior, chamada de campo receptivo. Tipos distintos de camadas, tanto localmente quanto completamente conectadas, são empilhadas para formar uma arquitetura CNN.
  • Conectividade local: seguindo o conceito de campos receptivos, as CNNs exploram a localidade espacial ao impor um padrão de conectividade local entre neurônios de camadas adjacentes. A arquitetura, portanto, garante que os " filtros " aprendidos produzam a resposta mais forte a um padrão de entrada espacialmente local. Empilhar muitas dessas camadas leva a filtros não lineares que se tornam cada vez mais globais (ou seja, responsivos a uma região maior do espaço do pixel), de modo que a rede primeiro cria representações de pequenas partes da entrada e, a partir delas, reúne representações de áreas maiores.
  • Pesos compartilhados: Em CNNs, cada filtro é replicado em todo o campo visual. Essas unidades replicadas compartilham a mesma parametrização (vetor de peso e bias) e formam um mapa de características. Isso significa que todos os neurônios em uma determinada camada convolucional respondem ao mesmo recurso dentro de seu campo de resposta específico. A replicação das unidades desta forma permite que o mapa de ativação resultante seja equivariado sob mudanças das localizações dos recursos de entrada no campo visual, ou seja, eles concedem equivariância translacional - dado que a camada tem uma distância de um.
  • Pooling: nas camadas de pooling de uma CNN, os mapas de recursos são divididos em sub-regiões retangulares, e os recursos em cada retângulo são amostrados independentemente para um único valor, normalmente tomando seu valor médio ou máximo. Além de reduzir os tamanhos dos mapas de recursos, a operação de agrupamento concede um grau de invariância translacional local aos recursos neles contidos, permitindo que o CNN seja mais robusto a variações em suas posições.

Juntas, essas propriedades permitem que os CNNs consigam generalizar melhor os problemas de visão . O compartilhamento de peso reduz drasticamente o número de parâmetros livres aprendidos, diminuindo assim os requisitos de memória para operar a rede e permitindo o treinamento de redes maiores e mais poderosas.

Blocos de construção

Uma arquitetura CNN é formada por uma pilha de camadas distintas que transformam o volume de entrada em um volume de saída (por exemplo, mantendo as pontuações da classe) por meio de uma função diferenciável. Alguns tipos distintos de camadas são comumente usados. Eles são discutidos mais detalhadamente abaixo.

Neurônios de uma camada convolucional (azul), conectados ao seu campo receptivo (vermelho)

Camada convolucional

A camada convolucional é o bloco de construção central de uma CNN. Os parâmetros da camada consistem em um conjunto de filtros aprendíveis (ou kernels ), que têm um pequeno campo receptivo, mas se estendem por toda a profundidade do volume de entrada. Durante a passagem direta, cada filtro é convolvido ao longo da largura e altura do volume de entrada, computando o produto escalar entre as entradas do filtro e a entrada, produzindo um mapa de ativação bidimensional desse filtro. Como resultado, a rede aprende filtros que são ativados quando detecta algum tipo específico de recurso em alguma posição espacial na entrada.

Empilhar os mapas de ativação para todos os filtros ao longo da dimensão de profundidade forma o volume total de saída da camada de convolução. Cada entrada no volume de saída pode, portanto, também ser interpretada como uma saída de um neurônio que olha para uma pequena região na entrada e compartilha parâmetros com os neurônios no mesmo mapa de ativação.

Conectividade local

Arquitetura típica da CNN

Ao lidar com entradas de alta dimensão, como imagens, é impraticável conectar neurônios a todos os neurônios no volume anterior porque essa arquitetura de rede não leva em consideração a estrutura espacial dos dados. As redes convolucionais exploram a correlação espacial local, impondo um padrão de conectividade local esparso entre neurônios de camadas adjacentes: cada neurônio está conectado a apenas uma pequena região do volume de entrada.

A extensão dessa conectividade é um hiperparâmetro denominado campo receptivo do neurônio. As conexões são locais no espaço (ao longo da largura e da altura), mas sempre se estendem ao longo de toda a profundidade do volume de entrada. Tal arquitetura garante que os filtros aprendidos produzam a resposta mais forte a um padrão de entrada espacialmente local.

Arranjo espacial

Três hiperparâmetros controlam o tamanho do volume de saída da camada convolucional: a profundidade, a passada e o tamanho do enchimento.

  • A profundidade do volume de saída controla o número de neurônios em uma camada que se conecta à mesma região do volume de entrada. Esses neurônios aprendem a se ativar para diferentes recursos na entrada. Por exemplo, se a primeira camada convolucional leva a imagem bruta como entrada, então diferentes neurônios ao longo da dimensão de profundidade podem ser ativados na presença de várias bordas orientadas ou manchas de cor.
  • Stride controla como as colunas de profundidade em torno da largura e altura são alocadas. Se a distância for 1, movemos os filtros um pixel por vez. Isso leva acampos receptivos sobrepostos pesadamenteentre as colunas e a grandes volumes de saída. Para qualquer inteiro,um passo S significa que o filtro é traduzido S unidades de cada vez por saída. Na prática,é raro. Uma passada maior significa menor sobreposição de campos receptivos e menores dimensões espaciais do volume de saída.
  • Às vezes, é conveniente preencher a entrada com zeros (ou outros valores, como a média da região) na borda do volume de entrada. O tamanho desse preenchimento é um terceiro hiperparâmetro. O preenchimento fornece controle do tamanho espacial do volume de saída. Em particular, às vezes é desejável preservar exatamente o tamanho espacial do volume de entrada, isso é comumente referido como "mesmo" preenchimento.

O tamanho espacial do volume de saída é uma função do tamanho do volume de entrada , o tamanho do campo kernel dos neurônios da camada convolucional, a passada e a quantidade de preenchimento zero na borda. O número de neurônios que "cabem" em um determinado volume é então:

Se esse número não for um inteiro , os passos estão incorretos e os neurônios não podem ser dispostos lado a lado para caber no volume de entrada de maneira simétrica . Em geral, definir o preenchimento de zero para quando a passada for garante que o volume de entrada e o volume de saída terão o mesmo tamanho espacialmente. No entanto, nem sempre é totalmente necessário usar todos os neurônios da camada anterior. Por exemplo, um designer de rede neural pode decidir usar apenas uma parte do preenchimento.

Compartilhamento de parâmetros

Um esquema de compartilhamento de parâmetro é usado em camadas convolucionais para controlar o número de parâmetros livres. Ele se baseia na suposição de que se um recurso de patch é útil para calcular em alguma posição espacial, então também deve ser útil para calcular em outras posições. Denotando uma única fatia bidimensional de profundidade como uma fatia de profundidade , os neurônios em cada fatia de profundidade são restringidos a usar os mesmos pesos e polarização.

Como todos os neurônios em uma única fatia de profundidade compartilham os mesmos parâmetros, a passagem para frente em cada fatia de profundidade da camada convolucional pode ser calculada como uma convolução dos pesos do neurônio com o volume de entrada. Portanto, é comum se referir aos conjuntos de pesos como um filtro (ou um kernel ), que é convolvido com a entrada. O resultado dessa convolução é um mapa de ativação , e o conjunto de mapas de ativação para cada filtro diferente são empilhados ao longo da dimensão de profundidade para produzir o volume de saída. O compartilhamento de parâmetros contribui para a invariância de tradução da arquitetura CNN.

Às vezes, a suposição de compartilhamento de parâmetro pode não fazer sentido. Esse é especialmente o caso quando as imagens de entrada para uma CNN têm alguma estrutura centralizada específica; para o qual esperamos que características completamente diferentes sejam aprendidas em diferentes localizações espaciais. Um exemplo prático é quando as entradas são rostos que foram centralizados na imagem: podemos esperar que diferentes características específicas do olho ou do cabelo sejam aprendidas em diferentes partes da imagem. Nesse caso, é comum relaxar o esquema de compartilhamento de parâmetros e, em vez disso, simplesmente chamar a camada de "camada conectada localmente".

Camada de pooling

Pooling máximo com um filtro 2x2 e passo = 2

Outro conceito importante das CNNs é o pooling, que é uma forma de amostragem não linear . Existem várias funções não lineares para implementar o pooling, onde o pooling máximo é o mais comum. Ele divide a imagem de entrada em um conjunto de retângulos e, para cada sub-região, produz o máximo.

Intuitivamente, a localização exata de um recurso é menos importante do que sua localização aproximada em relação a outros recursos. Esta é a ideia por trás do uso de pooling em redes neurais convolucionais. A camada de pooling serve para reduzir progressivamente o tamanho espacial da representação, para reduzir o número de parâmetros, espaço de memória e quantidade de computação na rede e, portanto, para controlar também o sobreajuste . Isso é conhecido como down-sampling. É comum inserir periodicamente uma camada de pooling entre camadas convolucionais sucessivas (cada uma normalmente seguida por uma função de ativação, como uma camada ReLU ) em uma arquitetura CNN. Embora as camadas de agrupamento contribuam para a invariância de tradução local, elas não fornecem invariância de tradução global em uma CNN, a menos que uma forma de agrupamento global seja usada. A camada de agrupamento normalmente opera independentemente em cada profundidade, ou fatia, da entrada e a redimensiona espacialmente. Uma forma muito comum de pooling máximo é uma camada com filtros de tamanho 2 × 2, aplicada com uma passada de 2, que subamostra cada fatia de profundidade na entrada por 2 ao longo da largura e da altura, descartando 75% das ativações:

Nesse caso, cada operação máxima tem mais de 4 números. A dimensão de profundidade permanece inalterada (isso também é válido para outras formas de pool).

Além do pooling máximo, as unidades de pool podem usar outras funções, como pooling médio ou pooling de 2- norma . O pool médio costumava ser usado historicamente, mas recentemente caiu em desuso em comparação com o pooling máximo, que geralmente tem um desempenho melhor na prática.

Devido aos efeitos da rápida redução espacial do tamanho da representação, há uma tendência recente de usar filtros menores ou descartar camadas de agrupamento.

Agrupamento de RoI no tamanho 2x2. Neste exemplo, a proposta de região (um parâmetro de entrada) tem o tamanho 7x5.

O pooling " Region of Interest " (também conhecido como pooling RoI) é uma variante do pooling máximo, no qual o tamanho de saída é fixo e o retângulo de entrada é um parâmetro.

O pooling é um componente importante das redes neurais convolucionais para detecção de objetos com base na arquitetura Fast R-CNN.

Camada ReLU

ReLU é a abreviatura de unidade linear retificada , que aplica a função de ativação não saturante . Ele remove efetivamente os valores negativos de um mapa de ativação, definindo-os como zero. Ele introduz não linearidades na função de decisão e na rede geral, sem afetar os campos receptivos das camadas de convolução.

Outras funções podem também ser usadas para aumentar a não linearidade, por exemplo, a saturação tangente hiperbólica , e a função sigmóide . O ReLU é frequentemente preferido a outras funções porque treina a rede neural várias vezes mais rápido sem uma penalidade significativa para a precisão da generalização .

Camada totalmente conectada

Após várias camadas convolucionais e de pooling máximo, a classificação final é feita por meio de camadas totalmente conectadas. Os neurônios em uma camada totalmente conectada têm conexões com todas as ativações na camada anterior, como visto em redes neurais artificiais regulares (não convolucionais) . Suas ativações podem, portanto, ser calculadas como uma transformação afim , com a multiplicação da matriz seguida por um deslocamento de polarização ( adição de vetor de um termo de polarização aprendido ou fixo).

Camada de perda

A "camada de perda", ou " função de perda ", especifica como o treinamento penaliza o desvio entre a saída prevista da rede e os rótulos de dados reais (durante o aprendizado supervisionado). Várias funções de perda podem ser usadas, dependendo da tarefa específica.

A função de perda Softmax é usada para prever uma única classe de K classes mutuamente exclusivas. A perda de entropia cruzada sigmóide é usada para prever os valores de probabilidade independentes de K em . A perda euclidiana é usada para regressar a rótulos de valor real .

Hiperparâmetros

Hiperparâmetros são várias configurações usadas para controlar o processo de aprendizagem. CNNs usam mais hiperparâmetros do que um perceptron multicamadas padrão (MLP).

Tamanho do kernel

O kernel é o número de pixels processados ​​juntos. Normalmente é expresso como as dimensões do kernel, por exemplo, 2x2 ou 3x3.

Preenchimento

Preenchimento é a adição de pixels (normalmente) de valor 0 nas bordas de uma imagem. Isso é feito para que os pixels da borda não sejam subestimados (perdidos) na saída, porque normalmente participariam de apenas uma única instância de campo receptivo. O preenchimento é normalmente definido para a dimensão -1 do kernel. Portanto, um kernel 3x3 receberia uma almofada de 2 pixels em todos os lados da imagem.

Stride

A distância é o número de pixels que a janela de análise se move em cada iteração. Um passo de 2 significa que cada kernel é deslocado em 2 pixels de seu predecessor.

Número de filtros

Como o tamanho do mapa de feições diminui com a profundidade, as camadas próximas à camada de entrada tendem a ter menos filtros, enquanto as camadas mais altas podem ter mais. Para equalizar a computação em cada camada, o produto dos valores de recurso v a com a posição do pixel é mantido aproximadamente constante entre as camadas. Preservar mais informações sobre a entrada exigiria manter o número total de ativações (número de mapas de recursos vezes número de posições de pixel) não diminuindo de uma camada para a próxima.

O número de mapas de recursos controla diretamente a capacidade e depende do número de exemplos disponíveis e da complexidade da tarefa.

Tamanho do filtro

Os tamanhos de filtro comuns encontrados na literatura variam muito e geralmente são escolhidos com base no conjunto de dados.

O desafio é encontrar o nível certo de granularidade para criar abstrações na escala adequada, dado um determinado conjunto de dados, e sem overfitting .

Tipo e tamanho de pooling

O pool máximo é normalmente usado, geralmente com uma dimensão 2x2. Isso significa que a resolução da entrada é drasticamente reduzida, reduzindo o custo de processamento.

Grandes volumes de entrada podem justificar um agrupamento 4 × 4 nas camadas inferiores. Um agrupamento maior reduz a dimensão do sinal e pode resultar em perda de informações inaceitável . Freqüentemente, as janelas de pool não sobrepostas têm melhor desempenho.

Dilatação

A dilatação envolve ignorar pixels dentro de um kernel. Isso reduz o processamento / memória potencialmente sem perda significativa de sinal. Uma dilatação de 2 em um kernel 3x3 expande o kernel para 7x7, enquanto ainda processa 9 pixels (espaçados uniformemente). Consequentemente, a dilatação de 4 expande o kernel para 15x15.

Equivariância de tradução

É comumente assumido que os CNNs são invariantes às mudanças da entrada. No entanto, as camadas de convolução ou agrupamento dentro de uma CNN que não têm uma passada maior do que um são equivariáveis , em oposição a invariantes , às traduções da entrada. Camadas com uma distância maior que um ignora o teorema de amostragem de Nyquist-Shannon e leva ao aliasing do sinal de entrada, que quebra a propriedade de equivariância (também conhecida como covariância). Além disso, se uma CNN faz uso de camadas totalmente conectadas, a equivariância da tradução não implica invariância da tradução , pois as camadas totalmente conectadas não são invariantes aos deslocamentos da entrada. Uma solução para a invariância de tradução completa é evitar qualquer redução de amostragem em toda a rede e aplicar o agrupamento médio global na última camada. Além disso, várias outras soluções parciais foram propostas, como anti-aliasing , redes de transformadores espaciais, aumento de dados , subamostragem combinada com pooling e redes neurais de cápsula .

Avaliação

A precisão do modelo final com base em uma subparte do conjunto de dados aparece no início, geralmente chamado de conjunto de teste. Outras vezes, métodos como validação cruzada k -fold são aplicados. Outras estratégias incluem o uso de previsão conforme .

Métodos de regularização

A regularização é um processo de introdução de informações adicionais para resolver um problema mal-colocado ou para evitar sobreajuste . As CNNs usam vários tipos de regularização.

Empírico

Cair fora

Como uma camada totalmente conectada ocupa a maioria dos parâmetros, ela está sujeita a sobreajuste. Um método para reduzir o sobreajuste é o abandono . Em cada estágio de treinamento, nós individuais são "retirados" da rede (ignorados) com probabilidade ou mantidos com probabilidade , de modo que uma rede reduzida é deixada; as bordas de entrada e saída para um nó descartado também são removidas. Apenas a rede reduzida é treinada nos dados nesse estágio. Os nós removidos são então reinseridos na rede com seus pesos originais.

Nos estágios de treinamento, geralmente é 0,5; para nós de entrada, é normalmente muito mais alto porque as informações são perdidas diretamente quando os nós de entrada são ignorados.

No momento do teste, após o término do treinamento, o ideal é encontrar uma média de amostra de todas as redes possíveis descartadas; infelizmente isso é inviável para grandes valores de . No entanto, podemos encontrar uma aproximação usando a rede completa com a saída de cada nó ponderada por um fator de , então o valor esperado da saída de qualquer nó é o mesmo que nos estágios de treinamento. Esta é a maior contribuição do método de dropout: embora ele efetivamente gere redes neurais e, como tal, permita a combinação de modelos, no momento do teste apenas uma única rede precisa ser testada.

Ao evitar o treinamento de todos os nós em todos os dados de treinamento, o abandono diminui o sobreajuste. O método também melhora significativamente a velocidade de treinamento. Isso torna a combinação do modelo prática, mesmo para redes neurais profundas . A técnica parece reduzir as interações dos nós, levando-os a aprender recursos mais robustos que generalizam melhor para novos dados.

DropConnect

DropConnect é a generalização de dropout em que cada conexão, ao invés de cada unidade de saída, pode ser descartada com probabilidade . Cada unidade, portanto, recebe entrada de um subconjunto aleatório de unidades na camada anterior.

DropConnect é semelhante ao dropout, pois introduz esparsidade dinâmica dentro do modelo, mas difere porque a dispersão está nos pesos, em vez dos vetores de saída de uma camada. Em outras palavras, a camada totalmente conectada com DropConnect torna-se uma camada esparsamente conectada na qual as conexões são escolhidas aleatoriamente durante o estágio de treinamento.

Pooling estocástico

Uma grande desvantagem do Dropout é que ele não tem os mesmos benefícios para as camadas convolucionais, onde os neurônios não estão totalmente conectados.

No agrupamento estocástico, as operações convencionais de agrupamento determinísticas são substituídas por um procedimento estocástico, onde a ativação dentro de cada região de agrupamento é escolhida aleatoriamente de acordo com uma distribuição multinomial , dada pelas atividades dentro da região de agrupamento. Essa abordagem é livre de hiperparâmetros e pode ser combinada com outras abordagens de regularização, como dropout e aumento de dados .

Uma visão alternativa do agrupamento estocástico é que ele é equivalente ao agrupamento máximo padrão, mas com muitas cópias de uma imagem de entrada, cada uma com pequenas deformações locais . Isso é semelhante às deformações elásticas explícitas das imagens de entrada, que oferecem excelente desempenho no conjunto de dados MNIST . O uso de agrupamento estocástico em um modelo de multicamadas fornece um número exponencial de deformações, uma vez que as seleções nas camadas superiores são independentes daquelas abaixo.

Dados artificiais

Como o grau de sobreajuste do modelo é determinado tanto por sua potência quanto pela quantidade de treinamento que recebe, fornecer uma rede convolucional com mais exemplos de treinamento pode reduzir o sobreajuste. Como essas redes geralmente são treinadas com todos os dados disponíveis, uma abordagem é gerar novos dados do zero (se possível) ou perturbar os dados existentes para criar novos. Por exemplo, as imagens de entrada podem ser cortadas, giradas ou redimensionadas para criar novos exemplos com os mesmos rótulos do conjunto de treinamento original.

Explícito

Parada precoce

Um dos métodos mais simples para evitar o overfitting de uma rede é simplesmente interromper o treinamento antes que o overfitting tenha a chance de ocorrer. Tem a desvantagem de o processo de aprendizagem ser interrompido.

Número de parâmetros

Outra maneira simples de evitar o sobreajuste é limitar o número de parâmetros, normalmente limitando o número de unidades ocultas em cada camada ou limitando a profundidade da rede. Para redes convolucionais, o tamanho do filtro também afeta o número de parâmetros. Limitar o número de parâmetros restringe o poder preditivo da rede diretamente, reduzindo a complexidade da função que ela pode executar nos dados e, portanto, limita a quantidade de sobreajuste. Isso é equivalente a uma " norma zero ".

Queda de peso

Uma forma simples de regularizador adicionado é a redução do peso, que simplesmente adiciona um erro adicional, proporcional à soma dos pesos ( norma L1 ) ou magnitude quadrada ( norma L2 ) do vetor de peso, ao erro em cada nó. O nível de complexidade do modelo aceitável pode ser reduzido aumentando a constante de proporcionalidade (hiperparâmetro 'alfa'), aumentando assim a penalidade para vetores de peso grandes.

A regularização L2 é a forma mais comum de regularização. Pode ser implementado penalizando a magnitude quadrada de todos os parâmetros diretamente na objetiva. A regularização L2 tem a interpretação intuitiva de vetores de peso de pico fortemente penalizantes e preferindo vetores de peso difuso. Devido às interações multiplicativas entre pesos e entradas, isso tem a propriedade útil de encorajar a rede a usar um pouco todas as suas entradas em vez de apenas algumas de suas entradas.

A regularização L1 também é comum. Isso torna os vetores de peso esparsos durante a otimização. Em outras palavras, os neurônios com regularização L1 acabam usando apenas um subconjunto esparso de suas entradas mais importantes e se tornam quase invariantes às entradas ruidosas. L1 com regularização L2 podem ser combinados; isso é chamado de regularização de rede elástica .

Restrições de norma máximas

Outra forma de regularização é impor um limite superior absoluto na magnitude do vetor de peso para cada neurônio e usar a descida de gradiente projetada para impor a restrição. Na prática, isso corresponde a realizar a atualização do parâmetro normalmente e, em seguida, aplicar a restrição ao fixar o vetor de peso de cada neurônio para satisfazer . Os valores típicos de são da ordem de 3–4. Alguns artigos relatam melhorias no uso dessa forma de regularização.

Quadros de coordenadas hierárquicas

O agrupamento perde as relações espaciais precisas entre as partes de alto nível (como nariz e boca em uma imagem de rosto). Esses relacionamentos são necessários para o reconhecimento da identidade. Sobrepor os pools para que cada recurso ocorra em vários pools, ajuda a reter as informações. A tradução sozinha não pode extrapolar a compreensão das relações geométricas para um ponto de vista radicalmente novo, como uma orientação ou escala diferente. Por outro lado, as pessoas são muito boas em extrapolar; depois de ver uma nova forma, eles podem reconhecê-la de um ponto de vista diferente.

Uma forma comum anterior de lidar com esse problema é treinar a rede em dados transformados em diferentes orientações, escalas, iluminação, etc. de modo que a rede possa lidar com essas variações. Isso é computacionalmente intensivo para grandes conjuntos de dados. A alternativa é usar uma hierarquia de quadros de coordenadas e usar um grupo de neurônios para representar uma conjunção da forma do recurso e sua postura em relação à retina . A pose em relação à retina é a relação entre o quadro de coordenadas da retina e o quadro de coordenadas dos recursos intrínsecos.

Portanto, uma maneira de representar algo é incorporar o quadro de coordenadas dentro dele. Isso permite que grandes características sejam reconhecidas usando a consistência das poses de suas partes (por exemplo, as poses do nariz e da boca fazem uma previsão consistente da pose de todo o rosto). Essa abordagem garante que a entidade de nível superior (por exemplo, rosto) esteja presente quando a entidade de nível inferior (por exemplo, nariz e boca) concorda em sua previsão da postura. Os vetores de atividade neuronal que representam a pose ("vetores de pose") permitem transformações espaciais modeladas como operações lineares que tornam mais fácil para a rede aprender a hierarquia de entidades visuais e generalizar entre pontos de vista. Isso é semelhante à maneira como o sistema visual humano impõe quadros de coordenadas para representar as formas.

Formulários

Reconhecimento de imagem

CNNs são freqüentemente usados ​​em sistemas de reconhecimento de imagem . Em 2012, foi relatada uma taxa de erro de 0,23% na base de dados MNIST . Outro artigo sobre o uso da CNN para classificação de imagens relatou que o processo de aprendizagem foi "surpreendentemente rápido"; no mesmo artigo, os melhores resultados publicados em 2011 foram obtidos na base de dados MNIST e na base de dados NORB. Posteriormente, uma CNN semelhante chamada AlexNet venceu o Desafio de Reconhecimento Visual em Grande Escala ImageNet 2012.

Quando aplicado ao reconhecimento facial , as CNNs alcançaram uma grande redução na taxa de erro. Outro artigo relatou uma taxa de reconhecimento de 97,6% em "5.600 imagens estáticas de mais de 10 assuntos". As CNNs foram utilizadas para avaliar a qualidade do vídeo de forma objetiva após o treinamento manual; o sistema resultante tinha um erro quadrático médio de raiz muito baixo .

O Desafio de Reconhecimento Visual em Grande Escala da ImageNet é uma referência em classificação e detecção de objetos, com milhões de imagens e centenas de classes de objetos. No ILSVRC 2014, um desafio de reconhecimento visual em grande escala, quase todas as equipes altamente classificadas usaram a CNN como estrutura básica. O vencedor GoogLeNet (a base do DeepDream ) aumentou a precisão média da detecção de objetos para 0,439329 e reduziu o erro de classificação para 0,06656, o melhor resultado até agora. Sua rede aplicou mais de 30 camadas. Esse desempenho das redes neurais convolucionais nos testes ImageNet foi próximo ao dos humanos. Os melhores algoritmos ainda lutam com objetos que são pequenos ou finos, como uma pequena formiga no caule de uma flor ou uma pessoa segurando uma pena na mão. Eles também têm problemas com imagens distorcidas com filtros, um fenômeno cada vez mais comum nas câmeras digitais modernas. Em contraste, esse tipo de imagem raramente incomoda os humanos. Os humanos, entretanto, tendem a ter problemas com outros problemas. Por exemplo, eles não são bons em classificar objetos em categorias refinadas, como a raça particular de cachorro ou espécie de pássaro, enquanto as redes neurais convolucionais lidam com isso.

Em 2015, uma CNN de várias camadas demonstrou a capacidade de detectar rostos de uma ampla variedade de ângulos, incluindo de cabeça para baixo, mesmo quando parcialmente ocluída, com desempenho competitivo. A rede foi treinada em um banco de dados de 200.000 imagens que incluíam rostos em vários ângulos e orientações e mais 20 milhões de imagens sem rostos. Eles usaram lotes de 128 imagens em mais de 50.000 iterações.

Análise de vídeo

Em comparação com os domínios de dados de imagem, há relativamente pouco trabalho na aplicação de CNNs à classificação de vídeo. O vídeo é mais complexo do que as imagens, pois possui outra dimensão (temporal). No entanto, algumas extensões de CNNs no domínio de vídeo foram exploradas. Uma abordagem é tratar o espaço e o tempo como dimensões equivalentes da entrada e realizar convoluções no tempo e no espaço. Outra maneira é fundir os recursos de duas redes neurais convolucionais, uma para o fluxo espacial e outra para o fluxo temporal. As unidades recorrentes de memória longa de curto prazo (LSTM) são normalmente incorporadas após o CNN para contabilizar as dependências entre quadros ou clipes. Esquemas de aprendizado não supervisionado para treinamento de características espaço-temporais foram introduzidos, com base em Convolutional Gated Restricted Boltzmann Machines e Independent Subspace Analysis.

Processamento de linguagem natural

CNNs também têm sido exploradas para processamento de linguagem natural . Os modelos CNN são eficazes para vários problemas de PNL e alcançaram excelentes resultados em análise semântica , recuperação de consulta de pesquisa, modelagem de frases, classificação, previsão e outras tarefas tradicionais de PNL. Em comparação com métodos tradicionais de processamento de linguagem, como redes neurais recorrentes , CNNs podem representar diferentes realidades contextuais da linguagem que não dependem de uma suposição de sequência de série, enquanto RNNs são mais adequados quando a modelagem de série de tempo clássico é necessária

Detecção de anomalia

Um CNN com convoluções 1-D foi usado em séries temporais no domínio da frequência (residual espectral) por um modelo não supervisionado para detectar anomalias no domínio do tempo.

Descoberta de drogas

CNNs têm sido usados ​​na descoberta de drogas . Prever a interação entre moléculas e proteínas biológicas pode identificar potenciais tratamentos. Em 2015, a Atomwise lançou o AtomNet, a primeira rede neural de aprendizado profundo para o projeto racional de medicamentos com base em estrutura . O sistema treina diretamente em representações tridimensionais de interações químicas. Semelhante a como as redes de reconhecimento de imagem aprendem a compor recursos menores e espacialmente próximos em estruturas maiores e complexas, o AtomNet descobre recursos químicos, como aromaticidade , carbonos sp 3 e ligações de hidrogênio . Posteriormente, o AtomNet foi usado para prever novas biomoléculas candidatas para alvos de múltiplas doenças, principalmente tratamentos para o vírus Ebola e esclerose múltipla .

Avaliação de risco à saúde e biomarcadores da descoberta do envelhecimento

As CNNs podem ser adaptadas naturalmente para analisar uma coleção suficientemente grande de dados de séries temporais que representam fluxos de atividade física humana de uma semana aumentados pelos ricos dados clínicos (incluindo o registro de óbitos, conforme fornecido, por exemplo, pelo estudo NHANES ). Um CNN simples foi combinado com o modelo de riscos proporcionais de Cox-Gompertz e usado para produzir um exemplo de prova de conceito de biomarcadores digitais de envelhecimento na forma de preditor de mortalidade por todas as causas.

Jogo de damas

CNNs têm sido usados ​​no jogo de damas . De 1999 a 2001, Fogel e Chellapilla publicaram artigos mostrando como uma rede neural convolucional poderia aprender a jogar damas usando coevolução . O processo de aprendizagem não utilizou jogos humanos profissionais anteriores, mas sim focou em um conjunto mínimo de informações contidas no tabuleiro: a localização e o tipo das peças, e a diferença no número de peças entre os dois lados. No final das contas , o programa ( Blondie24 ) foi testado em 165 jogos contra jogadores e classificado entre os 0,4% mais altos. Ele também ganhou uma vitória contra o programa Chinook em seu nível de jogo "especialista".

Ir

CNNs têm sido usados ​​no computador Go . Em dezembro de 2014, Clark e Storkey publicaram um artigo mostrando que uma CNN treinada por aprendizado supervisionado de um banco de dados de jogos profissionais humanos poderia superar o GNU Go e ganhar alguns jogos contra Monte Carlo tree search Fuego 1.1 em uma fração do tempo que levou para Fuego Toque. Mais tarde, foi anunciado que uma grande rede neural convolucional de 12 camadas previu corretamente o movimento profissional em 55% das posições, igualando a precisão de um jogador humano de 6 dan . Quando a rede convolucional treinada foi usada diretamente para jogar jogos de Go, sem nenhuma pesquisa, ela superou o programa de pesquisa tradicional GNU Go em 97% dos jogos e igualou o desempenho do programa de pesquisa de árvore de Monte Carlo Fuego simulando dez mil playouts (cerca de um milhão de posições) por movimento.

Um par de CNNs para escolher movimentos para tentar ("rede de políticas") e posições de avaliação ("rede de valor") dirigindo MCTS foram usados ​​por AlphaGo , o primeiro a vencer o melhor jogador humano na época.

Previsão de série temporal

As redes neurais recorrentes são geralmente consideradas as melhores arquiteturas de rede neural para previsão de séries temporais (e modelagem de sequência em geral), mas estudos recentes mostram que as redes convolucionais podem ter um desempenho comparável ou até melhor. As convoluções dilatadas podem permitir que as redes neurais convolucionais unidimensionais aprendam com eficácia as dependências das séries temporais. As convoluções podem ser implementadas com mais eficiência do que as soluções baseadas em RNN e não sofrem com gradientes de desaparecimento (ou explosão). As redes convolucionais podem fornecer um desempenho de previsão aprimorado quando há várias séries temporais semelhantes para aprender. As CNNs também podem ser aplicadas a outras tarefas na análise de séries temporais (por exemplo, classificação de séries temporais ou previsão de quantis).

Patrimônio cultural e conjuntos de dados 3D

À medida que descobertas arqueológicas como tabuletas de argila com escrita cuneiforme são cada vez mais adquiridas usando scanners 3D, primeiros conjuntos de dados de referência estão se tornando disponíveis, como HeiCuBeDa, fornecendo quase 2.000 conjuntos de dados 2D e 3D normalizados preparados com o GigaMesh Software Framework . Assim, as medidas baseadas em curvatura são usadas em conjunto com Redes Neurais Geométricas (GNNs), por exemplo, para a classificação de período dessas tabuletas de argila, estando entre os documentos mais antigos da história humana.

Afinação

Para muitos aplicativos, os dados de treinamento estão menos disponíveis. As redes neurais convolucionais geralmente requerem uma grande quantidade de dados de treinamento para evitar ajustes excessivos . Uma técnica comum é treinar a rede em um conjunto de dados maior de um domínio relacionado. Depois que os parâmetros de rede convergiram, uma etapa de treinamento adicional é executada usando os dados no domínio para ajustar os pesos da rede, isso é conhecido como aprendizado de transferência . Além disso, esta técnica permite que arquiteturas de rede convolucionais sejam aplicadas com sucesso a problemas com pequenos conjuntos de treinamento.

Explicações interpretáveis ​​por humanos

O treinamento de ponta a ponta e a previsão são práticas comuns na visão computacional . No entanto, explicações interpretáveis ​​por humanos são necessárias para sistemas críticos , como carros autônomos . Com os avanços recentes em destaque visual , atenção espacial e temporal , as regiões espaciais / instantes temporais mais críticos puderam ser visualizados para justificar as previsões da CNN.

Arquiteturas relacionadas

Deep Q-networks

Uma rede Q profunda (DQN) é um tipo de modelo de aprendizagem profunda que combina uma rede neural profunda com Q-learning , uma forma de aprendizagem por reforço . Ao contrário dos agentes de aprendizagem por reforço anteriores, os DQNs que utilizam CNNs podem aprender diretamente a partir de entradas sensoriais de alta dimensão por meio da aprendizagem por reforço.

Os resultados preliminares foram apresentados em 2014, com um artigo de acompanhamento em fevereiro de 2015. A pesquisa descreveu um aplicativo para jogos Atari 2600 . Outros modelos de aprendizado por reforço profundo o precederam.

Redes de crenças profundas

Redes convolucionais de crenças profundas (CDBN) têm estrutura muito semelhante às redes neurais convolucionais e são treinadas de forma semelhante às redes de crenças profundas. Portanto, eles exploram a estrutura 2D das imagens, como fazem as CNNs, e fazem uso do pré-treinamento como redes de crenças profundas . Eles fornecem uma estrutura genérica que pode ser usada em muitas tarefas de processamento de imagens e sinais. Os resultados de benchmark em conjuntos de dados de imagem padrão como CIFAR foram obtidos usando CDBNs.

Bibliotecas notáveis

  • Caffe : Uma biblioteca para redes neurais convolucionais. Criado pelo Berkeley Vision and Learning Center (BVLC). Suporta CPU e GPU. Desenvolvido em C ++ , possui wrappers Python e MATLAB .
  • Deeplearning4j : Aprendizado profundo em Java e Scala no Spark habilitado para multi-GPU . Uma biblioteca de aprendizado profundo de uso geral para a pilha de produção JVM em execução em um mecanismo de computação científica C ++. Permite a criação de camadas personalizadas. Integra-se com Hadoop e Kafka.
  • Dlib : Um kit de ferramentas para fazer aplicativos de aprendizado de máquina e análise de dados do mundo real em C ++.
  • Kit de ferramentas cognitivas da Microsoft : um kit de ferramentas de aprendizado profundo escrito pela Microsoft com vários recursos exclusivos que aumentam a escalabilidade em vários nós. Ele oferece suporte a interfaces completas para treinamento em C ++ e Python e com suporte adicional para inferência de modelos em C # e Java.
  • TensorFlow : biblioteca semelhante ao Theano licenciada pelo Apache 2.0 com suporte para CPU, GPU, unidade de processamento tensor (TPU) proprietária do Google e dispositivos móveis.
  • Theano : A biblioteca de aprendizado profundo de referência para Python com uma API amplamente compatível com a popular biblioteca NumPy . Permite ao usuário escrever expressões matemáticas simbólicas e, em seguida, gerar automaticamente seus derivados, evitando que o usuário tenha que codificar gradientes ou retropropagação. Essas expressões simbólicas são compiladas automaticamente para o código CUDA para uma implementação rápida na GPU .
  • Torch : Um framework de computação científica com amplo suporte para algoritmos de aprendizado de máquina, escrito em C e Lua . O autor principal é Ronan Collobert e agora é usado no Facebook AI Research e no Twitter.

APIs notáveis

Veja também

Notas

Referências

links externos