No contexto de inteligência artificial e aprendizagem de máquina, uma Rede Neural Convolucional (CNN do inglês Convolutional Neural network ou ConvNet) é uma classe de Rede Neural Artificial, do tipo feed-forward, que vem sendo aplicada com sucesso no processamento e análise de imagens digitais.
A CNN usa uma variação de perceptrons multicamada desenvolvidos de modo a demandar o mínimo pré-processamento possível. Essas redes também são conhecidas como redes neurais artificiais invariantes a deslocamento (shift invariant) ou invariantes a espaço (space invariant), em ambos os casos representadas pela sigla em inglês SIANN.
As redes convolucionais são inspiradas nos processos biológicos. Nelas, o padrão de conectividade entre os neurônios é inspirado na organização do córtex visual dos animais. Neurônios corticais individuais respondem a estímulos apenas em regiões restritas do campo de visão, conhecidas como campos receptivos. Os campos receptivos de diferentes neurônios se sobrepõem parcialmente de forma a cobrir todo o campo de visão.
Uma CNN tende a demandar um nível mínimo de pré-processamento quando comparada a outros algoritmos de classificação de imagens. Isso significa que a rede "aprende" os filtros que em um algoritmo tradicional precisariam ser implementados manualmente. Essa independência de um conhecimento a priori e do esforço humano no desenvolvimento de suas funcionalidades básicas pode ser considerada a maior vantagem de sua aplicação.
Esse tipo de rede é usada principalmente em reconhecimento de imagens e processamento de vídeo, embora já tenha sido aplicada com sucesso em experimentos envolvendo processamento de voz e linguagem natural.
Na saúde, usa-se esta metodologia com algoritmos específicos, recorrendo a um grande número de fotografias clínicas, para o diagnóstico da retinopatia diabética e do cancro da pele, com resultados muito precisos e comparáveis aos clínicos especializados.
Arquitetura
miniaturadaimagem|480x480px|Comparação das camadas de convolução, agrupamento (pooling) e densas da LeNet (1995) e da AlexNet (2012) Uma rede neural convolucional consiste numa camada de entrada, camadas ocultas e uma camada de saída. Numa rede neural convolucional, as camadas ocultas incluem uma ou mais camadas que realizam convoluções. Tipicamente, isto inclui uma camada que executa um produto escalar do núcleo (kernel) de convolução com a matriz de entrada da camada. Este produto é geralmente o produto interno de Frobenius, e a sua função de ativação é comumente a ReLU. À medida que o núcleo de convolução desliza ao longo da matriz de entrada da camada, a operação de convolução gera um mapa de características (feature map), que por sua vez contribui para a entrada da camada seguinte. Isto é seguido por outras camadas, tais como camadas de agrupamento (pooling), camadas totalmente conectadas e camadas de normalização. Aqui deve notar-se o quão próxima uma rede neural convolucional é de um filtro casado.Convolutional Neural Networks Demystified: A Matched Filtering Perspective Based Tutorial https://arxiv.org/abs/2108.11663v3
Camadas convolucionais Numa CNN, a entrada é um tensor com o formato:
(número de entradas) × (altura da entrada) × (largura da entrada) × (canais de entrada)
Após passar por uma camada convolucional, a imagem é abstraída para um mapa de características, também chamado de mapa de ativação, com o formato:
(número de entradas) × (altura do mapa de características) × (largura do mapa de características) × (canais do mapa de características).
As camadas convolucionais convoluem a entrada e passam o seu resultado para a camada seguinte. Isto é semelhante à resposta de um neurônio no córtex visual a um estímulo específico. Cada neurônio convolucional processa dados apenas para o seu campo receptivo. miniaturadaimagem|Exemplo de alimentação para a frente (feed forward) numa rede neural convolucional 1D Embora as redes neurais feedforward totalmente conectadas possam ser usadas para aprender características e classificar dados, esta arquitetura é geralmente impraticável para entradas maiores (por ex., imagens de alta resolução), o que exigiria um número massivo de neurônios porque cada pixel é uma característica de entrada relevante. Uma camada totalmente conectada para uma imagem de tamanho 100 × 100 tem 10.000 pesos para cada neurônio na segunda camada. A convolução reduz o número de parâmetros livres, permitindo que a rede seja mais profunda. Por exemplo, o uso de uma região de pavimentação (tiling) de 5 × 5, cada uma com os mesmos pesos partilhados, requer apenas 25 neurônios. O uso de pesos partilhados significa que existem muito menos parâmetros, o que ajuda a evitar os problemas do desvanecimento e da explosão do gradiente vistos durante a retropropagação em redes neurais anteriores.
Para acelerar o processamento, as camadas convolucionais padrão podem ser substituídas por camadas convolucionais separáveis em profundidade (depthwise separable), que são baseadas numa convolução em profundidade (depthwise) seguida por uma convolução ponto a ponto (pointwise). A convolução em profundidade é uma convolução espacial aplicada independentemente sobre cada canal do tensor de entrada, enquanto a convolução ponto a ponto é uma convolução padrão restrita ao uso de núcleos .
Camadas de pooling As redes convolucionais podem incluir camadas de agrupamento (pooling) local e/ou global juntamente com as camadas convolucionais tradicionais. As camadas de pooling reduzem as dimensões dos dados combinando as saídas de aglomerados de neurônios numa camada num único neurônio na camada seguinte. O pooling local combina pequenos aglomerados, sendo comumente usados tamanhos de pavimentação como 2 × 2. O pooling global atua sobre todos os neurônios do mapa de características. Existem dois tipos comuns de pooling em uso popular: máximo e médio. O max pooling (agrupamento máximo) usa o valor máximo de cada aglomerado local de neurônios no mapa de características, enquanto o average pooling (agrupamento médio) usa o valor médio.
Camadas totalmente conectadas As camadas totalmente conectadas conectam todos os neurônios numa camada a todos os neurônios noutra camada. É o mesmo que uma rede neural tradicional de perceptron multicamadas (MLP). Cada neurônio na camada totalmente conectada recebe entrada de todos os neurônios na camada anterior. Estas entradas são ponderadas e somadas com os vieses correspondentes, e depois passadas por uma função de ativação para realizar uma transformação não linear, gerando a saída. A matriz achatada (flattened) passa por uma camada totalmente conectada para classificar as imagens.
Campo receptivo Nas redes neurais, cada neurônio recebe entrada de um certo número de localizações na camada anterior. Numa camada convolucional, cada neurônio recebe entrada de apenas uma área restrita da camada anterior, chamada de campo receptivo do neurônio. Tipicamente, a área é um quadrado (por ex., 5 por 5 neurônios). Enquanto que, numa camada totalmente conectada, o campo receptivo é a camada anterior inteira. Assim, em cada camada convolucional, cada neurônio recebe entrada de uma área maior na entrada original do que as camadas anteriores. Isso deve-se à aplicação repetida da convolução, que leva em consideração o valor de um pixel, bem como os seus pixels circundantes. Ao usar camadas dilatadas, o número de pixels no campo receptivo permanece constante, mas o campo é povoado de forma mais esparsa à medida que as suas dimensões crescem ao combinar o efeito de várias camadas.
Para manipular o tamanho do campo receptivo conforme desejado, existem algumas alternativas à camada convolucional padrão. Por exemplo, a convolução atrous ou dilatada expande o tamanho do campo receptivo sem aumentar o número de parâmetros, intercalando regiões visíveis e cegas. Além disso, uma única camada convolucional dilatada pode compreender filtros com múltiplas razões de dilatação, tendo assim um tamanho de campo receptivo variável.
Pesos Cada neurônio numa 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 um viés (tipicamente números reais). A aprendizagem consiste em ajustar iterativamente estes vieses e pesos.
Os vetores de pesos e vieses são chamados de filtros e representam características particulares da entrada (por ex., uma forma específica). Uma característica distintiva das CNNs é que muitos neurônios podem partilhar o mesmo filtro. Isto 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 partilham esse filtro, em oposição a cada campo receptivo ter o seu próprio viés e ponderação vetorial.
Deconvolucional
Uma rede neural deconvolucional é essencialmente o inverso de uma CNN. Consiste em camadas deconvolucionais e camadas de desagrupamento (unpooling).
Uma camada deconvolucional é a transposta de uma camada convolucional. Especificamente, uma camada convolucional pode ser escrita como uma multiplicação por uma matriz, e uma camada deconvolucional é a multiplicação pela transposta dessa matriz.
Uma camada de desagrupamento expande a camada. A camada de desagrupamento máximo (max-unpooling) é a mais simples, pois simplesmente copia cada entrada várias vezes. Por exemplo, uma camada de desagrupamento máximo de 2 por 2 é .
As camadas de deconvolução são usadas em geradores de imagens. Por padrão, cria artefactos periódicos em padrão de tabuleiro de xadrez (checkerboard artifacts), que podem ser corrigidos por aumento de escala seguido de convolução (upscale-then-convolve).
História As CNNs são frequentemente comparadas com a forma como o cérebro consegue o processamento da visão nos organismos vivos.
Campos receptivos no córtex visual
O trabalho de Hubel e Wiesel nas décadas de 1950 e 1960 mostrou que os córtexes visuais dos gatos contêm neurônios que respondem individualmente a pequenas regiões do campo visual. Desde que os olhos não estejam em movimento, a região do espaço visual dentro da qual os estímulos visuais afetam o disparo de um único neurônio é conhecida como o 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.
O seu artigo de 1968 identificou dois tipos básicos de células visuais no cérebro:
células simples, cuja saída é maximizada por bordas retas com orientações particulares dentro do seu campo receptivo células complexas, que têm campos receptivos maiores, cuja saída é insensível à posição exata das bordas no campo.
Hubel e Wiesel também propuseram um modelo em cascata destes dois tipos de células para uso em tarefas de reconhecimento de padrões.
Elementos analógicos de limiar de Fukushima num modelo de visão Em 1969, Kunihiko Fukushima introduziu uma rede multicamadas de deteção de caraterísticas visuais, baseando-se nas investigações anteriores de Hubel e Wiesel. Descreveu-a nestes termos: "Todos os elementos presentes numa camada operam com a mesma matriz de coeficientes de conexão; tanto o posicionamento dos elementos como a sua rede de conexões mantêm-se homogeneamente distribuídos através de qualquer camada dada." Este é o núcleo central de uma rede convolucional, mas os pesos não foram treinados. No mesmo artigo, Fukushima também introduziu a função de ativação ReLU (unidade linear retificada).
Neocognitron, a origem da arquitetura de CNN treinável O "neocognitron" foi introduzido por Fukushima em 1980. O neocognitron introduziu os dois tipos básicos de camadas: