Upload
otavio-calaca-xavier
View
5.305
Download
11
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
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
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
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/