Redes Neurais
Quando vi pela primeira vez o termo Redes Neurais foi através de um meme, que insinuava que elas eram simplesmente compostas por um amontoado de if e else. Na verdade, as Redes Neurais usam conceitos matemáticos avançados em suas implementações, o que causa “medo” aos iniciantes quando veem pela primeira vez. As linguagens de programação modernas voltada para a área da inteligência artificial possuem bibliotecas prontas para o uso, o que abstrai a matemática por trás dos panos, mas isso não significa que se deve deixar de lado a base e os conceitos chaves. Neste post venho falar um pouco sobre as Redes Neurais, um tema bastante conhecido hoje em dia.
Introdução
As Redes Neurais são modelos de processamento de informações inspirados no cérebro humano. Analogamente ao cérebro humano, uma rede neural é composta por unidades chamadas neurônios, internamente interconectados e capazes de adquirir conhecimento ao longo do tempo.
Nomenclatura
Neurônio, Unidade ou Perceptron
Os três termos são usados para representar a unidade central das Redes Neurais.
Camadas
O agrupamento de neurônios forma uma camada, os neurônios presentes nesta camada não podem criar conexões entre eles, pois isso resultaria em loops infinitos na passagem direta de uma rede. As camadas podem ser de três tipos:
Camada de Entrada: Essa camada oferece os parâmetros de entrada para a Rede Neural.
Camada Oculta: Essa camada serve para aumentar o poder computacional da Rede Neural, desde que bem implementada.
Camada de Saída: Essa camada é usada para representar a pontuação da rede, que no caso são números arbitrários com valor real ou algum tipo de alvo com valor real.
Conexões Ou Sinapses
São as linhas ou setas que conectam os neurônios em camadas diferentes. Cada conexão pode possuir um peso associado a ela.
Função De Ativação
É uma função matemática que no processo de aprendizagem de um neurônio artificial, faz pequenas alterações nos valores dos pesos ou dos bais, de modo a se aproximar do resultado correto ou esperado.
Bias
São valores presentes nos próprios neurônios com a finalidade de auxiliar os neurônios a atingir o valor esperado.
Tipos De Treinamento
Recorrente
Treino recorrente ou supervisionado consiste no processo onde, os vetores de entrada são inseridos, processados e posteriormente as saídas são associadas às respostas corretas, de modo a modificar os pesos dos neurônios a cada interação, ao se comparar as respostas aos resultados esperados.
Alimentação Direta
Treino não supervisionado ou de alimentação direta ocorre quando o conjunto de entrada é fornecido para que a rede consiga extrair propriedades conforme as representação internas sem que haja retroalimentação.
Tipos De Redes
Rede Hopfield
Este modelo de Rede Neural foi inspirado em conceitos da Física e tem como principais características a memória associativa.
As principais aplicações das Redes de Hopfield estão relacionados ao seu papel restaurador e corretor de erro, onde ao se apresentar uma versão incompleta do padrão armazenado, a rede chegará a solução mais próxima em relação à memoria que foi anteriormente armazenada.
Mapa de Kohonen
Este modelo de Rede Neural usa o algoritmo desenvolvido por Teuvo Kohonen em 1982, sendo considerado simples e com capacidade de organizar dimensionalmente dados complexos em grupos (clusters), de acordo com suas relações, este algoritmo é considerado um mapa auto-organizável ( da sigla Som, Self-organizing map).
São usados em problemas onde os padrões são desconhecidos ou indeterminados.
Como Medimos Uma Rede Neural
As duas métricas que as pessoas geralmente usam para medir o tamanho das Redes Neurais são o número de neurônios ou, mais comumente, o número de parâmetros.
A Rede Neural acima possui 4 + 2 = 6 neurônios ( sem contar as entradas), [ 3 x 4 ] + [ 4 X 2] = 20 pesos e 4 + 2 = 6 desvios, para um total de 26 parâmetros aprendíveis.
Contextualizar
As Redes Neurais modernas contêm ordens de 100 milhões de parâmetros e são geralmente compostos por aproximadamente de 10 a 20 camadas, portanto, aprendizado profundo.
Na literatura é bem aceito que uma única camada oculta consegue aproximar qualquer equação não linear, duas camadas ocultas já conseguem representar qualquer relação entre os dados, mesmo aqueles que não podem ser representados por equações. Mais do que duas camadas ocultas só são necessárias em problemas ainda mais complexos como Séries Temporais e Visão Computacional.