introdução às redes neurais com php
DESCRIPTION
Apresentação sobre redes neurais e como usar esse conceito com PHP, através da biblioteca FANN.TRANSCRIPT
![Page 1: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/1.jpg)
Introdução às Redes Neurais com PHP
Otávio Calaça – [email protected]
http://phpendo.blogspot.com
1º /dev/net
http://www.aslgo.org.br/dev/net/
Goiânia, 08 de Novembro de 2008
![Page 2: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/2.jpg)
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: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/3.jpg)
Introdução às Redes Neurais com PHP
Roteiro
• Redes Neurais Biológicas– O Neurônio Orgânico
• Redes Neurais Artificiais– Histórico
– Perceptron
– Entradas, pesos, limiar e saídas
– Função de ativação• Redes Neurais e o PHP
– Construindo um perceptron
– FANN (Fast Artificial Neural Network)
![Page 4: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/4.jpg)
Introdução às Redes Neurais com PHP
O Neurônio Orgânico
![Page 5: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/5.jpg)
Introdução às Redes Neurais com PHP
Redes Neurais Biológicas
![Page 6: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/6.jpg)
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: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/7.jpg)
Introdução às Redes Neurais com PHP
Redes Neurais Artificiais
• Histórico– McCulloch e Pitts(1943).– Donald Hebb(1949): lei de aprendizagem.– Rosenblatt(1958): 1º neuro computador.– 2 decadas silenciosas.– Hopfield(1982): difusão dos conhecimentos.
![Page 8: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/8.jpg)
Introdução às Redes Neurais com PHP
Redes Neurais Artificiais
• Neurônio Artificial
![Page 9: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/9.jpg)
Introdução às Redes Neurais com PHP
Redes Neurais Artificiais
• Neurônio Artificial (várias entradas)
![Page 10: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/10.jpg)
Introdução às Redes Neurais com PHP
Funções de Ativação
![Page 11: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/11.jpg)
Introdução às Redes Neurais com PHP
Redes Neurais Artificiais
• Rede de uma camada
![Page 12: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/12.jpg)
Introdução às Redes Neurais com PHP
Redes Neurais Artificiais• Rede de várias camadas
![Page 13: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/13.jpg)
Introdução às Redes Neurais com PHP
Redes Neurais Artificiais• Rede de várias camadas
![Page 14: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/14.jpg)
Introdução às Redes Neurais com PHP
Redes Neurais com PHP• Sinapse e função de ativação
public function sinapse() { $this->saida = 0; foreach($this->entradas as $k => $ent) { $this->saida += $ent*$this->pesos[$k]; } $this->saida += $this->limiar; $this->saida = $this->ativacao($this->saida);
} public function ativacao($valor) { if($valor <= 0) { return 0; } else { return 1; } }
![Page 15: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/15.jpg)
Introdução às Redes Neurais com PHP
Redes Neurais com PHP• Aprendizado
public function treinar() { $this->sinapse(); $this->erro = $this->esperada - $this->saida; if($this->erro != 0) { $pesos = array(); foreach($this->entradas as $k => $ent) { $pesos[$k] = $this->pesos[$k] + $ent*$this->erro; } $this->limiar = $this->limiar + $this->erro; $this->setPesos($pesos); } } public function aprender() { $this->treinar(); $n = 0; while($this->erro and $n < 10) { $this->treinar(); $n++; } }
![Page 16: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/16.jpg)
Introdução às Redes Neurais com PHP
Redes Neurais com PHP
• Uso public function usar($entradas) { $this->setEntradas($entradas); $this->sinapse();
return $this->saida; }
![Page 17: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/17.jpg)
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
– Ruby– Delphi– PERL– Outras...
![Page 18: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/18.jpg)
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 19: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/19.jpg)
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 20: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/20.jpg)
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 21: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/21.jpg)
Introdução às Redes Neurais com PHP
Agradecimentos
![Page 22: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/22.jpg)
Introdução às Redes Neurais com PHP
Perguntas?
Otávio Calaça
![Page 23: Introdução às Redes Neurais com PHP](https://reader036.vdocuments.mx/reader036/viewer/2022081718/5559c058d8b42a236c8b515a/html5/thumbnails/23.jpg)
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/