Introdução às Redes Neurais

Em Inteligência Artificial, as Redes Neurais, ou se preferir Redes Neuronais, constituem principal objeto de estudo da abordagem conexionista, que estuda a forma como a informação é processada

Uma abordagem sobre as redes neurais

Uma rede neural (biológica) trata-se de uma complexa estrutura formada por neurônios e suas conexões, capaz de processar informações adquiridas a fim de armazená-las e aprender sobre elas, classificando-as por meio de padrões.

Cada neurônio é conectado a n outros neurônios por meio de dendritos (por onde os impulsos chegam) e axônio (por onde os impulsos são transmitidos).

O neurônio biológico é composto por três partes:

  • Dendritos – recebem os sinais de outros neurônios e os conduzem até o soma;
  • Soma – região da célula capaz de efetuar o somatório dos impulsos recebidos e, caso o impulso seja suficiente, transmitirá novos impulsos a outros neurônios por meio do axônio;
  • Axônio – parte do neurônio que conduz os impulsos produzidos pela mesma até outros neurônios.

Uma rede neural artificial trata-se de um sistema de processamento de informações que possui certas características de performance e processamento dos dados em comum com redes neurais biológicas.

Em uma rede neural, cada neurônio recebe impulsos de vários neurônios (x1, x2, …, xn), aplica pesos sobre cada um desses impulsos (w1, w2, …, wn), efetua o somatório desses valores (y_in), processando então por meio de alguma função a fim de encontrar um valor resultante (y) que irá lhe dizer se deve ou não transmitir novos impulsos a novos neurônios (z1, z2, …, zn) e quais devem ser os novos pesos (v1, v2, …, vn).

Desta forma, podemos dizer que as seguintes equações compõem parte do modelo matemático:
y_in = w1x1 + w2x2 + … + wnxn
y = f (y_in)
v1 = g1(y)
v2 = g2(y)

vn = gn(y)

Aplicações de Redes Neurais
Em Computação, várias são as possíveis aplicações de Redes Neurais, devido à capacidade de aprendizado que as mesmas possuem. Sendo assim, algumas das que podemos destacar aqui são:

  • Processamento de sinais, como em uma linha telefônica, por exemplo, onde se podem utilizar redes neurais a fim de eliminar ruídos e ecos nas chamadas telefônicas, causados por interferências. Redes do tipo ADALINE podem ser aplicadas para essa finalidade;
  • Controle de navegação e movimentação de veículos automatizados;
  • Reconhecimento de padrões, onde redes neurais multicamada são largamente empregadas;
  • Aplicações na medicina, onde uma rede neural pode ser treinada para reconhecer os sintomas e, assim, diagnosticar o tratamento adequado;
  • Reconhecimento e reprodução de voz.

Arquitetura de uma Rede Neural

A arquitetura de uma rede é formada por camadas, onde cada neurônio de uma dada camada somente se relaciona com neurônios de outra(s) camada(s) e possui função de ativação e pesos com algum tipo de padrão em relação aos outros neurônios da mesma camada em que se encontra.

Segundo o número de camadas (os neurônios de entrada não contam no momento da contagem de camadas), uma arquitetura pode ser classificada como:

  • Redes de uma única camada (singlelayer) – neste modelo, há somente unidades de entrada e unidades de saída;
  • Redes de várias camadas (multilayer) – neste modelo, além das unidades de entrada e unidades de saída, há neurônios denominados unidades ocultas.

A figura abaixo ilustra uma rede neural, onde os círculos representam neurônios e as setas indicam o fluxo de impulso (dados) de um neurônio para o outro. O neurônio Y é chamado de neurônio de saída, responsável por emitir o sinal resultante dos estímulos recebidos.

Exemplo de Rede Neural

Há também a aplicação de camadas competitivas, cuja representação gráfica difere um pouco daquelas que estamos discutindo.

O Treinamento de uma Rede Neural

O treinamento de uma rede geralmente é feito de forma iterativa por meio do ajuste de seus pesos.
Desta forma, podemos classificar uma rede quanto ao tipo de treinamento da seguinte forma:

  • Treinamento supervisionado – o treinamento é realizado por meio de testes sobre vetores de entrada cuja saída já é conhecida (memória associativa), desta forma, os pesos são ajustados de acordo com o algoritmo de aprendizado a fim de refletir o resultado esperado. Este tipo de treinamento é muito comum em classificação de padrões, podendo-se utilizar redes multilayer com treinamento por backpropagation para resolução de problemas mais difíceis;
  • Treinamento não-supervisionado – as redes são auto-organizáveis e o treinamento é feito por meio de uma seqüência de vetores testes provida, mas sem vetor de saída a ser associado. Desta forma, a rede modifica seus pesos a fim de conseguir associar os vetores de saída aos vetores de entrada.

Uma rede também pode ser projetada com pesos fixos, sendo capazes de resolver problemas de solução complicada se utilizando técnicas tradicionais. Além disso, alguns autores apontam uma terceira categoria: treinamento auto-supervisionado.

Funções de Ativação

Uma função de ativação representa aquela receberá o resultado do somatório do produto de cada entrada por cada peso e responderá com um único valor, usado como entrada para o próximo neurônio ou como resposta da rede neural.

Há várias funções de ativação possíveis de serem aplicadas, de acordo com o tipo de saída que desejamos. As mais comuns são:

  • Função identidade: empregada principalmente nas unidades de entrada, uma vez que as respostas destas devem ser iguais aos valores passados pelo ambiente;
  • Função identidade em rede neural

  • Função step, com threshold Ө: muito usada em redes single-layer a fim de restringir os parâmetros passados em valores binários (1 ou 0) ou bipolares ( 1 ou –1);
    • Step binária;
    • Função step binária em rede neural

    • Step bipolar;
    • Função step bipolar em rede neural

  • Função sigmóide: é especialmente útil em redes treinadas por backpropagation. Há principalmente dois tipos:
    • Sigmóide binária;
    • Sigmóide bipolar.

Observações a serem consideradas

Dada uma matriz W = (wij) formada pelos pesos para cada unidade Yj a partir dos estímulos recebidos das unidades Xi, podemos calcular y_inj para cada unidade como sendo produto de dois vetores, ou seja:

Cálculo dos estímulos recebidos por um neurônio artificial

Além disso, pode-se incluir um componente x0 = 1 como sendo um dos valores de entrada e utilizar-se de um peso w0j = bj, conhecido como bias. Desta forma, a equação fica:

Cálculo dos estímulos recebidos por um neurônio artificial com bias

O uso de bias em nossas redes neurais mostra-se importante, pois permite que fixemos o valor de threshold adotado em nossa função de ativação, sendo necessário então atualizar somente os pesos e o bias na rede. Como o bias pode ser encarado como sendo o peso para um neurônio cuja entrada é sempre 1, percebe-se que a mesma regra para atualização dos pesos é válida também para a atualização do bias, tornando assim mais fácil nossa tarefa. Ficou difícil de entender? Vamos então mostrar alguns números…

Suponha uma rede neural cuja função de ativação é a step bipolar, isto é, f(y_in) = 1, se y_in θ e f(y_in) = -1, caso contrário.

Sabemos que y_in = x1*w1 + x2*w2 + … + xn*wn, então podemos resumir nosso problema à inequação:

x1*w1 + x2*w2 + … + xn*wn θ

Que, sendo verdadeira, fará f(y_in) ter valor 1.

Então, para que nossa rede neural seja corretamente ajustada, precisaríamos ajustar não somente os pesos, mas também o threshold θ, tarefa não muito simples, já que precisaríamos ter alguma fórmula de ajuste do threshold. Entretanto, podemos fazer algumas alterações, veja só:

x1*w1 + x2*w2 + … + xn*wn θ

- θ + x1*w1 + x2*w2 + … + xn*wn 0

1*(-θ) + x1*w1 + x2*w2 + … + xn*wn 0

Agora, podemos considerar o primeiro termo 1*(-θ) = x0*w0, isto é, o valor de entrada sempre 1 um peso (que nós chamamos de bias, lembra?) cujo valor poderá ser ajustado da mesma forma que ajustamos os demais pesos (isto é, utilizando a mesma regra de aprendizado), o que seria o mesmo que ajustar o threshold. Ficou mais fácil de entender agora? :)

Algumas redes neurais

  • Neurônios de McCulloch-Pitts – primeiras redes neurais, foram concebidas como uma combinação de neurônios utilizando um tempo de espera entre a transmissão de um neurônio e outro, o que permitiu modelar alguns processos fisiológicos, como a percepção de quente e frio. Utiliza-se de um valor de threshold na tomada de decisões;
  • Aprendizagem Hebb – primeiras redes neurais capazes de aprender por meio do reajuste de pesos. Também se utiliza de uma função de threshold;
  • Perceptron – contando com regras de aprendizagem mais poderosas que o Hebb, utiliza-se de pesos fixos entre as unidades de entrada e suas conexões e pesos ajustáveis entre as demais unidades. Da mesma forma que os dois anteriores, utiliza-se de uma função threshold;
  • Adaline – trata-se de uma rede single-layer que se utiliza de uma regra de aprendizagem conhecida como regra delta, que busca reduzir a diferença entre a saída de uma dada unidade e a saída realmente desejada. Madaline é uma extensão multilayer do Adaline;
  • Backpropagation – utiliza-se da propagação das informações sobre os erros nas unidades de saída para as unidades ocultas, a fim de realizar o reajuste;
  • Redes de Hopfield – Estas redes funcionam como redes de memória associativa, o que permite resolver problemas em um número de iterações mais satisfatório;
  • Neocognitron – redes neurais especializadas em reconhecimento de caracteres;
  • Máquina de Boltzman – redes neurais não-determinísticas, nas quais os pesos e ativações são alterados por meio de funções de densidade probabilística;
  • Implementações em Hardware.

Alguns nomes que se destacaram nos anos 70 são Kohonen (desenvolvedor de redes para reconhecimento de voz e problema do caixeiro viajante), Anderson (aplicações em diagnósticos médicos), Grossberg (146 trabalhos publicados) e Carpenter (desenvolvedor da teoria da ressonância adaptativa).

O Neurônio de McCulloch-Pitts

Principais características do modelo de neurônio proposto por McCulloch e Pitts:

  • A ativação do neurônio de McCulloch-Pitts é binária;
  • Neurônios são conectados por caminhos direcionados e baseados em pesos;
  • Uma conexão é excitatória se o peso associado for positivo, caso contrário, ela é inibitória;
  • Há um threshold fixado para cada neurônio;
  • Caso haja uma entrada inibitória diferente de zero, o neurônio não pode disparar (inibição absoluta);
  • Há um tempo de atraso na transmissão do sinal de um neurônio para outro.

Função de ativação para um neurônio de McCulloch-Pitts

Algumas redes neuronais de McCulloch-Pitts

(Usando θ = 1 como threshold)

Rede Neural AND
Rede Neural AND

Rede Neural OR
Rede Neural OR

Rede Neural AND NOT
Rede Neural AND NOT

Rede Neural XOR
Rede Neural XOR

Rede Neural Quente-Frio
Rede Neural Quente-Frio

[Conteúdo pertencente ao Material do curso de Inteligência Artificial e ao Material do curso de Redes Neurais Artificiais]

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
 

One comment

  1. [...] Aula 1 – Introdução às Redes Neurais Se você gostou deste artigo, que tal…O algoritmo Minimax, Corte Alpha-Beta e outros RefinamentosUma Introdução aos Algoritmos Genéticos – Parte 1Busca em Largura para resolver um Sliding PuzzleUma Introdução à Inteligência ArtificialUma Introdução aos Algoritmos Genéticos – Parte 2 [...]

Leave a Reply

Your email address will not be published. Required fields are marked *

Email
Print