introdução às redes neurais com php

Post on 18-May-2015

2.783 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Apresentação sobre redes neurais e como usar esse conceito com PHP, através da biblioteca FANN.

TRANSCRIPT

Introdução às Redes Neurais com PHP

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

http://phpendo.blogspot.com

1º /dev/net

http://www.aslgo.org.br/dev/net/

Goiânia, 08 de Novembro 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– 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)

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

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

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

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; } }

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++; } }

Introdução às Redes Neurais com PHP

Redes Neurais com PHP

• Uso public function usar($entradas) { $this->setEntradas($entradas); $this->sinapse();

return $this->saida; }

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

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

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/

top related