Neuroevolução - Neuroevolution
Neuroevolution , ou neuro-evolução , é uma forma de inteligência artificial que utiliza algoritmos evolucionários para gerar redes neurais artificiais (RNA), parâmetros, topologia e regras. É mais comumente aplicado na vida artificial , jogos em geral e robótica evolutiva . O principal benefício é que a neuroevolução pode ser aplicada de forma mais ampla do que algoritmos de aprendizagem supervisionada , que requerem um programa de pares de entrada-saída corretos. Em contraste, a neuroevolução requer apenas uma medida do desempenho de uma rede em uma tarefa. Por exemplo, o resultado de um jogo (ou seja, se um jogador ganhou ou perdeu) pode ser facilmente medido sem fornecer exemplos rotulados de estratégias desejadas. A neuroevolução é comumente usada como parte do paradigma de aprendizado por reforço e pode ser contrastada com técnicas convencionais de aprendizado profundo que usam gradiente descendente em uma rede neural com uma topologia fixa.
Características
Muitos algoritmos de neuroevolução foram definidos. Uma distinção comum é entre algoritmos que evoluem apenas a força dos pesos de conexão para uma topologia de rede fixa (às vezes chamada de neuroevolução convencional), em oposição àqueles que evoluem tanto a topologia da rede quanto seus pesos (chamados de TWEANNs, para Topologia e Peso Algoritmos de redes neurais artificiais em evolução).
Uma distinção separada pode ser feita entre os métodos que desenvolvem a estrutura das RNAs em paralelo aos seus parâmetros (aqueles que aplicam algoritmos evolutivos padrão) e aqueles que os desenvolvem separadamente (por meio de algoritmos meméticos ).
Comparação com gradiente descendente
A maioria das redes neurais usa gradiente descendente em vez de neuroevolução. No entanto, por volta de 2017, pesquisadores do Uber afirmaram que descobriram que algoritmos de neuroevolução estrutural simples eram competitivos com algoritmos de aprendizagem profunda de gradiente descendente modernos e sofisticados , em parte porque a neuroevolução era menos provável de ficar presa em mínimos locais. Na revista Science , o jornalista Matthew Hutson especulou que parte da razão pela qual a neuroevolução está tendo sucesso onde falhou antes é devido ao aumento do poder computacional disponível na década de 2010.
Codificação direta e indireta
Algoritmos evolutivos operam em uma população de genótipos (também conhecidos como genomas ). Na neuroevolução, um genótipo é mapeado para um fenótipo de rede neural que é avaliado em alguma tarefa para derivar sua aptidão .
Em esquemas de codificação direta, o genótipo mapeia diretamente para o fenótipo. Ou seja, cada neurônio e conexão na rede neural são especificados direta e explicitamente no genótipo. Em contraste, nos esquemas de codificação indireta, o genótipo especifica indiretamente como essa rede deve ser gerada.
Codificações indiretas são frequentemente usadas para atingir vários objetivos:
- modularidade e outras regularidades;
- compressão do fenótipo para um genótipo menor, fornecendo um espaço de busca menor;
- mapear o espaço de busca (genoma) para o domínio do problema.
Taxonomia de sistemas embriogênicos para codificação indireta
Codificações tradicionalmente indiretas que empregam embriogênese artificial (também conhecido como desenvolvimento artificial ) foram categorizadas ao longo das linhas de uma abordagem gramatical versus uma abordagem de química celular . O primeiro envolve conjuntos de regras na forma de sistemas de reescrita gramatical. O último tenta imitar como as estruturas físicas emergem na biologia por meio da expressão gênica. Os sistemas de codificação indireta costumam usar aspectos de ambas as abordagens.
Stanley e Miikkulainen propõem uma taxonomia para sistemas embriogênicos que se destina a refletir suas propriedades subjacentes. A taxonomia identifica cinco dimensões contínuas, ao longo das quais qualquer sistema embriogênico pode ser colocado:
- Destino da célula (neurônio) : as características finais e o papel da célula no fenótipo maduro. Esta dimensão conta o número de métodos usados para determinar o destino de uma célula.
- Direcionamento : o método pelo qual as conexões são direcionadas das células de origem para as células de destino. Isso varia de direcionamento específico (origem e destino são explicitamente identificados) até direcionamento relativo (por exemplo, com base na localização das células entre si).
- Heterocronia : o tempo e a ordem dos eventos durante a embriogênese. Conta o número de mecanismos para alterar o tempo de eventos.
- Canalização : quão tolerante o genoma é a mutações (fragilidade). Varia desde a exigência de instruções genotípicas precisas até uma alta tolerância a mutações imprecisas.
- Complexificação : a capacidade do sistema (incluindo algoritmo evolutivo e mapeamento de genótipo para fenótipo) de permitir a complexificação do genoma (e, portanto, do fenótipo) ao longo do tempo. Vai desde permitir apenas genomas de tamanho fixo até permitir genomas de comprimento altamente variável.
Exemplos
Exemplos de métodos de neuroevolução (aqueles com codificações diretas são necessariamente não embriogênicos):
Método | Codificação | Algoritmo evolutivo | Aspectos evoluídos |
---|---|---|---|
Evolução neuro-genética por E. Ronald, 1994 | Direto | Algoritmo genético | Pesos de rede |
Codificação Celular (CE) por F. Gruau, 1994 | Indireto, embriogênico (árvore gramatical usando expressões S ) | Programação genética | Estrutura e parâmetros (simultâneos, complexificação) |
GNARL de Angeline et al., 1994 | Direto | Programação evolucionária | Estrutura e parâmetros (simultâneos, complexificação) |
EPNet de Yao e Liu, 1997 | Direto | Programação evolutiva (combinada com retropropagação e recozimento simulado ) | Estrutura e parâmetros (mistos, complexificação e simplificação) |
NeuroEvolution of Augmenting Topologies (NEAT) de Stanley e Miikkulainen, 2002 | Direto | Algoritmo genético . Rastreia genes com marcações históricas para permitir o cruzamento entre diferentes topologias e protege a inovação por meio da especiação. | Estrutura e parâmetros |
NeuroEvolution of Augmenting Topologies baseada em hipercubo (HyperNEAT) por Stanley, D'Ambrosio, Gauci, 2008 | Indireto, não embriogênico (padrões espaciais gerados por uma rede de produção de padrão de composição (CPPN) dentro de um hipercubo são interpretados como padrões de conectividade em um espaço de dimensão inferior) | Algoritmo genético . O algoritmo NEAT (acima) é usado para evoluir o CPPN. | Parâmetros, estrutura fixa (funcionalmente totalmente conectada) |
Evolvable Substrate Hypercube-based NeuroEvolution of Augmenting Topologies (ES-HyperNEAT) por Risi, Stanley 2012 | Indireto, não embriogênico (padrões espaciais gerados por uma rede de produção de padrão de composição (CPPN) dentro de um hipercubo são interpretados como padrões de conectividade em um espaço de dimensão inferior) | Algoritmo genético . O algoritmo NEAT (acima) é usado para evoluir o CPPN. | Parâmetros e estrutura de rede |
Evolutionary Acquisition of Neural Topologies (EANT / EANT2) por Kassahun e Sommer, 2005 / Siebel e Sommer, 2007 | Diretos e indiretos, potencialmente embriogênicos (Codificação Genética Comum) | Programação evolutiva / estratégias de evolução | Estrutura e parâmetros (separadamente, complexificação) |
Neuro-Evolution Interactively Constrained (ICONE) por Rempis, 2012 | Direto, inclui máscaras de restrição para restringir a pesquisa a coletores de topologia / parâmetro específicos. | Algoritmo evolutivo . Usa máscaras de restrição para reduzir drasticamente o espaço de pesquisa por meio da exploração do conhecimento do domínio . | Estrutura e parâmetros (separadamente, complexificação, interativo) |
Deus Ex Neural Network (DXNN) de Gene Sher, 2012 | Direto / Indireto, inclui restrições, ajuste local e permite a evolução para integrar novos sensores e atuadores. | Algoritmo memético . Evolui a estrutura e os parâmetros da rede em diferentes escalas de tempo. | Estrutura e parâmetros (separadamente, complexificação, interativo) |
Arquitetura de Neuroevolução Unificada com espectro diversificado (SUNA) por Danilo Vasconcellos Vargas, Junichi Murata ( código para download ) | Direto, apresenta a Representação Neural Unificada (representação que integra a maioria dos recursos de rede neural da literatura). | Algoritmo genético com um mecanismo de preservação de diversidade denominado Spectrum-diversidade que escala bem com o tamanho do cromossomo, é independente do problema e se concentra mais na obtenção de diversidade de comportamentos / abordagens de alto nível. Para atingir essa diversidade, o conceito de espectro de cromossomos é introduzido e usado em conjunto com uma população de mapas de novidades . | Estrutura e parâmetros (mistos, complexificação e simplificação) |
Modular Agent-Based Evolver (MABE) de Clifford Bohm, Arend Hintze e outros. ( Download do código ) | Codificação direta ou indireta de redes de Markov , redes neurais, programação genética e outros controladores personalizáveis arbitrariamente. | Fornece algoritmos evolutivos, algoritmos de programação genética e permite algoritmos customizados, juntamente com a especificação de restrições arbitrárias. | Aspectos evolutíveis incluem o modelo neural e permitem a evolução da morfologia e seleção sexual, entre outros. |
Adaptação de matriz de covariância com algoritmo de grade adaptativa classificada por hipervolume (CMA-HAGA) por Shahin Rostami e outros., | Direto, inclui um recurso de atavismo que permite que os traços desapareçam e reapareçam em diferentes gerações. | Estratégia de evolução multi-objetivo com articulação de preferência ( direção computacional ) | Estrutura, pesos e vieses. |
Veja também
- Aprendizado de máquina automatizado (AutoML)
- Computação evolucionária
- NeuroEvolution of Augmented Topologies (NEAT)
- Noogênese
- HyperNEAT (uma versão generativa do NEAT)
- Aquisição evolutiva de topologias neurais (EANT / EANT2)
Referências
links externos
- "Evolução 101: Neuroevolução | BEACON" . beacon-center.org . Obtido em 14/01/2018 .
- “Áreas NNRG - Neuroevolução” . nn.cs.utexas.edu . Universidade do Texas . Obtido em 14/01/2018 . </ref> (tem artigos para download sobre NEAT e aplicativos)
- "Estrutura de Neuroevolução SharpNEAT" . sharpneat.sourceforge.net . Obtido em 14/01/2018 . projeto maduro de neuroevolução Open Source implementado em C # / .Net.
- ANNEvolve é um projeto de pesquisa de código aberto de IA (código-fonte para download em C e Python com um tutorial e diversos escritos e ilustrações
- "Nils T Siebel - EANT2 - Aprendizagem Evolutiva por Reforço de Redes Neurais" . www.siebel-research.de . Obtido em 14/01/2018 . </ref> Página web sobre aprendizagem evolutiva com EANT / EANT2] (informações e artigos sobre EANT / EANT2 com aplicações para aprendizagem de robôs)
- NERD Toolkit. The Neurodynamics and Evolutionary Robotics Development Toolkit. Uma coleção de software livre e de código aberto para vários experimentos em neurocontrole e neuroevolução. Inclui um simulador programável, vários algoritmos de neuroevolução (por exemplo, ICONE), suporte a cluster, design de rede visual e ferramentas de análise.
- "CorticalComputer (Gene)" . GitHub . Obtido em 14/01/2018 . Código-fonte do sistema Neuroevolucionário DXNN.
- "Página de usuários ES-HyperNEAT" . eplex.cs.ucf.edu . Obtido em 14/01/2018 .