Introdução às Redes Neurais
Redes Neurais Artificiais são técnicas inspiradas no funcionamento das Redes Neurais Biológicas do Corpo Humano para resolução de problemas computacionais associados à Inteligência Artificial. É importante ressaltar que Redes Neurais Artificiais representam apenas uma classe das soluções para problemas de Inteligência Artificial. Diferentemente das Biológicas, as Redes Neurais Artificiais só conseguem desempenhar tarefas altamente específicas. Mesmo com outras técnicas associadas, ou múltiplas redes neurais, a inteligência artificial ainda é muito inferior à biológica.
Redes Neurais possuem funções iterativas que permitem a elas serem “treinadas” para resolver determinados tipos de problemas. As primeiras funções de treinamento foram idealizadas por cientistas associados a biólogos. Após evoluções posteriores das técnicas e associações a novos métodos estatísticos, o aprendizado de redes neurais é classificado em duas diferentes classes: Supervisionado e Não-Supervisionado. na figura abaixo é possível ver uma representação de Rede Neural com diversas camadas, 4 entradas e 3 saídas.
No aprendizado supervisionado, a rede usa como aprendizado um conjunto de entradas onde se conhecem as saídas ideais para se ajustarem parâmetros. O aprendizado Não-Supervisionado agrupa as saídas em um número de grupos determinado pela quantidade de neurônios na camada de saída. Conforme mencionado, ambos os processos são iterativos.
Conceitos Fundamentais de Redes Neurais
Para compreender melhor as funções supracitadas, é preciso conhecer os conceitos e nomenclaturas associados às Redes Neurais Artificiais. Aprendemos anteriormente que as redes neurais são estruturas estratificadas, ou seja, divididas em camadas. Para efeito de simplificação, as Redes Neurais Artificiais algumas vezes serão tratadas nesse texto de acordo com a abreviatura RNA.
Neurônios e Camadas de Redes Neurais
As RNAs possuem uma unidade básica chamada neurônio, livremente inspirada pelo neurônio biológico. Essas estruturas recebem um conjunto de entradas em seus “axônios” e produzem uma saída em seu “dendrito”. Assim como os neurônios biológicos, os neurônios artificiais também podem aprender a resolver um problema. No caso computacional, os neurônios que compõem uma RNA são adaptados em seu processo de treinamento para fazerem previsões a partir de dados. Em aplicações modernas, utiliza-se uma classe de treinamento para neurônios multi camadas chamada Deep Learning.
Os neurônios são estruturados com uma arquitetura baseada nos biológicos, mas adaptada à realidade computacional. As entradas são ponderadas por pesos, e associadas de acordo com uma função chamada “função de ativação”. Essa função é responsável por combinar linearmente os valores de entrada ponderados pelos pesos (e eventualmente um valor de BIAS), ativando o valor da saída. A figura abaixo mostra o funcionamento de um neurônio genérico. estruturas como essas são usadas dentro de todas as redes neurais.
Neurônios podem ser repetidos e combinados em diferentes camadas. As arquiteturas de RNAs pragmáticas apresentam estruturas com camadas bem definidas e organizadas. A partir de 2002 foram introduzidas redes com arquitetura NEAT, onde as estruturas não precisam ser necessariamente bem organizadas e estratificadas.
Neurônios que compõem uma camada de uma RNA têm características bem definidas:
- Todos os neurônios de uma mesma camada tem a mesma função de ativação.
- Todas as camadas são completamente ligadas à próxima camada, ou seja, cada neurônio de uma camada anterior tem uma ligação com cada neurônio da próxima camada.
Redes Neurais onde o fluxo de dados está completamente direcionado para a camada de saída são chamadas de RNAs Feedfoward.
Tipos de Neurônios de Redes Neurais
O primeiro contato dos dados com a RNA ocorre em neurônios chamados neurônios de entrada. Esse conceito segue a visão que uma RNA não tem contato com os dados a menos que eles passem por uma camada de entrada. Em outras visões mais simplistas, a camada de entrada é suprimida, e interpreta-se que os dados já entram prontos para serem tratados. A saída para uma instância de dados será dada pela camada de saída.
Os neurônios que não pertencem às camadas de entrada ou de saída são neurônios escondidos. Esses neurônios possuem as seguintes características:
- Só recebem entradas de outros neurônios escondidos ou de neurônios da camada de entrada.
- Só tem saídas para outros neurônios escondidos ou neurônios da camada de saída.
- Não se conectam diretamente aos dados, seja de entrada ou de saída.
Anteriormente ao conceito de Deep Learning, pesquisadores provaram que neurônios de três camadas, ou seja, com apenas uma camada escondida, seriam suficientes para aproximar qualquer função, desde que a camada escondida tivesse neurônios suficientes. Também havia resistência à adição de novas camadas escondidas devido à dificuldade de treinamento de neurônios multi camadas.
Além das entradas, os neurônios ainda recebem outra entrada independente, que pode ser interpretada também como um neurônio, chamada Bias, que servem para ajuste nas funções de ativação. Essas entradas podem ser interpretadas como neurônios onde a saída vale um, e são moduladas também por pesos.
Em algumas aplicações de Redes Neurais Artificiais, tipos especiais de neurônios podem ser utilizados, chamados neurônios de contexto. Esse tipo de neurônio guarda estados nas redes neurais, e pode ser comparado com a maneira como fatores de contexto afetam neurônios reais. Esses neurônios são importantes em aplicações onde se trabalham com séries temporais.
Funções de Ativação
As funções de ativação estabelecem as fronteiras para os valores de saída de um neurônio. Existem diversas funções de ativação que podem ser utilizadas, dependendo da aplicação e maneira como a RNA é projetada. Algumas funções de ativação:
- Linear
Reflete na saída o valor ou combinação de valores que recebeu na entrada. Esses neurônios são usados em problemas de regressão linear. - Degrau
Nas aplicações iniciais as RNAs eram chamadas Perceptrons. Essas aplicações ativavam a saída se a combinação de entradas ponderadas por pesos fosse maior ou igual a um Threshold. Caso contrário, a saída é desativada (saída = 0). - Sigmoide
Após começar a usar métodos de treinamento mais sofisticado, buscaram-se opções por funções que não possuem não-linearidades na função de saída para qualquer entrada. Esse tipo de função de ativação é interessante para RNAs feedfoward que necessitam de valores que sejam apenas positivos. Esse tipo de função de ativação normalmente pode ser substituído por funções de ativação que usam tangente hiperbólica ou ReLU (Unidade Linear Retificada). - Tangente Hiperbólica
Esse tipo de função de ativação tem sua saída no intervalo [-1,1], e a saída é a tangente hiperbólica da entrada. Essa função costuma ser melhor para realizar treinamentos, especialmente treinamentos que envolvem derivativos, como Backpropagation. - Unidade Linear Retificada (ReLU)
Introduzida no ano 2000, essa função de ativação é altamente recomendada por ser linear e não saturante. - Softmax
Usada em RNAs de classificação. É boa para bases de dados desbalanceadas, por possuir um neurônio de saída para cada classe. Ele se baseia nas probabilidades de uma instância da entrada pertencer a cada grupo, totalizando 100% ao final.
Aplicações
Existem diversas aplicações usando redes neurais usadas por todas as pessoas do dia-a-dia. As aplicações de reconhecimento facial, como por exemplo a usada pelo Facebook, utilizam de arquiteturas de redes neurais artificiais conhecidas como redes de Deep Learning. Um exemplo de aplicação de reconhecimento facial pode ser visto na figura abaixo.
Existem também aplicações que buscam reconhecer padrões para classificação de tumores, por exemplo, em benignos ou malignos. O processo novamente usa técnicas de Deep Learning para analisar os dados de entrada. Com esses dados, busca-se obter uma inferência da classificação de um tumor. O infográfico mostrado na figura abaixo mostra como a arquitetura da rede neural foi desenhada para obter a saída.
2 thoughts on “Fundamentos de Redes Neurais”