SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
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
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
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               – Ruby
  – Java              – Delphi
  – C++               – PERL
  – .NET              – Outras...
  – Python
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
Introdução às Redes Neurais com PHP



                 FANN no PHP
$ann = fann_create(array(2, 4, 3), 1.0, 0.7);          Exemplo
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);
Introdução às Redes Neurais com PHP



                   FANN no PHP
print_r(fann_run($ann,
print_r(fann_run($ann,
                         array(0,
                         array(0,
                                    0)));
                                    1)));
                                                    Exemplo
print_r(fann_run($ann,   array(1,   0)));
print_r(fann_run($ann,   array(1,   1)));           [0] => XOR
                                                    [1] => OR
Retorno:                                            [2] => AND

    Array                            Array
    (                                (
        [0] => 0                         [0] => 1
        [1] => 0                         [1] => 1
        [2] => 0                         [2] => 0
    )                                )
    Array                            Array
    (                                (
        [0] => 1                         [0] => 0
        [1] => 1                         [1] => 1
        [2] => 0                         [2] => 1
    )                                )
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/

Mais conteúdo relacionado

Mais procurados

Técnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em djangoTécnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em djangoMario Chaves
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etcLuciano Ramalho
 
Theano - Alto Desempenho em Machine Learning
Theano - Alto Desempenho em Machine LearningTheano - Alto Desempenho em Machine Learning
Theano - Alto Desempenho em Machine LearningFelipe Martins
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em PythonLuciano Ramalho
 
Ruby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasRuby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasÉverton Ribeiro
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Luciano Ramalho
 
Palestra python
Palestra pythonPalestra python
Palestra pythonRony Cruch
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonrodrigopex
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!Juliano Atanazio
 
Python com r (mini projeto)
Python com r (mini projeto)Python com r (mini projeto)
Python com r (mini projeto)Danilo Costa
 
Java 8 - Afinal onde usamos no dia a dia? GOJava 15 anos!
Java 8 - Afinal onde usamos no dia a dia? GOJava 15 anos!Java 8 - Afinal onde usamos no dia a dia? GOJava 15 anos!
Java 8 - Afinal onde usamos no dia a dia? GOJava 15 anos!Frederico Maia Arantes
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Flávio Ribeiro
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...Danilo J. S. Bellini
 

Mais procurados (20)

Técnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em djangoTécnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em django
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 
Theano - Alto Desempenho em Machine Learning
Theano - Alto Desempenho em Machine LearningTheano - Alto Desempenho em Machine Learning
Theano - Alto Desempenho em Machine Learning
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em Python
 
Aula 02 - Curso PHP e MySQL
Aula 02 - Curso PHP e MySQLAula 02 - Curso PHP e MySQL
Aula 02 - Curso PHP e MySQL
 
Iteraveis e geradores
Iteraveis e geradoresIteraveis e geradores
Iteraveis e geradores
 
Python 02
Python 02Python 02
Python 02
 
Python 03
Python 03Python 03
Python 03
 
Ruby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasRuby e Erlang de mãos dadas
Ruby e Erlang de mãos dadas
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
Palestra python
Palestra pythonPalestra python
Palestra python
 
Aula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQLAula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQL
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!
 
Python com r (mini projeto)
Python com r (mini projeto)Python com r (mini projeto)
Python com r (mini projeto)
 
Java 8 - Afinal onde usamos no dia a dia? GOJava 15 anos!
Java 8 - Afinal onde usamos no dia a dia? GOJava 15 anos!Java 8 - Afinal onde usamos no dia a dia? GOJava 15 anos!
Java 8 - Afinal onde usamos no dia a dia? GOJava 15 anos!
 
Stack based overflow
Stack based overflowStack based overflow
Stack based overflow
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
 

Semelhante a Redes Neurais PHP

O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?Denis Costa
 
PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducaojonatasoliveira
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHPAugusto das Neves
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It YourselfBruno Nascimento
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rustBruno Rocha
 
OOP (in portuguese)
OOP (in portuguese)OOP (in portuguese)
OOP (in portuguese)Bruno Pedro
 
Python Com Baterias Incluídas
Python Com Baterias IncluídasPython Com Baterias Incluídas
Python Com Baterias IncluídasJonh Edson
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e SphinxElton Minetto
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPaulino Michelazzo
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação WebDalton Martins
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Cristiano Rafael Steffens
 

Semelhante a Redes Neurais PHP (20)

Principais novidades do PHP7
Principais novidades do PHP7Principais novidades do PHP7
Principais novidades do PHP7
 
Java para iniciantes
Java para iniciantesJava para iniciantes
Java para iniciantes
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?
 
Brasiliatestfest
BrasiliatestfestBrasiliatestfest
Brasiliatestfest
 
PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducao
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP
 
Dev Ext PHP
Dev Ext PHPDev Ext PHP
Dev Ext PHP
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It Yourself
 
Pdo do PHP Palestra
Pdo do PHP PalestraPdo do PHP Palestra
Pdo do PHP Palestra
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rust
 
OOP (in portuguese)
OOP (in portuguese)OOP (in portuguese)
OOP (in portuguese)
 
Python Com Baterias Incluídas
Python Com Baterias IncluídasPython Com Baterias Incluídas
Python Com Baterias Incluídas
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
 
TDC 2016 - PHP7
TDC 2016 - PHP7TDC 2016 - PHP7
TDC 2016 - PHP7
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação Web
 
Php Math and arrays
Php Math and arraysPhp Math and arrays
Php Math and arrays
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)
 

Mais de Otávio Calaça Xavier

Deep learning: a ficção em IA tem se tornado realizade
Deep learning: a ficção em IA tem se tornado realizadeDeep learning: a ficção em IA tem se tornado realizade
Deep learning: a ficção em IA tem se tornado realizadeOtávio Calaça Xavier
 
Internet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.jsInternet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.jsOtávio Calaça Xavier
 
DevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaDevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaOtávio Calaça Xavier
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaOtávio Calaça Xavier
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesOtávio Calaça Xavier
 
Web Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLWeb Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLOtávio Calaça Xavier
 
Web Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebWeb Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebOtávio Calaça Xavier
 
Implementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social NetworksImplementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social NetworksOtávio Calaça Xavier
 
Integrando a Web Social e a Web Semântica com PHP
Integrando a Web Social e a Web Semântica com PHPIntegrando a Web Social e a Web Semântica com PHP
Integrando a Web Social e a Web Semântica com PHPOtávio Calaça Xavier
 
Web Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebWeb Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebOtávio Calaça Xavier
 
Lógica Fuzzy aplicada à Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à  Sistemas de Apoio a DecisãoLógica Fuzzy aplicada à  Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à Sistemas de Apoio a DecisãoOtávio Calaça Xavier
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineOtávio Calaça Xavier
 
Fuzzy RDF in the Semantic Web: Deduction and Induction
Fuzzy RDF in the Semantic Web: Deduction and InductionFuzzy RDF in the Semantic Web: Deduction and Induction
Fuzzy RDF in the Semantic Web: Deduction and InductionOtávio Calaça Xavier
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXOtávio Calaça Xavier
 
Introdução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxIntrodução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxOtávio Calaça Xavier
 
Classe V: Educação à distância com Videoconferência no Moodle
Classe V: Educação à distância com Videoconferência no MoodleClasse V: Educação à distância com Videoconferência no Moodle
Classe V: Educação à distância com Videoconferência no MoodleOtávio Calaça Xavier
 

Mais de Otávio Calaça Xavier (20)

Deep learning: a ficção em IA tem se tornado realizade
Deep learning: a ficção em IA tem se tornado realizadeDeep learning: a ficção em IA tem se tornado realizade
Deep learning: a ficção em IA tem se tornado realizade
 
Internet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.jsInternet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.js
 
DevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaDevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega Contínua
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simples
 
Web Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLWeb Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQL
 
Web Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebWeb Semântica, a terceira geração da Web
Web Semântica, a terceira geração da Web
 
Implementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social NetworksImplementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social Networks
 
Integrando a Web Social e a Web Semântica com PHP
Integrando a Web Social e a Web Semântica com PHPIntegrando a Web Social e a Web Semântica com PHP
Integrando a Web Social e a Web Semântica com PHP
 
Web Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebWeb Semântica, a terceira geração da Web
Web Semântica, a terceira geração da Web
 
Introdução ao Framework CakePHP
Introdução ao Framework CakePHPIntrodução ao Framework CakePHP
Introdução ao Framework CakePHP
 
Lógica Fuzzy aplicada à Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à  Sistemas de Apoio a DecisãoLógica Fuzzy aplicada à  Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à Sistemas de Apoio a Decisão
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
 
PHP: Atualidade e Tendências
PHP: Atualidade e TendênciasPHP: Atualidade e Tendências
PHP: Atualidade e Tendências
 
Fuzzy RDF in the Semantic Web: Deduction and Induction
Fuzzy RDF in the Semantic Web: Deduction and InductionFuzzy RDF in the Semantic Web: Deduction and Induction
Fuzzy RDF in the Semantic Web: Deduction and Induction
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
 
Introdução à Google Maps API
Introdução à Google Maps APIIntrodução à Google Maps API
Introdução à Google Maps API
 
Introdução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxIntrodução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com Ajax
 
Padrões de Projeto Web e o MVC
Padrões de Projeto Web e o MVCPadrões de Projeto Web e o MVC
Padrões de Projeto Web e o MVC
 
Classe V: Educação à distância com Videoconferência no Moodle
Classe V: Educação à distância com Videoconferência no MoodleClasse V: Educação à distância com Videoconferência no Moodle
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)
  • 4. Introdução às Redes Neurais com PHP O Neurônio Orgânico
  • 5. Introdução às Redes Neurais com PHP Redes Neurais Biológicas
  • 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)
  • 10. Introdução às Redes Neurais com PHP Funções de Ativação
  • 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
  • 19. Introdução às Redes Neurais com PHP FANN no PHP $ann = fann_create(array(2, 4, 3), 1.0, 0.7); Exemplo 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);
  • 20. Introdução às Redes Neurais com PHP FANN no PHP print_r(fann_run($ann, print_r(fann_run($ann, array(0, array(0, 0))); 1))); Exemplo print_r(fann_run($ann, array(1, 0))); print_r(fann_run($ann, array(1, 1))); [0] => XOR [1] => OR Retorno: [2] => AND Array Array ( ( [0] => 0 [0] => 1 [1] => 0 [1] => 1 [2] => 0 [2] => 0 ) ) Array Array ( ( [0] => 1 [0] => 0 [1] => 1 [1] => 1 [2] => 0 [2] => 1 ) )
  • 21. Introdução às Redes Neurais com PHP Agradecimentos
  • 22. Introdução às Redes Neurais com PHP Perguntas? Otávio Calaça otaviocx@gmail.com
  • 23. 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/