2. REVISÃO BIBLIOGRÁFICA
2.3 INTELIGÊNCIA ARTIFICIAL, MACHINE LEARNING E DEEP LEARNING
2.3.3 Fundamentos de Deep Learning
O Deep Learning (DL), é um tipo de ML. É um algoritmo automático que imita a perceção humana
inspirada no cérebro humano e na conexão entre neurónios (Figura 10). O DL é a técnica que mais se aproxima
da maneira como os humanos aprendem (Zhang & Sornette, 2017).
A maioria dos métodos de Deep Learning usa arquitetura de rede neuronal. É por isso que Deep Learning
é frequentemente referida por redes neuronais profundas em referência às camadas que essas redes possuem.
Figura 10: Aprendizagem por DL
(Jaume Santacana, 2019)
As redes neuronais profundas surgem em 1943, por Warren McCulloch e Walter Pitts, que escreveram um
artigo sobre como os neurónios humanos poderiam funcionar, sendo que eles modelam uma rede neuronal
simples usando circuitos elétricos (McCulloch & Pitts, 1943). Este modelo abre o caminho para a pesquisa e
desenvolvimento das redes neuronais até aos dias de hoje.
Figura 11: Evolução do Deep Learning (Vázquez, 2019)
Em resumo, o Deep Learning por visão por computador baseia-se em algumas arquiteturas, nomeadamente
VGG, ResNet50, Inception, Xception e MobileNet que se apresentam a seguir.
pooling e ativação de camadas antes das camadas de classificação, estão conectadas no final (Krizhevsky et
al., 2017).
MobileNet é essencialmente uma versão simplificada da arquitetura Xception otimizada para aplicações
móveis.
2.3.3.1 ResNet
A ResNet (Residual Neural Network) nasceu em 2015 a partir de uma simples observação: Porque é que
as redes muito profundas funcionam pior à medida que se vão adicionando camadas (He, Zhang, Ren, & Sun,
2016)? Intuitivamente, as redes mais profundas não devem funcionar pior do que os seus homólogos menos
profundos, pelo menos na fase de treino (quando não há risco de sobre ajustamento). Como caso de estudo,
cria-se uma rede com n camadas que alcança uma certa precisão. No mínimo, uma rede com n+1 camadas
deve ser capaz de atingir a mesma precisão, se pelo menos copiando sobre as mesmas primeiras n camadas e
realizando um mapeamento de identidade para a última camada. Da mesma forma, redes com n+2, n+3 e n+4
camadas podem continuar a realização de mapeamento de identidades e alcançar a mesma exatidão. Na prática,
no entanto, estas redes mais profundas quase sempre se degradam no desempenho (Yu & Tomasi, 2019).
Os autores da ResNet resumiram estes problemas numa simples hipótese: mapeamentos diretos são difíceis
de aprender. E propuseram uma solução: em vez de tentar aprender um mapeamento subjacente de x a H(x),
aprender a diferença entre os dois ou o “residual”. Então, para calcular o H(x), podemos apenas adicionar o
residual à entrada.
Digamos que o residual é F(x)=H(x)-x. Agora em vez de aprender diretamente H(x), as nossas redes estão
a tentar aprender F(x)+x. Isto dá origem ao bloco ResNet (ou "rede residual") (Figura 12).
Figura 12: Bloco de ResNet (Meghana, 2019)
Cada “bloco” da ResNet consiste numa série de camadas e numa conexão de “atalho” adicionando a entrada
do bloco à sua saída. A operação de adição é realizada no sentido elementar, se a entrada e a saída são de
tamanhos diferentes, “zero-padding” ou projeções (via convoluções 1x1) podem ser usadas para criar
dimensões correspondentes.
Anteriormente, redes neuronais profundas sofriam frequentemente do problema do desaparecimento de
gradientes, em que os sinais de gradiente de função de erro decresciam exponencialmente à medida que retro
propagavam o erro para camadas anteriores. Quando os sinais de erro percorriam todo o caminho de volta às
camadas iniciais, eles eram tão pequenos que a rede não podia aprender. No entanto, devido ao facto do sinal
de gradiente na ResNet poder voltar diretamente às camadas iniciais através de um atalho, subitamente
poderíamos construir redes com 50 camadas, 101 camadas, 152 camadas, e até mesmo (aparentemente) mais
de 1000 camadas, que ainda assim funcionariam bem. Na altura, este foi um enorme salto em relação ao estado
de arte anterior, que ganhou o desafio ILSVRC 2014
4com 22 camadas.
ResNet alterou fundamentalmente a forma como se entendem as redes neuronais e como elas aprendem.
A aprendizagem por transferência é uma técnica de ML em que se aplica conhecimento a partir de um
domínio origem (exemplo ImageNet) para um domínio destino que pode ter significativamente menos pontos
de dados. Na prática, isso geralmente envolve a inicialização de um modelo com pesos pré-treinados da ResNet,
Inception ou outro.
Com aprendizagem por transferência, estes modelos podem ser repropostos para qualquer tarefa, desde a
deteção de objetos, até à produção de textos e legendas para vídeos entre outros.
2.3.3.2 Inception
A Inception foca-se na eficiência computacional para treinar redes mais amplas. Noutras palavras: como
é que podemos escalar (“scale up”) as redes neuronais sem aumentar os custos computacionais?
Szegedy et al. (2015) focaram-se numa nova base (num novo bloco de construção) para redes profundas,
conhecido como o módulo Inception. No seu núcleo, este módulo é o produto de dois pontos-chave.
Numa rede tradicional, cada camada extrai informação da camada anterior de forma a transformar os dados
de entradas numa representação mais útil. No entanto, cada tipo de camada extrai um tipo de informação
diferente. A saída de um núcleo (kernel) convolucional 5x5 diz-nos algo diferente da saída de um núcleo
convolucional 3x3, que nos diz algo diferente da saída de um núcleo max-pooling e assim por diante. Em
qualquer camada, como é que sabemos qual a transformação que nos fornece a informação mais “útil”?
Um módulo Inception processa múltiplas transformações diferentes sobre o mesmo mapa de entrada em
paralelo, concentrando os seus resultados numa única saída, i.e., para cada camada faz uma transformação
convolucional 5x5, uma 3x3 e uma max-pooling. A camada seguinte do modelo decide se (e como) usa cada
parte da informação.
Figura 13: Modulo de Inception (Shubham Gandhi, 2019)
O aumento da densidade de informação desta arquitetura implica quer um aumento drástico dos filtros,
quer um aumento dos custos computacionais. Não só os grandes filtros convolucionais (por exemplo, 5x5) são
intrinsecamente grandes para processar, como o empilhamento de vários filtros diferentes lado a lado aumenta
muito o número de mapas de características por camada. Este aumento torna-se um congestionamento crítico
no modelo.
Por cada filtro adicional acrescentado, temos de convergir todos os mapas de entrada para calcular uma
única saída. A Figura 14 representa a criação de um mapa de saída a partir de um único filtro, onde implica o
cálculo (computing) sobre cada um dos mapas da camada anterior.
Figura 14: Mapa de saída a partir de um único filtro (Shubham Gandhi, 2019)
No caso de existirem M mapas de entrada, um filtro adicional significa a convergência sobre mais M
mapas, N filtros adicionais significa a convergência de N*M sobre mais mapas. Concluindo, qualquer aumento
uniforme do número de filtros resulta num aumento quadrático de cálculo (Szegedy et al., 2015).
Utilizando convoluções 1x1 para realizar uma redução da dimensionalidade, de forma a resolver o
congestionamento computacional, os autores de Inception usaram convoluções 1x1 para “filtrar” a
profundidade das saídas.
Uma convolução 1x1 apenas observa um valor de cada vez, mas através de vários canais, pode extrair
informação espacial e comprimi-la até uma dimensão inferior. Por exemplo, utilizando 20 filtros 1x1, uma
entrada com um tamanho de 64x64x100 (com 100 mapas de características) pode ser comprimido até 64x64x20.
Através da redução do número de mapas de entrada, foram capazes de empilhar diferentes transformações de
camadas em paralelo, resultando em redes que eram simultaneamente profundas (muitas camadas) e "largas"
(muitas operações paralelas).
Figura 15: Modulo de Inception (Szegedy et al., 2015)
A primeira versão de Inception, chamada de GoogLeNet, foi a vencedora de 22 camadas do concurso
ILSVRC 2014, atrás referido. As versões V2 e V3 foram desenvolvidas após um ano com melhoramentos em
relação, nomeadamente, reestruturando convoluções maiores em convoluções menores consecutivas, por
menos parâmetros. Na V3, por exemplo, a convolução 5x5 foi substituída com duas convoluções 3x3
consecutivas (Figura 15).
A Inception tornou-se rapidamente uma arquitetura modelo determinante. A versão V4, chegou a lançar
ligações residuais dentro de cada módulo, criando um híbrido Inception-ResNet. Mais importante ainda, porém,
demonstrou o poder das arquiteturas de "rede em rede" bem projetadas, acrescentando mais um passo ao poder
representativo das redes neuronais.
2.3.3.3 Xception
Tal como as duas arquiteturas anteriores, a Xception reestrutura a forma como olhamos para as redes
neuronais - redes convolucionais em particular. E, como o nome sugere, leva os princípios de Inception ao
extremo.
As correlações multicanal e as correlações espaciais são suficientemente desacopladas para que seja
preferível não as mapear conjuntamente (Chollet, 2017), isto é, numa rede convolucional tradicional, camadas
convolucionais procuram correlações tanto no espaço como na profundidade. Na camada convolucional padrão
multicanal ou profundidade. É equivalente a um filtro convolucional que analisa um pixel 2x2 em todos os três
canais RGB, na camada de entrada de uma imagem.
Na arquitetura Inception, começa-se a separar as duas ligeiramente. Usamos convoluções 1x1 para projetar
a entrada original em vários espaços de entrada separados e menores, e a partir de cada uma desses espaços de
entrada, usamos um tipo diferente de filtro para transformar esses blocos de dados 3D menores. Na Xception
em vez de dividir os dados de entrada em vários blocos compactados, a arquitetura mapeia as correlações
espaciais para cada canal de saída separadamente e, em seguida, executa uma convolução 1x1 em profundidade
para capturar a correlação entre os canais (Figura 16).
Figura 16: Correlação entre canais na Xception (Shubham Gandhi, 2019)
Trata-se de uma operação equivalente à operação “convolução separável em profundidade” (Chollet,
2017), que consiste numa convolução em profundidade (uma convolução espacial realizada
independentemente para cada canal), seguida por uma convolução pontual (uma convolução 1x1 através de
canais). Pode-se pensar como a procura de correlações através de um espaço 2D primeiro, seguido pela procura
de correlações através de um espaço 1D. Intuitivamente, este mapeamento 2D+1D é mais fácil para aprender
do que um mapeamento 3D completo.
No documento
VISUALIZAÇÃO E ANÁLISE EM OBSERVAÇÕES AÉREAS POR INTELIGÊNCIA ARTIFICIAL
(páginas 37-42)