Redes Neurais com PHP

6,838 views

Published on

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.

Published in: Technology

Redes Neurais com PHP

  1. 1. 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
  2. 2. 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 ●
  3. 3. 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
  4. 4. Introdução às Redes Neurais com PHP O Neurônio Orgânico
  5. 5. Introdução às Redes Neurais com PHP Redes Neurais Biológicas
  6. 6. Introdução às Redes Neurais com PHP Cérebro X Computador 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 Possibilidades em um elemento Várias 2 Controle de Processos Distribuído Centralizado
  7. 7. Introdução às Redes Neurais com PHP Redes Neurais Artificiais • Neurônio Artificial
  8. 8. Introdução às Redes Neurais com PHP Redes Neurais Artificiais • Neurônio Artificial (várias entradas)
  9. 9. Introdução às Redes Neurais com PHP Funções de Ativação
  10. 10. Introdução às Redes Neurais com PHP Redes Neurais Artificiais • Rede de uma camada
  11. 11. Introdução às Redes Neurais com PHP Redes Neurais Artificiais • Rede de várias camadas
  12. 12. Introdução às Redes Neurais com PHP Redes Neurais Artificiais • Rede de várias camadas
  13. 13. Introdução às Redes Neurais com PHP FANN (Fast Artificial Neural Network) • Biblioteca desenvolvida em C; • Software Livre; • Possui vínculos para diversas linguagens: Ruby – PHP Delphi – Java PERL Outras... – C++ – .NET – Python
  14. 14. Introdução às Redes Neurais com PHP FANN no PHP • Extensão disponível no PECL; • Funções disponiveis para o PHP: fann_get_activation_function_hidden fann_create fann_get_activation_function_output fann_train fann_get_activation_steepness_hidden fann_save fann_get_activation_steepness_output fann_run fann_set_learning_rate fann_randomize_weights fann_set_activation_function_hidden fann_init_weights fann_set_activation_function_output fann_get_MSE fann_set_activation_steepness_hidden fann_get_num_input fann_set_activation_steepness_output fann_get_num_output fann_get_total_neurons fann_get_total_connections fann_get_learning_rate
  15. 15. Introdução às Redes Neurais com PHP FANN no PHP Exemplo $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);
  16. 16. Introdução às Redes Neurais com PHP FANN no PHP Exemplo print_r(fann_run($ann, array(0, 0))); print_r(fann_run($ann, array(0, 1))); print_r(fann_run($ann, array(1, 0))); [0] => XOR print_r(fann_run($ann, array(1, 1))); [1] => OR [2] => AND Retorno: Array Array ( ( [0] => 0 [0] => 1 [1] => 0 [1] => 1 [2] => 0 [2] => 0 ) ) Array Array ( ( [0] => 0 [0] => 1 [1] => 1 [1] => 1 [2] => 1 [2] => 0 ) )
  17. 17. Introdução às Redes Neurais com PHP Exemplo de Utilização • Lendo letras em ASCII ###### ##### ###### ###### ##### ###### # # ##### # # # # # # # # ## ## # # ##### ##### ##### ##### # # # # ## # ##### # ## # # # # # # # # # # ## ###### ###### ##### ###### # # #
  18. 18. Introdução às Redes Neurais com PHP Exemplo de Utilização • Transformando em binário para entradas da rede: ###### 111111 => 111111100000111110100000100000 # 100000 ##### ==> 111110 5x6 = 30 entradas # 100000 # 100000 26 letras = 26 possibilidades de saída 5 saídas conseguem 25 = 32 possibilidades Saída esperada para a letra F => 5 = 000101 (bin)
  19. 19. 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.
  20. 20. 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?
  21. 21. 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?
  22. 22. Introdução às Redes Neurais com PHP Exemplo de Utilização • Após o treinamento:
  23. 23. 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?
  24. 24. Introdução às Redes Neurais com PHP Agradecimentos
  25. 25. Introdução às Redes Neurais com PHP Perguntas? Otávio Calaça otaviocx@gmail.com
  26. 26. 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/

×