• Aucun résultat trouvé

BALANCE DES PAIEMENTS ET POSITION EXTÉRIEURE

Dans le document BULLETIN MENSUELOCTOBRE 2012 (Page 139-155)

Em 2006, o aprendizado de máquina em profundidade, mais conhecido como deep le-

arning, emergiu como uma área promissora para a pesquisa em aprendizado de máquina.

Durante os últimos anos, as técnicas desenvolvidas com essa pesquisa geraram um im- pacto em um vasto campo de processamento de sinais e informações, tanto no âmbito do que já se conhecia como em novos métodos em aprendizagem de máquina e inteligência artificial. Atualmente, tem emergido como a ferramenta de aprendizado de máquina lí- der nos domínios de visão computacional e imagens (GREENSPAN; GINNEKEN; SUMMERS, 2016). Uma série de eventos e tutoriais tem se focado no estudo e aplicação desse método nos últimos anos, dentre eles o Neural Information Processing Systems Foundation Inc.

Workshop e o International Conference on Machine Learning Workshop (DENG; YU et al., 2014).

Esse método tem atraído a atenção da comunidade científica e industrial. Empre- sas como Google, Microsoft, Apple, IBM, entre outras, têm investido em métodos de aprendizado multicamadas. O primeiro grande mercado atingido foi o de sistemas para reconhecimento de voz (BENGIO, 2013).

As técnicas convencionais de aprendizado de máquina são limitadas em sua habili- dade de processar dados em sua forma mais bruta. Por décadas, construir um sistema de reconhecimento de padrões ou de aprendizado de máquinas necessitava uma engenha- ria meticulosa e um domínio considerável das técnicas para implementar um extrator de características que transformasse essas informações brutas em representações aceitáveis ou vetores de característica que fossem compreendidas pelo subsistema de aprendizagem, como o classificador. Além disso, cada situação responderá melhor com um determinado extrator. Uma das vantagens dos métodos com deep learning é simplificar todo o processo clássico de detecção, extração e classificação para padrões, o substituindo por um pro-

40 Capítulo 3. Ferramentas de Aprendizagem de Máquinas

cedimento de aprendizagem geral que permite mais níveis de abstração das informações, substituindo inclusive várias etapas na realização de um sistema CAD (LECUN; BENGIO; HINTON, 2015).

O aprendizado de representações é um conjunto de métodos que permite as máquinas serem alimentadas com informação bruta e a partir delas descobrir representações ne- cessárias para a caracterização desejada. Os métodos de deep learning são redes neurais artificiais aperfeiçoadas com mais camadas que permitem aprendizado de representação em múltiplos níveis, obtidas com estruturas não-lineares que transformam as represen- tações de nível mais baixo em representações mais abstratas (GREENSPAN; GINNEKEN; SUMMERS, 2016).

Uma das implicações do uso dessas arquiteturas é a necessidade de se alimentar a rede com uma grande quantidade de informações para se obter um aprendizado satisfatório. Uma alternativa é o uso de transfer learning, ou seja, passar o conhecimento aprendido por uma rede em um determinado banco de dados, para outra rede onde as características serão refinadas para aquele conjunto de dados ou tarefa(YOSINSKI et al., 2014). Existem duas abordagens para a realização dessa transferência, a primeira consiste em passar as respostas das camadas superiores da rede para outro classificador, geralmente de outro tipo. E a segunda maneira consiste em re-treinar as últimas camadas, sem interferir nas outras, ou seja, conservar as primeiras camadas de abstração da outra rede que serviu para realizar as primeiras abstrações. Neste último caso, pode-se escolher por realizar a retro- propagação do erro da nova aplicação até as características das camadas base que foram copiadas, de maneira a ajustá-las e afiná-las para a nova aplicação. Tal procedimento é mais conhecido pelo termo em inglês fine-tune (RAZAVIAN et al., 2014). Essas técnicas são utilizadas para evitar que o sistema seja mal ajustado quando há uma quantidade insufi- ciente de dados para treiná-lo desde o início, e também evitar um treinamento exaustivo já que não serão todos os pesos das camadas que terão de ser aprendidos (YOSINSKI et al., 2014).

Uma outra maneira de lidar com a pequena quantidade de exemplos para o treina- mento é o aumento da base de dados por meio de algumas estratégias de variação das entradas conhecidas como data augmentation. Tal procedimento consiste na aplicação de transformações na imagem base que produzam variações, garantindo-se ao mesmo tempo que a classe continue inalterada (CHATFIELD et al., 2014). Algumas das possíveis transfor- mações são: espelhamento da imagem em ambos os eixos, rotação, deformação elástica, adição de ruído, realização de cortes da imagem original de maior resolução (se disponível), translação, entre outras técnicas (PONTI et al., 2017). Diversos trabalhos apresentaram as operações utilizadas para o aumento da quantidade de dados e obtiveram resultados satisfatórios, mesmo com conjuntos iniciais pequenos (PEREZ et al., 2018; NAZARÉ et al., 2017;CHATFIELD et al., 2014). Além do procedimento lidar com a restrição da quantidade de amostras, também aumenta a capacidade de generalização do modelo, tornando-o mais

3.1. Deep Learning 41

resiliente a mudanças na qualidade e variações em dados futuros (NAZARÉ et al., 2017). A utilização do data augmentation nos conjuntos de validação e teste é controversa, pois gera amostras ambíguas na avaliação do modelo, e com isso, pode gerar resultados superestimados. Por outro lado, há quem o realize nos demais conjuntos para se obter uma estimativa do quanto a adição dos novos dados complicaria a tarefa de classificação, e assim, se obteria uma taxa de acerto que traduziria esse cenário (NAZARÉ et al., 2017; PEREZ et al., 2018).

3.1.1

Redes Neurais Convolucionais

Uma das arquiteturas profundas mais conhecidas é a Rede Neural Convolucional (CNN: Convolutional Neural Networks) (LECUN; BENGIO; HINTON, 2015). Ela é uma rede discriminativa formada basicamente por módulos sobrepostos com camadas de con- volução e agrupamento (DENG, 2014). A utilização desse conceito foi utilizada em proces- samento de imagens médicas de mamografia em 1996 para a análise de regiões de interesse descriminando entre a presença de nódulos ou tecido normal (SAHINER et al., 1996). O treinamento porém, era computacionalmente intensivo na época onde não se tinha um avanço de GPU’s. Com as novas tecnologias e tendo a CNN um algoritmo bastante para- lelizável, se tornou cada vez mais prático implementá-la, com uma performance 40 vezes mais rápida hoje em dia (GREENSPAN; GINNEKEN; SUMMERS, 2016).

Com o objetivo de entender seu funcionamento, é importante recordar alguns dos con- ceitos das Redes Neurais Artificiais (RNA) em geral. Segundo Silva, Spatti e Flauzino (2010), as RNA’s são modelos computacionais inspirados no sistema nervoso de seres vi- vos. Elas possuem a capacidade de aquisição e manutenção do conhecimento (baseado em informações) e podem ser definidas como um conjunto de unidades de processamento, caracterizadas por neurônios artificiais, que são interligados por um grande número de interconexões, representadas por vetores ou matrizes de pesos sinápticos. Dentre suas ca- racterísticas principais, a RNA possui adaptação por experiência, ou seja, a atualização de seus parâmetros é realizada por apresentação sucessiva de exemplos relacionados ao com- portamento do processo, possibilitando a aquisição do conhecimento por experimentação. Após o seu treinamento, a rede é capaz de generalizar o conhecimento adquirido, possi- bilitando estimar soluções que eram até então desconhecidas. O processo de treinamento utiliza o valor do erro encontrado na saída para corrigir os pesos da rede, repassando esse valor para todas as camadas por meio de sua derivada parcial relativa a cada parâmetro. Esse processo é conhecido como retropropagação do erro ou descida de gradiente. Outro termo utilizado no processo de treinamento é a época. Cada época equivale a atuali- zação dos parâmetros da rede após a aplicação de todas as amostras de treino em sua entrada. Várias épocas podem ser necessárias para a convergência da rede (SILVA; SPATTI; FLAUZINO, 2010).

42 Capítulo 3. Ferramentas de Aprendizagem de Máquinas

Como estrutura mais básica, a RNA é formada por estruturas chamadas de neurônios. Cada neurônio possui um conjunto de entradas que são ponderadas por fatores conheci- dos por pesos sinápticos. As entradas são agregadas por combinação linear e produzem um valor de potencial de ativação, que para ser relevante, necessita atingir um patamar apropriado conhecido como limiar de ativação. Caso o limiar não seja atingido, significa que as entradas não atingiram um nível de relevância e consequentemente não produzem resposta no neurônio. Em seguida, a diferença entre a saída da combinação linear e o limiar de ativação é passada por uma função de ativação que tem por objetivo limitar a saída do neurônio dentro de um intervalo de valores razoáveis ou desejados. Há vá- rias funções que são utilizadas neste caso, dentre elas, a função degrau, rampa, logística, tangente hiperbólica e gaussiana (SILVA; SPATTI; FLAUZINO, 2010). Dois exemplos muito comuns de função de ativação são visualizadas na Figura 6.

Figura 6: Exemplos de funções de ativação: (a) função tangente hiperbólica e (b) função logística.

(a) (b)

Fonte: (PONTI et al., 2017).

A arquitetura e a topologia de uma rede neural são fatores determinantes para se obter um comportamento e desempenho desejado. A arquitetura de uma RNA define a forma como os seus neurônios constituintes estão arranjados. Esses arranjos são essencialmente estruturados por meio do direcionamento das conexões sinápticas. A topologia, dada uma determinada arquitetura, pode ser definida como sendo as diferentes formas de composi- ções estruturais que ela pode assumir, como número de neurônios e funções relacionadas a eles. De maneira básica, a rede neural pode ser dividida em três partes, a camada de en- trada, onde se recebem os dados de entrada, as camadas intermediárias ou escondidas, que são responsáveis por extrair as características associadas ao processo, e a camada de saída, que produz e apresenta os resultados finais da rede (SILVA; SPATTI; FLAUZINO, 2010). A Figura 7 apresenta um exemplo de diagrama de RNA do tipo Perceptron multicamadas com as camadas citadas.

3.1. Deep Learning 43

Figura 7: Diagrama de uma rede Perceptron multicamadas.

Fonte: Adaptado de Shen, Wu e Suk (2017).

Ao se analisar a arquitetura da CNN, ela é basicamente composta por camadas de convolução e agrupamento (ou do inglês pooling) alternadas e camadas de neurônios total- mente conectados, das quais se obtêm a saída da rede com probabilidades de se pertencer a cada classe envolvida. Um fluxograma simplificado das etapas da CNN é apresentado na Figura 8, onde as etapas intermediárias são repetidas para cada nível de abstração que se deseja realizar. Um esquema geral de exemplo de rede convolucional para reconhecimento de dígitos é apresentado na Figura 9. Sua etapa de agrupamento foi referenciada como subamostragem.

Figura 8: Fluxograma simplificado de uma rede CNN.

Fonte: do autor, 2019.

As entradas da rede são imagens de mesmo tamanho (para que a dimensão dos códigos gerados seja igual ao longo da rede) que não necessitam necessariamente serem de largura e altura iguais. Seus valores devem ser normalizados para que as saídas dos neurônios não

44 Capítulo 3. Ferramentas de Aprendizagem de Máquinas

Figura 9: Diagrama da arquitetura de uma rede CNN utilizada para classificação de dígitos.

Fonte: Adaptado de Peemen, Mesman e Corporaal (2011).

saturem e que a informação possa fluir ao longo da rede (SILVA; SPATTI; FLAUZINO, 2010). Além disso, podem ser aplicados múltiplos canais de entrada, ou seja, diferentes mapas de característica referentes a uma mesma imagem, como por exemplo, os três canais de cores RGB de uma imagem (PONTI et al., 2017).

A convolução, segundo Gonzalez e Woods (2010), é definida como um processo de mover uma máscara rotacionada de 180o pela imagem e calcular a soma dos produtos em cada posição. De maneira a exemplificar, tomemos o filtro representado pela máscara da Figura 10. A resposta característica 𝑅 da máscara para a convolução é representada pela Equação 1, onde os valores de 𝑤 são os coeficientes do filtro e os valores de 𝑧 são as intensidades correspondentes da imagem que estão cobertas pelo filtro. Como o pro- cesso atinge uma limitação nas bordas da imagem pela falta de informação completa da vizinhança, é possível realizar o preenchimento das bordas para se obter uma imagem de saída de mesma dimensão, esse preenchimento pode ser com valor 0, utilizando simetria, copiando-se os valores das bordas, entre outros métodos (GONZALEZ; WOODS, 2010).

𝑅 = 𝑤1𝑧1+ 𝑤2𝑧2+ ... + 𝑤9𝑧9 𝑅 = 9 ∑︁ 𝑘=1 𝑤𝑘𝑧𝑘 (1)

Na camada de convolução da rede, o mapa de característica de entrada (termo mais geral, visto que existem diversas camadas) é convolucionado por um banco de filtros que possui o mesmo tamanho entre eles, onde cada valor do filtro é um peso, e assim, um parâmetro da rede a ser aprendido. O processo de convolução pode ser ajustado quanto ao passo do filtro sobre a imagem, o seu tamanho e o tipo de preenchimento de

3.1. Deep Learning 45

Figura 10: Representação de uma máscara 3x3.

Fonte: (GONZALEZ; WOODS, 2010).

bordas escolhido. Uma diferença em relação às redes Perceptron multicamadas está no fato de cada neurônio gerar uma saída em relação as entradas advindas de uma região da imagem, ao invés de gerá-las a partir de todos os valores de entrada. Cada novo mapa de característica será composto pelos valores resultantes da aplicação do filtro em cada região da imagem (PONTI et al., 2017). Devido a esse fato, as camadas compartilham vários pesos sinápticos, pois são os mesmos pesos que serão aplicados em toda a imagem (GREENSPAN; GINNEKEN; SUMMERS, 2016). Esse fato é responsável por outro atributo das camadas de convolução, a garantia que os padrões sejam invariantes a translação. Uma vez aprendidos, não são associados apenas à região onde ocorreu, serão buscados em toda a imagem (CHOLLET, 2017). Na saída da camada existirá um mapa de característica resultante para cada filtro que foi aplicado. A Figura 11 apresenta uma representação desta etapa. A cada nova etapa de convolução são recebidos como entrada uma quantidade de mapas de características correspondentes à quantidade de filtros utilizados na camada anterior.

De maneira mais subjetiva, pode-se dizer que as camadas convolucionais servem para detectar padrões locais que ocorrem na imagem em diversos níveis de abstração. Esses padrões aumentam de complexidade a cada camada, e representam desde as estruturas mais básicas da imagem, como fronteiras, pontos, linhas, até a sua associação em obje- tos mais definidos (LECUN; BENGIO; HINTON, 2015). Um exemplo representativo desses padrões em cada nível é apresentado na Figura 12. Um exemplo dos padrões aprendidos na primeira camada de uma CNN é apresentado na Figura 13. Pode-se perceber que tais filtros se especializam em identificar as mudanças de intensidade a nível de pixel e as regiões mais homogêneas.

Os neurônios da camada de convolução utilizam uma função de ativação não-linear, o que é determinante para que as camadas escondidas da rede possam distorcer as entradas de maneira que as categorias se tornem linearmente separáveis na última camada (LECUN; BENGIO; HINTON, 2015). No presente, a função não-linear mais popular em redes CNN

46 Capítulo 3. Ferramentas de Aprendizagem de Máquinas

Figura 11: Esquema de geração de vários mapas de característica por convolução com diferentes filtros. Durante o processo, as informações da região de entrada são utilizadas como entrada para o filtro produzir como resultado o valor de um pixel no mapa de saída.

Fonte: Adaptado de Ponti et al. (2017).

é a função linear retificada, ou mais conhecida como Rectified Linear Unit (ReLU). Sua plotagem é visualizada na Figura 14. Ela cancela todos os valores negativos e é linear para os valores positivos. Sua utilização cresceu com deep learning pois favorece o aprendizado com muitas camadas, permitindo que redes profundas aprendam mais rápido e sem a necessidade de um pré-treino não-supervisionado (LECUN; BENGIO; HINTON, 2015).

Após a passagem pela função de ativação, é realizada uma operação de agrupamento, também conhecida como pooling, com dois objetivos principais, o de resumir as respostas de características ao longo das vizinhanças de pixels, agrupando características semanti- camente similares, e realizar uma subamostragem dos dados, reduzindo as dimensões e permitindo que seja realizado um tipo de filtragem em multi-resolução (LECUN; BENGIO; HINTON, 2015). A função mais comum utilizada em CNN é o operador de agrupamento máximo, ou max pooling. De acordo com o tamanho de janela escolhido, ele irá represen- tar os valores contidos em uma região pelo maior valor presente (PONTI et al., 2017). Um esquema representando uma matriz de valores resultantes da operação de max pooling para uma janela 2x2 e passo 2 é visualizado na Figura 15.

A operação de agrupamento em conjunto com as anteriores, garante as propriedades de invariância da rede e permitem a a sua utilização em multi-escala (DENG; YU et al., 2014;ROTH et al., 2016). Um esquema desses mecanismos chave da CNN é visualizado na Figura 16.

3.1. Deep Learning 47

Figura 12: Representação de filtros aprendidos para a representação de um rosto de gato. O objeto é formado visualmente por meio de composições de módulos hierárquicos: as bordas se combinam em outras parte como olhos e orelhas, e essas por sua vez em conceitos de maior nível como "gato".

Fonte: Adaptado de Chollet (2017).

Conforme o fluxo de dados passa por sucessivas camadas de convolução e agrupamento, os mapas de característica reduzem sua dimensão até o ponto em que é determinada a transição para a camada de neurônios totalmente conectada. Uma representação das respostas de diversas camadas de convolução e agrupamento é apresentada na Figura 17. Em contraste com a camada de convolução, que para cada filtro produz uma matriz de resultados, a camada totalmente conectada trata o vetor inteiro de entrada produzindo um único valor escalar de saída (PONTI et al., 2017). Para isso, os dados que são entregues a camada de classificação são remodelados em um vetor linha e concatenados. Por exemplo, se a camada anterior entrega dados com dimensão 4𝑥4𝑥60, eles serão redimensionados para 1𝑥(4𝑥4𝑥60) = 1𝑥960. Portanto, cada neurônio será associado a 960 pesos, produzindo uma combinação linear do vetor (PONTI et al., 2017). Na Figura 18 é ilustrada a transição entre uma camada de convolução com 5 mapas de característica de tamanho 2x2 e uma camada totalmente conectada com 𝑚 neurônios, cada um produzindo uma saída baseada em 𝑓 (𝑥𝑇𝑤 + 𝑏), onde 𝑥 representa o vetor do mapa de características, 𝑤 são os pesos associados a cada neurônio e 𝑏 é o limiar de ativação.

Para a tarefa de classificação, as camadas de nível mais alto amplificam as entradas que são mais importantes e descritivas e suprimem as variações irrelevantes (LECUN; BENGIO; HINTON, 2015). Elas são estruturadas como as redes Perceptron multicamadas e podem possuir diversas camadas escondidas. Na camada de saída há um neurônio para cada classe definida, fornecendo a probabilidade da amostra pertencer a cada uma das

48 Capítulo 3. Ferramentas de Aprendizagem de Máquinas

Figura 13: Exemplos de resposta dos filtros (direita) após convoluções com as máscaras da primeira camada da CNN (centro) sobre região de lesão óssea esclerótica em tomografia computadorizada.

Fonte: (ROTH et al., 2016).

classes (KRISHNAPURAM et al., 2005; PONTI et al., 2017). Para gerar essa probabilidade, é utilizada a função softmax apresentada na Equação 2, na qual 𝑧 é a saída e 𝑃 (𝑧 = 𝑐) é a probabilidade de pertencer à classe 𝑐.

𝑃 (𝑧 = 𝑐) = 𝑠𝑜𝑓 𝑡𝑚𝑎𝑥(𝑧𝑐) =

𝜖𝑧𝑐

∑︀𝑐

𝑗=1𝜖𝑧𝑗

(2) Os valores entregues pela última camada, antes de serem passados função softmax, para esse tipo de análise, é comumente chamada de logits. Para exemplificar com valores o que é apresentado como probabilidade, observemos os vetores da Figura 19.

Com o objetivo de se realizar a otimização da rede, é utilizada uma função de custo de maneira a medir o erro de desempenho do modelo em treinamento em função da entrada e saída fornecida (PONTI et al., 2017). A função de custo irá exprimir a penalidade por predizer uma certa saída ^𝑦 enquanto que seu verdadeiro rótulo seria 𝑦. Tais rótulos

são entregues a rede por meio de uma matriz de codificação one-hot, ou seja, para cada possível classe de saída existirá um valor de referência: ’1’ quando pertencer à classe e ’0’ caso contrário. Um exemplo para uma amostra é apresentada na Figura 20.

A função de custo utilizada, e a qual se visa minimizar entre os valores estimados e os rótulos, é a função de entropia cruzada expressa por 𝑙 na Equação 3, onde z é o valor de saída da rede e 𝑦 representa o rótulo indicado no vetor one-hot correspondente (PONTI et

3.1. Deep Learning 49

Figura 14: Função de ativação Rectified Linear Unit (ReLU).

Fonte: (PONTI et al., 2017).

Figura 15: Realização de operação de maxpooling com janela 2x2 e passo 2 em uma matriz 4x4. Os valores numéricos representam as intensidades de cada pixel.

Fonte: do autor, 2019. al., 2017). 𝑙(𝑧, 𝑦) = − 𝑐 ∑︁ 𝑗=1 𝑦𝑗𝑙𝑜𝑔(𝑧𝑗) (3) Uma das técnicas utilizadas para acelerar a velocidade de treinamento, melhorar a precisão e gerir melhor a memória manipulada pelo algoritmo, é a aprendizagem por pacotes de imagem (batches) (LI et al., 2014). Em lugar de realizar a atualização dos pesos para cada retropropagação do erro efetuado sobre uma imagem por vez, se fornece à rede um conjunto de imagens agrupadas, para que só a partir do processamento de todas as amostras os pesos da rede sejam ajustados. A função de entropia cruzada para esse caso necessita englobar cada um dos valores calculados por amostra. Para tanto, se realiza o cálculo da média de entropia cruzada para o conjunto conforme Equação 4 (N = número

Dans le document BULLETIN MENSUELOCTOBRE 2012 (Page 139-155)