Você está na página 1de 84

UNIVERSIDADE FEDERAL FLUMINENSE

MAURÍCIO MARQUES SOARES FILHO

REDES NEURAIS ARTIFICIAIS:


DO NEURÔNIO ARTIFICIAL À CONVOLUÇÃO

NITERÓI
2018
MAURÍCIO MARQUES SOARES FILHO

REDES NEURAIS ARTIFICIAIS:


DO NEURÔNIO ARTIFICIAL À CONVOLUÇÃO

Trabalho de Conclusão de Curso


submetido ao Curso de Tecnologia
em Sistemas de Computação da
Universidade Federal Fluminense
como requisito parcial para
obtenção do título de Tecnólogo
em Sistemas de Computação.

ORIENTADOR:
CLEDSON OLIVEIRA DE SOUSA

NITERÓI
2018
Ficha catalográfica automática - SDC/BEE
Gerada com informações fornecidas pelo autor

S676r Soares Filho, Maurício Marques


Redes Neurais Artificiais :Do Neurônio Artificial à
Convolução / Maurício Marques Soares Filho ; Cledson
Oliveira de Sousa, orientador. Niterói, 2018.
84 p. : il.

Trabalho de Conclusão de Curso (Graduação em Tecnologia


de Sistemas de Computação)-Universidade Federal Fluminense,
Escola de Engenharia, Niterói, 2018.

1. Redes Neurais Artificiais. 2. Redes Neurais


Convolucionais. 3. Deep Learning. 4. Produção intelectual.
I. Sousa, Cledson Oliveira de, orientador. II. Universidade
Federal Fluminense. Escola de Engenharia. III. Título.

CDD -

Bibliotecária responsável: Fabiana Menezes Santos da Silva - CRB7/5274


MAURÍCIO MARQUES SOARES FILHO

REDES NEURAIS ARTIFICIAIS:


DO NEURÔNIO ARTIFICIAL À CONVOLUÇÃO

Trabalho de Conclusão de Curso


submetido ao Curso de Tecnologia
em Sistemas de Computação da
Universidade Federal Fluminense
como requisito parcial para
obtenção do título de Tecnólogo
em Sistemas de Computação.

Niterói, ___ de _______________ de 2018.

Banca Examinadora:

_________________________________________
Prof.: Cledson Oliveira de Sousa, MSc. – Orientador
UFF – Universidade Federal Fluminense

_________________________________________
Prof. Leandro Soares de Sousa, DSc. – Avaliador
UFF – Universidade Federal Fluminense
A Gisele Vieira Rocha, que me ajudou
uma última vez.
AGRADECIMENTOS

A todos empenhados no sucesso


continuado da Fundação CECIERJ /
Consórcio CEDERJ, sem os quais
minha formação em Computação não
seria possível.

A meu orientador Cledson Sousa pela


atenção dispensada e paciência
homérica demonstrada.

A minha mãe, Ivane Rosa Gomes


Soares, pelo incentivo e por se fazer
sempre presente.
I never am really satisfied that I
understand anything; because,
understand it well as I may, my
comprehension can only be an
infinitesimal fraction of all I want to
understand about the many
connections and relations which occur
to me (…)

Ada Augusta King (1815 – 1852)


RESUMO
O presente é uma compilação técnico-histórica no que diz respeito às Redes
Neurais Artificiais. Vamos vislumbrar os esforços iniciais no campo e como eles
foram inspirados por trabalhos na área da Biologia. Passaremos ao empenho
em treinar as Redes Neurais Artificiais para que desenvolvam generalizações
válidas. Oportunamente, apresentaremos duas das arquiteturas pioneiras de
Redes Neurais. Por fim, abordaremos a arquitetura de Redes Convolucionais,
herdeira das técnicas e tecnologias anteriores, e seu estado da arte.

Palavras-chaves: redes neurais artificiais, redes neurais convolucionais,


deep learning.
LISTA DE ILUSTRAÇÕES

Figura 1 - Representação das principais estruturas do neurônio. ............... 22


Figura 2 - Diagrama de aprendizado com professor. ..................................... 32
Figura 3 - Diagrama de aprendizado não-supervisionado. ........................... 33
Figura 4 - Diagrama para o Aprendizado por Reforço. .................................. 36
Figura 5 - Linearmente separável e não-linearmente separável. ................. 38
Figura 6 - Modelo do Perceptron. ...................................................................... 39
Figura 7 - Interpretação geométrica para a situação 𝑑 = 1 e 𝑦 = 0. ........... 41
Figura 8 - Estrutura MLP com uma camada oculta. ....................................... 46
LISTA DE ABREVIATURAS E SIGLAS

Adaline Adaptative Linear Neuron (Neurônio Linear Adaptativo)

CNN Convolutional Neural Network (Redes Neurais Convolucionais)

ConvNets Convolutional Neural Network

IA Inteligência Artificial

IT Inferior Temporal Cortex (Córtex Inferotemporal)

LGN Lateral Geniculate Nucleus (Núcleo Geniculado Lateral)

LMS Least Mean Square (Mínimo Quadrado Médio)

MCP McCulloch e Pitts (Modelo ou Neurônio de)

MLP Multilayer Perceptron (Perceptron Multicamada)

RC Resistor-Capacitor

ReLU Rectified Linear Unit (Unidade Linear Retificada)

RNA Redes Neural Artificial

RNC Rede Neural Convolucional

TDNN Time-Delay Neural Network (Rede Neural com Atraso Temporal)

VC Vapnik-Chervononkis (Dimensão de)

XOR Exclusive OR (OU Exclusivo)


SUMÁRIO

RESUMO ................................................................................................................. 8
LISTA DE ILUSTRAÇÕES .............................................................................. 9
LISTA DE ABREVIATURAS E SIGLAS.......................................................... 10
1 Introdução .................................................................................................... 13
1.1 Escopo ................................................................................................... 15
1.2 Justificativa e Objetivos .................................................................... 16
1.3 Metodologia ........................................................................................... 16
2 Modelos Conceituais das RNA ............................................................... 18
2.1 O Que São Redes Neurais Artificiais – RNAs ............................... 19
2.2 Insights Biológicos ................................................................................. 21
2.3 Modelos de Neurônio ......................................................................... 22
2.3.1 Neurônios Artificiais .................................................................... 24
2.3.2 Função de Ativação Sigmoide................................................... 25
2.3.3 Realimentação .................................................................................. 26
2.4 Principais Arquiteturas de RNAs ..................................................... 27
2.4.1 Redes Alimentadas Adiante com Camada Única ................. 27
2.4.2 Redes Alimentadas Adiante com Múltiplas Camadas ........ 27
2.4.3 Redes Recorrentes ....................................................................... 28
3 Aprendizagem em RNAs .......................................................................... 30
3.1 Aprendizagem Supervisionada ........................................................ 31
3.2 Aprendizagem Não-Supervisionada................................................ 33
3.3 Aprendizado por Reforço ................................................................... 34
4 Perceptrons de Camada Única ............................................................... 38
4.1 O Perceptron ......................................................................................... 39
4.1.1 Algoritmo de Aprendizagem ...................................................... 40
4.1.2 Exemplo de Implementação do Algoritmo de Treinamento
42
5 Perceptrons Multicamadas ...................................................................... 44
5.1 Arquitetura ............................................................................................. 46
5.1.1 Bias and Variance Dilemma ....................................................... 48
5.2 Treinamento de Perceptrons Multicamadas ................................. 50
5.2.2 Problemas Associados ao Algoritmo ...................................... 52
6 Redes Neurais Convolucionais .............................................................. 54
6.1 Cérebro, ConvNets e Deep Learning ................................................. 56
6.2 A Operação de Convolução ................................................................. 62
6.2.1 Exemplo Unidimensional de Convolução ................................. 65
6.3 Arquitetura das ConvNets .................................................................... 67
6.3.1 Camada Convolucional .................................................................. 68
6.3.2 Parâmetros Compartilhados e Convolução.............................. 70
6.3.3 Pooling................................................................................................ 71
6.3.4 Camadas Não-Lineares .................................................................. 72
6.3.5 Camadas de Normalização ............................................................ 73
6.3.6 Camadas Totalmente Conectadas .............................................. 74
6.3.7 Exemplos de Arquitetura ............................................................... 74
7 Conclusão .................................................................................................... 77
7.1 Trabalhos Futuros................................................................................... 79
13

1 Introdução

O presente trabalho consiste em uma revisão teórica de uma


arquitetura de construção de Redes Neurais Artificiais, RNAs, designada como
Redes Neurais Convolucionais, acompanhada da apresentação de conceitos
fundamentais da área e da análise de alguns resultados pertinentes constantes
na literatura.
As Redes Neurais Convolucionais, RNCs, foram também bio-
inspiradas, construídas tendo por base a arquitetura do córtex visual de
mamíferos – composto este por milhões de grupos complexos de células que
são sensíveis apenas a pequenas regiões do campo visual, chamadas
“campos receptivos”. Da mesma forma as RNC possuem seus “campos
receptivos”, subconjuntos do chamado vetor de características (representação
numérica de toda a imagem) sobre os quais se procede aos métodos de
análise (Haykin, 2001).
A inspiração para a arquitetura das Redes Convolucionais leva a
crer que uma de suas principais aplicações é justamente reconhecimento de
imagens: no contexto de visão de máquina, essa é a capacidade de um
software identificar pessoas, lugares e objetos – padrões. Auxiliadas por
grandes bancos de dados e identificando surgimento de padrões específicos,
as máquinas podem proceder à análise e classificação de imagens, formulando
tags (“rótulos” para classificação) e categorias relevantes e com sentido prático.
O procedimento convencional, de reconhecimento de imagens para
dados não estruturados até há pouco tempo se dava pelo uso de metadados,
através da categorização manual: esse procedimento é inaplicável em um
cenário de bibliotecas de mídias contendo um enorme número de imagens
(estáticas ou em movimento) e com mais elementos sendo adicionados ao
sistema ou mesmo em atividades como aprendizado aplicado à navegação de
carros autônomos.
Existem inconvenientes para a utilização de Redes Neurais Artificiais
convencionais para o tratamento desse problema. Da perspectiva
computacional é muito dispendioso: o número de parâmetros necessários pode
aumentar exponencialmente (Haykin, 2001). A sobreposição pode ser mais um
inconveniente: ela acontece quando uma RNA se adapta muito bem aos dados
14

com os quais foi treinada – a exposição a novas entradas pode ocasionar um


decréscimo no desempenho geral.
As Redes Neurais Convolucionais – também designadas CNN ou
ConvNets – são uma arquitetura de RNAs que transforma o tratamento de
imagens em tarefas executáveis dentro de um tempo razoável. Contudo, dado
que elas são projetadas para ter uma inclinação para o tratamento de imagens
(e outros problemas específicos), sua aplicabilidade perde em generalidade.
O interesse por Aprendizagem de Máquina, Machine Learning, teve
aumento muito significativo nas últimas décadas, trazendo uma revolução que
gerou, tem gerado e gerará em um futuro próximo grande número de
aplicações tecnológicas e comerciais.
Em termos simples, Machine Learning é a aplicação de algoritmos e
ferramentas de análise a dados brutos com o objetivo de se extrair informações
que possam ser representadas através de um modelo matemático. Uma vez
estabelecidos os parâmetros do modelo escolhido, espera-se poder fazer
inferências a partir de outro conjunto de dados da mesma “espécie” que o
original. O uso de RNAs como meio de modelagem se firmou como método
pluripotente na área.
No início dos anos 2000, o poder computacional já havia crescido o
suficiente para tornar viável a aplicação de certos procedimentos a
determinados problemas insolúveis até então: emergem as técnicas de
Aprendizado Profundo, Deep Learning, que serão o principal mecanismo de
construção de sistemas de Inteligência Artificial (Goodfellow, et al., 2016).
A Aprendizagem Profunda, Deep Learning, é um ramo da família dos
métodos de Aprendizado de Máquina, Machine Learning, calcados na
aprendizagem de representação de dados. Está na intersecção entre as áreas
de pesquisa de redes neurais, inteligência artificial, modelagem gráfica,
otimização, reconhecimento de padrões e processamento de sinais. Deep
Learning, aprendizagem profunda, baseia-se em um conjunto de algoritmos
que têm por objetivo modelar, a partir de dados, abstrações de alto nível
usando um grafo profundo com várias camadas de processamento e que usam
tanto transformações lineares como não-lineares.
Para a arquitetura de RNA não há um limite universalmente aceito
para distinguir aprendizagem superficial de aprendizagem profunda, mas há
15

certo consenso na área que a aprendizagem profunda apresenta várias


camadas com funções de ativação não-lineares.
Os primeiros algoritmos de aprendizagem profunda com múltiplas
camadas, funções não-lineares e seleção de recursos por métodos estatísticos
remontam a Aleksei Grigorévich Ivakhnenko e Valentin Grigorévich Lapa em
1965 (Ivakhnenko, et al., 1965). A partir de 1999 os computadores começaram
a se tornar mais rápidos no processamento de dados e houve o
desenvolvimento e implementação das GPUs (Graphics Processing Unit, ou
Unidade de Processamento Gráfico) – com o uso dessas houve um aumento
da velocidade computacional numa escala de 1000 em um período de 10 anos.
As RNAs, em disputa de espaço com outras tecnologias, acabam por se tornar
preferidas em diversas realizações.
Com o aumento significativo da velocidade das GPUs ao longo das
décadas, houve a possibilidade de aprimoramento nas técnicas de redes
neurais convolucionais (e.g., eliminação do pré-treino camada por camada, e a
emergência da aprendizagem profunda sem supervisão). Nesse cenário, o
Deep Learning ganhou vantagens significativas em termos de eficiência e
velocidade.
Na atualidade duas áreas de vanguarda, o processamento de Big
Data (consiste na análise e interpretação de grandes volumes de dados
valiosos e de grande variedade, armazenados em servidores de bancos de
dados confiáveis, sendo, portanto, necessárias ferramentas específicas que
permitam aos profissionais trabalhar com informações não-estruturadas a uma
grande velocidade) e a implementação da Inteligência Artificial, são ambas
intimamente conectadas à Aprendizagem Profunda.

1.1 Escopo

Compreender o que é uma operação matemática de convolução e


como ela é traduzida no escopo das Redes Neurais Artificiais, além de quais
são as possíveis aplicações das Redes Neurais Convolucionais é o tópico
central do nosso trabalho. De forma a viabilizar e aprofundar nossa exposição,
serão abordados temas que são bases do estudo de RNAs, como arquiteturas
de rede e técnicas de aprendizado.
16

1.2 Justificativa e Objetivos

Redes Neurais Convolucionais têm apresentado múltiplas aplicações


e valiosas contribuições em diversas áreas, como visão computacional,
veículos autônomos, análise de falsificação de assinaturas e obras de arte,
reconhecimento automático de fala, processamento de linguagem natural,
reconhecimento de áudio e bioinformática, diagnósticos médicos etc., onde têm
se mostrado capazes de produzir resultados de excelência em todas as frentes
(Goodfellow, et al., 2016).
Dada a importância crescente da área e o exíguo material disponível
em nosso idioma, configura-se oportuna qualquer iniciativa de apresentação
das ConvNets ao público interessado.
Os objetivos aqui buscados se dividem em dois tópicos principais:
apresentar um conteúdo sucinto, mas coeso, sobre Redes Neurais Artificiais, o
histórico e as bases de seu desenvolvimento, características de treinamento de
uma rede e arquiteturas básicas; introduzir a operação de convolução, como
ela é utilizada nas ConvNets e como é o modelo básico que guia o
funcionamento dessas, apresentar exemplos de aplicação prática das mesmas,
e relacioná-las com Deep Learning.

1.3 Metodologia

O presente trabalho será tecido amparado numa ostensiva revisão


bibliográfica, baseada em livros amplamente utilizados na Academia, artigos de
relevo, monografias relacionadas ao tema, e material selecionado disponível na
internet.
Há uma revisão histórica breve, calcada em alguns artigos clássicos
e em excetos de obras consagradas. As etapas de definição de métodos de
treinamento e estruturas básicas de RNAs seguirão o mesmo caminho de livros
voltados ao público acadêmico – espera-se que os leitores interessados em
nosso assunto de trabalho possam descobrir nessas partes do texto um
sumário mais específico que o ordinário que se encontra costumeiramente na
grande rede hoje.
17

Na segunda etapa desta monografia, vão-se concentrar esforços


sobre a principal temática de estudos, Redes Neurais Convolucionais. Aqui
será valiosa a contribuição de trabalhos, mormente aqueles de conclusão de
pós-graduações, que demonstram a pluralidade de aplicações das ConvNets,
além de artigos e de guias primorosos disponíveis para uso livre. A secção de
comentários e comparações sobre resultados encontrados na literatura será
baseada principalmente em artigos científicos do estado da arte.
A estrutura do trabalho se apresenta da seguinte forma: O capítulo 2
aborda o histórico dos estudos em Redes Neurais Artificiais, desde a
modelagem matemática original a partir de conceitos estudados na biologia até
aplicações modernas e perspectivas.
O capítulo 3 apresenta os processos de aprendizagem de uma RNA,
as principais técnicas de treinamento de redes, sua natureza estatística e a
adaptação dinâmica do sistema.
O capítulo 4 trata da arquitetura perceptron de camada única, sua
concepção e possíveis aplicações dela e de desenhos análogos.
O capítulo 5 continua o quarto ao apresentar o perceptron de
múltiplas camadas: vai-se defini-lo e apresentar as principais questões que
suscitam enquanto estrutura de Redes Neurais Artificiais.
O capítulo 6 aborda o tema Redes Neurais Convolucionais: sua
arquitetura geral e técnicas de aplicação.
O capítulo 7 inclui a conclusão do trabalho: relacionando Deep
Learning e ConvNets aos resultados apresentados e perspectivas para o
futuro.
18

2 Modelos Conceituais das RNA

A história da computação baseada na arquitetura neuronal biológica


começa ainda em 1943, com os estudos de Warren S. McCulloch e Walter H.
Pitts. Em seu artigo, A Logical Calculus of the Ideas Immanent in Nervous
Activity (McCulloch, et al., 1943), os autores apresentaram o primeiro modelo
artificial para um neurônio biológico, que segue uma lei de “tudo ou nada”. Esse
artigo, geralmente aceito como o nascimento das disciplinas de redes neurais e
inteligência artificial, estabeleceu que com um número suficiente dessas
unidades básicas conectadas através de sinapses ajustadas e operando
sincronicamente é possível a realização de qualquer função computável.
Em 1949, no livro The Organization of Behavior (Hebb, 1949),
Donald O. Hebb definiu o conceito de aprendizado de uma rede neural
biológica através de estímulo: propôs uma teoria para explicar o aprendizado
em neurônios baseada no reforço das ligações sinápticas entre os mesmos
(Hebb, 1949).
Em 1952 foi publicado o livro Design for a Brain: The Origin of
Adaptive Behavior, de William Ross Ashby. A obra trata da noção básica de
que o comportamento adaptativo não é inato, mas sim aprendido, e que
através da aprendizagem o comportamento do sistema muda para melhor, e
enfatiza os aspectos dinâmicos do organismo biológico como uma máquina e o
conceito de estabilidade (Ashby, 1960).
Em 1958, Frank Rosenblatt (Rosenblatt, 1958) apresentou um novo
modelo e método inovador de aprendizagem supervisionada, o perceptron. O
que Rosenblatt buscava e que continua sendo objetivo dos estudiosos de
RNAs é projetar redes que fossem capazes de fazer descobertas interessantes
sem a necessidade de regras explícitas.
Em 1969 Marvin Lee Minsky e Seymour Papert chamaram a atenção
para uma ampla gama de problemas (e.g., a criação de portas lógicas XOR a
partir de perceptrons de uma camada) que não eram contemplados pelas
arquiteturas em voga em seu livro Perceptrons, os chamados hard learning
problems (Minsky, et al., 1972). A publicação dessa obra marca o início de um
período de poucos avanços na abordagem de redes neurais – entre os
principais fatores responsáveis por esse tempo de arrefecimento que duraria
19

até o início da década de 1980 destaca-se a razão tecnológica: não havia


então computadores pessoais ou estações de trabalho para a experimentação.
Nos anos 1970, o conexionismo1 ficou adormecido em grande parte
devido à repercussão do trabalho de Minsky e Papert (Minsky, et al., 1972)
sobre as perspectivas de financiamento de pesquisas: são poucas e esparsas
as equipes de pesquisadores que alcançam parcos resultados notáveis na
área.
Em 1982, John Hopfield publicou um artigo, Neural Networks and
Physical Systems with Emergent Collective Computational Abilities, que
chamou a atenção para as propriedades associativas das RNAs, que foi em
parte responsável pela retomada de pesquisas na área. O grande feito de
Hopfield é apontado como sendo estabelecer a relação entre redes recorrentes
auto-associativas e sistemas físicos, o que abriu espaço para se utilizar as
teorias correntes da Física para o estudo de tais modelos (Hopfield, 1982).
A concepção do algoritmo de backpropagation (retropropagação,
que permite treinamento no sentido reverso ao fluxo de informação normal da
rede) mostra que RNAs de múltiplas camadas são capazes de resolver os hard
learning problems de Minsky e Papert. Embora tenha sido descrito
anteriormente, a prioridade da sua utilização em aprendizagem de máquina e
da demonstração de como poderia funcionar é atribuída ao trabalho de 1986 de
David Rumelhart, Geoffrey Hinton e Ronald Williams (Rumelhart, et al., 1986).
A partir de meados dos anos de 1980 houve uma nova explosão de
interesse pelas RNAs na comunidade internacional, dado o avanço da
tecnologia que agora permitia a realização física de modelos de nodos e sua
interconexão. Elas se estabeleceram, como um tema interdisciplinar com raízes
profundas em neurociências, psicologia, matemática, física e engenharia e
continuam até hoje sendo motivo de pesquisa e inovação.

2.1 O Que São Redes Neurais Artificiais – RNAs

Antes de falarmos sobre Redes Neurais Artificiais – RNAs tem-se


necessariamente de abordar os modelos que servem de inspiração para a sua

1
Conexionismo é um conjunto de técnicas de diversos campos que modelam fenômenos
mentais e de comportamento.
20

concepção. O cérebro é um sistema de processamento de informação


“altamente complexo, não-linear e paralelo” (Haykin, 2001) – ele organiza suas
unidades constitutivas, os neurônios, de forma a proceder a tarefas altamente
especializadas muito mais rápido do que os computadores digitais.
A plasticidade do cérebro é o que permite que o sistema nervoso
associado se adapte ao meio ambiente. Essa plasticidade se espelha nos
neurônios de forma a viabilizar seu desenvolvimento ao longo do tempo: isso
significa que as conexões sinápticas se reformulam em função das
experiências do indivíduo, das necessidades e dos fatores do meio ambiente.
Uma Rede Neural Artificial é uma máquina concebida para mimetizar
o modo como o cérebro realiza uma tarefa ou implementa uma função – trata-
se de uma forma de computação não-algorítmica que é caracterizada por
sistemas que, em algum nível, lembram a estrutura do cérebro: não sendo
baseada em regras ou programas, a computação via RNAs se apresenta como
alternativa à computação algorítmica consagrada. Para alcançar seus
objetivos, RNAs empregam uma interligação maciça de unidades de
processamento mais simples, denominadas neurônios artificiais – essas células
computacionais são implementadas através de componentes eletrônicos ou
simuladas através de programação em um computador digital, e calculam
respostas a sua entrada por meio de funções matemáticas (normalmente não-
lineares, e.g., função degrau ou sigmoide, e mesmo funções trigonométricas).
Tais unidades estão dispostas em camadas interligadas por um grande número
de conexões: em grande parte das arquiteturas essas conexões estão
associadas a pesos que servem para ponderar a entrada recebida por cada
neurônio da rede, e é nessa estrutura que o conhecimento é representado pela
arquitetura da rede em questão.
Conforme (Haykin, 2001):
Uma rede neural é um processador maciçamente paralelamente
distribuído constituído de unidades de processamento simples, que
têm a propensão natural para armazenar conhecimento experimental
e torná-lo disponível para o uso. Ela se assemelha ao cérebro em
dois aspectos:
1. O conhecimento é adquirido pela rede a partir de seu ambiente
através de um processo de aprendizagem.
21

2. Forças de conexão entre neurônios, conhecidas como pesos


sinápticos, são utilizadas para armazenar o conhecimento adquirido.

Deve-se salientar que as RNAs obtêm seu poder de computação de


sua estrutura paralelamente distribuída e de sua competência de aprender,
sendo capaz, portanto de generalizar – generalização pode ser definida como a
habilidade de produzir saídas adequadas para entradas não mapeadas no
treinamento: essas duas características das RNAs redundam na capacidade de
solução de problemas complexos e de grande escala intratáveis pelo modelo
tradicional da computação digital (Haykin, 2001). As capacidades das RNAs
vão além de mapear relações de entrada e saída: elas são capazes de extrair
informação não explicitada nos exemplos utilizados no aprendizado. RNAs são
capazes de atuar como mapeadores universais de funções multivariáveis, com
custo computacional que cresce linearmente com o número de variáveis,
enquanto na computação tradicional, no pior dos casos, esse crescimento pode
ser polinomial ou mesmo exponencial (Haykin, 2001).
Propriedades ou capacidades únicas associadas às RNAs (Haykin,
2001):
 Não-linearidade, que reflete a natureza das entradas;
 Mapeamento de entrada-saída;
 Adaptabilidade a novos ambientes, mediante retreino
dinâmico ou com professor;
 Resposta a evidências, como confiança estatística sobre
respostas dadas;
 Disposição natural para lidar com Informação Contextual;
 Tolerância a falhas, devido à sua natureza distribuída;
 Implementa tecnologias de Integração em Larga Escala;
 Uniformidade de Análise e Projeto;
 Analogia neurobiológica, o que as torna naturalmente
transdisciplinar.

2.2 Insights Biológicos

O estudo sobre o cérebro humano e de como as redes neurais


biológicas funcionam não chegou a termo: existem modelos (Bear, et al., 2015),
22

mas não se sabe ao certo como as funções cerebrais são realizadas. Contudo,
a estrutura fisiológica básica destas redes e neurônios naturais é conhecida, e
é nela que se baseiam as RNAs. O cérebro humano tem em torno de 1011
neurônios (Figura 1), e cada um destes processa sinais da comunicação com
milhares de outros continuamente e em paralelo – a estrutura individual das
unidades, a topologia de suas conexões e o seu comportamento em conjunto
são a base para o projeto das RNAs.

Figura 1 - Representação das principais estruturas do neurônio.

(fonte: http://www.psiqweb.med.br/site/?area=NO/LerNoticia&idNoticia=290).

As RNAs que nossa tecnologia atual permite implementar não


superam a complexidade dos circuitos locais e inter-regionais do cérebro.
Ainda há muitas oportunidades para os pesquisadores da área de RNAs
aprenderem com o cérebro biológico, tanto em termos de unidades
computacionais, quanto em arranjos dessas e arquiteturas de processamento -
da mesma forma, as RNAs podem ser laboratório para teorias e modelos de
neurocientistas, o que as transforma numa tecnologia pluripotente e
interdisciplinar.

2.3 Modelos de Neurônio

Podemos apontar três elementos fundamentais do modelo neuronal


(Haykin, 2001):
1. Um conjunto de sinapses ou elos de conexão, cada uma
caracterizada por um peso ou força própria. Especificamente, um
23

sinal x na entrada da sinapse j conectada ao neurônio k é


multiplicado pelo peso sináptico w . É importante notar a maneira
como são escritos os índices do peso sináptico w . O primeiro
índice se refere ao neurônio em questão e o segundo se refere ao
terminal de entrada da sinapse à qual o peso se refere. Ao
contrário de uma sinapse do cérebro, o peso sináptico de um
neurônio artificial pode estar em um intervalo que inclui valores
negativos bem como positivos.
2. Um somador para somar os sinais de entrada, ponderados pelas
respectivas sinapses do neurônio – as operações descritas aqui
constituem um combinador linear.
3. Uma função de ativação para restringir a amplitude da saída de
um neurônio. A função de ativação é também referida como
função restritiva já que restringe (limita) o intervalo permissível de
amplitude do sinal de saída a um valor finito. Tipicamente o
intervalo da amplitude da saída de um neurônio é escrito como o
intervalo fechado unitário [0, 1] ou alternativamente [-1, 1].
4. Um modelo neuronal também pode incluir um bias aplicado
externamente, representado por b – ele tem o efeito de aumentar
ou diminuir a entrada líquida da função de ativação, dependendo
se ele é positivo ou negativo, respectivamente.
Matematicamente um neurônio 𝑘 é descrito pelas equações 2.1 e
2.2:
𝑢 =∑ 𝑤 𝑥 (2.1)

𝑦 = 𝜑(𝑢 + 𝑏 ) (2.2)

onde 𝑥 são os sinais de entrada, 𝑤 são os pesos sinápticos do neurônio 𝑘,


𝑢 é a saída do combinador linear agindo sobre os sinais de entrada, 𝑏 é o
bias, 𝜑 é a função de ativação, 𝑦 é o sinal de saída do neurônio. A presença
do bias 𝑏 implica na aplicação de uma transformação afim2 à saída 𝑢 do
combinador linear (Haykin, 2001):
𝑣 =𝑢 +𝑏 (2.3)
Ou seja, conforme o bias 𝑏 assume valores positivos ou negativos,
a dependência entre o campo local induzido ou potencial de ativação 𝑣 do

2
Na geometria, uma transformação afim, um mapa afim ou uma afinidade é uma função entre
espaços afins que preserva pontos, linhas retas e planos. Além disso, conjuntos de linhas
paralelas permanecem paralelas após uma transformação afim. São exemplos a translação,
escala, rotação, reflexão e o cisalhamento.
24

neurônio 𝑘 e a saída do combinador linear 𝑢 é alterada – ver-se-á, o bias


altera a margem de disparo do neurônio.
O bias 𝑏 é um parâmetro externo do neurônio artificial 𝑘. Pode-se
formular a combinação das equações 2.1, 2.2 e 2.3 como segue:
𝑣 =∑ 𝑤 𝑥 (2.4)

𝑦 = 𝜑(𝑣 ) (2.5)

Na Equação 2.4, ao se adicionar uma nova sinapse que fará às


vezes do bias, a sua entrada é 𝑥 = +1 , e o seu peso é 𝑤 =𝑏 .
Essas considerações matemáticas simples são a base para o
progresso dentro do assunto Redes Neurais Artificiais: todos os tópicos
vindouros dependem de um bom entendimento das noções básicas, que não
mudaram conforme o assunto necessariamente se complexifica.

2.3.1 Neurônios Artificiais

O modelo matemático correspondente ao funcionamento do


neurônio proposto por McCulloch e Pitts (McCulloch, et al., 1943) – modelo
MCP – é um sistema idealizado e simplificado a partir do que era sabido então
sobre o neurônio biológico. As simplificações necessárias para tornar a
modelagem factível gerou um modelo com 𝑛 terminais de entrada designados
por 𝑥 (representam as projeções dendritais) e somente um terminal de saída 𝑦
(faz às vezes do axônio). Para simular as sinapses, os terminais 𝑥 do neurônio
têm pesos associados 𝑤 que podem assumir valores positivos ou negativos,
levando em consideração se as sinapses correspondentes são inibitórias ou
excitatórias. O papel dos pesos é ponderar os sinais de entrada, quantificar a
importância para o estado interno do neurônio dos impulsos sinalizados por
cada conexão.
Em seguida, deve-se necessariamente abordar o fenômeno do
disparo: estabeleceu-se que uma célula neuronal emite um impulso quando a
soma dos impulsos mediados pelos pesos das sinapses ultrapassa um certo
limiar de excitação (threshold) – o corpo do neurônio é, então, traduzido como
um mecanismo matemático simples que proverá a soma ponderada dos
valores de entrada, 𝑥 𝑤 , e fica a cargo de decidir se o neurônio disparará
25

(saída igual a 1) ou não (saída igual a 0) comparando o resultado da somatória


ao threshold do neurônio. Nesse modelo, a ativação é processada através de
uma função de ativação – na descrição do modelo MCP original, o papel de
função de ativação é assumido pela função de limiar descrita na Equação 2.6:
∑ 𝑥𝑤 ≥𝜃 (2.6)

onde 𝜃 é o limiar ou threshold do neurônio (Braga, et al., 2000), e pode-se


assumir aqui que 𝜃 = 0 (assumir o threshold como 0 é assumir que não há
“preferência” de sinal nos pesos, é só uma forma de simplificar o modelo).
O modelo MCP é resultado de simplificações, principalmente em
termos de dinâmicas temporais. No modelo de McCulloch e Pitts os neurônios
de cada camada de uma rede disparam simultaneamente: todas as células têm
suas funções de ativação ponderadas sincronicamente, em um tempo
discretizado. No cérebro, sistema biológico que embasa o modelo, não existe
sincronização da ação neuronal, e a ativação de uma célula pode se dar a
qualquer instante. Outro elemento tornado menos complexo é a ação de longo
prazo dos neurotransmissores sobre os neurônios: como essas substâncias
químicas levam certo tempo para se recombinar, sua permanência no meio
influencia ativações ulteriores: a saída seguinte dos neurônios biológicos
depende em certo grau dos estados anteriores.
As principais limitações na concepção do modelo MCP original
podem ser apontadas conforme segue (Braga, et al., 2000):
1. Redes MCP com apenas uma camada só conseguem implementar
funções linearmente separáveis.
2. Pesos negativos são mais adequados para representar disparos
inibidores.
3. O modelo foi proposto com pesos fixos, não ajustáveis.

2.3.2 Função de Ativação Sigmoide

A chamada função de ativação, 𝜑(𝑣), é responsável por determinar


a saída de um neurônio (que pode ter um valor qualquer, não necessariamente
binário) em dependência com o campo local induzido 𝑣 (Haykin, 2001). As
funções de ativação podem assumir muitas formas – Função de Limiar
(threshold), Função Polinomial, Função Linear por Partes, Funções Não-
Lineares – cada uma com propriedades intrínsecas que colaborarão no projeto
26

de uma RNA em particular. Será descrita aqui a Função Sigmoide, uma função
não-linear útil para aplicações em redes neurais artificiais multicamada.
Função Sigmoide: essa classe de funções de ativação é bastante
comum no projeto de RNAs, conforme ver-se-á nos próximos capítulos: sua
característica é ser crescente em todo seu domínio e possuir segmentos de
comportamento não-linear e aproximadamente linear. Pode-se exemplificar a
classe de funções sigmoides pela chamada função logística, definida como:
𝜑(𝑣) = ( )
(2.7)

onde 𝑎 é chamado de parâmetro de inclinação da função sigmoide (Haykin,


2001).
São normalmente descritas funções de ativação cujo conjunto
imagem é [0, 1], mas por vezes é necessário uma função que assuma um
comportamento antissimétrico em relação à origem, uma função ímpar do
potencial de ativação – neste caso ela poderia ter, por exemplo, saídas entre -1
e 1. Como alternativa à função sigmoide apresentada é possível optar pela
função tangente hiperbólica, Equação 1.13:
𝜑(𝑣) = tanh(𝑣) (2.8)

2.3.3 Realimentação

Pode-se fazer referência à realimentação em um sistema quando um


ou mais sinais seus de saída influenciam em alguma medida as entradas
aplicadas a esse mesmo sistema – trata-se da formação de um ciclo ou
“caminho fechado” no processo de transmissão de sinais através do sistema.
Esse fenômeno acontece por todo o sistema nervoso dos animais superiores.
No âmbito das RNAs, é crucial na abordagem de uma espécie especial de
redes neurais artificiais designadas por redes recorrentes3 devido a sua
característica bidirecional.

3
Uma rede neural recorrente pertence a uma classe de RNAs que inclui conexões ponderadas
entre camadas anteriores e posteriores (em comparação com as redes de feed forward
tradicionais, onde conecta alimentação apenas para camadas subsequentes). O fato desse tipo
de rede incluir loops implica que elas podem armazenar informações ao processar novas
entradas. Essa memória os torna ideais para tarefas de processamento onde as entradas
anteriores devem ser consideradas (como dados da série temporal). (fonte:
https://imasters.com.br/data/um-mergulho-profundo-nas-redes-neurais-recorrentes, visitado em
10/12/2018)
27

2.4 Principais Arquiteturas de RNAs

Uma arquitetura de rede é um parâmetro que influencia na


concepção da RNA e restringe os tipos de problemas matemáticos que podem
ser preferencialmente abordados por ela. Por exemplo, RNAs de camada única
e de neurônios tipo MCP restringem seu escopo de problemas tratáveis
aqueles linearmente separáveis; redes recorrentes, que apresentam
realimentação, agem mais apropriadamente sobre problemas que apresentem
processamento temporal (como dados de uma série). “Fazem parte da
definição da arquitetura da rede os seguintes parâmetros: números de
camadas da rede, número de nodos em cada camada, tipo de conexão entre
os nodos e topologia da rede” (Braga, et al., 2000).
A arquitetura de uma rede neural é diretamente conectada ao
algoritmo de treinamento usado para habilitar a rede – diz-se que os algoritmos
ou regras de aprendizagem sobre os quais se baseia o projeto de uma RNA
são estruturados. Segundo (Haykin, 2001), podem-se apontar três tipos de
arquiteturas de rede que são diferentes entre si em essência, segundo número
de camadas e existência de laços de realimentação nos neurônios.

2.4.1 Redes Alimentadas Adiante com Camada Única

Diz-se que uma RNA é em camadas porque seus nodos


computacionais estão organizados camadas paralelas sucessivas. Na
concepção mais simples desse sistema, tem-se uma camada de nós de
entrada de dados e uma camada de neurônios de saída, necessariamente
desempenhando esses papéis e nessa ordem – esta rede é designada como
alimentada adiante ou acíclica. Ela também é classificada como rede camada
única, onde essa qualificação se refere à camada de nodos de saída (única
que realiza computação, neste caso).

2.4.2 Redes Alimentadas Adiante com Múltiplas Camadas

Nessa classificação estão as RNAs que apresentam camadas ocultas,


cujos nodos são chamados de neurônios ocultos ou unidades ocultas. O papel
a ser desempenhado por esses é promover processamento útil entre a camada
28

de entrada e a saída da rede. Quanto mais camadas ocultas a rede possua,


tornar-se-á mais capaz de extrair estatísticas de mais alta ordem (medidas
sobre atributos que seriam ignorados em ordens mais baixas, analogamente a
uma expansão em série truncada), capacidade essa bastante valiosa quando o
número de nodos da camada de entrada é grande.
No caso mais comum, nodos de uma camada da RNA têm como
entradas de dados somente saídas dos neurônios da camada precedente: o
vetor final de saída da rede será uma resposta global ao padrão fornecido
como entrada. Uma rede é dita totalmente conectada quando cada um dos nós
de uma camada está conectado a todos os nós da camada posterior – caso
faltem conexões sinápticas, classificamos a rede como parcialmente
conectada.

2.4.3 Redes Recorrentes

O que distingue uma RNA recorrente de uma rede alimentada adiante


é a presença de ao menos um laço de realimentação. A presença da auto-
realimentação (quando a entrada de um neurônio é realimentada pela própria
saída) não é obrigatória: por exemplo, uma rede de camada única na qual cada
um dos neurônios realimenta seu próprio sinal de volta para as entradas de
todos os outros nodos ainda é classificada como uma rede recorrente.
Existindo laços de realimentação, há possibilidades não triviais para a
capacidade de aprendizado e desempenho da rede. Deve-se notar também
que operações de realimentação possibilitam a exploração de atraso temporal
na rede, o que pode resultar em comportamentos mais complexos.

No presente capítulo viu-se um histórico das primeiras arquiteturas de


Redes Neurais Artificiais. Foi apresentada uma definição do que são RNAs a
partir das suas propriedades. Deve se salientar que a inspiração biológica para
as RNAs, que não mudou (só se aprimorou) com o passar dos anos. Viu-se um
modelo matemático do neurônio artificial ou nodo da rede: dentro desse
modelo, viu-se a importância das funções de ativação. Outro elemento crucial
na construção de um neurônio artificial é a existência ou não de realimentação,
que foi explicado brevemente. Em outra seção, foram apresentadas as
29

principais arquiteturas de RNAs - uma em especial, a de Redes Alimentadas


Adiante com Múltiplas Camadas, é aquela a que pertence à classe de redes
neurais a que nos propomos explicar, as Redes Neurais Convolucionais –
essas também são fruto de inspiração biológica, usam unidades neuronais
como definidas aqui, com funções de ativação que podem ser do tipo sigmoide
apresentado ou seguir uma outra função não-linear.
30

3 Aprendizagem em RNAs

Redes neurais artificiais têm como diferencial para com as formas de


computação algorítmica e característica fundamental a habilidade de aprender
a partir do seu ambiente e aprimorar seu desempenho através de interpolações
e extrapolações do aprendido.
Refere-se a Algoritmo de Aprendizagem como um conjunto de
regras ou procedimentos bem definidos para adaptar ou ajustar os parâmetros
(intensidades das conexões entre neurônios – pesos associados às sinapses –
e nível de bias) de uma RNA em um processo iterativo, para que a mesma
possa aprender uma determinada função e melhorar seu desempenho (Haykin,
2001). Idealmente, a rede se torna mais instruída sobre o ambiente após cada
iteração do processo de aprendizagem.
Os autores em (Mendel, et al., 1970) definem o conceito de
aprendizagem no contexto de redes neurais da seguinte forma:
Aprendizagem é um processo pelo qual os parâmetros livres de uma
rede neural são adaptados através de um processo de estimulação
pelo ambiente no qual está inserida. O tipo de aprendizagem é
determinado pela maneira pela qual a modificação dos parâmetros
ocorre.
A aprendizagem é a fase inicial da solução de um problema por uma
RNA: nela a rede (que se pode entender como um grafo orientado onde os
nodos são os neurônios artificiais e as arestas são as conexões sinápticas)
extrai informações relevantes de padrões de informação apresentados a ela,
criando uma representação própria para o problema – a definição dada do
processo de aprendizagem pressupõe, segundo (Haykin, 2001) a seguinte
ordem de eventos
1. A rede neural é estimulada pelo ambiente.
2. A rede neural sofre modificações nos seus parâmetros livres
como resultado desta estimulação.
3. A rede neural responde de uma maneira nova ao ambiente,
devido às modificações ocorridas na sua estrutura interna.
Não há algoritmos de aprendizagem únicos para cada projeto de
redes neurais, mas uma variedade de algoritmos, cada um oferecendo
vantagens específicas que se diferem entre si pela forma como são formulados
31

os ajustes de um peso sináptico de um neurônio. Mais um elemento que deve


ser levado em conta é a maneira pela qual uma rede neural, enquanto máquina
de aprendizagem formada por um grupo de nodos interligados, recebe
influências do ambiente de aprendizado – neste contexto, tratamos de um
Paradigma de Aprendizagem que diz respeito a um modelo do ambiente onde
a RNA desenvolve suas atividades.
Os dois paradigmas principais de aprendizagem para RNAs são a
Aprendizagem Supervisionada e o Aprendizagem Não-Supervisionada (Braga,
et al., 2000).

3.1 Aprendizagem Supervisionada

Este paradigma é chamado aprendizagem supervisionada ou


aprendizagem com um professor porque a entrada e a saída correspondente
da rede são fornecidas por um supervisor externo, um professor. A tarefa dele
é acertar os parâmetros da rede com o objetivo de estabelecer uma relação
entre as entradas e suas respectivas saídas. O professor, que se pode
considerar como tendo conhecimento sobre o ambiente julga o comportamento
da rede (que desconhece o ambiente), visando direcionar o processo de
treinamento (feedback para induzir à resposta esperada ou “correta”). A rede
tem sua saída corrente comparada com a saída desejada, recebendo
informações do supervisor sobre o sinal de erro (diferença entre a resposta
desejada e a resposta real da rede). Para um diagrama do processo, vide a
Figura 2.
32

Figura 2 - Diagrama de aprendizado com professor.

Adaptado de (Haykin, 2001).

Para cada resposta (saída) a todo vetor de treinamento (vetor de


dados de entrada cuja resposta-alvo pela rede é conhecida) provido pelo
ambiente e submetido à rede (entrada) executa-se a comparação com a
resposta-alvo (que é a vetor de saída ótimo a ser provido pela rede a partir de
determinado conjunto de dados iniciais, conhecido pelo professor) com a
resposta da RNA naquela iteração do treinamento, promovendo a alteração
dos pesos das conexões sinápticas para minimizar o sinal de erro. Como
medida de desempenho da rede pode-se usar o erro médio quadrado ou a
soma dos erros quadráticos de todas as saídas obtidas a partir da amostra de
treinamento – essa também é utilizada como função de custo a ser minimizada
pelo algoritmo de treinamento. Idealmente, cada passo aproxima mais a função
de custo da minimização, dado que as mudanças nos pesos e parâmetros da
rede são incrementais, até uma solução caso alguma exista – o conhecimento
do ambiente retido pelo professor será passado para a RNA através do
treinamento: quando o nível de transferência o mais completo possível é
alcançado (função erro de classificação minimizada), podemos então prescindir
do professor e permitir à rede neural interagir com o ambiente sem ingerência
externa.
O aprendizado supervisionado não é autossuficiente em todos os
seus aspectos: dentro da sua proposta, uma vez que na ausência de um
professor, a rede não se ajustará para absorver novas táticas para prover
33

respostas desejadas para situações não apresentadas durante seu treinamento


por exemplos inicial.
Há duas formas para se executar o método supervisionado de
aprendizagem para RNAs: off-line e on-line. A diferença entre ambas diz
respeito a variação do conjunto de dados usados no processo de instrução da
rede: em treinamentos off-line, o conjunto de dados é estático e a resposta da
rede deve ser fixada após obtida – uma vez que um conjunto de dados novos
suplementar seja somado ao conjunto inicial, um novo processo de treinamento
terá início envolvendo a totalidade dos dados, de forma a se prevenir a
influência sobre o processo inicial. No aprendizado on-line, há alteração
dinâmica do conjunto de dados, implicando um processo permanente de
adequação.

3.2 Aprendizagem Não-Supervisionada

Na aprendizagem não-supervisionada ou auto-organizada não há um


professor ou supervisor para dirigir o processo de aprendizagem (Figura 3), o
que implica que não existem casos-modelo da função sobre a qual a rede deve
ser treinada. Neste caso, devem existir “condições para realizar uma medida
independente da tarefa da qualidade da representação que a rede deve
aprender, e os parâmetros livres da rede são otimizados em relação a essa
medida” (Becker, 1991). As classes de trabalho (os elementos de ordem sobre
os quais a rede vai se concentrar) emergem a partir das regularidades
estatísticas dos dados de entrada: trata-se da rede ser capaz de tornar-se hábil
na tarefa de construir representações internas (assimilar a identificação da
ordem em seus pesos sinápticos e bias) para codificar esses conjuntos de
dados.

Figura 3 - Diagrama de aprendizado não-supervisionado.

Adaptado de (Haykin, 2001).


34

Existe semelhança tácita entre o modelo de aprendizado para seres


humanos e o aprendizado supervisionado, contudo, muitos dos sistemas
biológicos se desenvolvem através de aprendizado não-supervisionado, como
por exemplo as etapas primárias dos sistemas de visão e audição.
Para os algoritmos associados ao paradigma não-supervisionado,
somente os vetores de entrada da rede são acessíveis, ao contrário do
aprendizado com professor, cuja execução demanda treinamento sobre pares
de vetores de entrada e saída. Com a rede reconhecendo as regularidades
estatísticas existentes no conjunto de entrada de dados, ela ganha a
capacidade de formar representações internas para codificar características da
entrada e estabelecer as classes ou grupos representativos (ordem imanente
aos dados) associados automaticamente. O aprendizado não-supervisionado
demanda, para se tornar viável, que exista redundância nos dados de entrada:
sem ela é impossível determinar quaisquer padrões nesse conjunto (já que
sem redundância a rede seria exposta a somente um exemplo de cada caso
possível, o que não configura de maneira alguma um padrão).
A estrutura física da rede a qual se aplica o paradigma de
aprendizado não-supervisionado apresenta uma multiplicidade de formas: o
sistema pode ser formado pela camada de entrada e de saída, conexões
feedforward (alimentadas adiante) entre ambas e conexões laterais entre os
nodos da camada de saída; a rede pode ser feedforward mas apresentar
múltiplas camadas – a livre organização brota da interação entre as camadas.
Em ambos exemplos, o aprendizado se estabelecerá ao se modificar
iterativamente os pesos das sinapses de todas as conexões entre nodos como
resposta ao vetor de entrada.

3.3 Aprendizado por Reforço

Na aprendizagem por reforço, o aprendizado de correlações entre


entradas e saídas é efetivado através da interação contínua com o ambiente,
com o objetivo de minimizar uma medida escalar de performance. O
aprendizado por reforço não pode ser, contudo, considerado uma forma
particular de aprendizado supervisionado, ainda que a rede tenha algum
feedback do ambiente. Este feedback é simplesmente um sinal de reforço, é
35

apenas uma avaliação do desempenho da rede, e não fornece qualquer


informação instrutiva de como proceder para melhorá-lo: quando o sinal de
reforço diz que uma saída está errada, ele não dá nenhuma sugestão de qual
poderia ser a resposta certa. A rede precisa da experiência dos possíveis
estados, ações, transições e realimentações do ambiente para atingir a
configuração ótima. Este método de aprendizado por vezes é chamado de
aprendizado com crítica.
A diferença crucial entre o aprendizado supervisionado e o
aprendizado por reforço é a medida de desempenho usada em cada um dos
casos. No aprendizado supervisionado, a mensuração de performance é
baseada no vetor de respostas-alvo assumindo-se uma margem efetiva de erro
conhecida, enquanto no aprendizado por reforço o desempenho é
fundamentado em qualquer medida que possa ser provida ao sistema (Braga,
et al., 2000).
Ao modelo de aprendizado por reforço é associado um crítico cujo
papel é transformar um sinal de reforço primário recebido do ambiente, entrada
escalar, em um sinal de reforço de melhor qualidade, também escalar,
designado como sinal de reforço heurístico (Haykin, 2001). O sistema pode ser
projetado para aprender por reforço atrasado, significando isso que o mesmo
absorve uma sequência no tempo de estímulos (vetores de estado) provindos
do ambiente e seus respectivos sinais de reforço heurístico: a finalidade desse
processo de aprendizado é minimizar uma função de custo para avançar,
sendo essa definida como a perspectiva do custo acumulado de ações
tomadas ao longo de uma sequência temporal. Há a possibilidade de que
certas ações tomadas anteriormente na sequência em questão sejam de fato
os melhores determinantes do comportamento global do sistema: a função do
sistema de aprendizagem é descobrir estas ações e realimentá-las para o
ambiente (Haykin, 2001). Para um diagrama do aprendizado por reforço, vide
Figura 4 abaixo:
36

Figura 4 - Diagrama para o Aprendizado por Reforço.

Adaptado de (Haykin, 2001).

O aprendizado por reforço é uma modalidade na qual o conjunto de


dados varia ininterruptamente, demandando contínuo processo de adaptação
da rede, e é construído através de uma conjugação criteriosa de entrada-saída
via um mecanismo de seleção e erro voltado para maximizar um índice de
performance escalar chamado sinal de reforço (Braga, et al., 2000). Sutton
(Sutton, et al., 1992), a partir de Thorndike (Thorndike, 1911) formulou a
seguinte definição de aprendizado por reforço:
Se uma ação tomada pelo sistema de aprendizagem é seguida de
estados satisfatórios, então a tendência do sistema de produzir esta
ação particular é reforçada. Se não for seguida de estados
satisfatórios, a tendência do sistema de produzir esta ação é
enfraquecida.
O paradigma de aprendizagem por reforço pode por sua vez ser
classificado em (Braga, et al., 2000):
 Aprendizagem Associativa. O meio fornece informações além do
reforço, e um mapeamento, na forma estímulo-ação, deve ser
aprendido.
 Aprendizagem Não-Associativa. O sinal de reforço é a única
entrada que o sistema recebe do meio. O sistema seleciona uma
única ação ótima, em vez de associar diferentes ações com
diferentes estímulos.
37

Dependendo da natureza do ambiente, existem algumas classes de


problemas de aprendizado por reforço (Braga, et al., 2000):
 Classe I: No caso mais simples, o sinal de reforço é sempre o
mesmo para um dado par entrada-saída. Com isso existe um
mapeamento definido para cada entrada-saída que a rede deve
aprender, ou pelo menos um, se houver muitas saídas corretas
para uma dada entrada. Os padrões de entrada são escolhidos
aleatoriamente ou pelo ambiente, sem, no entanto, nenhuma
referência às saídas anteriores. Um representante para esta
classe é a Função de Avaliação, como descrito em (Haykin, 1994).
 Classe II: Uma extensão comum é para um ambiente estocástico.
Aqui um par de entrada-saída determina apenas a probabilidade
de um reforço positivo. No entanto, essa probabilidade é fixa para
cada para de entrada-saída, e mais uma vez a sequência de
entrada não depende do passado. Um representante para essa
classe é o Julgador Heurístico Adaptativo (Barto, et al., 1983).
 Classe III: Ambos os sinais de reforço e padrões de entrada
podem depender arbitrariamente das saídas anteriores da rede.
Representante desta classe é o Método de Diferença Temporal
(Sutton, 1988).

No presente capítulo foi definido o conceito de algoritmo de


aprendizagem para RNAs, que é o primeiro passo para se resolver um
problema com redes neurais. Vimos os três paradigmas da aprendizagem em
redes neurais artificiais: aprendizagem supervisionada (com um "professor" ou
agente externo que direciona o treinamento) e aprendizagem não-
supervisionada (baseada em regularidades estatísticas dos dados de entrada),
além do aprendizado por reforço (quando a rede recebe feedback do ambiente,
que indica o erro, mas não a forma de melhorar a classificação). Se verá
oportunamente que as Redes Neurais Convolucionais usam de aprendizagem
supervisionada principalmente, mas as demais formas são úteis em variadas
arquiteturas em voga.
38

4 Perceptrons de Camada Única

Entre 1957 e 1958 Frank Rosenblatt modelou e propôs o conceito do


perceptron como o primeiro elemento de RNA voltado para a aprendizagem
com um professor (Rosenblatt, 1958). O perceptron é a estrutura mais simples
de uma rede neural que pode ser usada para a classificação de padrões que
sejam linearmente separáveis (vide Figura 5).

Figura 5 - Linearmente separável e não-linearmente separável.

A linha vermelha determina a separação entre duas classes de dados (círculos claros e
círculos escuros) que foram submetidos à classificação por uma rede neural, em um espaço de
fase bidimensional. Em (a) temos um problema linearmente separável (aqui o separador é
representado por uma reta; em um espaço 3D seria um plano, e quando houver mais
dimensões, um hiperplano), e em (b), um problema não-linearmente separável.

Essencialmente, o perceptron resume-se a um ou mais neurônios


artificiais arranjados em uma camada única, com os pesos das sinapses de
entrada ajustáveis e bias. Rosenblatt, em sua obra de 1962, Principles of
Neurodynamics: Perceptrons and the Theory of Brain Mechanisms, apresenta
pela primeira vez o algoritmo usado para ajustar os parâmetros livres do
perceptron (Rosenblatt, 1962), ele demonstrou (Teorema da Convergência do
Perceptron) que se as entradas usadas no treinamento da unidade são
provenientes de duas classes linearmente separáveis de dados, então o
algoritmo é convergente, e o resultado dele (a superfície de decisão) é um
hiperplano que divide as populações.
39

Deve-se considerar o perceptron e a teoria agregada como um


classificador de padrões. Vai-se tratar aqui do caso do perceptron construído
em torno de um único neurônio – este é limitado a classificar padrões com duas
entradas ou hipóteses. Pode-se estender a teoria para o caso de múltiplas
hipóteses, expandindo a camada de saída (camada de computação) do
perceptron para incluir mais neurônios, consequentemente permitindo realizar a
classificação em mais de duas classes linearmente separáveis.

Figura 6 - Modelo do Perceptron.

(Fonte: https://stackabuse.com/introduction-to-neural-networks-with-scikit-learn/).

Neste capítulo abordar-se-á o modelo perceptron de camada única


(em nosso caso trata-se de um único neurônio, mas, como visto, a camada
única – camada de saída ou de computação – pode ser populada com mais
unidades para a solução de problemas que envolvam mais de duas classes de
dados), Figura 6 (na qual 𝑥 são as entradas do neurônio – 𝑖𝑛(𝑡) –, 𝑤 os pesos
das sinapses, 𝜃 o bias naquele instante de tempo, e 𝑜𝑢𝑡(𝑡) a saída). O modelo
perceptron será apresentado via algoritmo de treinamento de Rosenblatt.

4.1 O Perceptron

Quando surgiu a contribuição de McCulloch e Pitts para a


modelagem do neurônio biológico, as possibilidades de topologias de redes
neurais e a capacidade destas de computar funções booleanas, a computação
digital estava dando seus primeiros passos e o pensamento científico em voga
era que seria possível conceber um cérebro artificial inteligente a partir de
40

unidades perpetradoras de operações lógicas básicas. O conceito de


treinamento de um neurônio artificial foi primeiramente introduzido por
Rosenblatt. O modelo perceptron original tinha por base uma estrutura em
rede, populada por neurônios artificiais MCP que seguiam uma estrita regra de
aprendizado com professor. Rosenblatt veio finalmente a demonstrar seu
teorema da convergência perceptron, que estabelece que um neurônio MCP
treinado com algoritmo de aprendizado desenvolvido por ele sempre apresenta
convergência para problemas linearmente separáveis (que são aqueles cujos
dados podem ser separados em duas classes no espaço das entradas por um
hiperplano: por exemplo, classificação entre números pares e ímpares).
O primeiro experimento foi uma simulação levada a cabo por
Rosenblatt em seu computador IBM 704. Em seguida um hardware próprio foi
desenvolvido, o Mark 1 Perceptron: era uma máquina para reconhecimento de
imagens – possuía um “olho”, uma câmera com 400 fotocélulas, cada uma
delas uma entrada para uma rede bicamada de neurônios artificiais MCP: uma
camada de pesos fixos e a seguinte para os quais os pesos sinápticos eram
ajustados em potenciômetros. A despeito de possuir três níveis distintos
(entrada, associação, saída), o sistema é designado como perceptron de
camada única, pois somente as unidades de resposta (relacionadas ao nível de
saída) assumem comportamentos adaptativos.

4.1.1 Algoritmo de Aprendizagem

Na presente seção será descrito o algoritmo ou regra que rege o


processo de aprendizagem do perceptron – o que determina como os pesos
das sinapses vão se adaptar para executar o objetivo de promover a
classificação de um conjunto de dados de entrada (Braga, et al., 2000).
Dado um vetor de pesos sinápticos 𝑤⃗(𝑡), busca-se, no processo de
aprendizagem, correção de erros ou adaptação do perceptron, encontrar o
incremento ∆𝑤⃗ de tal forma que 𝑤⃗(𝑡 + 1) = 𝑤⃗(𝑡) + ∆𝑤⃗ seja mais próximo da
solução almejada (onde 𝑡 é o tempo discreto, ou iteração do treinamento).
Seja um neurônio qualquer da camada de computação do
perceptron: seu vetor de entrada é dado por 𝑥⃗ (𝑡), seu vetor de pesos é 𝑤⃗ (𝑡),
e a sua saída é dada por ∑ 𝑤 𝑥 = 𝑤⃗ ∙ 𝑥⃗ , onde 𝑤⃗ ∙ 𝑥⃗ é o produto interno ou
41

linear entre as grandezas 𝑤⃗ (𝑡) e 𝑥⃗ (𝑡). Levando em consideração o perfil MCP


do nodo, tem-se uma situação limiar crítica de disparo quando 𝑤⃗ ∙ 𝑥⃗ = 𝜃, ou
seja, 𝑤⃗ ∙ 𝑥⃗ − 𝜃 = 0: isso pode ser interpretado como o acréscimo de mais uma
entrada nos vetores com os quais se está trabalhando, 𝑥 = 1 e 𝑤 = −𝜃, e se
passará a designar os vetores modificados como 𝑥⃗(𝑡) e 𝑤⃗(𝑡). Agora o limiar de
ativação do nodo é dado por 𝑤⃗ ∙ 𝑥⃗ = 0, sendo 𝑤⃗ = {−𝜃, 𝑤 , 𝑤 , … , 𝑤 } e
𝑥⃗ = {1, 𝑥 , 𝑥 , … , 𝑥 } .
O processo de correção de erros em si começa com a admissão de
um par de treinamento {𝑥⃗, 𝑑} para um neurônio arbitrário da camada em
questão, onde 𝑥⃗ é o vetor de entrada e 𝑑 é a resposta pretendida para a
mesma entrada, 𝑑 ∈ {0,1}. A saída atual desse nodo para esse vetor de
entrada é dita 𝑦, 𝑦 ∈ {0,1}: define-se o erro associado à saída atual como
𝑒 = 𝑑 − 𝑦. É fácil inferir que 𝑒 = 0 somente quando as respostas atual e
pretendida são iguais, e 𝑒 ≠ 0 somente quando são distintas4.
Sejam 𝑑 = 1 e 𝑦 = 0: tem-se 𝑒 = 1 e 𝑤⃗ ∙ 𝑥⃗ < 0 uma vez que a saída
real é nula e esse resultado por sua vez é filtrado por uma equação de limiar.
Buscando uma interpretação geométrica para o par de vetores no espaço,
temos |𝑤⃗| ∙ |𝑥⃗| cos(𝑤⃗, 𝑥⃗) < 0, o que implica cos(𝑤⃗, 𝑥⃗) < 0 e 90° < 𝛼(𝑤⃗, 𝑥⃗) <
270°, onde 𝛼 é o ângulo entre os vetores 𝑤⃗ e 𝑥⃗: a Figura 7 ajudará na tarefa de
prosseguir com esse estudo:

Figura 7 - Interpretação geométrica para a situação 𝑑 = 1 e 𝑦 = 0.

4
Percebe-se de pronto que o processo de treinamento age também sobre os thresholds associados a
cada neurônio, dada a inclusão de 𝜃 no vetor 𝑤⃗.
42

Na Figura 7, vê-se a posição dos vetores 𝑤⃗(𝑡) e 𝑥⃗(𝑡) para a situação


em apreço, e do 𝑤⃗(𝑡 + 1) cujo erro já teria passado pelo ajuste. Decorre de
imediato da interpretação geométrica deste caso que uma solução possível
seria 𝑤⃗(𝑡 + 1) = 𝑤⃗(𝑡) + 𝜂𝑥⃗(𝑡), válida como regra de aprendizagem por
correção de erro. A constante 𝜂, taxa de aprendizado, torna-se a mensuração
da agilidade com que o vetor de pesos é atualizado.
Sejam 𝑑 = 0 e 𝑦 = 1: caso seja feita a mesma análise anterior,
obtém-se uma regra de aprendizagem por correção de erro semelhante. Tem-
se 𝑒 = −1 e 𝑤⃗ ∙ 𝑥⃗ ≥ 0 pela regra de disparo adaptada. Seguindo o mesmo
caminho de antes, temos |𝑤⃗| ∙ |𝑥⃗| cos(𝑤⃗, 𝑥⃗) ≥ 0, o que implica 𝛼(𝑤⃗, 𝑥⃗) ≤ 90°. O
objetivo é, como no caso anterior, mudar a paridade do produto interno
ajustando o vetor de pesos 𝑤⃗(𝑡): devemos modifica-lo para que 𝛼(𝑤⃗, 𝑥⃗) > 90°.
Uma análise geométrica análoga revelará que uma possível regra de correção
de erro é dada por 𝑤⃗(𝑡 + 1) = 𝑤⃗(𝑡) − 𝜂𝑥⃗(𝑡).
Podemos reduzir a uma só regra de atualização do perceptron
simples aquelas a que se chega nos dois casos, 𝑑 = 1 e 𝑦 = 0 ou 𝑑 = 0 e 𝑦 =
1, bastando utilizar perceber a conveniência dos valores assumidos pelos erros
𝑒 em cada caso:
𝑤⃗(𝑡 + 1) = 𝑤⃗(𝑡) + 𝜂𝑒𝑥⃗(𝑡) (4.1)

4.1.2 Exemplo de Implementação do Algoritmo de Treinamento

Pode-se descrever o algoritmo de treinamento para um perceptron


de camada única da seguinte forma (Braga, et al., 2000):
1. Inicializar 𝜂 e o vetor de pesos 𝑤⃗;
2. Para cada par do conjunto de treinamento Γ = 𝑥⃗ , 𝑑 ,

atualizar o vetor de pesos para cada um dos nodos da rede


segundo a regra 𝑤⃗(𝑡 + 1) = 𝑤⃗(𝑡) − 𝜂𝑒𝑥⃗;
3. Repetir o procedimento (2) até 𝑒 = 0 para todos os 𝑝 elementos
do conjunto de treinamento em todos os nodos da rede.
Seja um perceptron de um único nodo e quatro entradas: como
possui apenas um neurônio, é capaz de lidar somente com problemas
43

linearmente separáveis com duas classes de dados. Alimenta-se a RNA com


dois vetores, 𝑥⃗ = [1 − 0,1 0,4 − 0,7 − 1,8] e 𝑥⃗ = [1 − 0,1 0,2 − 0,3 − 0,9] .
Iniciam-se os parâmetros da rede, de forma arbitrária, com 𝜂 = 0,05 e 𝑤⃗(0) =
[0 0 0 0 0] . A aplicação do algoritmo de treinamento do perceptron dá como
solução final 𝑤⃗(5) = [−0,050 − 0,025 0,010 − 0,025 − 0,045] , onde 𝑡 = 5 é o
número de iterações, ou tempo discreto.
O hiperplano que é a solução para o problema proposto (divide o
espaço das entradas de tal forma que estabeleça classes de dados) é dado por
𝑤⃗(5) ∙ 𝑥⃗ = 0 (4.2)
0,025 𝑥 − 0,010𝑥 + 0,025𝑥 + 0,045𝑥 = −0,050 (4.3)
e pode-se perceber facilmente que 𝑤⃗(5) ∙ 𝑥⃗ = 1 e 𝑤⃗(5) ∙ 𝑥⃗ = 0, ou seja, as
saídas promovem a classificação pretendida das entradas.

Com o perceptron nasceu o conceito de Rede Neural Artificial


pluripotente, que pode ser treinada (ou se treinar) para desempenhar diversas
tarefas (no caso, separação de dados em um número maior ou menor de
classes, dependendo da dimensão da rede neural). Foi visto um breve histórico
de sua concepção, sua regra clássica de treinamento - uma das primeiras a
serem implementadas com tal primor – e um breve exemplo de sua
implementação. Mas o perceptron não é capaz de lidar com todo tipo de
problema, a implementação de uma classificação do tipo XOR é um deles: para
esses casos foi desenhada uma arquitetura nova, o perceptron multicamada,
que será a base para a arquitetura das Redes Neurais Convolucionais.
44

5 Perceptrons Multicamadas

Foi demonstrado (Minsky, et al., 1972) que o perceptron de camada


única resolve somente problemas linearmente separáveis: para o tratamento de
problemas não-linearmente separáveis, demanda-se o uso de perceptrons
multicamadas, ou seja, aqueles que possuem as chamadas camadas ocultas,
intermediárias. Essa RNA consiste, então, de uma camada de entrada
(sensores, nós fonte), uma ou mais camadas ocultas (nós computacionais) e
uma camada de saída (nós computacionais), e o sinal de entrada percorre a
rede até a saída, camada por camada (chamada então de rede alimentada
adiante ou feedforward).
George Cybenko formulou e provou uma das primeiras versões do
Teorema Universal da Aproximação em 1989, usando funções de ativação do
tipo sigmoide (Cybenko, 1989). Esse teorema estabelece que uma RNA
alimentada adiante com uma única camada oculta e número finito de nodos
pode aproximar (ou seja, implementar) funções contínuas em subconjuntos
compactos de ℝ (espaço real de n dimensões, ao qual pertencem vetores
reais de n entradas), sob suposições moderadas sobre a função de ativação –
contudo, a possibilidade provada para o aprendizado de uma função,
incorporada em parâmetros da rede, não implica necessariamente a
capacidade algorítmica de aprendizado desses mesmos parâmetros: pode
haver necessidade de um tempo “infinito” para que determinado algoritmo
convirja, ou pode esse priorizar um mínimo local na superfície de erro. Em
1991 Kurt Hornik, matemático austríaco, provou que não é a função de
ativação, mas sim a arquitetura da rede multicamada alimentada adiante que
dá a esse tipo de RNA o potencial de serem aproximadores universais, ou seja,
simular qualquer função (Hornik, 1991).
A pergunta passa a ser “como treinar uma rede perceptron
multicamada?”. Em primeira abordagem pode-se tentar treinar sub-redes, e.g.,
camada por camada independentemente: neste caso poder-se-ia formar cada
uma por conjuntos de redes perceptron monocamada, uma para cada conjunto
de entradas linearmente separável, no caso da camada de entrada, e que
tratem as saídas das camadas anteriores nos demais casos. Tal solução,
45

subdivisão de um problema maior em subproblemas, em geral não é prática ou


sequer factível (Braga, et al., 2000).
Resta promover o treino da rede como um todo. A atenção deve ser
voltada para o problema que não foi ainda abordado: “como lidar com nodos
intermediários?” – isso envolve redefinir apropriadamente o erro associado a
esses neurônios. Pode-se propor nodos com funções de ativação do tipo limiar
(threshold): contudo, a rigidez dos resultados deve tornar complexo e restrito o
tratamento da função erro acumulada. O uso de funções de ativação do tipo
linear deve ser descartado: uma rede multicamada que use funções de
ativação lineares é equivalente a uma rede monocamada, como se pode
constatar na prova na sequência (Braga, et al., 2000).
Seja uma Rede Neural com uma camada intermediária e funções de
ativação lineares. Sejam 𝑥 o vetor de entrada e 𝑊 e 𝑊 as matrizes
de pesos para os nodos das primeira e segunda camadas,
respectivamente. O vetor de saída da rede é gerado de acordo com a
seguinte equação:
𝑦⃗ = (𝑥⃗𝑊 ) ∙ 𝑊

Utilizando propriedades da álgebra linear, tem-se que:


∀(𝑊 , 𝑊 )∃𝑊 | 𝑊 = 𝑊 ∙ 𝑊
Logo:
𝑦⃗ = 𝑥⃗ ∙ 𝑊
onde 𝑥⃗ é o vetor de entrada, 𝑦⃗ o vetor de saída e 𝑊 , 𝑊 e 𝑊 são
matrizes de pesos de dimensões 𝑀x𝑁, 𝑁x𝐿 e 𝑀x𝐿, respectivamente.
Em meados da década de 1980 foi proposto um algoritmo de
aprendizado que fornece um método computacional eficiente para o
treinamento supervisionado de perceptrons multicamadas (Rumelhart, et al.,
1986) (embora não necessariamente gere a solução ótima a todos os
problemas): é o algoritmo backpropagation ou de retropropagação de erros,
que é baseado no método de gradientes descendentes da superfície de erro.
Como condições para a executabilidade do algoritmo, demanda-se que a
função de ativação seja não-linear, contínua, diferenciável e preferencialmente
não-decrescente (chamadas funções semilineares): as funções do tipo
sigmoide foram identificadas como ideias para o fim pretendido. Todas essas
conclusões a que se chegou para o perceptron multicamada permanecem
46

válidas para várias arquiteturas de muitas camadas, incluindo as ConvNets que


serão abordadas no Capítulo 6.

5.1 Arquitetura

Redes neurais artificiais tipo perceptrons multicamadas –


designados também multi-layer perceptrons, MLP – têm poder computacional
superior aos perceptrons simples, pois podem lidar com sucesso com dados
não-linearmente separáveis: dependendo da sua arquitetura podem
implementar funções linearmente separáveis ou não, com precisão variável
conforme o número de camadas, de nodos e de conexões sinápticas.

Figura 8 - Estrutura MLP com uma camada oculta.

(Adaptada da fonte: https://www.researchgate.net/figure/An-Illustration-for-A-Simple-Neural-


Network_fig5_316989035).

Através da Figura 8, podem-se vislumbrar as características de uma


rede multicamada totalmente conectada (ou seja, um neurônio em qualquer
posição está ligado a todos os nodos da camada anterior): a entrada da
informação é pela camada de input ou entrada (unidades sensoriais ou nós
fonte); as saídas resultantes do processamento da primeira camada oculta
alimentam a posterior, e assim por diante em todas as camadas da rede: o
processamento levado a cabo por cada neurônio é influenciado pela
47

combinação das computações realizadas pelos nós da camada anterior e que


estejam a ele conectados. O fluxo de sinais funcionais vai da entrada à saída, e
nesse processo as funções que definem a divisão do espaço de decisão (que
estabelecem fronteiras entre classes no espaço de entradas) se complexificam.
Pode-se dizer que, numa rede de ao menos duas camadas, cada
neurônio da primeira camada intermediária estabelece uma reta no espaço das
entradas. Cada nodo da camada posterior vai combinar as retas definidas por
cada unidade a ele conectada, formando regiões convexas. As camadas
seguintes seguem a mesma premissa, até que a camada de saída gera regiões
de formas abstratas. Diz-se que os neurônios das camadas ocultas de uma
rede MLP agem como detectores de características: ao tratar as entradas
codificam padrões, usados para gerar a saída da rede; a capacidade da rede
de promover uma representação internas para um dado padrão característico
do conjunto de dados de entrada depende do seu número de nodos
intermediários.
Como foi visto, Cybenko e outros pesquisadores provaram que a
presença de uma única camada intermediária permite simular qualquer função
contínua – duas camadas ocultas ou além são o suficiente para aproximar
qualquer função (Cybenko, 1988) (Cybenko, 1989). Implementar mais de duas
camadas ocultas para resolver um determinado problema deve ser uma disputa
entre a facilidade trazida para o treinamento da rede e a dificuldade
computacional resultante para se estimar o erro acumulado.
Determinar o número de neurônio que devem popular uma camada
intermediária é um problema mais complexo, que depende de diversos
elementos (Braga, et al., 2000): número de vetores entrada no treinamento;
fator ruído presente nos exemplos; sofisticação ou complexidade da função-
alvo; distribuição estatística dos dados na fase de treinamento. A quantidade
de nodos de uma camada oculta deve ser, no geral, determinada
empiricamente, mas há métodos que visam auxiliar tal tarefa (Braga, et al.,
2000):
 Definir o número de unidades em função do número de entradas e
saídas. Deve ser observado que este método não pode ser
utilizado de forma genérica.
48

 Utilizar um número de conexões dez vezes menor que o número


de exemplos. Este método apenas reduz a incidência de
5
overfitting . Se o número de exemplos for muito maior que o
número de conexões, overfitting é improvável, mas pode ocorrer
underfitting (a rede não converge durante o seu treinamento).
Existem casos em que o número de neurônios das camadas
intermediárias cresce exponencialmente com o número de nodos de entrada,
onde os recursos disponíveis em geral impõem limites no tratamento do
problema. Pode-se considerar uma solução hábil e factível quando o número
de nodos das camadas intermediárias cresce polinomialmente com o aumento
do número das unidades de entrada.

5.1.1 Bias and Variance Dilemma

Como definir a topologia de uma rede neural artificial multicamada?


Como visto, este é um problema empírico que passa por tentativas de
aprimoramentos sucessivos a partir de uma topologia inicial de teste, e que
pode comprometer tempo de pesquisa e desenvolvimento valioso. E o objetivo
é chegar numa rede que empreenda a diferenciação de classes dos dados de
entrada de teste, e com bom potencial para generalização. Dados
experimentais apresentam erros ou ruído (incerteza intrínseca à medida): a
função solução aproximada através de uma rede neural deve ser capaz de
selecionar os dados a despeito do ruído associado a eles. Deve-se conceber
uma RNA que seja adaptável de forma a modelar fielmente os dados, mas que
também não seja lassa o suficiente para modelar também o ruído: a esse
problema dá-se o nome de bias and variance dilema (Geman, et al., 1992).
A palavra-chave para alcançar-se o equilíbrio entre rigidez e
flexibilidade numa RNA é dimensionamento: quanto maior a dimensão de uma
rede maior é sua flexibilidade, já que maior é o número de parâmetros
ajustáveis. Contudo a solução não é trivial: a complexidade dos dados de
entrada, quando desconhecida de início, pode perpassar o treinamento da
rede.

5
Com muitas unidades de processamento disponíveis, a rede tem maior tendência a memorizar padrões
específicos, ao invés de determinar características que vão permitir a generalização de classes sobre um
conjunto de dados.
49

Existe uma maneira simples (mas limitada a casos em que o


conjunto de dados de treinamento é “grande”) de se precaver do overfitting
(sobretreino da rede que causa grande erro no processo de classificação para
qualquer dado, exceto aqueles com que ela foi alimentada durante o
treinamento), estimando-se o erro de generalização que ocorre na fase de
aprendizado da rede: divide-se o conjunto de dados a serem apresentados em
dois subconjuntos, treinamento e validação. O primeiro é usado para adaptar
os pesos sinápticos da rede, e o segundo para validar sua capacidade de
generalização. Quando o erro do conjunto de validação atingir um patamar
inaceitável para o projeto da rede – o que significa que a RNA começou a
incorporar o ruído dos dados, influindo negativamente na sua capacidade de
generalização – o treinamento deve ser suspenso (Reed, 1993).
Outra maneira de se otimizar a topologia de uma rede é a utilização
de técnicas de pruning (do inglês, “poda”) (Reed, 1993) (Braga, et al., 2000):
elas são baseadas na supressão de sinapses e neurônios que não contribuem
para a função finalística da rede. Pode-se dividir a técnica de prunning em dois
tipos:
 Métodos que mensuram a sensibilidade da saída da rede.
Consiste de modo geral na extração de elementos da rede e a
posterior medida da variação da saída e erro associado: se o
impacto for “pequeno”, o elemento pode ser retirado sem
perdas na capacidade de classificar dados da rede. Esse
método deixa de considerar a possível correlação entre
elementos de uma rede: dois nodos intermediários podem
anular mutuamente suas influências (contribuição nula), mas
quando atuando individualmente (sem seu par associado)
podem ter grande impacto na saída: o método não detectaria
a redundância formada pela estrutura mais complexa.
 Métodos que alteram as funções de custo. Basicamente
consiste na adição de termos de regulação parametrizados ao
termo de erro convencional – o objetivo é alcançar soluções
com pesos de norma minimizada: soluções com pesos
grandes são penalizadas no processo de aprendizado. Inicia-
50

se o processo com uma rede superdimensionada, da qual são


eliminados pesos de baixo impacto (Braga, et al., 2000).

5.2 Treinamento de Perceptrons Multicamadas

Algoritmos para o treinamento de redes MLP são variados,


normalmente do tipo com supervisão – conforme os parâmetros que são
submetidos a atualizações durante o processo, eles podem ser classificados
em dois tipos (Braga, et al., 2000):
 Estáticos: não alteram a estrutura da rede, concentram-se em
variar os pesos das sinapses.
 Dinâmicos: alteram a estrutura da rede (número de camadas,
de neurônios nas camadas ocultas, e de sinapses).
O algoritmo de treinamento dos perceptrons multicamadas mais
prestigiado e largamente utilizado é o backpropagation. Seu papel na história
das RNAs é vastamente importante: o retorno do interesse sobre a matéria é
marcado pela publicação que, se não introduz com primazia, ao menos
populariza o algoritmo com o objetivo de treinamento de MLPs – a obra em
dois volumes Parallel Distributed Processing, também chamado PDP, datado
de 1986 e de autoria de David Everett Rumelhart e James McClelland, ambos
pesquisadores em psicologia (Rumelhart, et al., 1986).
O conceito do backpropagation é conhecido: algoritmo com
professor que usa um mecanismo de correção de erros sobre pares de
treinamento, (entrada, saída desejada), para adaptar os pesos sinápticos da
rede. A inovação está no fato do algoritmo possuir duas fases de treinamento:
 Fase Forward: usada para determinar a saída real da rede para
dado padrão de entrada;
 Fase Backward: de posse da saída desejada e a saída real da
rede, atualiza os pesos de suas conexões.

A fase forward é determinada como segue (Braga, et al., 2000):


1. A entrada é apresentada à primeira camada da rede, a camada
𝐶 .
2. Para cada camada 𝐶 a partir da camada de entrada.
51

2.1 Após os nodos da camada 𝐶 (𝑖 > 0) calcularem seus sinais


de saída, estes servem como entrada para a definição das
saídas produzidas pelos nodos da camada 𝐶 .
3. As saídas produzidas pelos nodos da última camada são
comparadas às saídas desejadas.

A fase backward é estabelecida como segue (Braga, et al., 2000):


1. A partir da última camada, até chegar na camada de entrada:
1.1 Os nodos da camada atual ajustam seus pesos de forma a
reduzir seus erros.
1.2 O erro de um nodo das camadas intermediárias é calculado
utilizando os erros dos nodos da camada seguinte
conectados a ele, ponderados pelos pesos das conexões
entre eles.

As duas fases do algoritmo backpropagation são implementadas


como abaixo (Braga, et al., 2000).
1. Inicializar pesos e parâmetros.
2. Repetir até o erro ser mínimo ou até a realização de um dado
número de ciclos:
2.1 Para cada padrão de treinamento 𝑋
2.1.1 Definir saída da rede através da fase forward.
2.1.2 Comparar saídas produzidas com as saídas desejadas.
2.1.3 Atualizar pesos dos nodos através da fase backward.

O algoritmo de treinamento backpropagation usa uma regra de


aprendizado chamada regra delta generalizada, baseada na regra delta de
Widrow e Hoff (Adaptive Switching Circuits, 1960), e usa o método do gradiente
para o ajuste dos pesos.
No presente caso, a função custo a ser minimizada (também
designada Energia) é função da soma dos erros quadráticos (Braga, et al.,
2000):
𝐸= ∑ ∑ (𝑑 − 𝑦 ) (5.1)

onde 𝐸 é uma função do erro total, 𝑝 é o número de padrões de um dado


conjunto de treinamento, 𝑘 é o número de unidades de saída, 𝑑 é a i-ésima
saída desejada e 𝑦 é a i-ésima saída gerada pela rede.
52

A Equação 4.2 exemplifica a obtenção da saída 𝑦 (um valor de


ativação) onde a função 𝑓 apresentada é semilinear, conforme já discutido
(Braga, et al., 2000):
𝑦 = 𝑓 (𝑛𝑒𝑡 ) (5.2)

𝑛𝑒𝑡 = ∑ 𝑥 𝑤 (5.3)
onde a constante 𝑛 representa o número de conexões de entrada do nodo 𝑗, e
𝑤 o peso da conexão entre a entrada 𝑥 e o nodo 𝑗.

5.2.2 Problemas Associados ao Algoritmo

A despeito de ser o algoritmo mais facilmente associado ao


treinamento de redes MLP, o backpropagation é associado a diversas
inconsistências e falhas na sua implementação. A lista de problemas cresce na
mesma proporção que aumenta a complexidade da superfície de erro: o
algoritmo tende a apresentar lentidão e por vezes ele converge para mínimos
locais (uma solução estável, porém incorreta a nível global), por exemplo.
As seguintes são as técnicas usuais para diminuir tanto o tempo de
ajuste do backpropagation quanto o aprisionamento da solução em mínimos
locais (Braga, et al., 2000):
 utilizar taxa de aprendizado decrescente;
 adicionar nós intermediários;
 utilizar um termo momentum;
 adicionar ruído aos dados.
A utilização de um termo momentum merece análise mais detida,
dada sua popularidade, simplicidade e eficácia. O chamado termo momentum é
dado pela Equação 5.17:
𝜓 = 𝛼(𝑤 (𝑡) − 𝑤 (𝑡 − 1)) (5.4)
sendo que o ajuste de pesos passa a ser:
𝑤 (𝑡 + 1) = 𝑤 (𝑡) + 𝜂𝛿 (𝑡)𝑥 (𝑡) + 𝛼(𝑤 (𝑡) − 𝑤 (𝑡 − 1)) (5.5)
Pode-se facilmente perceber que o termo momentum acelera o
aprendizado em regiões planas da superfície de erro: em “vales” e
equivalentes, ele tende a reduzir a oscilação. Em ambos os casos, diminui a
instabilidade do algoritmo.
53

Uma dificuldade possível no treinamento de redes MLP é o


overfitting: trata-se da memorização de padrões (o que inclui os ruídos
associados a eles) – é identificado quando, após determinado número de
iterações do treinamento, o desempenho associado a rede (taxa de
classificações corretas), ao invés de melhorar, piora (redução da capacidade
de generalização). As opções corriqueiras para lidar com o overfitting são
(Braga, et al., 2000):
 encerrar o treinamento mais cedo (quando o erro de validação
começa a subir);
 podar (pruning) os pesos da rede.
Mais um problema associado ao algoritmo backpropagation é
conhecido como flat spot, literalmente “superfície plana”: acontece quando a
derivada da função sigmoide de um nodo aproxima-se de zero no decorrer do
método de aprendizado, o que pode ocorrer mesmo em presença de erros
grandes6. Já que o processo de adaptação dos pesos usa o valor da derivada,
o neurônio em flat spot não terá (ou terá minimamente) seus pesos ajustados.
Alguns métodos para se contornar o problema são (Braga, et al., 2000):
 utilizar uma medida de erro que tenda para infinito quando a
derivada da sigmoide tender para zero;
 adicionar uma constante à derivada, evitando que o erro seja igual
a zero;
 utilizar uma função de erro não-linear.

No presente capítulo aprendeu-se sobre os perceptrons


multicamada, e a importância do Teorema Universal da Aproximação que,
grosso modo, permite que o mesmo implemente qualquer função contínua em
um espaço n-dimensional - essa capacidade é herdada por toda RNA cuja
arquitetura se baseia na do perceptron multicamada, estando as ConvNets
entre elas. Foi visto que o algoritmo eficiente de aprendizado para os
perceptrons multicamada é o chamado backpropagation (e sua regra delta), o
mesmo utilizado em Redes Neurais Convolucionais.

6
A derivada da função sigmoide pode ser posta na forma 𝑜 (1 − 𝑜 ), onde 𝑜 é a saída do
neurônio. Quando 𝑜 se aproxima de 0.0 ou 1.0, a derivada da função sigmoide se aproxima de
zero.
54

6 Redes Neurais Convolucionais

Redes neurais convolucionais, ConvNets ou CNNs (do inglês


Convolutional Neural Networks) são um tipo de rede neural artificial
especializada, voltadas para processamento de dados que possuam uma
topologia conhecida e do tipo grade: exemplos incluem dados de séries
temporais, que podem ser pensados como uma grade unidimensional tomando
amostras a intervalos de tempo regulares, e dados de imagem, que podem ser
pensados como uma grade bidimensional de pixels (ou ainda, como matrizes
estruturadas em padrões). Redes convolucionais têm obtido resultados
promissores em aplicações práticas como visão de máquina e identificação de
padrões de fala. Essas redes empregam uma operação matemática chamada
convolução, que é um tipo especializado de operação em sistemas lineares.
Redes neurais convolucionais são simplesmente RNAs que usam convolução
em lugar de multiplicação de matrizes em ao menos uma de suas camadas
(Goodfellow, et al., 2016). Foram introduzidas como conhecidas hoje por Yann
LeCun em 1989 (LeCun, 1989), mas a convolução já era aplicada às RNAs,
ainda na década de 1970, por Kunihiko Fukushima em seu Neocognitron
(Fukushima, 1980), voltado ao reconhecimento de padrões visuais.
Uma rede convolucional é uma classe muito específica de
perceptrons multicamada dedicada a examinar formas em uma ou duas
dimensões que permanecem aproximadamente inalteradas quando submetidas
a transformações tipo translação, escalamento, inclinação, rotação e outras.
Seu desenvolvimento tem inspiração em pesquisas biológicas que remontam
aos trabalhos de Hubel e Wiesel (Hubel, et al., 1962) (Hubel, et al., 1977),
estudos a respeito de excitabilidade local, arquitetura neuronal e neurônios
seletivos à orientação no córtex visual de felinos domésticos e símios. Uma
ConvNet é treinada de forma supervisionada, e apresenta as seguintes
restrições (LeCun, et al., 1995) (Haykin, 2001):
1. Extração de Características. Cada nodo é alimentado com
informações de um campo receptivo local a partir da camada
anterior ou do grid de entrada: ele está limitado, portanto, a
extrair características locais – o posicionamento absoluto destas
no mapa original de características é menos importante para os
55

objetivos da rede do que sua posição em relação a outras


características.
2. Mapeamento de Características. Um mapa de características
assume a forma conceitual de um plano no qual os nodos estão
restritos a partilhar entre si um dado conjunto de pesos das
sinapses – cada camada que executa computação na rede é
formada por múltiplos deles. Tais são os efeitos da divisão em
mapas de características:
a. Invariância a Deslocamento. Ela é associada ao mapa de
características por meio do uso de uma operação de
convolução com kernel (designado por máscara, filtro ou
núcleo) pequeno, seguido pela aplicação de uma função
de ativação do tipo sigmoide.
b. Redução do Número de Parâmetros Livres. Essa
característica decorre do compartilhamento de pesos
sinápticos pelos nodos de um mesmo mapa.
3. Subamostragem. Existem dois tipos principais de camada
computacional na rede: uma delas promove operação de
convolução sobre os dados, e é seguida por uma dedicada a
calcular uma média local e promover a subamostragem, o que
reduz a resolução do mapa de características sobre o qual age.
A subamostragem é o principal meio para se minorar a
sensibilidade da saída da computação sobre um determinado
mapa de características no que diz respeito às transformações já
citadas (deslocamentos e diversos tipos de distorções).
A arquitetura que envolve camadas alternadas de convolução e
subamostragem é também de inspiração biológica: trata-se do arranjo de
células “simples” contínuas a células “complexas” como descrito em (Hubel, et
al., 1962). Esse arranjo gera um efeito “pirâmide”: em cada camada
computacional o número de mapas de características aumenta e a resolução
espacial reduz-se se comparados com a camada precedente.
Se comparadas com os equivalentes perceptrons multicamada
totalmente conectados, as redes convolucionais apresentam uma redução
drástica do número de parâmetros livres, devido ao compartilhamento de pesos
56

sinápticos: segundo LeCun (LeCun, 1989), a redução da capacidade da


máquina de aprendizagem – conceito definido pela chamada dimensão de
Vapinik-Chervonenkis (Vapnik, 1995) – melhora a capacidade de
generalização. Outro elemento que caracteriza a ConvNet como superior ao
MLP equivalente é o compartilhamento de pesos, que torna viável a execução
da rede de forma paralela.
Três operações – convolução, backpropagation da saída para os
pesos, e backpropagation da saída para a entrada – são suficientes para
computar todos os gradientes necessários para se treinar redes convolucionais
de qualquer profundidade (número de camadas ocultas) com feedforward,
como também treinar redes com funções de reconstrução baseadas na
transposta da convolução. Para um exemplo detido e consistente de como se
procede ao treinamento de uma ConvNet, veja (Goodfellow, 2010).

6.1 Cérebro, ConvNets e Deep Learning

As sutilezas das arquiteturas tipo ConvNets foram influenciadas por


muitos outros campos, mas a inspiração para muitos de seus princípios chave
é a neurociência: redes neurais convolucionais são possivelmente o caso de
maior sucesso dentro da inteligência artificial bioinspirada (Goodfellow, et al.,
2016).
Antes que qualquer modelo matemático-computacional relevante
fosse concebido, tiveram lugar experimentos neurocientíficos: os
neurofisiologistas David Hubel e Torsten Wiesel mantiveram uma parceria de
muitos anos a explorar os mais básicos fatos de como o sistema visual dos
mamíferos funciona: em suas pesquisas com felinos domésticos, chegaram à
conclusão que neurônios do início do sistema visual respondiam fortemente a
padrões muito específicos de luz, tal como barras orientadas, mas respondiam
mal a todos os outros padrões (Goodfellow, et al., 2016).
Pode-se, a partir dos trabalhos de Hubel e Wiesel, montar uma
abordagem simplificada do sistema visual, conforme (Goodfellow, et al., 2016).
Concentremo-nos em uma parte do cérebro conhecida como córtex visual
primário, chamada de V1: essa é a área cerebral onde se inicia a execução
mais significativamente avançada do processamento de entradas visuais.
57

Neste modelo, as imagens são formadas pela luz incidente no olho e que
estimula a retina. Os neurônios presentes na retina executam algum pré-
processamento sobre a entrada, mas não alteram substantivamente sua
apresentação. A imagem, traduzida em excitações nervosas pela retina, passa
através do nervo ótico e de uma região chamada núcleo geniculado lateral
(LGN) – para as pretensões deste trabalho, o papel dessas duas regiões
anatômicas é simplesmente guiar o sinal do olho ao V1, localizado este na
parte de trás da cabeça.
Conforme (Goodfellow, et al., 2016), uma rede neural artificial
convolutiva deve ser projetada para mimetizar três propriedades de V1:
1. V1 é organizada em um mapa espacial. Isso quer dizer que
possui uma estrutura bidimensional espelhando a estrutura da
imagem na retina. Por exemplo, luz que chega à metade inferior
da retina afeta somente a metade correspondente de V1. Redes
convolucionais capturam essa propriedade tendo suas
características definidas em termos de mapas bidimensionais
(matrizes, resultados das operações ou sobre a matriz de entrada
– a “imagem” – ou sobre as saídas das camadas anteriores).
2. V1 contém muitas células simples. A atividade de uma célula
simples pode até certo ponto ser caracterizada por uma função
linear da imagem em um campo receptivo pequeno,
espacialmente localizado. As unidades detectoras da rede
convolucional são desenhadas para emular essas propriedades
de células simples.
3. V1 também contém muitas células complexas. Essas células
respondem por características que são similares àquelas
detectadas por células simples, mas células complexas são
invariantes a pequenas translações na posição da característica.
Isso inspira as unidades de pooling (subamostragem: quando um
processo age sobre um conjunto inicial de forma a produzir outro
conjunto de dimensão – número de entradas – inferior) da rede
convolucional. Células complexas são também invariantes a
algumas mudanças na iluminação que não põem ser capturadas
simplesmente pelo pooling sobre localizações espaciais. Essas
58

invariâncias tem inspirado algumas estratégias de pooling de


canal cruzado em redes convolucionais, como as unidades
maxout (sua saída, output, é o máximo, max(), das entradas).
Supõe-se que aquilo que se sabe dos princípios básicos que regem
o V1 possa ser aplicado a outras áreas do sistema visual. Nesse modelo
simplificado do sistema visual que está se propondo, a estratégia padrão de
detecção seguida de pooling é iterativamente aplicada no caminho dos sinais
através do cérebro (respectivamente, células simples aproximadamente
lineares e seletivas a certas características, e células complexas não-lineares
invariantes a algumas características). Conforme se passa através de múltiplas
camadas anatômicas do cérebro, eventualmente encontram-se células
neuronais que respondem a algum conceito específico, que permanece
invariante a muitas transformações de entrada – tais células são apelidadas de
grandmother cells, células avós7 (Goodfellow, et al., 2016).
O análogo biológico mais próximo a uma rede neural artificial
convolucional é uma área do cérebro chamada córtex inferotemporal (IT).
Quando vendo um objeto, a informação flui da retina, através do LGN, ao V1,
então adiante para o V2, então V4, então IT. Isso acontece dentro dos
primeiros 100ms do vislumbre de um objeto. Se a pessoa é capaz de olhar
para o objeto por mais tempo, então a informação começa a fluir para trás (no
sentido oposto à propagação inicial) conforme o cérebro usa feedback top-
down para atualizar as ativações em áreas de baixo nível no cérebro. Contudo,
se se interromper o olhar da pessoa, e observarem-se somente as taxas de
disparo que resultam dos primeiros 100ms de na maioria das vezes ativação
feedforward (à frente, seguindo um fluxo direto da primeira à última camada),
então IT prova ser muito similar às redes convolucionais. Redes convolucionais
podem predizer taxas de disparo do IT, e também executar tarefas de
reconhecimento muito semelhantemente (em tempo limitado) a humanos
(DiCarlo, 2014) (Goodfellow, et al., 2016).

7
A ideia de “célula avó” é uma maneira lúdica de descrever a capacidade de um neurônio de
disparar diante uma excitação simples específica, independente das transformações de
entrada que venha a ser submetida: metaforicamente, o neurônio dispararia quando se visse a
imagem da avó, mesmo estando ela de perfil, estando do lado direito ou esquerdo da imagem,
fosse um retrato da face ou uma captura de corpo inteiro, estando ela sob diferentes graus de
iluminação, etc.
59

Contudo, redes neurais artificiais convolucionais e o sistema visual


dos mamíferos guardam suas diferenças, quer sejam elas bem mapeadas por
neurocientistas e cientistas da computação ou desconhecidas devido ao vasto
caminho que a ciência do cérebro tem a percorrer. A lista de diferenças
marcantes a seguir foi elencada por (Goodfellow, et al., 2016) e livremente
traduzida:
 O olho humano é na maioria das vezes de baixa resolução, exceto
por um pequeno trecho chamado fóvea. A fóvea observa somente
uma área do tamanho de uma unha do polegar com o braço
esticado. Apesar de nós sentirmos como se nós possamos ver
uma cena inteira em alta resolução, isso é uma ilusão criada pelo
subconsciente, como uma malha de muitos vislumbres de
pequenas áreas. Muitas redes convolucionais de fato recebem
fotografias de grande resolução como entrada. O cérebro humano
faz muitos movimentos oculares chamados sacados para
vislumbrar as partes mais visualmente proeminentes ou relevantes
para uma tarefa da cena. Incorporar mecanismo de atenção
similar em modelos de deep learning é uma linha de pesquisa
ativa na área. No contexto do deep learning, mecanismos de
atenção têm tido mais sucesso para processamento de linguagem
natural. Muitos modelos visuais com mecanismos de foveação têm
sido desenvolvidos, mas não se tornaram a abordagem dominante
(...).
 O sistema visual humano é integrado com muitos outros sentidos,
como audição, e fatores como nosso estado de espírito e
pensamentos. Redes convolucionais são puramente visuais.
 O sistema visual humano faz muito mais do que somente
reconhecer objetos. Ele é capaz de entender cenas inteiras
incluindo muitos objetos e relacionamentos entre objetos, e
processa rica informação em geometria 3D necessárias para
nossos corpos lidarem com o mundo. Redes convolucionais têm
sido aplicadas a alguns desses problemas, mas essas aplicações
estão ainda em sua infância.
 Até áreas simples do cérebro como V1 são fortemente impactadas
pelo feedback de níveis mais altos. Feedback tem sido explorado
extensivamente em modelos de redes neurais, mas ainda não se
mostrou uma melhoria convincente.
 Enquanto taxas de disparo do IT alimentado à frente [feedfoward]
capturam muito da mesma informação que características de
60

redes convolucionais, não está claro o quão similar as


computações intermediárias são. O cérebro provavelmente usa
funções de ativação e de pooling muito diferentes. A ativação de
um neurônio individual provavelmente não é bem caracterizada
pela resposta de um único filtro linear. Um modelo recente do V1
envolve filtros quadráticos para cada neurônio (...). De fato, nossa
figura simplificada de “células simples” e “células complexas” pode
criar uma distinção inexistente; células simples e células
complexas podem ambas serem o mesmo tipo de célula, mas com
seus “parâmetros” permitindo um contínuo de comportamentos
indo do que chamamos “simples” ao que designamos “complexo”.
Outro aspecto importante a se salientar quando se marca as
diferenças entre o biológico e o computacional é este: a neurociência não nos
instrui, ou o faz muito pouco, a como treinar ConvNets (Goodfellow, et al.,
2016). Os modelos com parâmetros compartilhados e estruturas localizadas
vêm dos primeiros modelos conexionistas da visão (Marr, et al., 1976), mas
que ainda não usavam algoritmos de backpropagation e treinamento através de
gradientes descendentes: o Neocognitron de Fukushima (Fukushima, 1980)
possuía uma arquitetura que poderia ser designada como de uma ConvNet,
mas preteria o algoritmo backpropagation por um de clustering baseado em
camadas.
Kevin J. Lang e Geoffrey E. Hinton introduziram com sucesso em
(Lang, et al., 1988) o uso de backpropagation para treinar as chamadas time-
delay neural networks (TDNNs), que são consideradas hoje como redes
convolucionais com entradas unidimensionais (vetores) e aplicadas a séries de
tempo. Ocorre que não houve observação biológica que levasse à adoção do
mecanismo de backpropagation neste caso em particular, sendo o mesmo
considerado implausível pelos neurocientistas. Seguindo o exemplo das
TDNNs, Yann LeCun desenvolveu a ideia moderna de rede convolucional de
entrada bidimensional aplicando o algoritmo backpropagation (LeCun, et al.,
1989).
O chamado Deep Learning (aprendizagem profunda, aprendizado
estruturado profundo, aprendizado hierárquico ou aprendizado de máquina
profundo) é uma vertente do Machine Learning (aprendizado de máquina ou
aprendizado automático – referência à possibilidade de computadores
61

aprenderem tarefas sem serem explicitamente programadas – é um subcampo


da ciência da computação que evoluiu do estudo de reconhecimento de
padrões e da teoria do aprendizado computacional em inteligência artificial)
baseada em um conjunto de algoritmos que tentam modelar abstrações de
dados de alto nível usando um grafo profundo (e.g., uma rede neural artificial
com múltiplas camadas) com várias camadas de processamento, compostas
de várias transformações lineares e não lineares (Goodfellow, et al., 2016).
Redes neurais artificiais convolucionais têm desempenhado um
papel de destaque na história do deep learning: foram aplicação de sucesso
indiscutível de intuições obtidas do estudo biológico do cérebro em machine
learning. Muito antes que a área de deep learning consolidasse a viabilidade de
seus deep models, as redes convolucionais já eram exemplos de bom
desempenho – até hoje na vanguarda, foram as primeiras ferramentas em
deep learning a apresentarem aplicações comerciais viáveis: nos idos de 1990,
o grupo de pesquisa em redes neurais da AT&T desenvolveu uma rede
convolucional de leitura de cheques (LeCun, et al., 1998). O sucesso dessa
abordagem fez proliferar sistemas de redes convoluconais de leitura de escrita
manual (Convolutional Networks and Applications in Vision, 2010).
Um tópico a se prestar atenção é o sucesso do backpropagation
quando aplicado em uma rede localmente conectada com as características de
uma rede convolucional – a explicação corriqueira para esse êxito é que é mais
fácil rodar múltiplos experimentos com elas e aprimorar seus hiperparâmetros
(os diversos parâmetros estruturais de uma rede convolucional ou
multicamada). Redes maiores também parecem ser mais fáceis de treinar
quando comparadas com suas semelhantes totalmente conectadas, pois
apresentam muito menos sinapses (pesos) a se levar em conta no processo.
Parece ter havido uma barreira psicológica ou de recursos no início do
desenvolvimento das RNAs que privilegiaram as ConvNets em detrimento das
arquiteturas totalmente conectadas: independente do desígnio do destino
responsável por esse fato, as redes neurais convolucionais funcionavam já há
décadas, carregaram a tocha do deep learning e promoveram a popularização
de RNAs em geral (Goodfellow, et al., 2016).
Redes neurais convolucionais tornaram-se uma especialização das
RNAs para se operar com dados que apresentem uma topologia estruturada
62

em grade e que podem atingir grandes dimensões – tal abordagem tem


encontrado sucesso no tratamento de imagens bidimensionais8. Quando se
explora dados unidimensionais, sequenciais, a estrutura de redes neurais
especializada a que se apela são as Redes Neurais Recorrentes,
caracterizadas por utilizar informação passada para prever estados futuros.

6.2 A Operação de Convolução

A convolução, tão importante como técnica no processamento de


imagens, é em sua forma mais geral uma operação sobre funções 𝑓(𝑥) e 𝑔(𝑥),
de argumentos reais e contínuos. É designada por 𝑠(𝑥) = 𝑓(𝑥) ∗ 𝑔(𝑥) ou ainda
𝑠(𝑥) = (𝑓 ∗ 𝑔)(𝑥), e definida como:
𝑠(𝑥) = 𝑓(𝑥) ∗ 𝑔(𝑥) = ∫ 𝑓(𝛼)𝑔(𝑥 − 𝛼)𝑑𝛼 (6.1)
onde 𝑔(𝑥 − 𝛼) representa o “espelhamento” em relação a dado eixo e a
translação de uma função original 𝑔(𝛼) (Gonzalez, 2008).
Usualmente, quando trabalha-se com dados de computador, 𝑥 será
uma grandeza discreta e os resultados da convolução serão usualmente
emitidos a intervalos regulares: presumindo-se que que 𝑓(𝑥) e 𝑔(𝑥) são
definidos somente em valores inteiros de 𝑥, pode-se definir a operação de
convolução discreta:
𝑠(𝑥) = 𝑓(𝑥) ∗ 𝑔(𝑥) = ∑ 𝑓(𝛼)𝑔(𝑥 − 𝛼) (6.2)
A convolução discreta pode ser vista como um tipo especial de multiplicação de
matrizes.
Para a maioria das aplicações, 𝑔(𝑥) deve ser uma função de
densidade de probabilidade válida, senão a saída da operação não será uma
média com pesos; outrossim, 𝑔(𝑥) precisa ser zero para todos os argumentos
de 𝑓(𝑥) não definidos – em geral, a convolução é definida para quaisquer
funções para que a integral da Equação 6.1 seja definida, e pode ser usada
para outros propósitos além de tomar médias ponderadas (Goodfellow, et al.,
2016).

8
Para uma ConvNet que trabalha com uma imagem que possua características de cor e semelhantes (ou
entradas que possam ser reduzidas a este formato), dizemos que a rede tem como entrada um volume
[𝑀𝑥𝑁𝑥𝐻] que é uma matriz tridimensional: a fatia do volume [𝑀𝑥𝑁] (índices nas coordenadas espaciais
de cada canal) é uma matriz bidimensional 𝑀𝑥𝑁 que carrega as informações relativas a um canal, e 𝐻 é
a profundidade (número total de canais).
63

Na terminologia das ConvNets, o primeiro argumento para a


convolução, 𝑓(𝑥), é com frequência referido como input, entrada ou mesmo
imagem; o segundo argumento, 𝑔(𝑥), é designado como kernel, núcleo ou
máscara. O resultado da operação é chamado de feature map, mapa de
características ou de recursos, em tradução livre. Em aplicações de machine
learning, o input é normalmente um vetor multidimensional de dados e o kernel
um vetor multidimensional de parâmetros que são adaptados pelo algoritmo de
aprendizado: usualmente assume-se que essas funções são nulas em todo
lugar exceto no conjunto finito de entradas nos quais armazena-se valores: na
prática é viável implementar uma soma infinita como uma soma sobre um
número finito de elementos de vetor.
É importante salientar que a propriedade comutativa da convolução,
𝑠(𝑥) = 𝑓(𝑥) ∗ 𝑔(𝑥) = 𝑔(𝑥) ∗ 𝑓(𝑥) (extensível para funções de dimensões
maiores), existe porque “espelhamos”, “invertemos” ou “viramos” o kernel
relativamente ao input (vide a forma do argumento do kernel nas Equações 6.1
e 6.2), no sentido que 𝛼 cresce, o índice do input cresce, mas o do kernel
decresce: a única razão para “espelharmos” o kernel é obter a propriedade de
comutação – no entanto, embora tal propriedade seja útil para derivações
matemáticas, não é importante para implementações em redes neurais
artificiais até o momento (Goodfellow, et al., 2016). É raro a convolução ser
usada sozinha em machine learning: ao invés disso é utilizada
simultaneamente com outras funções, e a combinação dessas provavelmente
não comuta, independentemente de haver a inversão do kernel na convolução.
A convolução alavanca três ideias importantes que podem ajudar a
aprimorar um sistema de aprendizado de máquina: interações esparsas,
compartilhamento de parâmetros, e representações equivariantes – vejamos
conforme (Goodfellow, et al., 2016):
 Interações esparsas. As camadas de uma RNA tradicional usam
um tipo de multiplicação matrizes, de uma matriz de entrada por
uma matriz de parâmetros, tal que cada parâmetro descreve a
interação de cada unidade da entrada com cada unidade de
saída (logo as matrizes têm as mesmas dimensões). ConvNets,
contudo, tipicamente têm interações esparsas (também
designada como conectividade escassa ou pesos escassos):
64

isso é feito fazendo-se o kernel menor que a entrada. Isso


significa que se precisa armazenar menos parâmetros, o que
reduz os requerimentos de memória do modelo e aprimoram sua
eficiência estatística. Também implica que computar a saída
requer menos operações. Em uma rede convolucional profunda,
nodos nas camadas mais profundas podem interagir
indiretamente com uma grande porção da entrada – isso permite
à rede neural descrever com eficiência complicadas interações
entre muitas variáveis construindo tais interações a partir de
blocos de construção simples em que cada um descreve
somente interações esparsas.
 Compartilhamento de parâmetros. Numa RNA tradicional, cada
elemento da matriz de pesos é usado exatamente uma vez
quando da computação das saídas de uma camada: ele é
multiplicado por um elemento da entrada e nunca mais
reutilizado. Em uma ConvNet, cada membro (parâmetro) do
kernel é usado em toda posição de entrada (exceto
possivelmente em pixels de fronteira, dependendo de decisões
de desenho relativas à mesma). O compartilhamento de
parâmetros usado pela operação de convolução significa que ao
invés de se aprender um conjunto em separado de parâmetros
para cada posição, aprende-se somente um conjunto. Isso não
afeta o tempo de execução da propagação adiante
(feedforward), mas vai reduzir em ordens de grandeza os
requerimentos de armazenamento do modelo: convolução é
então dramaticamente mais eficiente do que multiplicação densa
de matrizes em termos de requerimento de memória e eficiência
estatística.
 Equivariância. Na convolução, a forma particular do
compartilhamento de parâmetros enseja à camada a ter uma
propriedade chamada equivariância à translação. Em uma
função equivariante, quando a entrada muda (sofre uma
transformação), a saída muda da mesma forma:
especificamente, a função 𝑚(𝑥) é equivariante à função 𝑛(𝑥) se
65

𝑚 𝑛(𝑥) = 𝑛(𝑚(𝑥)). Permitindo-se que 𝑛 seja qualquer função


que translade a entrada, então a função de convolução é
equivariante a 𝑛. Por exemplo, seja 𝐼 uma função que represente
o brilho da imagem em um ponto de coordenadas inteiras. Seja
𝑛 uma função que mapeia uma função imagem em outra função
imagem, tal que 𝐼 = 𝑛(𝐼) é a função imagem com 𝐼 (𝑥, 𝑦) =
𝐼(𝑥 − 1, 𝑦) – tal função desloca todo pixel de 𝐼 de uma unidade
para a direita: ao aplicar-se essa transformação a 𝐼, e então
aplicar-se a convolução, o resultado seria o mesmo se fosse
aplicada a convolução a 𝐼′, seguida da transformação 𝑛.
Convolução não é naturalmente equivariante a algumas outras
transformações, como mudanças de escala ou rotação da
imagem – outros mecanismos são necessários para se lidar com
esses tipos de transformações.
Quando se faz referência à convolução no contexto de redes neurais
artificiais, usualmente quer-se dizer que se executa uma operação que consiste
de muitas aplicações de convolução em paralelo. Isso porque a convolução
com um só kernel pode extrair somente um tipo de característica, embora em
muitas localizações espaciais. Usualmente o que se quer é que cada camada
da rede extraia muitos tipos de características, em muitos locais.

6.2.1 Exemplo Unidimensional de Convolução

O seguinte exemplo foi adaptado de (Filho, et al., 1999).


Sejam os vetores 𝐴⃗ = [0 1 2 3 2 1 0] (imagem) e 𝐵⃗ = [1 3 − 1]
(máscara, filtro ou kernel), façamos a convolução (𝐴⃗ ∗ 𝐵⃗ ) com passo igual a
unidade, em etapas:
1. Inicialmente, o vetor 𝐵⃗ é “espelhado” ou “invertido” e centralizado em
relação à primeira entrada do vetor 𝐴⃗. Os espaços em branco da tabela são
assumidos como zero. O resultado da convolução é 0 × (−1) + (0 × 3) +
(1 × 1) = 1:
66

𝐴 0 1 2 3 2 1 0
𝐵 -1 3 1
𝐴∗𝐵 1

2. O conjunto 𝐵⃗ é deslocado de uma posição. O resultado da convolução é


0 × (−1) + (1 × 3) + (2 × 1) = 5:
𝐴 0 1 2 3 2 1 0
𝐵 -1 3 1
𝐴∗𝐵 1 5

3. O conjunto 𝐵⃗ é deslocado de uma posição. O resultado da convolução é


1 × (−1) + (2 × 3) + (3 × 1) = 8:
𝐴 0 1 2 3 2 1 0
𝐵 -1 3 1
𝐴∗𝐵 1 5 8

4. O conjunto 𝐵⃗ é deslocado de uma posição. O resultado da convolução é


2 × (−1) + (3 × 3) + (2 × 1) = 9:
𝐴 0 1 2 3 2 1 0
𝐵 -1 3 1
𝐴∗𝐵 1 5 8 9

5. O conjunto 𝐵⃗ é deslocado de uma posição. O resultado da convolução é


3 × (−1) + (2 × 3) + (1 × 1) = 4:
𝐴 0 1 2 3 2 1 0
𝐵 -1 3 1
𝐴∗𝐵 1 5 8 9 4

6. O conjunto 𝐵⃗ é deslocado de uma posição. O resultado da convolução é


2 × (−1) + (1 × 3) + (0 × 1) = 1:
67

𝐴 0 1 2 3 2 1 0
𝐵 -1 3 1
𝐴∗𝐵 1 5 8 9 4 1

7. O conjunto 𝐵⃗ é deslocado de uma posição. Os espaços em branco da


tabela são, novamente, assumidos como zero. O resultado da convolução
é 1 × (−1) + (0 × 3) + (0 × 1) = −1:
𝐴 0 1 2 3 2 1 0
𝐵 -1 3 1
𝐴∗𝐵 1 5 8 9 4 1 -1

O resultado da operação de convolução é o vetor [1 5 8 9 4 1 − 1].


Raciocínio idêntico pode ser usado para determinar a operação de
convolução entre entes bidimensionais, onde a imagem a ser manipulada é
uma matriz quadrada 𝐴 em geral de grandes dimensões, e a máscara 𝐵 uma
matriz quadrada de pequenas dimensões. A máscara, após ter sido
“espelhada” na horizontal e na vertical, deve percorrer a um passo determinado
as entradas da imagem, agindo sobre cada linha da direita para a esquerda, e
então iniciando a seguinte até processar a última entrada da imagem: o
resultado da convolução será uma matriz de mesmas dimensões de 𝐴.
Dependendo da distribuição de valores para as entradas de uma determinada
máscara, ela pode agir como detector de pontos isolados, ou de linhas, ou
bordas9 da imagem sobre a qual atua, e a saída da operação pode ser, por
exemplo, uma nova imagem com as características detectadas ressaltadas.

6.3 Arquitetura das ConvNets

Pode-se imaginar uma ConvNet como semelhante a um MLP que


aprende com o algoritmo de backpropagation. Se se supuser que cada entrada
da rede corresponde a um pixel de uma imagem, quanto maior a dimensão da
imagem, maior o número de conexões entre os nós: com uma imagem de
9
Bordas podem ser definidas como “fronteiras entre duas regiões cujos níveis de cinza
predominantes são razoavelmente diferentes”, “descontinuidade na luminosidade da imagem”
define a borda de luminosidade, e de forma semelhante podemos definir borda de textura e
borda de cor (Filho, et al., 1999).
68

100x100 pixels como entrada, cada neurônio apresentaria 10000 parâmetros


ajustáveis – se aumenta então a complexidade computacional e o tempo de
treinamento e varredura. Alternativas para se reduzir a complexidade da rede
sem pôr em risco a eficiência é o compartilhamento de pesos, mas também
“forçar cada neurônio a ter um número menor de conexões para a [mesma]
imagem de entrada” (de Oliveira, 2017) – redes que apresentam esse padrão
de conectividade ao longo de todas as suas camadas, como as ConvNets, são
denominadas localmente conectadas.
Segundo (LeCun, et al., 1998), as ConvNets combinam três
conceitos arquiteturais para garantir algum grau de invariância sob mudança ou
distorção: campos receptivos locais, pesos compartilhados (ou replicação de
pesos) e, por vezes, subamostragem espacial ou temporal. Mostra-se em
seguida como esses conceitos são estruturados em camadas, e como outros
atributos também podem ser adaptados em uma ConvNet.

6.3.1 Camada Convolucional

A partir de (Li, et al., 2016), temos a seguir descrições de elementos


que definem a importância dos vários hiperparâmetros para a arquitetura da
camada de convolução de uma ConvNet:
 Campo Receptivo Local. Como visto, quando lidando com
entradas com muitas dimensões, é desaconselhável para tarefas
específicas a plena conexão: ao invés disso, conecta-se cada
neurônio a somente uma dada região do volume de entrada – a
extensão espacial dessa conectividade é o hiperparâmetro
chamado campo receptivo local, e é equivalente ao tamanho do
kernel, máscara ou filtro. Permite que os nodos de uma camada
da rede detectem na convolução características visuais locais
como pontos, linhas ou bordas, que serão combinadas na camada
seguinte da rede.
 Arranjo Espacial. Conforme trazido por (de Oliveira, 2017), para
um arranjo de saída de dados, há três hiperparâmetros que
controlam o número de neurônios no volume de saída e como
eles estão arranjados:
69

 Profundidade do Volume de Saída. Correspondente ao


número de filtros que se gostaria de usar, cada um
aprendendo a enxergar alguma característica diferente na
entrada. Refere-se ao conjunto de neurônios que estão
todos conectados (direta ou indiretamente) a mesma
região da entrada como coluna de profundidade ou fibra.
 Passo do Filtro. Define o passo que se desliza o filtro
sobre o volume de entrada (imagem) – vai produzir
maiores ou menores volumes de saída espacialmente.
 Preenchimento com Zero. É conveniente preencher o
volume de entrada com zeros ao redor da borda externa –
o tamanho desse preenchimento com zero é o elemento
de interesse. Uma característica dessa dimensão é que
permite o controle do tamanho espacial dos volumes de
saída.

Pode-se computar o tamanho espacial do volume de saída como


função do tamanho do volume de entrada (𝑊), o tamanho do campo receptivo
dos neurônios da camada de convolução (𝐹), o passo com o qual é aplicado
(𝑆), e a quantidade de preenchimento com zero (𝑃) usado na borda. Pode-se
demonstrar (Li, et al., 2016) que o número de neurônios que se ajustam na
camada de saída é dado por + 1, calculado para cada dimensão planar

do volume de entrada.
Em geral, fixando o preenchimento em zero em 𝑃 = (𝐹 − 1)/2
quando o passo for 𝑆 = 1 garante-se que o volume de entrada e o de saída
possuam o mesmo tamanho espacial.
Deve-se perceber que arranjos espaciais dos hiperparâmetros
apresentam constrições mútuas: a equação do número de neurônios da
camada de saída deve resultar em um número inteiro. De outra forma, o
conjunto de hiperparâmetros é considerado inválido: o uso de preenchimento
com zero pode ser útil neste caso.
70

6.3.2 Parâmetros Compartilhados e Convolução

O esquema de compartilhamento de parâmetros é usado em


camadas convolucionais para controlar o número de parâmetros (pesos e bias).
Pode-se reduzir drasticamente o número de parâmetros fazendo-se uma
suposição razoável: se uma característica é útil de ser computada na posição
(𝑥 , 𝑦 ), então pode ser útil computá-la em uma posição diferente (𝑥 , 𝑦 ). Ou
seja, denotando uma fatia bidimensional de profundidade no volume de entrada
como uma “fatia de profundidade” (depth slice, com volume [𝑀𝑥𝑁𝑥1]), pode-se
amarrar os neurônios em cada fatia de profundidade a usar os mesmos pesos
e bias: usar os mesmos parâmetros para mais de uma subamostra ou mapa de
características do modelo (Goodfellow, et al., 2016). Na prática, durante o
backpropagation, todo neurônio no volume computará o gradiente para seus
pesos, mas esses gradientes serão somados ao longo de cada fatia de
profundidade e vai somente atualizar um único conjunto de pesos por fatia.
Deve-se notar que se todos os neurônios em uma fatia de profundidade estão
usando o mesmo vetor de pesos, então o próximo passo da Camada de
Convolução pode ser computado em cada fatia de profundidade como a
convolução dos pesos dos neurônios com o volume de entrada. É por isso que
comumente refere-se aos conjuntos de pesos como um filtro, uma máscara ou
um kernel, que sofre convolução com a entrada. Existem casos em que o
compartilhamento de parâmetros não é o ideal: a imagem de entrada pode
apresentar uma estrutura tal que características completamente diferentes
podem ser aprendidas de diferentes setores da imagem: em casos como esse
é comum relaxar o esquema de compartilhamento de parâmetros e
simplesmente designar a camada como localmente conectada (Li, et al., 2016).
Em resumo, a camada de convolução (Li, et al., 2016):
 Aceita um volume de dimensões 𝑊 𝑥𝐻 𝑥𝐷 .
 Requer quatro hiperparâmetros:
 Número de filtros (kernel) 𝐾 (cada um de dimensões
𝐹𝑥𝐹𝑥𝐷 );
 A extensão espacial do filtro, 𝐹;
 O passo 𝑆;
 A quantidade de preenchimento com zero 𝑃.
 Produz um volume de dimensões 𝑊 𝑥𝐻 𝑥𝐷 :
71

 𝑊 = + 1;
 𝐻 = + 1;
 𝐷 =𝐾
 Com o compartilhamento de parâmetros são introduzidos 𝐹 ∙ 𝐹 ∙ 𝐷
pesos por filtro, perfazendo um total de (𝐹 ∙ 𝐹 ∙ 𝐷 ) ∙ 𝐾 pesos e 𝐾
bias.
 No volume de saída, a i-ésima fatia de profundidade (de
dimensões 𝑊 𝑥𝐻 ) é o resultado de se perfazer uma convolução
entre o volume de entrada e o i-ésimo filtro com passo 𝑆, e então
deslocada pelo i-ésimo bias.
Conforme (Desjardins, et al., 2008), trazido por (de Oliveira, 2017), o
compartilhamento de pesos em um mapa de características gradualmente
reduz o número de parâmetros livres, tornando o overfitting menos provável,
dado que a invariância de posições da imagem – reforço baseado no
conhecimento prévio das imagens naturais – age como mecanismo de
regularização que facilita o treinamento da rede.
Conforme (Desjardins, et al., 2008), trazido por (de Oliveira, 2017), o
compartilhamento de pesos em um mapa de características gradualmente
reduz o número de parâmetros livres, tornando o overfitting menos provável,
dado que a invariância de posições da imagem – reforço baseado no
conhecimento prévio das imagens naturais – age como mecanismo de
regularização que facilita o treinamento da rede.

6.3.3 Pooling

Camadas de Pooling são usuais na arquitetura de ConvNets: é nelas


que ocorre a operação de subamostragem (downsample), que reduz
progressivamente o tamanho espacial da representação de dados,
consequentemente reduzindo a quantidade de parâmetros e trabalho
computacional na rede, e permitindo o controle do overfitting (Li, et al., 2016).
Pooling também ajuda a fazer a representação tornar-se aproximadamente
invariante a pequenas translações da entrada – invariância de translação
significa que ao se transladar o input por um pequeno montante, os valores da
maioria das saídas sob o pooling não mudam (Goodfellow, et al., 2016). A
camada de pooling ou subamostragem age independentemente sobre toda
fatia de profundidade (depth slice) e reescala a mesma espacialmente – a
72

dimensão de profundidade do volume sobre o qual atua permanece constante.


A nível operacional é comum ter-se uma camada de pooling com filtros de
tamanho 2x2 com passo de 2 em cada direção espacial: implementa-se a
operação selecionando entre cada quatro entradas sobre as quais o filtro age
aquela de máximo valor (aplicação de uma operação max(𝐴 ): Max Pooling ou
pooling máximo) – descarta-se 75% das entradas do volume original, e a
dimensão do resultado é metade da dele, no âmbito espacial. Filtros muito
grandes são muito destrutivos. É importante frisar que a redução do tamanho
da entrada proporcionada pelo pooling pode resultar numa melhora na
eficiência estatística e reduzir requerimentos de memória para armazenamento
de parâmetros.
Generalizando, tem-se (Li, et al., 2016):
 Volume de entrada 𝑊 𝑥𝐻 𝑥𝐷 .
 Requer dois hiperparâmetros para acontecer:
 A extensão espacial do filtro, 𝐹;
 o passo, 𝑆;
 Produz o volume 𝑊 𝑥𝐻 𝑥𝐷 , onde:
( )
 𝑊 = + 1;
( )
 𝐻 = + 1;

 𝐷 =𝐷 .
 Pooling não introduz informação. Também não é comum aplicar o
preenchimento com zeros no volume resultante.
Ao lado do Max Pooling exemplificado aqui – mais relevante na
implementação de ConvNets já que dá origem a uma subamostragem não-
linear (Samer, et al., 2015) – há possibilidade de designar outras funções
matemáticas a serem executadas sobre o volume de entrada na camada de
pooling: médias (pooling médio), normas matriciais, etc.

6.3.4 Camadas Não-Lineares

Segundo (ImageNet Classification with Deep Convolutional Neural


Networks, 2012), conforme trazido por (de Oliveira, 2017), é lugar comum no
âmbito das ConvNets optar-se pelo uso de uma função de ativação não-linear
73

após a camada de convolução ou camada totalmente conectada. Além disso,


as dimensões dos volumes de entrada e saída devem ser as mesmas, pois
aumentam-se as propriedades não-lineares da rede, mas sem afetar os
campos receptivos da camada de convolução (Samer, et al., 2015). Uma
função de ativação vastamente usada é a ReLU (Rectified Linear Unit), que é
basicamente a implementação de uma função max(𝑥, 0), onde 𝑥 refere-se a
cada uma das entradas individuais da matriz sobre a qual a ReLU está agindo
– a vantagem dessa função é que o treino da rede é muito mais rápido do que
quando aplicam-se outras funções usuais (especialmente as não-lineares
contínuas, como a tangente hiperbólica ou a sigmoide) para a mesma tarefa.

6.3.5 Camadas de Normalização

Muitos tipos de camada de normalização, modeladas a partir de


esquemas de inibição encontrados no cérebro de mamíferos, foram propostos
para as arquiteturas ConvNets: contudo seu uso tem sido corriqueiramente
negligenciado, já que a contribuição deste tipo de camada apresenta-se como
mínima (Li, et al., 2016).
Por exemplo, a aplicação da função ReLU é oportuna, já que seu
uso faz com que não seja necessária a normalização dos dados de entrada
para evitar-se a saturação: se em algum treinamento produzir-se uma entrada
positiva para a função ReLU, haverá aprendizagem de alguma característica
naquele neurônio (ImageNet Classification with Deep Convolutional Neural
Networks, 2012).
Como alternativa, pode-se apresentar um esquema de
generalização local não trivial e que ajuda na generalização, conforme
(ImageNet Classification with Deep Convolutional Neural Networks, 2012). Seja
𝑎 , a atividade de um neurônio computada ao aplicar-se o kernel (filtro ou
máscara) 𝑖 na posição (𝑥, 𝑦), seguido de uma função ReLU – a resposta
normalizada é dada pela Equação:
,
𝑏 , = (6.3)
( , / )
∑ ( , / ) ,

onde o somatório age sobre 𝑛 mapas de características adjacentes


na mesma posição espacial, e 𝑁 é o total de kernels na camada. Este tipo de
74

normalização implementa uma forma de inibição lateral inspirada naquela


encontrada em cérebros reais, criando competição por atividades altas entre
saídas neuronais computadas usando-se diferentes kernels. Os
hiperparâmetros 𝑘, 𝑛, 𝛼, 𝛽 devem ser determinados utilizando-se um conjunto
de entradas de validação.

6.3.6 Camadas Totalmente Conectadas

Após as etapas de convolução intercaladas com o downsampling,


costuma-se usar nas arquiteturas de ConvNets ao menos uma camada
totalmente conectada logo antes à saída da rede. Essas camadas, que
apresentam todas as conexões neurônio a neurônio com a camada
antecedente (como em um MLP totalmente conectado), provêm uma
ponderação matemática da camada de características anterior, indicando a
mistura precisa de “ingredientes” para se determinar uma saída alvo específica
durante o treinamento. No caso de uma camada totalmente conectada, todos
os elementos de todos os mapas de características da camada anterior são
usados no cálculo (normalmente através de multiplicação de matrizes seguidas
da soma de um bias) de cada elemento de cada característica de saída
(Samer, et al., 2015).
Deve-se notar que a única diferença entre camadas totalmente
conectadas e camadas de convolução é que os neurônios da convolução são
conectados somente a uma região local do volume de entrada, além de muitos
neurônios dessa mesma camada compartilhar parâmetros – entretanto, os
nodos de ambas camadas computam espécies de produtos matriciais, de modo
que sua funcionalidade formal é idêntica (Li, et al., 2016).

6.3.7 Exemplos de Arquitetura

De acordo com o que foi visto, ConvNets têm sua arquitetura


comumente constituída por três tipos de camadas: convolução, pooling, e
totalmente conectada. Há a possibilidade de agregar camadas de não-
linearidade e camadas de normalização. Como esses elementos são dispostos
para formar as variadas arquiteturas de Redes Neurais Convolucionais
75

depende principalmente do problema ao qual se está propondo resolver ou


função que irá desempenhar, mas também das restrições computacionais e de
memória a que se está submetido. A seguir são listadas algumas arquiteturas
notáveis de ConvNets, tal como aparecem em (Li, et al., 2016):
 LeNet. A primeira aplicação de sucesso de uma arquitetura de
redes neurais convolucionais, foi desenvolvida por Yann LeCun,
cientista da computação francês, na década de 1990. A rede ficou
associada à leitura de códigos postais, dígitos, letra cursiva, etc.
 AlexNet. Foi primeiro trabalho que popularizou a arquitetura tipo
ConvNet em Visão Computacional, desenvolvido por Alex
Krizhevsky, Ilya Sutskever e Geoff Hinton. A AlexNet foi
submetida à disputa ImageNet Large Scale Visual Recognition
Challenge 2012 (ILSVRC 2012), ficando bem à frente do vice-
campeão (erro médio de 16% contra 26%). Esta arquitetura é
muito similar a LeNet, mas é mais profunda, maior e apresenta
camadas de convolução seguidas, “empilhadas” (era comum
antes dela intercalar camadas únicas de convolução e pooling).
 ZF Net. Campeã do ILSVRC 2013, foi desenvolvida por Matthew
Zeiler e Rob Fergus. Foi um aperfeiçoamento da AlexNet através
do aprimoramento dos hiperparâmetros da arquitetura, em
particular expandindo o tamanho das camadas convolucionais
intermediárias e diminuindo o passo e o tamanho do filtro da
primeira camada.
 GoogLeNet. A campeã do ILSVRC 2014 foi a rede convolucional
desenvolvida por Christian Szegedy e equipe, do Google. A maior
contribuição do projeto foi o desenvolvimento de um Inception
Module que reduz dramaticamente o número de parâmetros da
rede (apresentava da ordem de 4 milhões, enquanto a AlexNet
cerca de 60 milhões). Além disso, essa arquitetura usava um
pooling médio ao invés de camadas totalmente conectadas na
saída da ConvNet, eliminando muitos parâmetros que não
apresentavam contribuição tão relevante. Há diversas variações e
desenvolvimentos da GoogLeNet, sendo uma arquitetura ativa.
76

 VGGNet. O vice-campeão do ILSVRC 2014 foi a arquitetura


desenvolvida por Karen Simonyan e Andrew Zisserman, do Visual
Geometry Group do Department of Engieneering Science, da
Universidade de Oxford. Sua principal contribuição foi mostrar que
a profundidade da rede é um componente crítico para uma boa
performance.
 ResNet. Contração de Residual Network, foi desenvolvida por
Kaiming He e seu grupo, sendo vencedora do ILSVRC 2015.
Apresenta “conexões puladas” e uso pesado de normalização
batch (Ioffe, et al., 2015). A arquitetura também não apresenta
camadas totalmente conectadas no final da rede. ResNets são
correntemente o estado da arte em modelos de Redes Neurais
Convolucionais e de uso padrão na prática para ConvNets.
O corrente pico de interesse em deep learning foi inelutavelmente
motivado pela vitória de Alex Krizhevsky e equipe no desafio ImageNet, mas
redes convolucionais se saíram vitoriosas em outros concursos de machine
learning e de visão computacional de menor impacto por anos antes
(Goodfellow, et al., 2016).
77

7 Conclusão

O presente trabalho foi dedicado a apresentar bases teóricas das


Redes Neurais Artificiais mais simples de forma a abordar as Redes Neurais
Convolucionais, ConvNets e as características matemáticas que as distinguem
e o seu estado da arte. Viram-se diversos exemplos de como uma ConvNet
executa suas funções, e quais são elas; apresentou-se também arquiteturas
aceitas pela comunidade científica, que são aquelas que definem os caminhos
tomados pelos pesquisadores da área.
No segundo capítulo deste texto, foi levantado um histórico dos
primeiros esforços em Redes Neurais Artificiais – vislumbrou-se a contribuição
dos estudos em Biologia e áreas correlatas para o desenvolvimento de um
neurônio artificial, e que não se restringe essa à origem das primeiras redes
artificiais, mas estende-se até os dias atuais, nas arquiteturas mais refinadas.
Propôs-se uma definição de RNAs a partir dos seus atributos e propriedades.
Foi vista a modelagem matemática de um neurônio artificial, e suas
características imanentes. Houve a proposta de classificar as arquiteturas de
Redes Neurais e viu-se aquela que inspiraria as ConvNets, as Redes
Alimentadas Adiante com Múltiplas Camadas
O Capítulo 3 propôs-se a apresentar o tema de aprendizagem de
RNA, dado que este é pedra de toque quando o assunto é arquitetura de
Redes Neurais. Três paradigmas de aprendizado ou treinamento foram vistos:
Aprendizagem Supervisionada, Aprendizagem Não-Supervisionada, e
Aprendizagem por Reforço. Embora todos sejam até hoje usados em diversas
arquiteturas, dependendo da constituição da mesma e do problema a que se
presta resolver, as Redes Neurais Convolucionais usam principalmente a
aprendizagem supervisionada.
No capítulo de número quatro foi apresentado o conceito de
perceptron de uma camada. Essa construção matemática e eletrônica foi a
fundadora da ideia de uma Rede Neural Artificial que programe uma vasta
gama de funções matemáticas, e que pode ser treinada na tarefa de
classificação a partir de um conjunto de dados de entrada. Tudo no perceptron
remete à origem da disciplina de Redes Neurais, da sua concepção ao
desenho de sua regra de treinamento. Embora fosse uma inovação notável à
78

época de sua proposição, tinha aplicabilidade limitada – uma nova arquitetura,


baseada na unidade perceptron, foi proposta para contornar esses problemas.
O Capítulo 5 estabeleceu as bases para os perceptrons multicamada
– trata-se da composição, a partir de perceptrons monocamada, de uma rede
de mais de uma camada computacional com neurônios totalmente conectados.
Foi visto que o Teorema Universal da Aproximação justifica o fato que esse tipo
de RNA implementa qualquer função contínua em um espaço n-dimensional, e
foi visto que o algoritmo chamado back-propagation é o algoritmo de
treinamento eficiente do MLP: ambas características são herdadas pelas
Redes Neurais Convolucionais, que tem nos perceptrons multicamada a base
de sua arquitetura.
Finalmente foi apresentado no Capítulo 6 o tema que encerra o
presente trabalho, Redes Neurais Convolucionais. A definição de convolução
como uma operação matemática que envolve duas funções reais – a “entrada”
e o “kernel” – veio logo em seguida, e é por ser utilizada em camadas de
computação da ConvNet (que nada mais é que um segmento bastante
particular dos perceptrons multicamada) que essa ganha seu nome. As
características peculiares das CNN são apontadas, e não se pode falhar em
perceber que são elas que garantem a redução drástica no número de
parâmetros livres se comparadas a MLP totalmente conectados.
Uma vez que são bioinspiradas, não se deixou de descrever os
mecanismos do cérebro biológico que inspiraram e continuam influenciando a
arquitetura das Redes Neurais Convolucionais: percebeu-se, no entanto, que
não são todas as respostas que podem ser encontradas na Biologia. O
treinamento de ConvNets, que se dá pelo algoritmo de backpropagation, não
possui, até o momento, análogo in vivo.
Quando se discutiram as principais arquiteturas das RNC foi visto
que o que a caracteriza é possuir camadas de convolução de dados e pooling,
além de camadas totalmente conectadas que tratam os dados diretamente
antes da saída. Soma-se a essas camadas não-lineares e camadas de
normalização, que embora não estejam necessariamente presentes em uma
arquitetura, possuem representantes.
O Deep Learning foi apresentado como um braço do Machine
Learning, e é intrinsecamente relacionado a reconhecimento de padrões e
79

aprendizado computacional via treinamento utilizando, por exemplo, grafos


profundos com camadas de processamento lineares e não-lineares. As
ConvNets, pôde-se ver durante o trabalho, estiveram vinculadas a essa área de
pesquisa desde seu início e ainda são de importância crucial, provando serem
arquiteturas de sucesso prático inabalável ao longo do tempo. Aplicações em
voga e futuras que unem Deep Learning e ConvNets são várias e influenciam
aspectos cruciais da tecnologia e vida humanas. Exemplos são:
reconhecimento de pessoas em fotos e vídeo, reconhecimento e classificação
de objetos, diagnósticos médicos a partir de reconhecimento de padrões em
imagens, direção autônoma, mimetizar estilos em artes visuais, atribuir cor a
imagens em preto e branco, geração de faces críveis, efeitos especiais na
indústria do cinema, processamento de vídeo (atributo que está causando até
atritos políticos e sociais por fake news, com a substituição de rostos em
vídeos ou mesmo o “ventriloquismo” virtual). Foi visto, no final do capítulo
anterior, que as arquiteturas das ConvNets têm evoluído ano a ano, de forma
que é impossível prever todas as aplicações possíveis para as mesmas.

7.1 Trabalhos Futuros

Desenvolver o presente projeto foi realmente gratificante: ciente de


minhas limitações, contudo pude estudar bem mais do que superficialmente o
mundo das Redes Neurais Artificiais e vislumbrar esse perfil do tema de
estudos de Inteligência Artificial como ele é hoje. Conhecer as arquiteturas e
técnicas por trás das Redes Neurais Convolucionais e seus vastos campos de
aplicação me deu respostas e me encheu de uma vontade de aprender mais.
É sob esse estímulo que resolvi dar continuidade a meus estudos na
forma de um Curso de Mestrado na área. Tenho certeza que o que tive
oportunidade de aprender no curso de Computação UFF/CEDERJ me capacita
a fazer frente a essa nova etapa, e o presente trabalho me inspira a compor as
propostas de projetos de pesquisa a serem submetidos.
80

Referências Bibliográficas

Adaptive Switching Circuits. Widrow, B. e Hoff, M. E. 1960. 1960.


Institute of Radio Engineers, Western Eletronic Show and Convention. pp. 96 -
104.

Ashby, W. R. 1960. Design for a Brain. London : Chapman & Hall,


1960.

Barto, A. G., Sutton, R. S. e Anderson, C. W. 1983. Neurolike


Adaptative Elements that Can Solve Difficult Learning Problems. IEEE
Transactions on Systems, Man and Cybernetics, SMC-13. 1983, pp. 834 - 346.

Bear, M. F., Connors, B. W. e Paradiso, M. A. 2015. Neuroscience:


Exploring the Brain. Philadelphia : Wolters Kluwer, 2015.

Becker, S. 1991. Unsupervised Learning Procedures for Neural


Networks. International Journal of Neural Systems. 1991, Vol. 2, pp. 17 - 33.

Bezerra, E. 2018. Introdução à Aprendizagem Profunda. Research


Gate. [Online] 2018. [Citado em: 25 de 09 de 2018.]
https://www.researchgate.net/profile/Eduardo_Bezerra/publication/309321510_I
ntroducao_a_Aprendizagem_Profunda/links/5809ee1108ae3a04d624f369/Intro
ducao-a-Aprendizagem-Profunda.pdf.

Big Data Definition. Open Methodology. [Online] [Citado em: 28 de


09 de 2018.] http://mike2.openmethodology.org/wiki/Big_Data_Definition.

Braga, A. P., Carvalho, A. P. L. F. e Ludemir, T. B. 2000. Redes


Neurais Artificiais: Teoria e Prática. Rio de Janeiro : LTC, 2000.

Convolutional Networks and Applications in Vision. LeCun, Y.,


Kavukcuoglu, K. e Farabet, C. 2010. Paris : s.n., 2010. IEEE International
Symposium on Circuits and Systems: Nano-Bio Circuit Fabrics and Systems,
ISCAS 2010. pp. 253 - 256.

Cybenko, G. 1989. Approximation by Superpositions of Sigmoid


Function. Mathematics of Control, Signals and System. 2, 1989, pp. 303 - 314.

__. 1988. Continuous Valued Neural Networks with Two Hidden


Layers are Sufficient. Department of Computer Science, Tufts University.
Medford/Somerville : s.n., 1988.

de Oliveira, H. S. 2017. Redes Neurais Convolucionais para


Classificação de Expressões Faciais e Emoções. Monografia (Graduação). Boa
Vista : s.n., 2017.
81

Deep Learning Book. Deep Learning Book. [Online] [Citado em: 27


de 09 de 2018.] http://deeplearningbook.com.br.

Deep Learning in a Nutshell: History and Training. Blog NVidia .


[Online] [Citado em: 29 de 09 de 2018.] https://devblogs.nvidia.com/deep-
learning-nutshell-history-training/.

Deng, L. e Yu, D. 2013. Deep Learning, Methods and Aplications.


Foundations and Trends in Signal Processing. 2013, Vol. 7, 3 - 4, pp. 197 - 387.

Desjardins, G. e Y., Bengio. 2008. Empirical Evaluation of


Convolutional RBMs for Vision. Département d'Informatique et de Recherche
Opérationnelle, Université de Montréal. Montréal : s.n., 2008. Techport nº 1327.

DiCarlo, J. J. 2014. Mechanisms Underlying Visual Object


Recognition: Humans VS Neurons VS Machines - NIPS Tutorial. YouTube.
[Online] 05 de 04 de 2014. [Citado em: 03 de 12 de 2018.]
https://www.youtube.com/watch?v=yDvfm7nzIV8.

Filho, O. M. e Neto, H. V. 1999. Processamento Digital de Imagens.


Rio de Janeiro : Brassport, 1999.

Fukushima, K. 1980. Neocognitron: A Self-organizating Neural


Network Model for a Mechanism of Pattern Recognition Unaffected by Shift in
Position. Biological Cybernetics. 1980, 36, pp. 193 - 202.

Geman, S, Bienenstock, E. e Doursat, R. 1992. Neural Networks


and The Bias-variance Dilemma. Neural Computation. 4, 1992, pp. 1 - 58.

Gonzalez, R. E. W. R. C. 2008. Digital Image Processing, 3ed. New


Jersey : Prentice Hall, 2008.

Goodfellow, I. J. 2010. Multidimensional, Downsampled Convolution


fou Autoencoders. Montréal : s.n., 2010. Technical Report.

Goodfellow, I., Bengio, Y. e Courville, A. 2016. Deep Learning.


Cambridge : MIT Press, 2016.

Grossberg, S. 1987. Competitive Learning: from Interactive


Activation to Adaptative Resonance. Cognitive Science. 11, 1987, pp. 23 - 63.

Haykin, S. 1996. Adaptative Filter Theory. Englewood Cliffs :


Prentice-Hall, 1996.

__. 1994. Neural Networks - A Comprehensive Foundation. New


York : Prentice-Hall, 1994.

__. 2001. Redes Neurais: Princípios e Prática. Porto Alegre :


Bookman, 2001.
82

Hebb, D. H. 1949. The Organization of the Behavior. New York :


John Wiley & Sons, 1949.

Hopfield, J. J. 1982. Neural Networks and Physical System with


Emergent Collective Computational Abilities. Proc. Nati. Acad. Sci. USA. Abril
de 1982, Vol. 79, pp. 2554 - 2558.

Hornik, K. 1991. Approximations Capabilities of Multilayer


Feedforward Networks. Neural Networks. 1991, Vol. 4, 2, pp. 251 - 257.

Hubel, D. H. e Wiesel, T.N. 1977. Functional Architecture of


Macaque Visual Cortex. Proceedings of the Royal Society. B, 1977, Vol. 198,
pp. 1 - 59.

Hubel, D. H. e Wisel, T.N. 1962. Receptive Fields, Binocular


Interaction and Functional Architecture in the Cat's Visual Cortex. Journal of
Physicology. 1962, Vol. 160, pp. 106 - 154.

ImageNet Classification with Deep Convolutional Neural Networks.


Krizhevsky, A. e Sutskever, I. Hinton, G. E. 2012. Lake Tahoe : s.n., 2012.
NIPS'12 Proceedings of the 25th International Conference on Neural
Information Processing Systems. Vol. 1, pp. 1097 - 1105.

Ioffe, S. e Szergedy, C. 2015. Batch Normalization: Accelerating


Deep Network Training by Reducing Internal Covariate Shift. Arxiv. [Online]
2015. [Citado em: 29 de 11 de 2018.] https://arxiv.org/pdf/1502.03167.pdf.

Ivakhnenko, A. G. e Lapa, V. G. 1965. Cybernetic Predicting


Devices. New York : CCM Information Corp., 1965.

Lang, K. J. e Hinton, G. E. 1988. The Development of the Time-


delay Neural Network Architecture for Speech Reconizition. 1988. Thecnical
Report CMU-CS-88-152.

LeCun, Y. e Bengio, Y. 1995. Convolutional Networks for Images,


Speech, and Time Series. [A. do livro] M. A. Arbib. The Handbook of Brain
Theory and Natural Networks. Combridge : MIT Press, 1995.

LeCun, Y. 1989. Generalization and Network Design Strategies.


Department of Computer Science, University of Toronto. Toronto : s.n., 1989.
CRG-TR-89-4.

LeCun, Y., et al. 1989. Backpropagation Applied to Handwritten ZIP


Code Recognition. Neural Computation. 1989, Vol. 1, 1, pp. 541 - 551.

LeCun, Y., et al. 1998. Gradient Based Learning Applied to


Document Recognition. Proceedings of the IEEE. 1998, Vol. 86, 11, pp. 2278 -
2324.
83

Li, F. F., Karpathy, A. e Johnson, J. 2016. Convolutional Neural


Networks. [Online] GitHub, 2016. [Citado em: 02 de 12 de 2018.]
http://cs231n.github.io/convolutional-networks/.

Linsker, R. 1988. Self-organization in Perceptual Network.


Computer. 1988, Vol. 3, 21, pp. 105 - 117.

Marr, D. e Poggio, T. 1976. Cooperative Computation of Stereo


Disparity. Science. 1976, Vol. 194, 4262, pp. 283 - 287.

Maxout Networks. Goodfellow, I. J., et al. 2013. 2013. Proceedings


of the 30th International Conference on Machine Learning. Vol. 28(3), pp. 1319
- 1327.

McCulloch, W. S. e Pitts, W. H. 1943. A Logical Calculus of the


Ideas Immanent in Nervous Activity. Bulletin of Mathematical Biophysics. 1943,
Vol. 5, pp. 115 - 133.

Medler, D. A. 1998. A Brief History of Connectionism. Neural


Computing Surveys. 1, 1998, pp. 61 - 101.

Mendel, J. M. e Mclaren, R. W. 1970. Reinforcement-learning


Control and Pattern Recognition Systems. Adaptative, Learning and Patern
Recognition Systems: Theory and Aplications. 1970, Vol. 66, pp. 287 - 318.

Minsky, M. e Papert, S. 1972. Perceptrons: An Introduction to


Computational Geometry. Cambridge : MIT Press, 1972.

Reed, R. 1993. Pruning Algorithms - a Survey. IEEE Transactions on


Neural Networks. 1993, Vol. 4, 5, pp. 740 - 749.

Rosenblatt, F. 1962. Principles of Neurodynamics: Perceptrons and


the Theory of Brain Mechanisms. Washington, DC : Spartan Books, 1962.

__. 1958. The Perceptron: a Probabilistic Model for Information


Storage and Organization in the Brain. Psychological Review. 1958, Vol. 65, 6,
pp. 386 - 408.

Rumelhart, D. E. e McClelland, J. L. 1986. Paralel Distributed


Processing. Cambridge : MIT Press, 1986. Vol. 1.

Rumelhart, D. E., Hinton, G. E. e Williams, R. J. 1986. Learning


Representations by Back-propagating Errors. Nature. 323, 1986, pp. 533 - 536.

Samer, C. H., Rishi, K. e Rowen, C. 2015. Using Convolutional


Neural Networks for Image Recognition. Cadence IP. [Online] 2015. [Citado em:
28 de 11 de 2018.] https://ip.cadence.com/uploads/901/cnn_wp-pdf.
84

Sutton, R. S. 1988. Learning to Predict by Method of Temporal


Differences. Machine Learning. 3, 1988, pp. 9 - 44.

Sutton, R. S., Barto, A. G. e Williams, J. 1992. Reinforcement


Learning is Direct Adaptive Optimal Control. IEEE Control Systems Magazine.
Abril de 1992, Vol. 12, 2, pp. 19 - 22.

Thorndike, E. L. 1911. Animal Inteligence. New York : Darien, 1911.

Vapnik, V. N. 1995. The Nature of Statistical Learning Theory. New


York : Spring-Verlag, 1995.

Widrow, B. e Lehr, M. A. 1990. 30 Years of Adaptative Neural


Networks: Perceptron Madeline and Backpropagation. Proceedings of the IEEE.
1990, Vol. 78, 9, pp. 1416 - 1442.

Widrow, B. e Steams, S. D. 1985. Adaptative Signal Processing.


Englewood Cliffs : Prentice-Hall, 1985.

Yuille, A. L., Kammen, D. M. e Cohen, D. S. 1989. Quadrature and


Development of Orientation Selective Cortical Cells by Hebb Rules. Biological
Cybernetics. 61, 1989, pp. 183 - 194.

Você também pode gostar