Introdução a Redes Neurais Artificiais

Gabriel Luz
Gabriel Luz
Published in
8 min readMay 13, 2019

O que são essas estruturas que deram um novo rumo a Inteligência Artificial?

Introdução

Olá, seja bem-vindo!
Vivemos em um mundo sofrendo uma revolução digital profunda. Muito disso graças à aplicação de técnicas de Inteligência Artificial em vários produtos. Estamos nos acostumando a interagir cada vez mais com os computadores e já vemos usos de IA em sistemas de recomendação, marcação de fotos em redes sociais, assistentes pessoais ativados por voz, smartphones com reconhecimento facial e daqui a poucos anos, com carros autônomos.
Existem muitos algoritmos que permitem a implementação de IA mas nesse artigo, vamos falar de um tipo em especial que vem se destacando bastante: as Redes Neurais Artificiais.
Se você ainda não entende muito bem os conceitos de Inteligência Artificial, Deep Learning e Machine Learning, antes de continuar, não deixe de conferir esse outro artigo, onde explico em detalhes cada uma dessas ideias e como elas se relacionam.
No futuro próximo, pretendo mergulhar fundo no mundo do estado da arte no campo da Inteligência Artificial, as técnicas de Deep Learning. Mas antes, precisamos conhecer as bases para o entendimento desse mundo. E isso começa com as Redes Neurais.
Este é um artigo de introdução e abordaremos somente teoria. Na parte 2 vamos conhecer as principais arquiteturas de Redes Neurais bem como construir uma, usando a linguagem Python, que irá reconhecer dígitos manuscritos.

Breve história

Antes de prosseguir, vamos entrar um pouco na história e descobrir como chegamos até aqui. Se você já leu esse meu artigo, onde comento a história por trás das tentativas humanas de dotar uma máquina da capacidade de pensar e aprender por si mesma, sabe que muitas estratégias para realizar esse feito já foram implementadas e testadas. Um dos métodos que se mostrou mais promissor foi quando pesquisadores se inspiraram no cérebro humano.
Essa máquina muito poderosa, em sua estrutura básica, é formada por neurônios e é por meio deles que as informações são transmitidas e processadas. Tarefas muito complexas para um computador, como por exemplo, reconhecer um rosto ou controlar o movimento dos olhos, são facilmente executadas pelo nosso cérebro. Ainda há muito o que descobrir sobre esse fascinante órgão mas já se sabe que o mesmo desenvolve suas “regras” através da experiência adquirida.
Inspirando-se nesse modelo, muitos pesquisadores tentaram reproduzir o funcionamento do cérebro. Em 1943, o neurofisiologista Warren McCulloch e o matemático Walter Pitts escreveram um artigo sobre como um neurônio simples poderia funcionar e usando circuitos elétricos, modelaram uma rede neural simples.
Graças ao sucesso que esses algoritmos estavam obtendo face a certos desafios simples, nas décadas de 1950 e início da de 1960 cada vez mais arquiteturas de redes neurais foram surgindo, como o Perceptron, ADALINE e MADALINE. Mas infelizmente, o avanço foi diminuindo por conta da limitação da eletrônica na época. Esses problemas ocasionaram o chamado inverno da IA, um período de poucos avanços científicos na área.
Somente no início da década de 1980 surgiram novos trabalhos acadêmicos e novas propostas de implementação de redes neurais. Em 1987, aconteceu a primeira conferência internacional sobre o tema, organizada pelo Instituto de Engenheiros Elétricos e Eletrônicos (IEEE). Evento que atraiu mais de 1800 pesquisadores. Foi nessa época que muitas ideias importantes surgiram, como as redes de múltiplas camadas e a técnica de Backpropagation, que embora mais lentas, obtinha um resultado muito mais preciso. Na ilustração abaixo você pode conferir marcos na evolução da IA.

Podemos resumir os principais marcos nesse processo de evolução com os seguintes pontos:

1943: Warren McCulloch e Walter Pitts criam um modelo matemático para redes neurais.

1958: Frank Rosenblatt cria o Perceptron, um algoritmo para o reconhecimento de padrões baseado em uma rede neural de duas camadas.

1980: Kunihiko Fukushima propõe a Neoconitron, uma rede neural de hierarquia, multicamada, que foi utilizada para o reconhecimento de caligrafia e outros problemas de reconhecimento de padrões.

1989: Pesquisadores criam algoritmos que usavam redes neurais profundas, mas o tempo de treinamento para os sistemas foi medido em dias, tornando-os impraticáveis para o uso no mundo real.

Meio da década de 2000: O termo “aprendizagem profunda” começa a ganhar popularidade após um artigo de Geoffrey Hinton e Ruslan Salakhutdinov mostrar como uma rede neural de várias camadas poderia ser pré-treinada uma camada por vez.

2009: Acontece o NIPS Workshop sobre Aprendizagem Profunda para Reconhecimento de Voz e descobre-se que com um conjunto de dados suficientemente grande, as redes neurais não precisam de pré-treinamento e as taxas de erro caem significativamente.

2012: Algoritmos de reconhecimento de padrões artificiais alcançam desempenho em nível humano em determinadas tarefas. E o algoritmo de aprendizagem profunda do Google é capaz de identificar gatos.

2015: Facebook coloca a tecnologia de aprendizado profundo — chamada DeepFace — em operação para marcar e identificar automaticamente usuários do Facebook em fotografias. Algoritmos executam tarefas superiores de reconhecimento facial usando redes profundas que levam em conta 120 milhões de parâmetros.

2016: O algoritmo do Google DeepMind, AlphaGo, mapeia a arte do complexo jogo de tabuleiro Go e vence o campeão mundial de Go, Lee Sedol, em um torneio altamente divulgado em Seul.

  • Fonte: Data Science Academy

Neurônio: biológico e matemático

Para entender o funcionamento das redes neurais, é preciso ter em mente alguns conceitos básicos sobre o mecanismo de operação de um neurônio biológico.
Como dito anteriormente, o neurônio é a unidade básica do cérebro humano, e é uma célula especializada na transmissão de sinal, devido a sua natureza de excitabilidade. Sua estrutura é composta por 3 partes principais: a soma ou corpo celular, os dendritos e os axônios. Na extremidade dos axônios estão os nervos terminais, pelos quais é realizada a transmissão de informação entre neurônios. Esse processo é chamado de sinapse. Na imagem abaixo você pode conferir uma ilustração de um neurônio biológico.

O cérebro possui bilhões de neurônios, formando assim, uma extensa rede neural. De forma bastante resumida, podemos definir o processo de transmissão de informação como: através das sinapses, os dendritos recebem sinais elétricos de outros neurônios, essa informação é então processada dentro do corpo celular e então enviada para a saída, pelos axônios. Esse fluxo será muito importante para compreender o funcionamento do neurônio matemático.
A partir dos princípios que regem um neurônio natural, os pesquisadores conseguiram simular seu funcionamento computacionalmente. De forma sucinta, podemos explicar a operação que acontece da seguinte maneira: um neurônio matemático recebe vários sinais de entrada e calcula, de forma ponderada, a soma entre eles; então aplica uma determinada função e passa o resultado adiante.
No modelo matemático, os impulsos recebidos recebidos de outros neurônios são representados pelos sinais de entrada, que nada mais é do que o conjunto de dados para treinar o algoritmo.
Dentre os sinais recebidos, alguns excitarão mais e outros menos o neurônio receptor, por conta da soma ponderada que é realizada. Essa operação é comandada pelos pesos sinápticos. Na imagem abaixo, você pode ver a representação de um único neurônio artificial, onde os pesos são representados por Wn. O corpo celular, por sua vez, é formado por dois elementos. O primeiro é um somatório dos sinais de entrada, cada um multiplicado pelo seu peso. E o segundo, que vamos entrar em detalhes mais adiante, é uma função de ativação, que baseado no resultado do somatório, determinará a saída do neurônio. Assim como ocorre no nosso cérebro, um estímulo (sinal) pode ser de natureza excitatório ou inibitório, uma vez que os pesos podem ser positivos ou negativos.

Nesse modelo, um neurônio recebe um ou mais sinais de entrada e devolve um único sinal de saída, que pode ser passado, inclusive, como sinal de entrada para outros neurônios em uma rede. Uma vez que as entradas x são apresentadas ao modelo, o que ocorre basicamente é uma multiplicação de matrizes, dado que x1 multiplica W1 etc

Vamos então listar todos os componentes que fazem parte do modelo apresentado:

  • Sinais de entrada { X1, X2, …, Xn }: São os dados que alimentam o modelo.
  • Pesos sinápticos { W1, W2, …, Wn }: São valores para ponderar os sinais de cada entrada na rede.
  • Combinador linear { Σ }: Agrega todos os sinais de entrada que foram ponderados pelos respectivos pesos sinápticos.
  • Limiar de ativação { Θ }: Determina qual será o patamar apropriado para que o resultado produzido pelo combinador linear possa gerar um valor de disparo de ativação.
  • Potencial de ativação { u }: É o resultado obtido pela diferença do valor produzido entre o combinador linear e o limiar de ativação. Se o valor for positivo, ou seja, se u ≥ 0 então o neurônio produz um potencial excitatório; caso contrário, o potencial será inibitório.
  • Função de ativação { g }: Seu objetivo é limitar a saída de um neurônio em um intervalo valores.
  • Sinal de saída { y}: É o valor final de saída podendo ser usado como entrada de outros neurônios.

Fique tranquilo, ainda vamos entrar em detalhes sobre os principais componentes que formam o neurônio.

Função de ativação

Nesta seção vamos falar sobre um dos componentes mais importantes de uma rede neural, a função de ativação.
Para começar a explicação, imagine que você está treinando uma rede que deve reconhecer dígitos, analisando os pixels de uma imagem. Para que nosso algoritmo seja capaz de aprender a reconhecer cada um dos dígitos corretamente, precisamos ajustar os pesos da nossa rede.
Agora, imagine que nossa rede está, erroneamente, classificando um 8 como 9. Precisamos ajustar os pesos para corrigir esse problema. Com isso, esbarramos em um ponto importante. Uma pequena alteração e nossa rede é capaz de ter um resultado completamente diferente. O 9 pode até ser classificado corretamente após a mudança, mas talvez isso comprometa o resto das classificações. É nesse ponto que a função de ativação entra.
Ela se trata, basicamente, de um componente matemático que adicionamos ao nosso neurônio artificial. A função de ativação permite que pequenas mudanças nos pesos provoquem apenas uma pequena alteração no output do modelo. Podemos definir sua fórmula como:

  • Função de etapa binária:

É o tipo de função mais simples. É regida por um limiar de ativação (threshold), ou seja, se um neurônio deve ou não ser ativado. É definida como:

--

--

Gabriel Luz
Gabriel Luz

Estudante de engenharia eletrônica, aspirante a cientista de dados e apaixonado por tecnologia.