Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

O que são redes neurais artificiais?

1 Resposta

+2 votos
respondida Set 19, 2015 por danielcajueiro (5,326 pontos)  

Existem várias formas de responder essa pergunta, mas vou tentar seguir a resposta convencional e clássica. Talvez outras pessoas possam contribuir mais falando de dimensões específicas de evoluções desse modelo.

Redes neurais são modelos não-lineares e semi-paramétricos que são hábeis tanto para aproximar como para classificar sistemas de natureza não-linear. O nome pode ser justificado por razões históricas, já que os primeiros pesquisadores nesse campo faziam parte da psicologia e biologia.

Na figura abaixo, apresenta-se uma típica rede neural com 4 entradas e duas saídas.

A imagem será apresentada aqui.

Nessa figura, podemos perceber os seguintes elementos:

1) A camada de entrada que tem como única função apresentar as variávels independentes (entradas) do modelo \(x_i\), \(i=1,\cdots,I\), onde \(I=4\) é o número de entradas do modelo.

2) Cada conexão da camada de entrada com a camada escondida tem associado um parâmetro chamada de peso.

3) Cada neurônio (representados por círculos) \(j\) que pertence a camada escondida executa a seguinte operação:

\[y_j=f(\sum_{i=1}^{I}v_{ij} x_i \; + v_{0j}),\]

onde \(f\) é uma função não-linear chamada de função de ativação (que é a parte não-paramétrica do modelo de redes neurais), \(v_{ij}\) são os parâmetros a serem estimados (pesos dos links que ligam a camada de entrada a camada escondida), \(v_{0j}\) é um parâmetro extra conhecido como bias (tem efeito similar a constante no modelo de regressão linear) e \(x_i\) são as entradas da camada de entrada.

4) Cada conexão da camada escondida com a camada de saída também tem associado um parâmetro chamada de peso.

5) Os neurônios (representados por círculos) que pertencem a camada de saída fazem a seguinte operação:

\[z_k=\sum_{j=1}^{J}w_{jk} y_j + w_{0k},\]

onde \(w_{jk}\) são os parâmetros a serem estimados (pesos dos links que ligam a camada escondida a camada de saída), \(w_{0k}\) é o bias associado a cada neurônio da camada de saída, \(y_j\) são as saídas da camada escondida e \(J\) é o número de neurônios da camada escondida.

Por que modelos de redes neurais são tão populares?

Existem várias razões para justificar sua popularidade:

1) Dependendo da escolha de \(f\) acima, pode-se mostrar que ele pode aproximar qualquer função contínua (ou seja, o modelo de rede neural é denso no espaço de funções contínuas).

2) Ele é muito útil em muitas situações práticas e existem aplicações industriais inteiramente baseadas nesses modelos.

3) A idéia errada que é um modelo do cérebro humano. Ou seja, "marketing"!

Como estimar esses modelos?

Existe literatura que estuda como estimar esses modelos de forma similar a modelos de regressão linear em estatística ou econometria. Entretanto, normalmente, a forma mais comum de "estimar" os parâmetros de uma rede neural é chamada de treinamento. Para o tipo de rede neural que estamos considerando aqui, uma forma comum de treina-la é utilizando uma algoritmo de aprendizagem supervisionada conhecido como Algoritmo de Backpropagation. De forma simples, a idéia por detrás desse algoritmo consiste basicamente de dois passos:

1) Passo 1: Calcule o erro entre a saída desejada e a saída predita da rede neural.

2) Passo 2: Atualize os pesos da camada da saída rede neural utilizando o método do gradiente descendente para minimizar o quadrado do erro no passo anterior. Até agora, não há nada de novo! A questão é como calcular os novos da camada escondida considerando que não há nenhum valor desejado (como requer um método de treinamento supervisionado) para comparar com a saída da camada escondida. A grande sacada aqui é utilizar o erro da saída e "backpropaga-lo" para a camada escondida usando os pesos já calculados da camada de saída. Os detalhes matemáticos você pode encontrar em uma dessas referências.

Você pode dar um exemplo de aproximacão que pode ser resolvido usando redes neurais artificiais?

Uma função considerada bem difícil de ser aproximada é a função \(f(x)=\mathrm{sen}(x)\) (a menos que se use "bases" trigonométricas para a aproximação). Como essa função é unidimensional, isto é, \(f:\Re\rightarrow \Re\), a rede neural que será usada para aproximar essa função possui apenas uma entrada e apenas uma saída. Usaremos uma camada escondida com 5 neurônios com função de ativação dada por uma \(\tanh\). Note que dada a forma da função \(f(x)=\mathrm{sen}(x)\) e a forma da função \(\tanh(x)\) é intuitivo que precisamos de 5 neurônios. Esse modelo está implementado aqui.

As figuras abaixo apresentam a convergência da rede neural para a função sen(x):

Logo depois da inicialização:
Neural Network Implementation

Após 50 interações:
Neural Network Implementation

Após 250 interações:
Neural Network Implementation

Erro Médio Quadrático:
Mean Square Error Neural Network

Redes neurais são as solucões de todos os problemas?

NÃO!

Você pode dar exemplos de situacões reais em que modelos de redes neurais artificiais podem ser aplicados?

A primeira coisa que você precisa entender é "O mapa não é o território. A única utilidade de um mapa depende da similaridade de estrutura entre o mundo empírico e o mapa. - Alfred Korzybski".

A imagem será apresentada aqui.

Cada tipo de mapa tem habilidade de modelar uma dimensão. Existem mapas físicos (usados para modelar um espaco físico de um determinado ambiente), mapa econômicos (focam em atividades econômicas), mapas políticos (que delimitam as fronteiras das cidades, estados e países) e muitos outros. Assim como mapas, modelos modelam algumas dimensões adequadamente. Apenas Deus ou a natureza tem as equacões matemáticas exatas usadas para gerar determinado tipo de dado (já fizemos esse tipo de comentário aqui). De fato, o que queremos são modelos úteis. Nesse contexto, modelos clássicos de redes neurais artificiais que estamos discutindo aqui são muito úteis para modelar não linearidade.

No mundo real, esses modelos serão especialmente úteis quando a dimensão determinante do seu sistema for não-linear. Situações importantes aparecem especialmente em modelos por detrás de controladores na indústria química (por exemplo, de polímeros) na indústria de geração de energia e na indústria automotiva.

E, nas áreas de ciências sociais aplicadas? Economia, Administração e finanças?

Existem aplicações desses modelos em classificação, por exemplo, em marketing ou finanças. Por exemplo, em finanças, eles podem ser usados para estudo de risco como nesse problema apresentado nessa resposta. e em marketing em segmentação de mercado.

Já vi também esses modelos clássicos sendo usados para prever retornos de ativos financeiros, mas sou um pouco cético em relação a essas aplicações. Como mencionei anteriormente o importante é detectar-se a dimensão importante do modelo de interesse. Sinceramente, para modelar ativos financeiros, minha intuição diz que a dimensão mais determinante não é não linearidade, mas sim aleatoriedade. Entretanto, talvez seja possível a utilização variações desses modelos para algum problema específico.

Tenho dúvidas também sobre aplicações em previsão de demanda, onde parece que a dimensão de aleatoriedade domina.

...