26
Introdução às Redes Neurais com PHP Otávio Calaça – [email protected] http://phpendo.blogspot.com 1º FreeComp http://www.computacao.ucg.br/freecomp Goiânia, 13 de Dezembro de 2008

Redes Neurais com PHP

Embed Size (px)

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

Page 1: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

Otávio Calaça – [email protected]

http://phpendo.blogspot.com

1º FreeComp

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

Goiânia, 13 de Dezembro de 2008

Page 2: Redes Neurais com PHP

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

Page 3: Redes Neurais com PHP

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

Page 4: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

O Neurônio Orgânico

Page 5: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

Redes Neurais Biológicas

Page 6: Redes Neurais com PHP

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

Page 7: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

Redes Neurais Artificiais

• Neurônio Artificial

Page 8: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

Redes Neurais Artificiais

• Neurônio Artificial (várias entradas)

Page 9: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

Funções de Ativação

Page 10: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

Redes Neurais Artificiais

• Rede de uma camada

Page 11: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

Redes Neurais Artificiais• Rede de várias camadas

Page 12: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

Redes Neurais Artificiais• Rede de várias camadas

Page 13: Redes Neurais com PHP

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...

Page 14: Redes Neurais com PHP

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:

Page 15: Redes Neurais com 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

Page 16: Redes Neurais com PHP

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

Page 17: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

Exemplo de Utilização• Lendo letras em ASCII

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

Page 18: Redes Neurais com PHP

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)

Page 19: Redes Neurais com PHP

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.

Page 20: Redes Neurais com PHP

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?

Page 21: Redes Neurais com PHP

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?

Page 22: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

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

Page 23: Redes Neurais com PHP

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?

Page 24: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

Agradecimentos

Page 25: Redes Neurais com PHP

Introdução às Redes Neurais com PHP

Perguntas?

Otávio Calaça

[email protected]

Page 26: Redes Neurais com PHP

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/