Rede Neural Convolucional Explicada (CNN)
Uma rede neural convolucional, também conhecida como CNN ou ConvNet, é uma classe de redes neurais especializada no processamento de dados que possuem uma topologia semelhante a uma grade, como uma imagem. Uma imagem digital é uma representação binária de dados visuais. Ela contém uma série de pixels organizados em forma de grade que contém valores de pixel para indicar o quão brilhante e qual cor cada pixel deve ter.
O cérebro humano processa uma enorme quantidade de informações no mesmo segundo em que vemos uma imagem. Cada neurônio trabalha em seu próprio campo receptivo e está conectado a outros neurônios que cobrem todo o campo visual. Assim como cada neurônio responde a estímulos apenas na região restrita do campo visual chamada campo receptivo no sistema de visão biológica, cada neurônio em uma CNN também processa dados apenas em seu campo receptivo. As camadas são organizadas de forma que detectam primeiro os padrões mais simples como linhas e curvas e padrões mais complexos como faces e objetos. Ao usar uma CNN, pode-se permitir que um computador aprenda a ver.
Arquitetura da Rede Neural Convolucional
Uma CNN normalmente possui três camadas: uma camada convolucional, uma camada de pooling e uma camada totalmente conectada.
Camada de Convolução
A camada de convolução é o alicerce central da CNN. Ele carrega a maior parte da carga computacional da rede.
Esta camada executa um produto escalar entre duas matrizes, onde uma matriz é o conjunto de parâmetros que podem ser aprendidos, também conhecido como kernel, e a outra matriz é a porção restrita do campo receptivo. O kernel é menor que uma imagem, mas é mais profundo. Isto significa que, se a imagem for composta por três canais (RGB, Red, Green, Blue), a altura e a largura do kernel serão espacialmente pequenas, mas a profundidade se estenderá até todos os três canais.
Durante a passagem direta, o kernel desliza pela altura e largura da imagem, produzindo a representação da imagem daquela região receptiva. Isso produz uma representação bidimensional da imagem conhecida como mapa de ativação que fornece a resposta do kernel em cada posição espacial da imagem. O tamanho deslizante do kernel é chamado de passo.
Se tivermos uma entrada de tamanho W x W x D e um número Dout de kernels com um tamanho espacial de F com passada S e quantidade de preenchimento P, então o tamanho do volume de saída pode ser determinado pela seguinte fórmula:
Isso produzirá um volume de saída de tamanho Wout x Wou t x Dout.
Motivação Por Trás das Redes Neurais Convolucionais
A convolução aproveita três ideias importantes que motivaram os pesquisadores de visão computacional: interação esparsa, compartilhamento de parâmetros e representação equivariante. Vamos descrever cada um deles detalhadamente.
Interação Esparsa
Camadas triviais de redes neurais usam multiplicação de matrizes por uma matriz de parâmetros que descreve a interação entre a unidade de entrada e saída. Isto significa que cada unidade de saída interage com cada unidade de entrada. No entanto, as redes neurais de convolução têm interação esparsa. Isto é conseguido tornando o kernel menor que a entrada, por exemplo, uma imagem pode ter milhões ou milhares de pixels, mas ao processá-la usando o kernel podemos detectar informações significativas que são de dezenas ou centenas de pixels. Isso significa que precisamos armazenar menos parâmetros, o que não apenas reduz o requisito de memória do modelo, mas também melhora a eficiência estatística.
Compartilhamento de Parâmetros
Se calcular um recurso útil em um ponto espacial (x1, y1) , então também deverá ser útil em algum outro ponto espacial, digamos (x2, y2). Isso significa que para uma única fatia bidimensional, ou seja, para criar um mapa de ativação, os neurônios serão obrigados a usar o mesmo conjunto de pesos. Em uma rede neural tradicional, cada elemento da matriz de pesos é usado uma vez e nunca mais revisitado, enquanto a rede de convolução possui parâmetros compartilhados, ou seja, para obter a saída, os pesos aplicados a uma entrada são iguais aos aplicados em outro lugar.
Representação Equivariante
Devido ao compartilhamento de parâmetros, as camadas da rede neural de convolução terão uma propriedade de equivariância à tradução. Diz que se alterarmos a entrada de alguma forma, a saída também será alterada da mesma maneira.
Camada de Pooling
A camada de pooling substitui a saída da rede em determinados locais, derivando uma estatística resumida das saídas próximas. Isso ajuda a reduzir o tamanho espacial da representação, o que diminui a quantidade necessária de cálculos e pesos. A operação de pooling é processada individualmente em cada fatia da representação.
Existem várias funções de agrupamento, como a média da vizinhança retangular, a norma L2 da vizinhança retangular e uma média ponderada baseada na distância do pixel central. No entanto, o processo mais popular é o max pooling, que informa a produção máxima da vizinhança.
Se tivermos um mapa de ativação de tamanho W x W x D, um kernel de pooling de tamanho espacial F e passo S, então o tamanho do volume de saída pode ser determinado pela seguinte fórmula:
Em todos os casos, o pooling fornece alguma invariância de tradução, o que significa que um objeto seria reconhecível independentemente de onde aparece no quadro.
Camada Totalmente Conectada
Os neurônios nesta camada têm conectividade total com todos os neurônios da camada anterior e seguinte. É por isso que pode ser calculado normalmente por uma multiplicação de matrizes seguida por um efeito de polarização.
Funções de Ativação (Camadas Não Lineares)
Como a convolução é uma operação linear e as imagens estão longe de ser lineares, as camadas de não linearidade são frequentemente colocadas diretamente após a camada convolucional para introduzir não linearidade no mapa de ativação. Existem vários tipos de funções de ativação, sendo as mais populares:
1 – Sigmóide: Pega um número com valor real e o “comprime” em um intervalo entre 0 e 1. No entanto, uma propriedade muito indesejável da função sigmóide é que quando a ativação ocorre em qualquer uma das caudas, o gradiente torna-se quase zero. Se o gradiente local se tornar muito pequeno, na retropropagação ele efetivamente “matará” o gradiente. Além disso, se os dados que chegam ao neurônio forem sempre positivos, então a saída da sigmóide será totalmente positiva ou totalmente negativa, resultando em uma dinâmica em zigue-zague de atualizações do gradiente.
2 – Tanh: Comprime um número com valor real no intervalo [-1, 1]. Como a sigmóide, a ativação satura, mas ao contrário dos neurônios sigmóides, sua saída é centrada em zero.
3 – Relu: Unidade Linear Retificada, é a função de ativação mais popular e mais utilizada nos últimos anos. Em comparação com a sigmóide e tanh, relu é mais confiável e acelera a convergência em seis vezes. Infelizmente, uma desvantagem é que o relu pode ser frágil durante o treinamento. Um grande gradiente fluindo através dela pode atualizá-lo de tal forma que o neurônio nunca mais será atualizado. No entanto, podemos trabalhar com isso definindo uma taxa de aprendizagem adequada.
Abaixo estão algumas aplicações das redes neurais convolucionais usadas hoje:
1 – Detecção de Objetos: Com a CNN, agora temos modelos sofisticados como R-CNN , Fast R-CNN e Faster R-CNN que são o pipeline predominante para muitos modelos de detecção de objetos implantados em veículos autônomos, detecção facial e muito mais.
2 – Segmentação Semântica: Em 2015, um grupo de pesquisadores de Hong Kong desenvolveu uma Deep Parsing Network baseada na CNN para incorporar informações ricas em um modelo de segmentação de imagens. Pesquisadores da UC Berkeley também construíram redes totalmente convolucionais que aprimoraram a segmentação semântica de última geração.
3 – Legendas: CNNs são usadas com redes neurais recorrentes para escrever legendas para imagens e vídeos. Isso pode ser usado para muitas aplicações, como reconhecimento de atividades ou descrição de vídeos e imagens para deficientes visuais. Foi fortemente implantada pelo YouTube para dar sentido ao grande número de vídeos enviados regularmente à plataforma.
Este foi um resumo de como funciona uma rede neural convolucional, em breve postaremos projetos práticos utilizando esta abordagem de IA.
Fonte:
Deep Learning de Ian Goodfellow, Yoshua Bengio e Aaron Courville publicado pela MIT Press, 2016.