Redes Neurais com PHP

Preview:

DESCRIPTION

Slides de palestra ministrada no I FreeComp em Goiânia com uma introdução sobre Redes Neurais e sua utilização prática com a biblioteca FANN no PHP.

Citation preview

Introdução às Redes Neurais com PHP

Otávio Calaça – otaviocx@gmail.com

http://phpendo.blogspot.com

1º FreeComp

http://www.computacao.ucg.br/freecomp

Goiânia, 13 de Dezembro de 2008

Introdução às Redes Neurais com PHP

Grupo de Desenvolvedores PHP de Goiás

● Lista de Discussão

● Troca de Conhecimentos

● Encontros

● Palestras

● Eventos

● Networking

Introdução às Redes Neurais com PHP

Roteiro

• Redes Neurais Biológicas– O Neurônio Orgânico

• Redes Neurais Artificiais– Perceptron

– Entradas, pesos, limiar e saídas

– Função de ativação• FANN (Fast Artificial Neural Network)

– FANN no PHP

– Exemplo de utilização

Introdução às Redes Neurais com PHP

O Neurônio Orgânico

Introdução às Redes Neurais com PHP

Redes Neurais Biológicas

Introdução às Redes Neurais com PHP

Cérebro X Computador

Possibilidades em um elemento Várias 2

Parâmetro Cérebro Computador

Material Orgânico Metal e plástico

Velocidade Milisegundos Nanosegundos

Tipo de Processamento Paralelo Seqüencial

Armazenamento Adaptativo Estático

Controle de Processos Distribuído Centralizado

Introdução às Redes Neurais com PHP

Redes Neurais Artificiais

• Neurônio Artificial

Introdução às Redes Neurais com PHP

Redes Neurais Artificiais

• Neurônio Artificial (várias entradas)

Introdução às Redes Neurais com PHP

Funções de Ativação

Introdução às Redes Neurais com PHP

Redes Neurais Artificiais

• Rede de uma camada

Introdução às Redes Neurais com PHP

Redes Neurais Artificiais• Rede de várias camadas

Introdução às Redes Neurais com PHP

Redes Neurais Artificiais• Rede de várias camadas

Introdução às Redes Neurais com PHP

FANN (Fast Artificial Neural Network)

• Biblioteca desenvolvida em C;• Software Livre;• Possui vínculos para diversas linguagens:

– PHP– Java– C++– .NET– Python

RubyDelphiPERLOutras...

Introdução às Redes Neurais com PHP

FANN no PHP

fann_createfann_trainfann_savefann_runfann_randomize_weightsfann_init_weightsfann_get_MSEfann_get_num_inputfann_get_num_outputfann_get_total_neuronsfann_get_total_connectionsfann_get_learning_rate

fann_get_activation_function_hiddenfann_get_activation_function_outputfann_get_activation_steepness_hiddenfann_get_activation_steepness_outputfann_set_learning_ratefann_set_activation_function_hiddenfann_set_activation_function_outputfann_set_activation_steepness_hiddenfann_set_activation_steepness_output

• Extensão disponível no PECL;• Funções disponiveis para o PHP:

Introdução às Redes Neurais com PHP

FANN no PHP$ann = fann_create(array(2, 4, 3), 1.0, 0.7);fann_train($ann, array( array( array(0,0), /* Input(s) */ array(0,0,0) /* Output(s) */ ), array( array(0,1), /* Input(s) */ array(1,1,0) /* Output(s) */ ), array( array(1,0), /* Input(s) */ array(1,1,0) /* Output(s) */ ), array(array(1,1), /* Input(s) */ array(0,1,1) /* Output(s) */ ) ), 100000, 0.0000001, 1000);

Exemplo

Introdução às Redes Neurais com PHP

FANN no PHPprint_r(fann_run($ann, array(0, 0)));print_r(fann_run($ann, array(0, 1)));print_r(fann_run($ann, array(1, 0)));print_r(fann_run($ann, array(1, 1)));

Retorno:

Exemplo

Array( [0] => 0 [1] => 0 [2] => 0)

Array( [0] => 1 [1] => 1 [2] => 0)

Array( [0] => 1 [1] => 1 [2] => 0)

Array( [0] => 0 [1] => 1 [2] => 1)

[0] => XOR[1] => OR[2] => AND

Introdução às Redes Neurais com PHP

Exemplo de Utilização• Lendo letras em ASCII

###### ##### ###### ###### ##### ###### # # ##### # # # # # # # # ## ## # # ##### ##### ##### ##### # # # # ## # ##### # # # # # # # # # # # # # ## ###### ###### ##### ###### # # #

Introdução às Redes Neurais com PHP

Exemplo de Utilização• Transformando em binário para entradas

da rede:

###### 111111 => 111111100000111110100000100000# 100000 ##### ==> 111110 # 100000 # 100000

5x6 = 30 entradas

26 letras = 26 possibilidades de saída5 saídas conseguem 25 = 32 possibilidades

Saída esperada para a letra F => 5 = 000101 (bin)

Introdução às Redes Neurais com PHP

Exemplo de Utilização

• Com a entrada legível pela rede, teremos então que treiná-la.

• Padrões de entrada a serem usados.• Saídas esperadas.

Introdução às Redes Neurais com PHP

Exemplo de Utilização

• Características da Rede:– 30 entradas;– 5 saídas;

• Quando utilizar a camada oculta?

Introdução às Redes Neurais com PHP

Exemplo de Utilização

• Treinando– Definissão de pesos e limiar adequados– Tornando a rede mais inteligente

• Qual erro deve ser permitido?

Introdução às Redes Neurais com PHP

Exemplo de Utilização• Após o treinamento:

Introdução às Redes Neurais com PHP

Exemplo de Utilização• Aperfeiçoamento da rede;• Inserção de camada oculta;• Inserção de novos padrões de entrada;• Usando o fannExplorer.

• Por que utilizar redes neurais para o reconhecimento de padrões?

Introdução às Redes Neurais com PHP

Agradecimentos

Introdução às Redes Neurais com PHP

Perguntas?

Otávio Calaça

otaviocx@gmail.com

Introdução às Redes Neurais com PHP

Referências• FANN

http://leenissen.dk/fann/

• PECL fann

http://pecl.php.net/package/fann

• PHP: Hypertext Preprocessor

http://www.php.net

• Martin Hagan

http://hagan.ecen.ceat.okstate.edu/nnd.html

• Uma introdução às redes neurais

http://www.din.uem.br/ia/neurais/

Recommended