Buscar

Apostila - Módulo 1 - Bootcamp Arquiteto(a) de Machine Learning

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 76 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 76 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 76 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Fundamentos de Deep Learning 
André Luís Resende Monteiro 
 
 
 
 
 
 
 
2022 
 
 
 
2 
 
 
Fundamentos de Deep Learning 
Bootcamp: Arquiteto(a) de Machine Learning 
André Luis Resende Monteiro 
© Copyright do Instituto de Gestão e Tecnologia da Informação. 
Todos os direitos reservados. 
 
 
 
 
3 
Sumário 
Capítulo 1. Introdução ao Deep Learning ............................................................... 5 
Aprendizado de Máquina .......................................................................................... 5 
Tipos de aprendizado ................................................................................................ 7 
Aprendizado supervisionado ................................................................................. 7 
Aprendizado não-supervisionado .......................................................................... 8 
Aprendizado semi-supervisionado ......................................................................... 8 
Aprendizado de Máquina e Deep Learning ................................................................ 9 
Resumo ................................................................................................................... 11 
Capítulo 2. Redes Neurais Artificiais ..................................................................... 12 
Motivação ............................................................................................................... 12 
Estrutura básica ....................................................................................................... 14 
Neurônio artificial.................................................................................................... 16 
Funcionamento básico ............................................................................................ 18 
Resumo ................................................................................................................... 21 
Capítulo 3. Modelos de Redes Neurais Artificiais .................................................. 23 
Perceptron .............................................................................................................. 23 
Rede Perceptron de Múltiplas Camadas (MLP) ........................................................ 26 
Algoritmo de retropropagação ................................................................................ 31 
O que é o algoritmo de retropropagação então? ................................................. 35 
Resumo ................................................................................................................... 38 
Capítulo 4. Aplicações de Redes Neurais Artificiais ............................................... 40 
 
 
 
4 
Reconhecimento de padrões e classificação de imagens ......................................... 40 
Séries temporais ...................................................................................................... 42 
Geração de conteúdo .............................................................................................. 44 
Precificação dinâmica .............................................................................................. 46 
Outras aplicações .................................................................................................... 47 
Resumo ................................................................................................................... 49 
Capítulo 5. Deep Learning .................................................................................... 51 
Introdução ao deep learning.................................................................................... 51 
Redes Neurais Convolucionais (CNN) ....................................................................... 53 
Redes Neurais Recorrentes ...................................................................................... 56 
Redes LSTM e GRU .................................................................................................. 58 
Redes Neurais Recursivas ........................................................................................ 60 
Redes GAN .............................................................................................................. 62 
Overfitting (Sobreajuste) ......................................................................................... 64 
Métodos de avaliação.............................................................................................. 67 
Definição de hiperparâmetros da rede .................................................................... 69 
Fine-tuning em redes neurais .................................................................................. 71 
Resumo ................................................................................................................... 73 
Referências……….. ....................................................................................................... 75 
 
 
 
 
 
 
 
 
 
5 
Capítulo 1. Introdução ao Deep Learning 
Neste capítulo, veremos o que é o aprendizado de máquina, como ele se 
relacionada com o Deep Learning e algumas das motivações pelas quais estudá-lo. 
Aprendizado de Máquina 
Para resolver qualquer problema computacional, é necessário o 
desenvolvimento de um algoritmo, que tem como objetivo receber um conjunto de 
dados de entrada e produzir uma determinada saída. Por exemplo, para ordenar um 
valor de números, podemos construir um algoritmo que receba como entrada um vetor 
aleatório e produza como saída o mesmo vetor com os seus elementos ordenados. 
Considere que queiramos construir um algoritmo que classifique um e-mail em 
duas categorias: spam ou não-spam. Ou seja, dada uma entrada de uma mensagem de 
e-mail, a saída produzida deverá ser a categorização daquela mensagem em sendo spam 
ou não sendo spam. Para um problema como esse, não é factível (ou mesmo possível) a 
criação de um algoritmo eficiente, uma vez que a definição de spam varia ao longo do 
tempo e é particular para cada usuário. 
Contudo, podemos utilizar dados anteriores para solucionar esse problema. É 
possível consolidar milhares de mensagens que se saiba previamente que se tratem ou 
não de spam, com o objetivo de ajudar na tomada de decisão da categorização. O que 
se procura nesse caso é um processo que aprenda com os dados anteriores e que 
consiga, através desses exemplos, definir o que categoriza uma mensagem como sendo 
spam. Em outras palavras, o que se espera é que a máquina desenvolva 
automaticamente um algoritmo para desempenhar essa tarefa. 
Com os avanços em hardware e a popularização de mecanismos de 
armazenamento, os dados gerados todos os dias possuem um volume gigantesco, 
 
 
 
 
 
 
 
6 
podendo ser acessados de diversas localidades geográficas através da Internet. 
Contudo, transformar esses dados em informações úteis para um negócio, de forma 
estratégica, continua sendo um desafio e objeto de estudo em diversas áreas da ciência 
da computação. 
Considere um outro exemplo: uma loja virtual, que comercializa centenas de 
itens por dia. A cada compra, os bancos de dados da empresa armazenam dados 
diversos, tais como a localidade e idade do comprador, a hora da transação e o caminho 
que o cliente fez até realizar a compra. Isso tipicamente gera um volume de vários 
gigabytes todos os meses. Enquanto esses dados estão apenas armazenados nos 
servidores da empresa, não possuem muita relevância, a não ser, por exemplo, 
contabilizar as compras e calcular a lucratividade do negócio. Contudo, será possível o 
desenvolvimento de um algoritmo que, baseado nesses dados anteriores, possa 
predizer quais os consumidores mais possíveis para um determinado item? 
Novamente, não há um algoritmo de fácil construção para esse problema. 
Assim como no exemplo das mensagens de spam, a solução varia com a localidade, com 
o tempo ou até mesmocom o tipo de produto comercializado. Procura-se nesse caso, 
portanto, uma solução que consiga automaticamente gerar um algoritmo que prediz 
corretamente (ou com a maior aproximação possível) os clientes mais aptos a comprar 
determinado tipo de item. A partir desse ponto, os dados da organização passam a ser 
mais bem aproveitados e tornam-se muito mais valiosos para a empresa. 
No exemplo anterior, talvez não seja possível identificar as relações entre os 
itens e consumidores de forma perfeita. Entretanto, o objetivo do aprendizado de 
máquina é a construção de modelos computacionais, a partir da identificação de 
padrões, que tenham uma aproximação boa e útil. O que é uma aproximação “boa” e 
“útil” irá variar dependendo do problema que iremos solucionar. 
 
 
 
 
 
 
 
7 
Tipos de aprendizado 
As tarefas que uma solução de aprendizado de máquina visa executar podem 
ser classificadas de acordo com a natureza do aprendizado desempenhado. 
Aprendizado supervisionado 
Em aprendizados do tipo supervisionado, há a presença de um conjunto de 
dados ou amostras como entrada, e para cada uma das entradas, também se conhece a 
sua saída. 
Considere novamente o problema de classificação de e-mails entre spam ou 
não-spam. Em uma solução de aprendizado do tipo supervisionada, vários e-mails 
previamente categorizados entre spam ou não-spam estariam disponíveis. Ou seja, para 
cada entrada (e-mail), se saberia previamente a sua saída correspondente (spam ou não-
spam). 
O objetivo do aprendizado supervisionado é encontrar uma forma de relacionar 
os dados de entrada (e-mails) com as suas respectivas saídas (spam ou não-spam), de 
forma que, quando uma nova amostra é obtida, possa-se predizer a sua saída através 
da relação encontrada. A saída de cada amostra é conhecida como label, rótulo ou 
classe. Esse processo de aprendizagem funciona obtendo-se relações que mapeiem as 
entradas em saídas e verificando a sua corretude através da comparação com os dados 
previamente disponíveis. 
Problemas em que só se possui a presença de duas classes (spam ou não-spam, 
por exemplo) são tradicionalmente conhecidos como problemas binários. Contudo, 
várias classes podem existir em um cenário. Por exemplo, considere a tarefa de 
classificar os dados de um cachorro em uma raça específica, através de dados como 
peso, altura, idade, tamanho do focinho etc., a partir de um conjunto de amostras pré-
 
 
 
 
 
 
 
8 
classificadas. Esse problema pode possuir várias classes possíveis, cada uma 
correspondendo a uma raça de cachorro presente no cenário analisado. 
Aprendizado não-supervisionado 
Em soluções de aprendizado do tipo não-supervisionado, há a presença de um 
conjunto de amostras de entrada, porém não se conhece as suas respectivas saídas ou 
classes. O objetivo nesses casos é encontrar regularidades ou relações entre as entradas, 
através da identificação de padrões que ocorrem mais em relação a outros. Como não 
se possui a presença das classes relativas a cada amostra, não é possível avaliar a solução 
em termos de acurácia. 
Um método muito utilizado de treinamento não-supervisionado é o que se 
conhece como clustering, ou agrupamento, em que o objetivo é agrupar os elementos 
em um conjunto de grupos, a partir da relação e semelhança entre eles. 
Considere novamente o exemplo de uma companhia que comercializa 
produtos on-line. Uma solução de agrupamento poderia ser utilizada para agrupar os 
clientes da companhia em determinados perfis de clientes, através da semelhança entre 
os seus hábitos de consumo e comportamento no site. Dessa forma, o setor de 
marketing da empresa poderia adotar estratégias de publicidade específicas para cada 
grupo, de forma a otimizar os recursos gastos e otimizar a conversão dos clientes. 
Aprendizado semi-supervisionado 
Em soluções de aprendizado do tipo semi-supervisionado, há a presença de um 
grande conjunto de amostras, porém apenas algumas são previamente mapeadas. É um 
meio termo entre os aprendizados supervisionado e não supervisionado. 
No mundo real, não são todos os problemas que se possui a facilidade de obter 
amostras previamente mapeadas, como o exemplo de classificação de e-mails como 
 
 
 
 
 
 
 
9 
spam ou não-spam. Muitas das vezes obter essas amostras pode ser custoso em termos 
de tempo ou custo. 
Considere, por exemplo, o problema de se classificar a imagem de um sapo 
entre as diversas espécies de sapos existentes. Mesmo se obtendo um conjunto grande 
de imagens de sapos (entrada), a classificação de cada imagem na sua respectiva classe 
(saída) demanda a presença de um especialista no domínio, o que torna o processo 
custoso em termos financeiros. 
Vários problemas de aprendizado de máquina acabam lidando com esse tipo 
de situação. Uma situação possível pode ser a utilização de soluções denominadas de 
active learning, ou aprendizado ativo, em que se busca selecionar as melhores amostras 
para serem categorizadas por um especialista no domínio, evitando a necessidade de 
todas as amostras serem mapeadas. 
Aprendizado de Máquina e Deep Learning 
O Deep Learning, ou aprendizagem profunda, é parte de um conjunto de 
métodos de aprendizado de máquina, que tem como objetivo, dentre outros propósitos, 
oferecer uma alternativa às soluções de aprendizado de máquina construídas de forma 
manual. 
O Deep Learning tem a sua origem nas Redes Neurais Artificiais (RNAs), a serem 
discutidas no próximo capítulo, que tiveram a utilização aumentada de forma acentuada 
com a popularização das unidades de processamento gráficas (GPUs), e a da 
disponibilidade de um grande conjunto de dados através da Internet. Várias soluções 
que utilizam Deep Learning já são conhecidas em diversos setores. 
É importante ressaltar que deep learning também é um tipo de aprendizado de 
máquina. Contudo, para facilitar o entendimento ao decorrer deste texto, chamaremos 
 
 
 
 
 
 
 
10 
de “aprendizado de máquina” aquelas soluções tradicionais de aprendizado, em 
detrimento ao deep learning. 
Vamos supor que você deva desenvolver uma solução que receba uma imagem 
e indique se ela se refere a um cachorro ou a um gato. Em uma solução de aprendizado 
de máquina tradicional, tipicamente iríamos definir manualmente características que 
distinguem essas duas classes (cachorros e gatos). Por exemplo, poderíamos utilizar o 
tamanho do focinho ou das orelhas para realizar essa diferenciação. 
 Contudo, nessa abordagem, algumas questões começam a aparecer. Por 
exemplo, será que outra característica, que ainda não havíamos pensado, consiga 
diferenciar melhor essas duas classes (talvez a distância entre os olhos?). Soluções 
baseadas em Deep Learning possuem a vantagem de realizar a definição das melhores 
características que distinguem essas duas categorias de forma automática, podendo 
utilizar aspectos que não havíamos previsto. 
Outra característica de soluções baseadas em deep learning é que elas extraem 
as características de forma hierárquica. Por exemplo, uma solução desse tipo 
primeiramente poderia identificar bordas que diferenciam os dois animais, agrupar 
essas bordas para formar estruturas mais complexas e agregar todas essas informações 
para obter a resposta final. 
Se compararmos soluções tradicionais de aprendizado de máquina com Deep 
Learning, veremos que soluções tradicionais necessitam de menos dados históricos para 
operarem bem, porém a performance do Deep Learning com um conjunto grande de 
dados é maior. Em relação a hardware, deep learning necessita de maiores recursos para 
funcionar bem, devido ao seu funcionamento interno, que iremos abordar nos próximos 
capítulos. 
 
 
 
 
 
 
 
11 
Soluções tradicionais de deep learning necessitam de um especialista no 
domínio do problema para definir manualmente as características que serão utilizadas 
para realizar o processamento. Contudo, em alguns problemas (por exemplo, 
diferenciarvárias espécies de sapos ou identificar tumores em uma imagem médica), o 
especialista pode não estar disponível ou ser muito oneroso a sua utilização. 
Por fim, soluções baseadas em deep learning levam mais tempo para serem 
construídas (o que será abordado mais a frente como fase de treinamento). Além disso, 
apresentam a característica de serem fim-a-fim, ou seja, muitas vezes não é trivial 
entender as características que foram utilizadas para realizar a computação, já que 
muitas vezes só são significativas pelo computador. A inteligibilidade da solução, 
portanto, é menor que em soluções tradicionais. 
Resumo 
Neste capítulo, entendemos o que é o aprendizado de máquina. Vimos que são 
soluções que utilizam dados históricos para automaticamente conseguirem obter 
relações entre dados e desenvolver algoritmos. Diferenciamos também aprendizado 
supervisionado (em que há a presença de dados pré-categorizados), não supervisionado 
(onde não há anotações) e semi-supervisionado (em que apenas um subconjunto das 
amostras está categorizado). Por fim, entendemos a diferença entre soluções 
tradicionais de aprendizado de máquina e deep learning, chegando à conclusão de que 
deep learning obtém características do problema de forma automática, hierárquica, mas 
que é menos inteligível e que demanda maior capacidade computacional e dados para 
funcionar bem. 
 
 
 
 
 
 
 
 
 
12 
Capítulo 2. Redes Neurais Artificiais 
Neste capítulo, serão abordados os modelos computacionais que deram 
origem ao Deep Learning, conhecidos como Redes Neurais Artificiais (RNAs). Serão 
estudados o processo de evolução das RNAs e o seu funcionamento. 
Motivação 
As pesquisas com RNAs iniciaram-se através da constatação de que o cérebro 
humano era particularmente bom para determinar tarefas específicas particulares, 
como o reconhecimento de padrões. Por exemplo, considere a tarefa de identificação 
de dígitos escritos a mão. Apesar de o mesmo dígito, escrito por pessoas diferentes, 
tenha características distintas, como espessura e angulação, conforme exibido na Figura 
1, o cérebro humano consegue de forma relativamente fácil distingui-los. 
Figura 1 – Exemplos de dígitos escritos a mão. 
 
Contudo, o mesmo não acontece com o computador digital convencional, que 
processa informações de uma forma diferente. Por exemplo, para os computadores, é 
fácil o processamento de multiplicações de números grandes, como 24 x 72, o que não 
é uma tarefa fácil para o cérebro humano. 
 
 
 
 
 
 
 
13 
Diante disso, a motivação para criar uma estrutura computacional que 
remetesse ao funcionamento do cérebro humano teve ao menos duas motivações 
principais: 
1) Entendimento detalhado do cérebro humano: A partir da criação de modelos 
computacionais que simulassem o funcionamento do cérebro humano, seria possível 
entender melhor o seu próprio funcionamento, o que propiciaria avanços em pesquisas 
de diversas áreas, como a medicina, biologia e psiquiatria. 
2) Automatização de tarefas: Através da criação de modelos computacionais 
que simulassem o funcionamento do cérebro humano, tarefas fáceis de serem 
executadas por humanos, como o reconhecimento de dígitos, poderiam ser realizadas 
também por computadores. Essa é uma motivação inerente da área da ciência da 
computação. 
Dessa forma, a primeira citação ao termo neuro computação remete a 1943, 
em artigos que sugeriam a criação de uma máquina inspirada na estrutura do cérebro 
humano. De fato, de forma geral uma rede neural artificial é uma máquina que é 
projetada para simular a forma com que o cérebro humano desempenha uma tarefa 
específica. 
Avanços na ideia de uma máquina que simulasse o funcionamento do cérebro 
humano foram acontecendo, até que, em 1975, a primeira rede neural artificial com 
várias camadas foi proposta. Contudo, devido à limitação de processamento disponível 
na época, as redes neurais levavam semanas ou meses para terminarem o seu 
processamento, o que tornava a sua utilização inviável. 
A partir do ano de 2009, devido sobretudo à popularização de processamento 
e facilidade de obtenção de GPUs (que conseguem paralelizar diversos cálculos 
executados pelas redes), as RNAs começaram a ser referência na área de inteligência 
 
 
 
 
 
 
 
14 
artificial, começando a vencer diversas competições de reconhecimento de padrões e 
aprendizado de máquina. 
Estrutura básica 
Uma RNA tem como objetivo funcionar de forma parecida com o 
funcionamento do cérebro humano. O cérebro humano consiste em um conjunto 
bastante denso de células nervosas interconectadas, responsáveis por processar 
informações, denominadas neurônios. De acordo com Shepherd (2003), o cérebro 
humano possui aproximadamente 10 milhões de neurônios e 60 trilhões de conexões 
entre eles, denominadas sinapses. 
Os sinais elétricos são propagados de um neurônio para os outros através de 
reações eletroquímicas pelas sinapses, e as suas intensidades podem ser alteradas, por 
exemplo, dependendo dos padrões que estejam sendo analisados. Isso leva ao fato de 
que a intensidade das conexões entre os neurônios varia, e inclusive novas conexões 
entre neurônios distintos podem ser formadas. 
O cérebro humano pode ser considerado um grande sistema complexo, não-
linear e que realiza processamento paralelo. As informações são armazenadas e 
processadas simultaneamente por toda a rede neural cerebral. Além disso, possui a 
capacidade de aprender através das experiências, alterando a sua constituição de 
sinapses e neurônios. O processo de aprendizado é uma tarefa fundamental no cérebro 
humano, razão pela qual não é difícil concluir que o seu funcionamento atraiu 
interessados em estudá-lo para o desenvolvimento de soluções de aprendizado de 
máquina. 
Apesar de a aproximação das RNAs com o cérebro humano ser muito primitiva, 
seus resultados são animadores. As redes neurais artificias, assim como a rede neural 
 
 
 
 
 
 
 
15 
cerebral é capaz de aprender com experiências passadas e generalizar o seu 
aprendizado a outras amostras que ainda não haviam sido encontradas. 
A estrutura básica de uma RNA é exibida na Figura 2. Ela consiste em um 
conjunto de unidades de processamento, chamadas neurônios, e diversas ligações, 
responsáveis por transmitir informações de um neurônio a outro, a exemplo do que 
ocorre no cérebro humano. Cada ligação entre um par de neurônios tipicamente tem 
um peso, novamente inspirado no que acontece nas sinapses cerebrais. 
Cada neurônio pode receber uma ou mais informações de entrada de outros 
neurônios, porém produz apenas uma saída, apesar de ela poder ser conectada a vários 
outros neurônios. Cada neurônio nas RNAs é organizado no que se conhece como 
camadas. 
Uma camada é exibida como um conjunto de neurônios organizados na vertical. 
No exemplo da figura, existem três camadas: a primeira (rosa) é denominada camada 
de entrada, e é onde as informações começam a trafegar. A última camada (verde) é 
conhecida como camada de saída, e onde se localizam os neurônios que irão dar a 
resposta da rede. As camadas localizas entre as de entrada e saída são denominadas 
camadas ocultas (ou hidden), e é onde as informações são processadas até que sejam 
enviadas à camada de saída. 
Figura 2 – Estrutura básica de uma RNA. 
 
 
 
 
 
 
 
 
16 
Neurônio artificial 
A estrutura de um neurônio artificial é detalhada na Figura 3. Todos os 
neurônios da rede, com exceção dos neurônios da camada de entrada, recebem como 
entradas informações oriundas de outros neurônios (x1, x2 … xn) cada uma delas 
associada a um peso diferente (w1, w2 … wn). 
Figura 3 – Estrutura básica de uma RNA. 
 
O neurônio então agrega todos esses resultados através do somatório do valor 
de cada entrada multiplicado pelo seu respectivo peso. Um outro parâmetro, chamado 
bias, é somado ao valor final, e tem como objetivo funcionar ao modo de uma constante 
em uma função linear.O valor final do cálculo do neurônio é então dado por 
, em que b é o valor do bias. 
Contudo, antes de propagar o valor calculado para os próximos neurônios, o 
resultado passa por uma função denominada função de ativação. O seu objetivo é 
transformar a função linear presente nos neurônios em uma função não-linear, o que 
permite à rede modelar cenários cada vez mais complexos. Caso não fosse utilizada uma 
função de ativação não-linear, toda a RNA poderia ser resumida a uma única função 
linear. 
∑ xiwi+b
 
 
 
 
 
 
 
17 
Diversas funções de ativação diferentes tiveram seu funcionamento explorado 
em redes neurais artificiais. A primeira delas, proposta ainda na década de 1940, utiliza 
a função degrau como função de ativação. 
Após o neurônio calcular o valor das entradas e adicionar o bias, o resultado é 
comparado com um valor de limiar Θ. Caso o valor calculado seja menor que o limiar 
estabelecido, o resultado do neurônio é -1. Caso contrário, é 1. A função de ativação 
degrau é exibida na Figura 5, em que X é o valor calculado no neurônio. Esse modelo de 
neurônio é conhecido como neurônio MCP. 
Figura 4 – Função degrau. 
 
Outras funções de ativação bastante utilizadas são as funções sinal, sigmoid e 
linear, cujos comportamentos são exibidos na Figura 5. 
Figura 5 – Funções de ativação de um neurônio artificial. 
 
Y= {+1, se X≥ θ
0, se X<θ
 
 
 
 
 
 
 
18 
A função sinal transforma o valor de entrada em um valor igual a -1 ou 1 e, 
assim como a função degrau, é utilizada para tarefas de classificação e reconhecimento 
de padrões. A função sigmoid transforma a entrada, independentemente do seu valor, 
em uma saída entre 0 e 1. A função linear provê uma saída igual à entrada e, como dito 
anteriormente, não agrega características não-lineares ao modelo, não sendo utilizada 
geralmente para a modelagem de cenários complexos. 
Funcionamento básico 
Abordaremos agora o funcionamento genérico de uma rede neural artificial 
(detalhes mais específicos de funcionamento serão abordados nos próximos capítulos). 
Considere, por exemplo, a tarefa de se reconhecer um dígito presente em uma imagem 
escrita à mão. De uma forma simplificada e ingênua (veremos uma forma mais otimizada 
adiante), cada pixel da imagem poderia ser lido e associado a um neurônio da camada 
de entrada. Essas informações então seriam propagadas aos neurônios das camadas 
ocultas, que executariam operações matemáticas sobre eles. Os resultados dessas 
operações seriam transmitidos aos neurônios da camada de saída, que agregariam o 
resultado e dariam uma resposta, indicando a qual dígito aquela imagem se refere. Esse 
tipo de rede em que não há ciclos, ou seja, a informação sempre percorre uma mesma 
direção, são chamadas de redes do tipo feedforward. 
O mecanismo de aprendizado de uma rede neural feedforward pode ser 
comparado por analogia ao mecanismo de aprendizado humano. Inicialmente, os pesos 
das ligações entre cada neurônio e seu bias podem ser iniciados de forma aleatória, 
quando ainda não se sabe sobre o domínio do problema que se está analisando. Para 
que a rede consiga ajustar os seus pesos em um aprendizado supervisionado, são 
necessárias amostras pré-classificadas, que formam o que se conhece como conjunto 
de treinamento. No exemplo dos dígitos escritos à mão, um conjunto de treinamento 
 
 
 
 
 
 
 
19 
seria formado por várias imagens de dígitos escritos à mão, previamente categorizadas 
(0, 1, 2, 3 … 9). 
A cada iteração da rede, as imagens do conjunto de treinamento são 
processadas, entrando pelos neurônios da camada de entrada, passando pelas camadas 
ocultas e chegando até à camada de saída. O resultado obtido no neurônio da camada 
de saída é então comparado com o resultado previamente categorizado daquela 
amostra (no caso do problema de dígitos escritos à mão, haveria 10 saídas possíveis no 
neurônio da camada de saída, correspondendo aos dígitos de 0 a 9). 
A função que calcula a diferença entre o resultado obtido pela rede para uma 
determinada amostra e o seu resultado previamente categorizado é chamada de função 
de perda. A função de perda é calculada para cada amostra no conjunto de treinamento. 
O ideal em uma rede é que a função de perda sempre se iguale a zero. Dessa forma, a 
predição que a rede estaria fazendo e a categorização real do objeto seriam iguais. Uma 
função de perda comumente utilizada é a função de perda 0-1, cuja fórmula é exibida 
na Figura 6. 
Figura 6 – Função de perda 0-1. 
 
Nessa função, o valor previamente categorizado da amostra (a) é subtraído do 
valor encontrado pela rede (a’). Caso o resultado seja maior que um limiar (Θ), a função 
assume o valor 1; caso contrário, assume o valor 0 (ou seja, não há perda). 
L= {1, se|a− a '|≥ θ
0, se|a− a '|<θ
 
 
 
 
 
 
 
20 
Obviamente, a função 0-1 apenas retorna os valores 0 ou 1, indicando se houve 
ou não perda. Contudo, outras funções que retornam valores intermediários podem ser 
utilizadas, dependendo da aplicação que esteja sendo desenvolvida. 
A função que agrega os resultados individuais das funções de perda obtidas 
para amostra é denominada função de custo, e indica a perda total que se teve em 
relação às amostras do conjunto de treinamento. Uma função utilizada é a função erro 
quadrático médio, exibida na Figura 7. Essa função realiza a média das funções de custo 
de cada amostra (xi) elevadas ao quadrado. 
Figura 7 – Função erro médio quadrático. 
 
Após a função de custo ser calculada, o comportamento padrão da rede neural 
envolve a atualização dos pesos de cada neurônio, com o objetivo de que a função de 
custo seja minimizada. Esse processo é denominado treinamento da rede. Determinar 
quanto os pesos vão ser alterados depende do resultado final da função de custo (se foi 
alta ou baixa) e de um outro parâmetro definido na rede: a taxa de aprendizado. 
A taxa de aprendizado, essencialmente, diz respeito à velocidade com que a 
rede realiza o seu aprendizado. Contudo, nem sempre definir uma taxa de aprendizado 
alta é uma boa escolha. Suponha, por exemplo, que, na primeira passada, a rede tenha 
categorizado corretamente a primeira metade das amostras de dígitos escritos à mão, 
porém tenha errado a segunda metade delas. Se a taxa de aprendizado for muito alta, 
os pesos serão alterados de forma a categorizar corretamente a segunda metade das 
amostras, porém pode vir a errar a primeira metade, e nunca chegar a convergir a um 
resultado satisfatório. 
C= 1
N∑i= 1
N
L(x i)
2
 
 
 
 
 
 
 
21 
Contudo, caso a taxa de aprendizado seja baixa demais, a rede pode demorar 
muito a terminar a sua execução. A definição desse parâmetro é uma solução de 
compromisso que deve ser feita, procurando um valor que seja baixo o bastante para 
que a rede consiga convergir a um resultado útil, mas alto o bastante para que ela não 
leve meses ou mesmo anos para terminar de ser treinada. 
Geralmente, o treinamento da rede termina em duas situações: quando o 
resultado da função custo atingir um valor considerável, o que significa que a rede 
alcançou uma alta taxa de acerto; ou quando um número determinado de passadas por 
todas as mostras de treinamento tenha sido alcançada. Cada passada pela rede por 
todas as amostras de treinamento recebe o nome de época. 
Resumo 
Neste capítulo, foram abordados os seguintes tópicos: 
1) A motivação a partir da qual foram criadas as redes neurais artificiais. As 
RNAs foram criadas através da constatação de que o cérebro humano era muito 
eficiente para a realização de determinadas tarefas específicas, como reconhecimento 
de padrões, atividades difíceis de serem executadas por um computador. Foi proposta 
então a criação de um modelo computacional que simulasse o funcionamento do 
cérebro humano, para que fosse possível desempenhar tarefas que o mesmo 
desempenha bem. Contudo, apesar de ser uma ideia da década de 1940, devido a 
restrições emrecursos computacionais as redes neurais não tiveram uma utilização 
plena. Seu maior emprego só começou a ser possível por volta de 2009, quando avanços 
na área de hardware tornaram processadores e GPUs mais fáceis de serem obtidos. 
2) A estrutura básica de uma RNA é feita para simular a constituição do cérebro 
humano. Os neurônios são unidades de processamento que recebem informações, 
processam-nas e propagam-nas para outros neurônios. Eles estão divididos em camada, 
 
 
 
 
 
 
 
22 
sendo que a primeira camada é conhecida como camada de entrada, a última é chamada 
de camada de saída e as intermediárias são chamadas de camadas ocultas. Os neurônios 
possuem ligações com neurônios das camadas imediatamente anterior e posterior. 
3) Um determinado neurônio recebe informações de vários neurônios da 
camada anterior. Cada uma dessas informações possui um peso diferente, assim como 
acontece no cérebro humano. A tarefa do neurônio é agregar essas informações, 
tipicamente através de um somatório ponderado pelo peso de cada ligação, e somando 
o resultado a um bias, um valor que tem o mesmo objetivo de uma constante em um 
função matemática. Antes de enviar o resultado obtido para os neurônios da camada 
posterior, uma função de ativação é aplicada sobre ele. O objetivo é verificar o quanto 
aquele valor obtido ativou a ligação entre os neurônios e os demais. Vimos também que 
o neurônio MCP utiliza a função degrau como função de ativação. 
4) Uma rede do tipo feedforward é uma RNA que não possui ciclos entre os 
neurônios, e em que a informação propaga sempre em uma só direção. Os neurônios da 
camada de entrada são responsáveis por obter as informações de entrada e propagá-
los para os neurônios da camada seguinte, que fazem os cálculos e utilizam a função de 
ativação até que o resultado chegue nos neurônios da camada de saída. Uma RNA em 
um problema de aprendizado supervisionado aprende com um determinado conjunto 
de treinamento, uma série de amostras cujo resultado já se conhece. O processo de 
treinamento da rede envolve processar as amostras do conjunto de treinamento e 
comparar o resultado obtido com o resultado previamente conhecido, através de uma 
função de perda. A função de custo é a agregação da função de perda de todas as 
amostras individuais. Por fim, a taxa de aprendizado determina qual a velocidade com 
que a RNA irá mudar o conhecimento que já adquiriu, sendo necessário um valor 
intermediário desse parâmetro, de forma que a rede consiga produzir um resultado útil, 
porém não leve muito tempo para terminar de ser treinada. 
 
 
 
 
 
 
 
23 
Capítulo 3. Modelos de Redes Neurais Artificiais 
Neste capítulo, abordaremos alguns modelos de redes neurais artificiais 
utilizados e o seu funcionamento. 
Perceptron 
Em 1957, Frank Rosenblatt propôs a criação do primeiro modelo de rede neural 
artificial que se tem conhecimento, chamado de Perceptron, e que utiliza o neurônio 
MCP na sua operação. O modelo possui uma configuração muito simples, com apenas 
um neurônio, que consiste em um combinador linear utilizando a função de ativação 
degrau. O esquema da rede Perceptron é exibida na Figura 8. A primeira entrada na 
figura representa o bias. 
Figura 8 – Estrutura da rede Perceptron. 
 
A rede Perceptron não possui camadas ocultas na sua configuração. Com uma 
configuração tão simples, ela funciona aos moldes de um classificador linear binário. Ou 
seja, tem como objetivo classificar uma amostra com m características (o mesmo 
número de entradas) em uma de duas classes. Cada classe é associada a uma saída 
possível da função de ativação degrau, 0 ou 1. 
 
 
 
 
 
 
 
24 
A rede Perceptron pode ser aplicada em problemas cujo objetivo é dividir o 
espaço n-dimensional através de um hiperplano com duas regiões. Para simplificação, 
considere o espaço dimensional de duas dimensões, ou . Nesse espaço, cada 
amostra possui apenas duas características, ou seja, o neurônio da rede irá receber 
apenas duas entradas, além do bias. 
O objetivo da rede Perceptron é dividir esse espaço em duas regiões, conforme 
mostrado na Figura 9. Por mais simples que possa parecer, a rede é capaz de aprender 
onde posicionar a linha, procurando encontrar a separação mais efetiva possível. 
Quando uma nova amostra chega para classificação na rede, basta posicioná-la em um 
dos lados da divisão. 
Figura 9 – Amostras dividias em duas regiões no . 
 
O mecanismo de aprendizagem da rede Perceptron também é simples. 
Inicialmente, os pesos de cada entrada são definidos de forma aleatória, com valores 
que podem ir de -0,5 a +0,5, e continuamente ajustados para que se obtenha uma saída 
consistente com as amostras de treinamento. 
O processo de atualização dos pesos da rede Perceptron funciona da seguinte 
maneira: em cada época, todas as amostras do conjunto de treinamento são 
processadas pela rede. Após o processamento de cada amostra, o seu valor de perda é 
• 2
• 2
 
 
 
 
 
 
 
25 
calculado como sendo a diferença entre o resultado previamente classificado (Yd) e o 
resultado calculado pela rede (Y), conforme mostra a Figura 10, em que p é a amostra 
analisada. 
Figura 10 – Função de perda utilizada pelo Preceptron. 
 
Por exemplo, caso o valor previamente classificado (Yd) seja 1 e o valor 
calculado pela rede (Y) seja 0, o resultado da função de perda, ou erro, será 1. Caso o 
valor do erro seja positivo, isso significa que o valor previamente obtido é maior que o 
valor calculado, então é necessário aumentar o valor da saída do neurônio para que se 
busque igualar a 0; caso seja negativo, é necessário reduzir esse valor. Esse processo é 
alcançado através da aplicação da fórmula exibida na Figura 11, para todas as entradas 
do neurônio. 
Figura 11 – Fórmula de atualização de pesos do Preceptron. 
 
O que essa fórmula indica é que o valor de cada peso (wi) terá seu novo valor 
como sendo ele mesmo somado com a multiplicação de uma taxa de aprendizado (α), 
do valor da entrada associada àquele peso (xi) e do erro calculado para aquela amostra 
(e). O algoritmo de funcionamento da rede Precepton é mostrado a seguir. 
 Passo 1: Inicialização. 
‒ Inicie todos os pesos e os bias como um valor aleatório entre -0,5 e +0,5. 
 Passo 2: Ativação. 
e ( p)= Y d( p)− Y ( p)
w i(p+1)= wi( p)+α• xi( p)• e ( p)
 
 
 
 
 
 
 
26 
‒ Ative o neurônio através da entrada dos valores x1, x2 … xn para todas as 
amostras p = 1 … m. 
‒ Calcule o resultado da medição (Y) com da utilização da função de 
ativação degrau através da fórmula 
onde n é o número de entradas no 
neurônio e degrau é a função de ativação grau. 
 Passo 3: 
‒ Atualize os pesos do neurônio através da fórmula
 
 Passo 4: Iteração. 
‒ Passe para próxima época do algoritmo, repetindo a execução a partir do 
passo 2, até que um número determinado de épocas seja alcançado ou 
que o erro não ocorra mais. 
Rede Perceptron de Múltiplas Camadas (MLP) 
Devido à sua simplicidade, a rede neural artificial Preceptron possui algumas 
limitações. Por exemplo, considere a Figura 12, em que são representadas amostras de 
duas classes distintas: as coloridas de vermelho e as coloridas de azul. Não é possível 
desenhar uma reta que divida esse espaço em duas regiões distintas, separando as 
amostras azuis das amostras vermelhas. Dessa forma, visto que redes neurais 
Preceptron tradicionais apenas podem ser aproximadas a funções lineares, ela não seria 
efetiva para esse problema. 
 
Y ( p)= degrau [∑
i= 1
n
xi( p)• wi( p)+bias]
w i(p+1)= wi( p)+α• x i ( p)• e ( p)
 
 
 
 
 
 
 
27 
Figura 12 – Amostras dividias em duas regiões no . 
 
Essa limitação, contudo, pode ser superada através da expansão da rede 
Preceptron tradicional, com a inclusão de camadas ocultas entre as camadas de entrada 
e a camada de saída. Com essas camadas intermediárias, modelos mais complexos 
podem ser construídos, como o mostrado acima.A esse modelo de redes neurais 
artificiais dá-se o nome de Rede Precepton de Múltiplas Camadas (MLP, do inglês 
Multiplayer Preceptron). 
As camadas ocultas possuem esse nome pois o resultado que os seus neurônios 
produzem tipicamente não podem ser observados analisando-se o comportamento 
padrão da rede, de entrada e de saída. Não há forma trivial de se saber qual o resultado 
esperado dos neurônios das camadas ocultas. 
Na época da criação das redes MLP, na década de 1980, eram comum a criação 
dessas redes com no máximo uma ou duas camadas ocultas, visto que à medida que o 
número de camadas aumentava, crescia-se também o número de neurônios e o número 
de conexões entre eles. Dessa forma, o processamento computacional necessário para 
o treinamento da rede ficava muito alto, o que inviabilizava a sua utilização. 
 A Figura 13 mostra um exemplo de uma rede MLP com duas camadas 
ocultas. Nessa configuração, cada neurônio apresenta uma conexão com todos os 
• 2
 
 
 
 
 
 
 
28 
neurônios das camadas imediatamente anterior e posterior. Uma rede que segue esse 
padrão de conexão é denominada rede totalmente conectada (do inglês, fully-
connected). 
Figura 13 – Uma arquitetura MLP com duas camadas ocultas. 
 
Além da inclusão de camadas ocultas, é necessário alterar a função de ativação 
dos neurônios de forma a atender modelos não-lineares. Isso decorre do fato de que, 
independentemente do número de camadas ocultas de uma rede, caso suas funções de 
ativação sejam lineares, a topologia da rede pode ser reduzida algebricamente a uma 
rede simples, sem camadas ocultas. 
Duas das funções comumente utilizadas são a função hiperbólica, que mapeia 
a entrada para um valor distribuído entre -1 e 1, e a função logística, que mapeia a 
entrada para um valor distribuído entre 0 e 1. A curva gerada pelas duas funções são 
mostradas na Figura 14. 
 
 
 
 
 
 
 
 
29 
Figura 14 – Curvas das funções hiperbólica e logística. 
 
Com camadas ocultas, consequentemente, o número de neurônios, a conexão 
entre eles e o número de pesos da rede aumentou. Dessa forma, um tempo maior de 
treinamento é necessário para que a RNA tenha seu treinamento concluído. Além disso, 
como mencionado anteriormente, não é possível através de uma forma simples obter e 
interpretar os resultados intermediários de uma camada oculta. 
Teoricamente, a complexidade das informações capturadas pelas camadas 
ocultas deveria aumentar. Por exemplo, a primeira camada oculta de uma rede que 
detecte dígitos escritos à mão poderia capturar informações simples, como traços e 
bordas, enquanto as camadas subsequentes capturariam informações mais complexas, 
como um conjunto de bordas que formam um pedaço do dígito. Contudo, elas muitas 
vezes podem não fazer sentido quando interpretadas por um observador humano. A 
Figura 15 mostra uma imagem formada pelos pesos de um dos neurônios de uma 
camada oculta de uma RNA, especializada em reconhecer dígitos escritos à mão. 
 
 
 
 
 
 
 
 
30 
Figura 15 – Imagem formada pelos pesos de um neurônio de uma camada oculta. 
 
Com mais neurônios e consequentemente mais ligações e pesos, o mecanismo 
de aprendizado é mais complexo do que o da rede Perceptron simples, que precisou ser 
aprimorado. Para se ter uma ideia, suponha que na nossa rede especializada em 
reconhecer dígitos escritos à mão, cada pixel corresponda a um neurônio na camada de 
entrada. Considerando uma imagem de entrada de 28x28 pixels, apenas na camada de 
entrada teríamos um total de 784 neurônios. Considere ainda que a rede possui duas 
camadas ocultas, cada uma com 16 neurônios, além de 10 neurônios na camada de saída 
(cada um representando o quanto aquela imagem se parece com um dos 10 dígitos 
possíveis). A configuração da rede ficaria, portanto, da seguinte forma: 
Camada de entrada: 784 neurônios 
Camada oculta 1: 16 neurônios 
Camada oculta 2: 16 neurônios 
Camada de saída: 10 neurônios 
 
 
 
 
 
 
 
31 
Total de parâmetros (pesos e bias): 13.002 
Como pode ser visto, o total de parâmetros da nossa rede agora é 13.002, muito 
superior à rede Perceptron simples que tínhamos anteriormente. Felizmente, um 
algoritmo eficiente para o ajuste de todos esses parâmetros está disponível, e é 
conhecido como retropropagação (ou back-propagation, do inglês). 
Algoritmo de retropropagação 
O algoritmo de retropropagação é o algoritmo mais utilizado para realizar a 
atualização dos parâmetros que formam uma rede neural de múltiplas camadas. Não 
entraremos em detalhes matemáticos neste material, pois essencialmente o que nos 
interessa é a intuição por trás do algoritmo e o seu funcionamento básico. Contudo, 
aqueles que quiserem realizar um aprofundamento no seu funcionamento, podem 
consultar as referências disponibilizadas neste material, especialmente em Hecht-
Nielsen (1992). 
A versão moderna do algoritmo de retropropagação foi proposta em 1970, por 
Seppo Linnainmaa, um estudante de mestrado finlandês. Ele passou por diversas 
melhorias durante os anos, mas sua essência continua a mesma. 
A motivação para a utilização do algoritmo é simples: como todos os 
parâmetros (pesos e bias) de uma rede neural podem ser atualizados da forma mais 
efetiva e computacionalmente viável, de forma que a acurácia (ou taxa de acerto) da 
RNA continue aumentando? A solução mais simples possível para isso seria utilizar a 
força bruta: poderíamos gerar todas as combinações possíveis de parâmetros e testá-
las. Contudo, para a nossa rede de reconhecimento de dígitos escritos à mão, com 
13.002 parâmetros, isso produziria um total de combinações que deixaria a RNA 
testando durante séculos! 
 
 
 
 
 
 
 
32 
Uma solução melhor é utilizar o conceito matemático de vetor gradiente. O 
vetor gradiente é uma ferramenta matemática que indica a direção na qual se obtém o 
crescimento máximo do valor de uma função qualquer. Por exemplo, considere a função 
de uma parábola exibida na Figura 16. Neste gráfico, considere um ponto X = 2, com seu 
respectivo valor Y = 4. Existem duas formas possíveis de se alterar o valor de Y: 
aumentando ou reduzindo o valor de X. Uma dessas alterações (aumentar ou reduzir X) 
irá provocar o maior aumento no valor de Y. Obviamente, nesse caso, ao se aumentar o 
valor de X, o valor de Y também aumenta. O cálculo do vetor gradiente nessa situação 
iria indicar justamente um valor positivo, ou seja, teríamos que aumentar o valor de X 
para que Y também aumentasse, assim como foi possível constatar em uma simples 
checagem visual. 
Figura 16 – Função representando uma parábola. 
 
Contudo, nem sempre é possível fazer essa checagem de forma visual. 
Considere agora a função em três dimensões exibida na Figura 17. Não é possível, saber 
visualmente com certeza qual a direção que maior maximiza o resultado da função (ou 
seja, aumentar ou diminuir os valores de X e Y), independente do ponto em que se esteja 
localizado. Todavia, através do cálculo do vetor gradiente, essa constatação poderia ser 
feita de forma relativamente simples. 
 
 
 
 
 
 
 
33 
Figura 17 – Função em três dimensões complexa. 
 
O mesmo raciocínio pode ser aplicado para a função de custo utilizada na rede 
neural artificial. Considerando novamente a RNA utilizada para reconhecer dígitos a mão 
com 10 neurônios na camada de saída (um representando o quanto a imagem 
corresponde a cada dígito), caso uma imagem de um dígito 2 entre na rede, idealmente 
o que espera são os seguintes resultados na camada de saída: 
Neurônio Dígito 0: 0,0 
Neurônio Dígito 1: 0,0 
Neurônio Dígito 2: 1,0 
Neurônio Dígito 3: 0,0 
Neurônio Dígito 4: 0,0 
Neurônio Dígito 5: 0,0 
Neurônio Dígito 6: 0,0 
Neurônio Dígito 7: 0,0 
 
 
 
 
 
 
 
34 
Neurônio Dígito 8: 0,0 
Neurônio Dígito 9: 0,0 
Ou seja, nessa situação a RNA teria categorizado essa imagem da forma 
esperada. O único neurônio ativado haveria sido o que indica que o dígito 2foi 
encontrado, enquanto todos os outros estariam zerados. Utilizando como função de 
custo a função de erro médio quadrático, poderíamos calcular o quanto a rede errou em 
categorizar essa imagem, através da fórmula presente na Figura 18, em que Ydi 
representa o resultado desejado como saída no neurônio i (0, 0, 1, 0, 0, 0, 0, 0, 0, 0) e Yi 
representa o resultado obtido. Quanto maior o valor da função de custo, pior foi o 
resultado da rede na categorização daquela amostra. 
Figura 18 – Função erro médio quadrático utilizada como função de custo da rede. 
 
O valor de Yi pode ser reescrito essencialmente em função dos pesos e bias dos 
neurônios anteriores, já que é assim que ele é calculado. Dessa forma, a função de custo 
descrita poderia ser reescrita utilizando apenas pesos, bias e funções de ativação. O 
importante a se notar é que essa função de custo é uma função qualquer, como as duas 
anteriormente exibidas. Portanto, pode-se calcular o vetor gradiente da forma 
tradicional e obter-se a direção em que a função de custo iria aumentar à medida que 
alterasse os seus parâmetros (os pesos e bias). 
Contudo, como o nosso objetivo é reduzir a função de custo (de forma que se 
aproxime de 0, e que a saída da rede seja igual à resposta encontrada), calcula-se o 
oposto do vetor gradiente, multiplicando-o por -1. Ou seja, o vetor obtido indicaria em 
que direção devemos alterar os pesos e bias de toda a rede para que caminhemos em 
C= 1
10∑i= 1
10
(Y di− Y i)2
 
 
 
 
 
 
 
35 
direção a um erro 0. Devido a isso, esse gradiente também é chamado de gradiente 
descendente. 
Considere uma rede simples com 2 pesos e 1 bias. Um resultado possível do 
vetor gradiente descendente seria, por exemplo, [0,5 ; 50 ; -2,3]. Isso indicaria que à 
medida que aumentássemos o valor do primeiro e do segundo pesos (já que são 
positivos) estaríamos caminhando em direção a um erro menor. Da mesma forma, 
deveríamos reduzir o valor do terceiro parâmetro (o bias, por exemplo). É interessante 
notar que o gradiente não nos revela o quanto devemos reduzir ou aumentar de um 
parâmetro, mas sim a sua direção. Contudo, ele pode nos revelar quais os parâmetros 
são mais impactantes no cálculo final da função de custo. No exemplo anterior, o 
segundo parâmetro impacta 100 vezes mais a função de custo do que o primeiro 
parâmetro, visto que ele teve um resultado de 50 versus um resultado de 0,5. 
Outro ponto a ser ressaltado é que o cálculo do vetor gradiente descendente 
deve ser realizado para todas as imagens do nosso conjunto de treinamento, e então 
deve-se obter um vetor gradiente descendente médio. Contudo, como isso tornaria o 
processo computacionalmente inviável se tivermos muitas amostras no conjunto de 
treinamento, a abordagem conhecida como gradiente descendente estocástico é 
utilizada. Ao invés de calcular o vetor gradiente descendente para todas as imagens, o 
gradiente estocástico separa aleatoriamente o conjunto de treinamentos em 
subconjuntos, e então calcula o vetor gradiente descendente médio apenas para esse 
subconjunto (obviamente, os conjuntos vão sendo alternados a cada nova iteração da 
rede). 
O que é o algoritmo de retropropagação então? 
O algoritmo de retropropagação é um algoritmo que transforma a função de 
custo da rede em uma função utilizando pesos, bias e funções de ativação e utiliza a 
 
 
 
 
 
 
 
36 
técnica do gradiente descendente estocástico, realizando cálculos de derivadas, para 
encontrar a direção média (considerando um conjunto de amostras) em que cada 
parâmetro da rede (pesos e bias) deveria seguir (aumentar ou diminuir) para que a rede 
caminhe a uma taxa de erro próxima a 0. Depois disso, utiliza o parâmetro de taxa de 
aprendizado (normalmente um valor menor que 1) para transformar o valor médio do 
vetor do gradiente descendente e atualizar os parâmetros da rede. Lembre-se: a taxa de 
aprendizado é utilizada pois, caso um valor muito alto fosse usado para atualizar os 
pesos, a rede poderia nunca chegar a uma convergência. 
Outro ponto importante é que para utilizar o gradiente estocástico (que não é 
tão efetivo quanto o gradiente padrão, mas que garante uma boa aproximação e um 
grande ganho computacional), as imagens de cada subconjunto devem ser equilibradas. 
Por exemplo, o que aconteceria caso o algoritmo de retropropagação apenas utilizasse 
imagens do dígito 2 para a definição dos pesos? Provavelmente a rede seria 
especializada em reconhecer dígitos 2, e não funcionaria com os demais. 
O algoritmo de retropropagação segue os seguintes passos: 
Passo 1: Transforme a função de custo em uma função que utilize pesos, bias e 
funções de ativação. 
Passo 2: Separe o conjunto de treinamento aleatoriamente em subconjuntos, 
para utilização do gradiente estocástico. 
Passo 3: Selecione um subconjunto de treinamento e, para cada amostra, realize 
a sua predição na rede. 
Passo 4: Calcule a função de perda para cada amostra. 
Passo 5: Calcule o vetor gradiente descendente para cada amostra. 
 
 
 
 
 
 
 
37 
Passo 6: Calcule o vetor gradiente descendente médio, utilizando o vetor 
gradiente descendente de cada amostra. 
Passo 7: Utilizando a taxa de aprendizado da rede, atualize os pesos e bias. 
Passo 8: Repita o passo 3 até que a rede alcance uma boa taxa de acurácia ou 
um número máximo de repetições. 
O funcionamento da rede segue, portanto, basicamente em duas direções, 
conforme exibida nas Figuras 19 e 20. No primeiro passo, denominado forward, a rede 
prediz um conjunto de amostras de treinamento e avalia o seu resultado. No segundo 
passo, denominado retropropagação, a rede atualiza os pesos e bias, baseando-se no 
vetor gradiente descendente calculado. 
Figura 19 – Fase de forward de uma rede feed-forward, onde amostras são 
estimadas. 
 
 
 
 
 
 
 
 
 
38 
Figura 20 – Fase de retropropagação de uma rede feed-forward, onde pesos e bias 
são atualizados. 
 
Resumo 
Neste capítulo, foram abordados os seguintes tópicos: 
1) O modelo Perceptron é o modelo mais simples de RNA, proposto em 1957. 
Ele não possui camadas ocultas e possui apenas um neurônio MCP. Funciona aos moldes 
um classificador linear binário, já que só consegue indicar dois resultados de saída e 
solucionar problemas que podem ser resolvidos com uma reta. O Perceptron 
implementa um algoritmo de atualização de pesos, alterando os valores dos parâmetros 
do neurônio para conseguir classificar corretamente todas as entradas. 
2) O modelo Perceptron de Múltiplas Camadas (MCP) é uma solução para as 
limitações do Perceptron. Ela possui mais de um neurônio, distribuídos em mais de uma 
camada. No modelo MCP, foi introduzida a presença de camadas ocultas para aumentar 
o rol de problemas solucionáveis. Vimos também que as camadas ocultas capturam 
informações cada vez mais complexas, de forma hierárquica, mas que os seus resultados 
podem não ser inteligíveis para os seres-humanos. Além disso, a presença de mais 
 
 
 
 
 
 
 
39 
neurônios na rede pode tornar o processo de treinamento mais lento, e que um novo 
mecanismo de aprendizado foi necessário. 
3) O algoritmo de retropropagação é um algoritmo utilizado para atualizar os 
parâmetros de uma rede MCP. Ele utiliza o conceito de gradiente matemático, que 
indica em qual direção obtém-se o maior crescimento de uma função. Ao se modelar a 
função de custo de uma rede como uma função, é possível utilizar o algoritmo de 
retropropagação para calcular a direção de atualização de cada parâmetro de forma que 
o erro de treinamento da rede aproxime-se de zero. O gradiente descendente 
estocástico é um método que otimiza o tempo de treinamento da rede, realizando o 
cálculo do gradiente para apenas um subconjunto das amostras. A rede MCP possui duas 
fases básicas: na fase de forward, as amostras são processadas e a função de custo é 
obtida. Na fase de retropropagação, os pesos são atualizados através da utilizaçãodo 
algoritmo de retropropagação. 
 
 
 
 
 
 
 
40 
Capítulo 4. Aplicações de Redes Neurais Artificiais 
Neste capítulo, abordaremos alguns cenários em que as redes neurais artificiais 
são utilizadas, nas mais variadas áreas e mercados. 
Reconhecimento de padrões e classificação de imagens 
Suponha que os objetos pertencentes às duas classes representadas na Figura 
25 devam ser classificados. Já vimos até aqui que soluções baseadas em aprendizado de 
máquina utilizam as características em cada objeto para realizarem essa tarefa. Mais 
especificamente, as classes diferentes podem ser distinguidas a partir da distribuição 
dos dados dos objetos pertencentes a elas. É esse o objetivo do reconhecimento de 
padrões, identificar regularidades nos dados para explicar determinada distribuição. 
Contudo, nem todos os dados são tão simples quanto o representado na Figura. 
Dois e-mails a serem categorizados entre spam ou não-spam também possuem padrões, 
que são provavelmente definidos a partir dos textos que os constituem; um diagnóstico 
médico para definir se uma determinada pessoa apresenta um exame também procura 
pela existência de padrões; um sistema que busca por anomalias para identificar se uma 
máquina está prestes a falhar também procura por padrões. As redes neurais artificiais 
se configuram como uma forma de realizar o reconhecimento de padrões de uma 
maneira automática. 
 
 
 
 
 
 
 
 
41 
Figura 21 – Objetos a serem categorizados. 
 
Uma classe de dados bastante utilizada em soluções de redes neurais artificiais 
são as imagens. Elas também possuem distribuições de dados, definidas pela 
distribuição das intensidades dos pixels que as constituem. Uma tarefa que lida com o 
reconhecimento de padrões em imagens é a classificação, que tem como objetivo 
justamente diferenciar imagens de classes diferentes. 
Por exemplo, classificação de imagens é utilizada para automaticamente 
identificar se uma imagem deve ser censurada (por apresentar nudez ou qualquer 
característica não desejada). Observe que a tarefa nesse caso é classificar a imagem em 
duas classes possíveis (censurada ou não censurada). Esse cenário é especialmente útil 
em redes sociais ou em ferramentas de mídia colaborativas. 
RNAs também são utilizadas para realizar a classificação de imagens do 
ambiente urbano, com o objetivo, por exemplo, de mapear todas as árvores de uma 
determinada cidade (cada classe representa a espécie da árvore), ou de classificar cada 
região de um mapa obtido por radar ou drone em uma classe específica (construção, 
área urbana, vegetação etc.). Carros autônomos também utilizam classificação de 
imagens para classificar as placas de trânsito identificadas entre uma de várias classes 
possíveis. 
 
 
 
 
 
 
 
42 
Uma tarefa mais complexa dentro da classificação de imagens acontece quando 
o cenário que se está analisando é considerado de alta-granularidade. Nesses casos, as 
classes são muito similares entre si. Por exemplo, um cenário de alta-granularidade 
poderia ser classificar um pássaro nas subespécies de uma espécie qualquer. 
Outra tarefa relacionada à identificação de padrões em imagens é a detecção 
de objetos. Nesses problemas, não se espera classificar uma determinada imagem em 
uma classe. O que se quer é identificar se um determinado objeto está presente naquela 
cena ou não. Por exemplo, sistemas de biometria faciais podem utilizar a detecção de 
imagens para verificar se um rosto está presente na câmera do celular e autorizar o login 
do dono do dispositivo. Tarefas de detecção de imagens também podem ser utilizadas 
para localizar dentro de um vídeo uma pessoa que apresente um comportamento 
suspeito, para fins de vigilância. Note que, nesse caso, a tarefa consiste em detectar uma 
pessoa e logo depois classificá-la entre comportamento normal ou suspeito. 
Uma outra tarefa relacionada a imagens é a segmentação. Ela tem como 
objetivo particionar toda a imagem em vários segmentos, cada um representando um 
objeto. Por exemplo, uma tarefa de segmentação de imagens poderia ser responsável 
por, dada uma imagem de um mar, separar toda a imagem em água ou lixo. 
Séries temporais 
Analise a Figura 26. Ela é a representação de três distribuições de dados 
particulares (azul, vermelho e verde), conhecidas como séries temporais. As séries 
temporais podem ser definidas como uma série de observações, cada uma com um 
determinado valor, feitas ao longo do tempo. 
As séries temporais são particularmente úteis em vários cenários. Por exemplo, 
no mercado financeiro, as séries temporais são utilizadas para representar a variação do 
valor de uma ação ao longo do tempo. Em cenários de Internet das Coisas (IoT, do inglês 
 
 
 
 
 
 
 
43 
Internet of Things), séries temporais são utilizadas para representar a variação de um 
determinado comportamento de algum dispositivo, como por exemplo a temperatura 
de uma máquina industrial. No setor médico, séries temporais são utilizadas para 
representar o ritmo cardíaco de um paciente em um exame de eletrocardiograma. 
Figura 22 – Exemplos de séries temporais. 
 
Duas operações são particularmente bem utilizadas em séries temporais 
através de Redes Neurais Artificiais: a detecção de anomalias e a previsão. 
Na detecção de anomalias, o objetivo é encontrar padrões nas séries temporais 
que se diferenciam dos padrões usualmente presentes naqueles dados. Por exemplo, 
uma anomalia em uma série temporal que mostre o número de acessos a um servidor 
WEB pode indicar que aquele recurso está sendo alvo de algum tipo de ataque de 
negação de serviço. 
A detecção de anomalias em recursos computacionais, como memória 
disponível, pode indicar que há algum processo consumindo memória de forma não 
desejada. A detecção de problemas cardíacos pode ser utilizada identificando-se 
 
 
 
 
 
 
 
44 
anomalias em uma série temporal que represente o eletrocardiograma de um indivíduo. 
Por fim, no setor bancário, a detecção de anomalias também pode ser utilizada para 
identificar fraude em cartões de créditos de clientes. 
A outra operação realizada com séries temporais consiste na predição. Nessa 
categoria, o objetivo é conseguir estimar com o menor erro possível como a série 
temporal irá se comportar no instante de tempo seguinte. 
Também no mercado financeiro, predições de séries temporais vêm sendo 
bastante exploradas como forma de antecipar o movimento do mercado e conseguir 
maximizar os lucros com a compra e venda de ativos. No setor meteorológico, a previsão 
pode ser utilizada para prever a variação da temperatura de um determinado local. Um 
outro cenário que também explora bastante a predição de séries temporais é o 
industrial. Nesse caso, o objetivo é, por exemplo, antecipar o comportamento de um 
determinado equipamento ou máquina, de forma a realizar manutenções preditivas e 
otimizar o uso do recurso. 
Geração de conteúdo 
Olhe atentamente para a Figura 27. Ela mostra, na primeira coluna, uma 
imagem em preto e branco. Nas outras, versões coloridas da mesma figura. O detalhe é 
que a segunda e terceira imagem foram coloridas de forma artificial por uma solução 
utilizando Rede Neural Artificial. 
 
 
 
 
 
 
 
 
45 
Figura 23 – Figura colorida artificialmente. 
 
Esse exemplo ilustra uma outra aplicação das RNAs: geração de conteúdo. 
Nesses cenários, o objetivo é, de forma automática, realizar a geração de algum tipo de 
conteúdo, da forma mais parecida possível com a geração de um ser-humano. No caso 
da Figura, a geração do conteúdo foi a colorização da imagem, porém ele pode se 
apresentar de diversas outras maneiras. 
Soluções baseadas em RNAs podem ser utilizadas para a geração automática 
de imagens. No campo textual, podem gerar e-mails ou manchetes de notícias que 
aumentem a taxa de conversão, ou seja, os textos escolhidos são aqueles que fazem 
com que as pessoas mais acessem o recurso principal(abram o e-mail ou entrem no 
corpo da notícia). RNAs podem ser utilizadas inclusive para gerar frases ou até mesmo 
textos inteiros, imitando inclusive o estilo literário de um escritor específico. 
Outra solução que vêm crescendo em popularidade são os chamados chatbots. 
O objetivo aqui é, em serviços on-line de atendimento a clientes, o usuário interagir com 
um computador em vez de um ser-humano, que procura imitar o comportamento de 
um atendente real. Tais soluções diminuem os custos de uma organização e podem ser 
mais efetivas que um atendente humano. 
 
 
 
 
 
 
 
46 
No ramo musical, soluções de geração de conteúdo podem ser utilizadas para 
criar músicas de forma automática, de determinado estilo musical ou até mesmo 
buscando imitar o estilo de um compositor específico. Ainda no ramo artístico, as redes 
neurais já estão sendo utilizadas para acrescentar automaticamente sons a filmes 
mudos, por exemplo. 
Precificação dinâmica 
O que acontece com os preços de um hotel quando é alta temporada? Na 
maioria das vezes, os preços sobem. Isso se dá devido a demandas e fatores de mercado, 
como a alta procura por acomodações naquela época do ano. 
Um outro cenário com bastante demanda para utilização de RNAs é o de 
precificação dinâmica. Nessas aplicações, o objetivo é realizar de forma automática a 
adaptação de preços (por exemplo, itens de um e-commerce), baseados em fatores 
específicos de mercado, como a demanda, preços de competidores, preferência dos 
consumidores etc. Como vimos, todas essas variáveis podem ser utilizadas como 
entradas de uma rede neural artificial que pode dar como saída o preço ideal de um 
produto. 
Observe também que o histórico de preços de um produto pode ser modelado 
como uma série temporal, que representa todos os preços que ele já teve distribuídos 
ao longo do tempo. Nesse caso, uma solução possível poderia ser a predição do preço 
futuro de um produto. O importante a se ressaltar é que um passo fundamental para a 
utilização de RNAs em diferentes aplicações é o entendimento do cenário e a sua 
modelagem da melhor forma possível, para que então uma solução baseada em rede 
neural possa ser utilizada. 
 
 
 
 
 
 
 
 
47 
Outras aplicações 
Diversos outros cenários estão explorando a utilização de redes neurais 
artificiais. Em seguida, apresentamos alguns deles. 
Em Dahl et al. (2017), pesquisadores da equipe do Google Brain desenvolveram 
uma solução que é capaz de restaurar imagens que originalmente estavam em baixa 
qualidade. A Figura 28 apresenta alguns dos resultados obtidos. A primeira imagem 
representa a imagem original, a segunda a reconstrução realizada de forma automática 
e a última, a foto verdadeira. Essa aplicação pode ser utilizada, por exemplo, na área 
forense, na recuperação de vídeos ou fotos de baixa qualidade. 
Figura 24 – Resultado da restauração automática de imagens. 
 
Outra aplicação é a descrição automática de fotos. Nesse cenário, dada uma 
imagem a solução é capaz de descrever automaticamente, em linguagem natural, os 
elementos que a constituem. Ainda utilizando imagens, é possível realizar a tradução 
automática dos textos de uma imagem em uma determinada linguagem para outra, 
conforme mostra a Figura 29. 
 
 
 
 
 
 
 
48 
Figura 25 – RNA aplicada na tradução de textos em imagens. 
 
RNAs são utilizadas para realizar a classificação automática de imagens de 
mapas, categorizando cada pixel em uma determinada classe. Como já dito 
anteriormente, carros autônomos também exploram cada vez mais as redes neurais 
artificiais no seu funcionamento interno. 
Na área de prevenção de desastres, pesquisadores iniciaram a utilização de 
redes neurais para conseguir prever a ocorrência de terremotos e, em dezembro de 
2017, a Nasa anunciou que, em parceria com o Google, descobriu um novo planeta 
através do processamento de um conjunto gigantesco de imagens utilizando redes 
neurais artificiais (https://www.nasa.gov/press-release/artificial-intelligence-nasa-
data-used-to-discover-eighth-planet-circling-distant-star). 
Na área médica, RNAs podem ser utilizadas para identificar e segmentar 
automaticamente tumores cancerígenos em imagens de ressonância magnética, por 
exemplo. Outra aplicação consiste na previsão de doenças em determinados pacientes, 
levando em consideração seus resultados de exames, predisposições genéticas e outros 
fatores. 
No ramo do e-commerce, redes neurais podem ser utilizadas para recomendar 
os produtos que os clientes mais possuem probabilidade de adquirir. Outra tarefa nesse 
cenário é a conhecida como análise de sentimentos. Com a utilização de RNAs, é possível 
 
 
 
 
 
 
 
49 
automaticamente obter informações de como os clientes estão reagindo ao lançamento 
de um novo produto no mercado, através da análise dos seus comportamentos em 
redes sociais e fóruns de trocas de mensagens. 
Resumo 
Neste capítulo, foram abordados os seguintes tópicos: 
1) O reconhecimento de padrões consiste na identificação das regularidades 
em uma distribuição de dados. Em imagens, o reconhecimento de padrões pode ser 
aplicado levando em consideração os pixels que as constituem. A classificação de 
imagens consiste na determinação de uma determinada classe para uma determinada 
figura. Na detecção de imagens, por outro lado, o objetivo é detectar a presença de um 
objeto em uma cena, sem necessariamente classificá-lo. Na segmentação de imagens, o 
objetivo é separar todos os objetos que constituem certa figura. 
2) Outra aplicação de RNAs é em séries temporais. Séries temporais são uma 
série de observação feitas ao longo do tempo, aplicadas nos mais diversos contextos. 
Duas tarefas essenciais quando se trabalha com séries temporais são a detecção de 
anomalias e a predição. No primeiro caso, o objetivo é verificar se algum ponto da série 
temporal se mostra diferente da distribuição comum; na predição, o intuito é prever 
como uma série temporal específica irá se comportar no futuro. 
3) RNAs também podem ser utilizadas para geração de conteúdo de forma 
automática. Esses conteúdos podem ser textos, músicas ou imagens, por exemplo. Na 
geração de conteúdo de textos, destaca-se os chatbots, que são soluções que visam 
imitar o comportamento de um atendente humano. 
4) A precificação dinâmica também pode ser realizada por redes neurais. 
Utilizando fatores de mercado como sazonalidade, nível da procura e preços dos 
 
 
 
 
 
 
 
50 
concorrentes, o objetivo é definir o preço de um produto da forma mais otimizada 
possível. 
5) Diversas outras aplicações de redes neurais também foram apresentadas, 
nos mais diversos setores e segmentos. 
 
 
 
 
 
 
 
 
 
51 
Capítulo 5. Deep Learning 
Neste capítulo, será abordado com mais detalhes o deep learning, o que o 
caracteriza, o que o diferencia das redes neurais artificiais tradicionais e os tipos de 
soluções que podem ser desenvolvidas. 
Introdução ao deep learning 
Como já foi abordado em capítulos anteriores, as redes neurais são estruturas 
computacionais desenvolvidas há bastante tempo. Contudo, elas deixaram de ser 
utilizadas maciçamente durante um grande período, principalmente por dois motivos. 
O primeiro é alto custo de hardware necessário para realizar o seu treinamento, 
principalmente à medida que o número de neurônios e camadas aumenta. O segundo é 
a grande necessidade de muitos dados de treinamento para que o seu treinamento seja 
eficaz. 
Contudo, em 2012, um grande acontecimento começou a mudar a forma como 
as redes neurais era utilizadas. Desde 2010, uma competição de classificação de imagens 
denominada ImageNet acontece. O objetivo é avaliar algoritmos de reconhecimento 
visuais, a partir da classificação de uma série de imagens em várias categorias pré-
definidas. Até 2011, a taxa mínima de erro do vencedor do concurso era de 25%. 
Contudo, em 2012, uma solução conseguiu reduzir esse número para cercade 16%, uma 
queda bastante expressiva. 
O motivo para essa redução foi a utilização de uma nova estrutura de rede 
neural, que possuía 7 camadas ocultas, muito diferentes das outras tradicionalmente 
empregadas, que não possuíam mais do que 2 camadas ocultas. Para que o treinamento 
da rede fosse computacionalmente viável, essa nova rede foi otimizada para realizar a 
sua operação utilizando unidades de processamento gráficos (GRU). A rede recebeu o 
nome de AlexNet e marcou uma nova época nas pesquisas com redes neurais artificiais. 
 
 
 
 
 
 
 
52 
As redes neurais profundas (do inglês, deep), são caracterizadas então pela 
presença de mais de uma camada oculta, em detrimento às redes neurais rasas 
(shallow), que possuem no máximo uma. A grande vantagem das redes neurais 
profundas é que, como já foi visto, elas conseguem modelar cenários cada vez mais 
complexos e não-lineares, visto que a complexidade suportada aumenta à medida que 
o número de camadas ocultas também cresce. 
Outra propriedade das redes neurais profundas é que as características que 
elas obtêm vão sendo construídas de forma hierárquica, conforme mostra a Figura 30. 
Nesse exemplo, as características extraídas pela rede correspondem ao rosto de um ser 
humano. É possível notar que as primeiras características extraídas são simples, 
correspondendo basicamente a bordas verticais e horizontais. À medida que se avança 
nas camadas ocultas da rede, as características anteriores vão sendo agregadas de modo 
a formar estruturas cada vez mais complexas, até que se consiga obter a visualização de 
faces humanas. 
Figura 26 – Características de um rosto humano extraídas por redes profundas. 
 
Algumas pesquisas mostram que redes profundas apresentam resultados 
melhores do que redes com menos camadas ocultas e com o mesmo número de 
neurônios, o que indica a importância dessas camadas para essas soluções. 
 
 
 
 
 
 
 
53 
Para fins de ilustração, desde 2012, quando as redes profundas foram 
inicialmente utilizadas na competição ImageNet, as taxas de erro continuaram caindo, 
chegando ao valor de menos de 5% de erro, em 2017. Esse resultado indica que muitas 
vezes o deep learning pode obter resultados melhores do que um classificador humano. 
Outra característica das redes neurais profundas é que elas podem assumir 
diversas configurações, muitas delas diferentes da estrutura convencional de uma rede 
MLP. Essas configurações diferentes e as suas aplicações serão abordadas no decorrer 
deste capítulo. 
Redes Neurais Convolucionais (CNN) 
Vamos retornar ao nosso exemplo dos dígitos escritos à mão. A solução que 
nós apresentamos para solucionar este problema foi a associação de cada pixel da 
imagem a um neurônio na camada de entrada da RNA tradicional, que estavam por sua 
vez conectados a todos os neurônios da camada posterior e assim sucessivamente. 
Porém, essa abordagem traz um problema: à medida que o número de 
camadas aumenta, o número de parâmetros também, e a rede demora mais tempo para 
ser treinada. Além disso, se precisássemos processar imagens com uma resolução 
espacial muito alta, como a coletada por drones, esse processo poderia ficar inviável, 
mesmo com a utilização de GPUs. 
A solução, proposta em 1998, foi a utilização de uma arquitetura diferente de 
rede neural, especializada no processamento de imagens. Essas redes são baseadas em 
uma série de convoluções matemáticas, e, portanto, receberam o nome de redes 
neurais convolucionais (CNN). 
Ao invés da ligar pixels aos neurônios, a CNN trabalha de uma vez com um 
conjunto de pixels, em uma estrutura conhecida como campo receptivo, conforme 
mostra a Figura 31. Esse campo receptivo é uma espécie de janela deslizante, que se 
 
 
 
 
 
 
 
54 
inicia no começo da imagem e a percorre, cada vez capturando um conjunto de pixels 
diferente. 
Figura 27 – Campo receptivo de uma rede CNN. 
 
Cada campo receptivo coletado passa então por um processo de convolução. A 
convolução matemática com matrizes consiste em uma operação matemática em que 
os elementos de uma matriz são multiplicados pelos elementos de uma outra matriz 
(cada elemento é multiplicado pelo elemento correspondente da outra matriz) e as 
multiplicações são então somadas, conforme mostra a Figura 32. 
Figura 28 – Processo de convolução matemática. 
 
Nas redes CNN, os campos receptivos coletados da imagem são multiplicados 
por matrizes cujos valores são os parâmetros a serem definidos na rede. O resultado das 
convoluções dos campos receptivos de uma imagem produz uma outra matriz, menor 
que a original, conhecida como feature map (ou mapa de características). Com o 
objetivo de tornar as características das imagens invariantes à rotação e translação, após 
 
 
 
 
 
 
 
55 
cada camada convolucional, uma camada especial denominada camada de pooling é 
adicionada, reduzindo ainda mais o tamanho da imagem. A Figura 33 mostra o processo 
de uma operação de pooling, utilizando a função max. Nesse exemplo, valores vizinhos 
são agrupados em cores iguais, e a matriz resultante armazena o maior valor dos 
vizinhos de mesma cor. 
Figura 29 – Processo de pooling utilizando a função max. 
 
Geralmente, as redes CNN utilizam uma função de ativação conhecida como 
ReLU, exibida na Figura 34. 
Figura 30 – Função rectified linear unit (ReLU). 
 
 
 
 
 
 
 
 
56 
A ImageNet, comentada anteriormente, é um exemplo de rede neural 
convolucional, e sua arquitetura é exibida na Figura 35. As camadas convolucionais (5 
no total) são exibidas com o prefixo “conv”. O número embaixo de cada camada 
representa as dimensões do campo receptivo que será aplicado. Tipicamente, após cada 
camada convolucional existe uma camada de pooling. No final da rede, três camadas 
totalmente conectadas (com 4096, 4096 e 1000 neurônios) funcionam aos moldes de 
uma RNA comum, em que todos os neurônios são conectados a todos os neurônios da 
camada posterior. 
Figura 31 – Arquitetura da rede AlexNet. 
 
Redes Neurais Recorrentes 
Uma outra arquitetura de rede profunda é aquela conhecida como rede neural 
recorrente. Essas redes são especialmente projetadas para realizar o processamento de 
informações que possuem uma sequência de acontecimentos e que o resultado em um 
determinado ponto do tempo depende dos resultados nos tempos anteriores. Por 
exemplo, redes neurais recorrentes são utilizadas para realizar o processamento de 
séries temporais, que foram estudadas anteriormente. 
Suponha que queiramos projetar uma rede para traduzir a palavra “Deep”. A 
tradução correta seria “profundo”. Contudo, caso o termo a ser traduzido passe a ser 
 
 
 
 
 
 
 
57 
“Deep Learning”, a tradução correta passa a ser “aprendizado profundo”. Perceba que 
a ordem dos termos traduzidos foi invertida, ou seja, a tradução de um termo depende 
dos termos anteriormente presentes em uma sentença. Esse tipo de processamento não 
possível de ser feita em redes do tipo feed-forward. Contudo, redes neurais recorrentes 
possuem uma espécie de memória, de forma que os resultados anteriores influenciam 
os próximos resultados. 
Uma representação usual das redes recorrentes é a exibida na Figura 36. Nessa 
rede, os neurônios, além de ligações com os neurônios posteriores, possuem ligação 
com eles mesmos, de forma que o cálculo de um neurônio em determinado passo possa 
servir de entrada para os cálculos nos passos seguintes. 
Figura 32 – Representação de uma rede neural recorrente. 
 
Outra representação comumente utilizada de redes recorrentes é a 
representada na Figura 37. Diz-se que essa representação é de uma rede neural 
recorrente expandida. Cada rede na parte da direita da figura indica um passo diferente 
(representados pela letra h), e cada entrada em um determinado passo é representado 
pela letra X. Essa representação mostra que o resultado de uma computação em um 
determinado passo é propagado para os passos

Continue navegando