Redes neurais convolucionais
Uma breve história sobre as arquiteturas
“Deep learning” é um dos assuntos mais populares da atualidade quando se fala em inteligência artificial. É um tópico que tem gerado bastante curiosidade, tanto para os profissionais da tecnologia e pesquisadores, quanto para pessoas externas.
Atualmente, existe uma grande diversidade de aplicações que utilizam deep learning nos mais diversos cenários, inclusive aqui no Itaú. Uma particularidade, geralmente conhecida por quem trabalha na área, é que o deep learning se estende tanto aos dados estruturados quanto os não estruturados.
Tradicionalmente, um modelo deep consiste em uma MultiLayer Perceptron (MLP) com diversas camadas. Mas, não para por aí: existem também as redes neurais recorrentes e as redes neurais convolucionais (Convolutional Neural Networks — CNNs), que são capazes de lidar com dados não-estruturados.
Como cientista do time de Visão Computacional do Itaú, venho contar, brevemente, sobre a evolução de algumas das arquiteturas de CNNs às quais estudei durante a minha pesquisa de doutorado.
Arquiteturas
A primeira CNN, proposta em 1998 por LeCun, é denominada LeNet [1]. Ela foi desenvolvida com o intuito de auxiliar no reconhecimento de caracteres da base MNIST e gerou resultados com alta acurácia. Uma das particularidades mais importantes das CNNs é que os pesos a serem aprendidos nas camadas convolucionais compõem o filtro que realizará a operação de convolução. Dessa maneira, além de manter a relação espacial das imagens, são extraídas características relevantes durante a aprendizagem. Adicionalmente, o uso de camadas convolucionais reduz significativamente a quantidade de parâmetros quando comparada à MLP e facilita a convergência da rede.
A arquitetura e conceitos introduzidos pela LeNet ainda são muito importantes, pois serviram como base para a criação das arquiteturas mais atuais. Em suma, a rede é formada por uma sequência de camadas, sendo que cada uma delas possui uma função específica na propagação do sinal de entrada, ilustradas pela Figura 1. Tradicionalmente, existem três tipos principais de camadas:
- as convolucionais;
- as de subamostragem (pooling); e
- as totalmente conectadas (fully-connected).
As convolucionais são responsáveis por extrair características das camadas anteriores ou da imagem de entrada, caso seja a primeira camada da rede. As de subamostragem, por reduzir a dimensionalidade dos dados, além de ajudar a tornar a representação invariante a pequenas translações na entrada. Por fim, a totalmente conectada é responsável pela propagação do sinal por meio da multiplicação ponto a ponto e o uso de uma função de ativação. A última camada tem como valor de saída a probabilidade de uma imagem de entrada pertencer a uma das classes para qual a rede foi treinada, a depender da função de ativação utilizada.
Em 2012, alguns anos após a introdução da LeNet, devido ao aumento de recursos computacionais e dados disponíveis, surgiu uma das primeiras arquiteturas que revolucionou o uso das CNNs, a AlexNet [2]. Ela foi a vencedora da competição ILSVRC (ImageNet Large Scale Visual Recognition Challenge) 2012 e deu início a uma sequência de novas propostas de arquiteturas de CNNs com diferentes conceitos, melhorias e aplicações.
A seguir, uma breve descrição das particularidades e motivações para a criação das novas arquiteturas é fornecida:
AlexNet [2]: Vencedora do ILSVRC 2012. Possui arquitetura similar à LeNet, com a inclusão de mais camadas, filtros, empilhamento das convoluções e usou pela primeira vez a função de ativação ReLu [11]. A rede possui filtros de resolução 11×11, 5×5 e 3×3, camadas de pooling e totalmente conectadas, totalizando 8 camadas com cerca de 61 milhões de parâmetros.
VGG [3]: Segundo lugar no ILSVRC 2014. Surgiu com a proposta de criar uma arquitetura de rede mais profunda que as anteriores. A rede contém 19 camadas e 138 milhões de parâmetros. Os autores conseguiram aumentar a quantidade de camadas com o empilhamento de filtros 3 × 3, mostrando que o empilhamento de três desses filtros (243 parâmetros) tinha o mesmo campo receptivo do que um filtro de 7 × 7 (3969 parâmetros). Dessa maneira, foi possível criar uma rede mais profunda sem aumentar muito a quantidade de parâmetros, permitindo, assim, o aprendizado de mais não-linearidades. Existem outras versões da rede com variações principalmente na quantidade de camadas, como a VGG-11, 13 e 16.
GoogleNet [4]: Vencedora do ILSVRC 2014. A rede possui 22 camadas e não utiliza camadas totalmente conectadas, portanto, possui apenas 4 milhões de parâmetros. Também com a proposta de inserção de mais camadas, os autores criaram o conceito de Inception Module. Além disso, ao invés de escolher quais tamanhos de filtros são os mais adequados, a arquitetura foi projetada para executar todos em paralelo e empilhar as respostas. Dessa maneira, a rede aprende quais são as melhores configurações de filtros, dando maior dinamicidade. No entanto, ao usar diferentes configurações de filtros, a quantidade de parâmetros da rede aumenta, inviabilizando que seja mais profunda. Para contornar esse problema, foram inseridas as camadas “bottleneck”, que adicionam filtros de tamanho 1 × 1 antes da convolução desejada, viabilizando a execução dos filtros em paralelo, reduzindo a quantidade de parâmetros, e consequentemente, permitindo que seja mais profunda.
ResNet [5]: Vencedora do ILSVRC 2015. Foi a primeira rede a obter erro de classificação menor que o humano para a aplicação. Sua principal inovação foi conseguir criar redes ultra profundas (com 152 camadas) sem sacrificar seu desempenho. Os autores notaram que redes mais profundas enfrentavam o “problema da degradação”, ou seja, a acurácia da rede acaba saturando ou degradando com o aumento na quantidade de camadas, indicando que redes mais rasas estão aprendendo melhor do que mais profundas. Esse problema pode ser causado pelo desaparecimento do gradiente (vanishing gradient), em que o gradiente pode ser tornar infinitamente pequeno na retropropagação para as camadas anteriores e/ou maldição da dimensionalidade. Sabendo que redes mais rasas têm melhor desempenho do que as mais profundas com algumas camadas a mais adicionadas, os autores propuseram pular essas camadas extras para obter pelo menos a mesma acurácia que a rede mais rasa. Para isso, foi criada a “conexão identidade”, que insere uma conexão entre o início e final de um conjunto de camadas, sendo estas camadas conhecidas como o mapeamento residual. Dessa maneira, algumas camadas podem ser puladas durante o treinamento. A função identidade pode ser aprendida simplesmente definindo o residual como zero. Além disso, devido aos saltos nas conexões, a rede pode escolher quais camadas são mais importantes, tornando-a mais dinâmica e o gradiente pode ser propagado para as camadas iniciais, permitindo a criação de redes ultra profundas.
Ao analisar as particularidades de cada arquitetura, é possível notar que foram introduzidos muitos artefatos que são utilizados em arquiteturas mais modernas. Até esse momento, as arquiteturas focavam em conseguir redes mais profundas para melhorar a acurácia. No entanto, o erro obtido pelas redes na aplicação ILSVRC já era tão baixo, que diminuir ainda mais o erro poderia não compensar o custo computacional, além das diferenças entre os resultados poderem não ser representativas estatisticamente. Portanto, a seguir são brevemente descritas arquiteturas que focam também em desempenho e eficiência. A Figura 2 mostra a diminuição do erro obtido pelas redes entre 2010 e 2015 na competição ILSVRC.
MobileNet — V1 [6]: As MobileNets foram criadas para funcionar em tempo hábil e em uma plataforma limitada computacionalmente, como aplicações de robótica, carro autônomo, realidade aumentada, mobile, entre outros. Sua primeira versão, v1, propôs o uso de blocos chamados de convolução depthwise separable ao invés da convolução tradicional. Esses blocos possuem resoluções e tamanhos de entrada e saída correspondentes à convolução tradicional, porém com redução significativa da quantidade de operações e custo computacional, permitindo que sejam utilizados em ambientes com maiores limitações computacionais. A convolução depthwise separable possui duas etapas: a convolução depthwise e a convolução point-wise. A primeira consiste na realização de uma convolução separada para cada canal (channel) de cor da imagem e posterior concatenação das respostas, e a segunda, que possui como entrada a saída da primeira, consiste na realização de convoluções de 1 × 1 × 𝑁𝑐 para cada quantidade de filtros.
MobileNet — V2 [7]: A segunda versão é composta por blocos Mobile inverted bottleneck convolution (MBConv), cujo objetivo é permitir que a rede aprenda funções mais complexas enquanto mantém a quantidade de memória relativamente pequena, além de possuir resoluções e tamanhos de entrada e saída correspondentes à convolução tradicional. Cada bloco é delimitado por uma “conexão identidade”, similar à ResNet [5], sendo as camadas intermediárias denominadas de mapeamento residual. Esse mapeamento contém uma camada de expansão, a convolução depthwise e a convolução point-wise (denominada projeção na v2). A operação de expansão aumenta o tamanho da representação no bloco por um determinado fator, permitindo que a rede aprenda funções mais ricas, a convolução depthwise realiza a convolução por canal e a projeção retorna ao tamanho desejado para haver economia de memória.
Squeeze and excitation [8]: Essa rede propôs o uso de blocos squeeze and excitation para recalibrar de maneira adaptativa as respostas por canal, modelando explicitamente suas interdependências. Sua criação foi motivada devido à operação de convolução tradicional unir as informações espaciais e por canal, ao invés de analisar de maneira separada. Nesse caso, um bloco é composto por duas etapas, a squeeze e a excitation. A camada squeeze consiste na operação de max pooling por canal e a etapa de excitation possui quatro camadas sequenciais. Com isso, o bloco consegue suprir características menos informativas e enfatizar as características mais informativas.
EfficientNets [9]: As EfficientNets correspondem a uma família de modelos de CNNs criadas pelo Google Research Brain Team que atingiram acurácia e eficiência melhores na base do ImageNet do que as CNNs propostas anteriormente. Sua principal motivação foi construir redes com alta acurácia e eficiência. Até o momento, a prática convencional para o dimensionamento do modelo consistia em aumentar arbitrariamente a profundidade ou largura da CNN, ou usar uma imagem de entrada com resolução maior. Embora esses métodos melhorem a acurácia, geralmente exigem ajuste manual e, ainda assim, costumam produzir um desempenho abaixo do ideal. A proposta da EfficientNet é escalar automaticamente a arquitetura das redes para uma aplicação ou dispositivos específicos. Essa família de redes é baseada em uma arquitetura base, a B0, a qual foi criada a partir de uma pesquisa de arquiteturas que otimizam, simultaneamente, a acurácia e as operações de ponto flutuante por segundo (Floating point operations per second — FLOPS). Sua arquitetura é composta principalmente por blocos MBConv [7], com a adição da otimização squeeze and excitation [8]. A partir da arquitetura base são realizadas aplicações de dimensionamento que alteram a profundidade (#layers), largura (#channels) e resolução da rede simultaneamente.
Conclusões
Durante a minha pesquisa de doutorado, eu trabalhei com a EfficientNet. A minha proposta consistiu em criar um modelo para a estimação etária do cérebro a partir da análise de imagens de ressonância magnética, e verificar se existe uma superestimação etária estatisticamente significativa para pacientes com declínio cognitivo causado pela doença de Alzheimer — e sim, existe, conseguimos! (se tiver interesse em mais detalhes, confira aqui a publicação).
É importante mencionar que existem diversas arquiteturas de CNNs disponíveis para serem estudadas e testadas, as quais não foram mencionadas nesse artigo. Uma das motivações para a escolha da EfficientNet foi devido a seus valores de acurácia reportados, e principalmente, a sua eficiência, visando a possível criação de uma aplicação médica embarcada para auxiliar o diagnóstico da doença de Alzheimer. Portanto, esse artigo teve maior enfoque em entender as particularidades das arquiteturas que levaram à criação final da rede.
Referências
[1] LECUN, Y. et al. Gradient-based learning applied to document recognition. Proceedings of the IEEE, v. 86, n. 11, p. 2278–2324, 1998.
[2] KRIZHEVSKY, A.; SUTSKEVER, I.; HINTON, G. E. Imagenet classification with deep convolutional neural networks. In: Advances in neural information processing systems 25. Nevada, United States: Curran Associates, Inc., 2012. p. 1097–1105.
[3] SIMONYAN, K.; ZISSERMAN, A. Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv: 1409.1556, 2014.
[4] SZEGEDY, C. et al. Going deeper with convolutions. In: Proceedings of the IEEE conference on computer vision and pattern recognition — CVPR. Boston, USA: IEEE, 2015. p. 1–9.
[5] HE, K. et al. Deep residual learning for image recognition. In: Proceedings of the IEEE conference on computer vision and pattern recognition. Las Vegas, USA: IEEE, 2016. p. 770–778.
[6] HOWARD, A. G. et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv preprint arXiv:1704.04861, 2017.
[7] SANDLER, M. et al. Mobilenetv2: Inverted residuals and linear bottlenecks. In: IEEE. Conference on computer vision and pattern recognition (CVPR). Salt Lake City, USA, 2018. p. 4510–4520.
[8] HU, J.; SHEN, L.; SUN, G. Squeeze-and-excitation networks. In: IEEE. Conference on computer vision and pattern recognition (CVPR). Salt Lake City, USA, 2018. p. 7132–7141.
[9] TAN, M.; LE, Q. Efficientnet: Rethinking model scaling for convolutional neuralnetworks. In: PMLR. International Conference on Machine Learning. California, USA, 2019. p. 6105–6114.
[10] BELL, S. et al. Inside-outside net: Detecting objects in context with skip pooling and recurrent neural networks. In: Proceedings of the IEEE conference on computer vision and pattern recognition — CVPR. Las Vegas, USA: IEEE, 2016. p. 2874–2883.
[11] NAIR, V.; HINTON, G. E. Rectified linear units improve restricted boltzmann machines. In: Proceedings of the 27th international conference on machine learning (ICML-10). Haifa, Israel: Omnipress, 2010. p. 807–814.