O documento apresenta uma introdução às redes neurais artificiais e como implementá-las com PHP. Ele discute redes neurais biológicas e artificiais, perceptrons, funções de ativação, aprendizado e a biblioteca FANN para PHP.
Classe V: Educação à distância com Videoconferência no Moodle
Redes Neurais PHP
1. 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
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. 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)
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. 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.
8. Introdução às Redes Neurais com PHP
Redes Neurais Artificiais
• Neurônio Artificial
9. Introdução às Redes Neurais com PHP
Redes Neurais Artificiais
• Neurônio Artificial (várias entradas)
11. Introdução às Redes Neurais com PHP
Redes Neurais Artificiais
• Rede de uma camada
12. Introdução às Redes Neurais com PHP
Redes Neurais Artificiais
• Rede de várias camadas
13. Introdução às Redes Neurais com PHP
Redes Neurais Artificiais
• Rede de várias camadas
14. 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;
}
}
15. 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++;
}
}
16. Introdução às Redes Neurais com PHP
Redes Neurais com PHP
• Uso
public function usar($entradas) {
$this->setEntradas($entradas);
$this->sinapse();
return $this->saida;
}
17. 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 – Ruby
– Java – Delphi
– C++ – PERL
– .NET – Outras...
– Python
18. Introdução às Redes Neurais com PHP
FANN no PHP
• Extensão disponível no PECL;
• Funções disponiveis para o PHP:
fann_create fann_get_activation_function_hidden
fann_train fann_get_activation_function_output
fann_save fann_get_activation_steepness_hidden
fann_run fann_get_activation_steepness_output
fann_randomize_weights fann_set_learning_rate
fann_init_weights fann_set_activation_function_hidden
fann_get_MSE fann_set_activation_function_output
fann_get_num_input fann_set_activation_steepness_hidden
fann_get_num_output fann_set_activation_steepness_output
fann_get_total_neurons
fann_get_total_connections
fann_get_learning_rate