Pergunta

Eu estou tentando começar uma sensação para a diferença entre as várias classes de algoritmos de aprendizagem de máquina.

Eu entendo que as implementações de algoritmos evolutivos são bastante diferentes das implementações de redes neurais.

No entanto, ambos parecem ser orientados a determinar uma correlação entre entradas e saídas de um conjunto potencialmente ruidoso de dados de treinamento / histórico.

A partir de uma perspectiva qualitativa, existem domínios de problemas que são melhores alvos para redes neurais, em oposição aos algoritmos evolutivos?

Eu desnatado alguns artigos que sugiro usá-los de forma complementar. Existe um exemplo digno de um caso de uso para isso?

Foi útil?

Solução

Aqui está o negócio: na máquina de problemas de aprendizagem, você normalmente tem dois componentes:

a) O modelo (classe função, etc)

b) Os métodos de ajuste do modelo (optimizaiton algoritmos)

As redes neurais são um modelo: dado um layout e um ajuste de pesos, a rede neural produz alguma saída. Existem alguns métodos canônicos de montagem redes neurais, tais como backpropagation, divergência contrastante, etc. No entanto, o grande ponto de redes neurais é que, se alguém lhe deu os pesos 'certas', você faria bem sobre o problema.

algoritmos evolutivos abordar a segunda parte - ajuste do modelo. Novamente, existem alguns modelos canônicos que vão com algoritmos evolutivos: por exemplo, programação evolucionária normalmente tenta otimizar sobre todos os programas de um tipo particular. No entanto, EAs são essencialmente uma maneira de encontrar os valores dos parâmetros adequados para um determinado modelo. Normalmente, você escreve seus parâmetros do modelo de tal forma que a operação de crossover é uma coisa razoável a fazer e gire a manivela EA para obter uma definição razoável de parâmetros fora.

Agora, você poderia, por exemplo, usam algoritmos evolutivos para treinar uma rede neural e tenho certeza que tem sido feito. No entanto, o pouco crítico que a EA exigem ao trabalho é que a operação de cruzamento deve ser uma coisa razoável a fazer - tomando parte dos parâmetros de uma definição razoável e o resto de outra configuração razoável, muitas vezes você vai acabar com um ainda melhor de parametrização. Na maioria das vezes EA é usado, este não é o caso e ele acaba sendo algo como recozimento simulado, só que mais confuso e ineficiente.

Outras dicas

Os problemas que requerem "intuição" são mais adequadas para RNAs, para o reconhecimento de escrita exemplo mão. Você treina uma rede neural com uma enorme quantidade de entrada e classificá-lo até terminar (isso leva um longo tempo), mas depois você tem um algoritmo blackbox / sistema que pode " palpite " a mão escrita, de modo a manter o seu pequeno cérebro e usá-lo como um módulo por muitos anos ou algo assim. Porque treinar uma qualidade ANN para um problema complexo pode levar meses Eu sou pior caso, e sorte.

A maioria dos outros algoritmos evolutivos " calcular " uma solução ad hoc no local, em uma espécie de padrão de escalada do monte.

Além disso, como fora apontado em outra resposta, durante a execução de uma ANN pode " palpite " mais rápido do que a maioria dos outros algoritmos evolucionários pode " calcular ". No entanto é preciso ter cuidado, já que a ANN é apenas " adivinhação " um que poderia estar errado.

Olhe Neuro Evolution. (NE)

Os atuais melhores métodos é NEAT e HyperNEAT por Kenneth Stanley

Algoritmos Genéticos encontrar apenas um genoma de algum tipo; É ótimo para criar o genoma de uma rede neural, porque você começa a natureza reativa da rede neural, em vez de apenas um punhado de genes estáticos.

Não há muitos limites para o que ele pode aprender. Mas isso leva tempo, é claro. Neural topologia tem que ser evoluiu através da mutação de costume e de cruzamento, bem como pesos atualizado. Não pode haver propagação de volta.

Além disso, você pode treiná-lo com uma função de fitness, que é, portanto, superior à propagação de volta quando você não sabe o que a saída deve ser. Perfeito para aprender comportamentos complexos para sistemas que você não conhece todas as estratégias ideais para. O único problema é que ele vai aprender comportamento que você não antecipou. Muitas vezes, esse comportamento pode ser muito estranho, embora ele faz exatamente o que você recompensado-lo para na função de fitness. Assim, você estará usando o máximo de tempo decorrente funções de aptidão como você teria criação de conjuntos de saída para backpropagation: P

Evolutiva, ou mais genericamente algoritmos genéticos e redes neurais podem ser usados ??para objetivos semelhantes, e outras respostas descrevem bem a diferença.

No entanto, existe um caso específico, onde algoritmos evolucionários são mais indicados do que as redes neurais:. quando o espaço solução é não-contínuo / discreto

Na verdade, as redes neurais usar gradiente descendente de aprender com backpropagation (ou algoritmo similar). O cálculo de um gradiente depende de derivados, que precisa de um espaço contínuo, em outras palavras que você pode mudar de forma gradual e progressiva de uma solução para o seguinte.

Se o seu espaço solução é discreta (isto é, ou você pode escolher solução A, ou B, ou C, mas nada no meio como 0,5% A + 0,5% B), então você está tentando encaixar um não-contínua de função e, em seguida, redes neurais não pode trabalho.

Neste caso, algoritmos evolucionários são perfeitos, pode-se mesmo dizer que um deus enviar, uma vez que pode "pular" de uma solução para o outro sem qualquer problema.

Também vale a pena mencionar é que os algoritmos evolutivos não estão sujeitos à maldição da dimensionalidade, tanto quanto qualquer outra máquina algoritmo de aprendizado, incluindo redes neurais.

Isso faz com algoritmos evolucionários uma ferramenta muito versátil e genérico para aproximar ingenuamente qualquer problema, e uma das poucas ferramentas para lidar tanto com funções não-contínuas ou com conjuntos de dados dimensionais astronomicamente altas.

Em termos de domínios de problemas, eu comparo redes neurais artificiais treinadas por retropropagação de um algoritmo evolutivo.

Um evolutiva algoritmo implanta um beamsearch randomizado, isso significa que seus operadores evolutivos desenvolver candidatos a serem testadas e comparadas pela sua aptidão. Esses operadores são geralmente não determinista e você pode projetá-los para que eles possam ambos os candidatos encontrar em estreita proximidade e os candidatos que estão mais longe no espaço de parâmetros para superar o problema de ficar preso em optima local.

No entanto, o sucesso de uma abordagem EA depende muito do modelo que você desenvolver, o que é uma troca entre alto potencial de expressão (que você pode overfit) e generalidade (o modelo pode não ser capaz de expressar a função de destino).

Como redes neurais geralmente são multicamadas o espaço parâmetro não é convexo e contém ótimos locais, os algoritmos de gradiente de descida pode ficar preso. O gradiente descendente é um algoritmo determinista, que suas pesquisas em estreita proximidade. É por isso que as redes neurais geralmente são inicializados aleatoriamente e por que você deve treinar muito mais do que um modelo.

Além disso, você sabe cada nó escondido em uma rede neural define um hiperplano você pode criar uma rede neural que ele se encaixa o seu problema também. Existem algumas técnicas para evitar que as redes neurais a partir overfitting.

Ao todo, redes neurais pode ser treinado rápido e obter resultados razoáveis ??com alguns efford (apenas tentar alguns parâmetros). Em teoria, uma rede neural que é grande o suficiente é capaz de aproximar cada função alvo, que por outro lado torna propenso a overfitting. algoritmos evolucionários exigem que você faça um monte de opções de design para obter bons resultados, o mais difícil, provavelmente, sendo que modelo para otimizar. Mas EA é capaz de pesquisar através de espaços problema muito complexo (de forma a definir) e obter bons resultados rapidamente. AEs ainda pode ficar bem sucedida quando o problema (a função de destino) está mudando ao longo do tempo.

Máquina Livro de Aprendizagem do Tom Mitchell: http://www.cs.cmu.edu/~tom/mlbook.html

algoritmos evolucionários (EAS) são lentos, porque dependem de aprendizagem não supervisionada: EAs são informados de que algumas soluções são melhores do que outros, mas não como para melhorá-los. As redes neurais são geralmente mais rápido, sendo uma instância de aprendizagem supervisionada: eles sabem como fazer uma solução melhor usando gradiente descendente dentro de um espaço funcional sobre certos parâmetros; o que lhes permite chegar a uma solução válida mais rápido. As redes neurais são frequentemente utilizados quando não há conhecimento suficiente sobre o problema para outros métodos para trabalho.

Evolutionary algoritmos (EA) representam uma forma de treinar um modelo, onde, como redes neuronais (NN) são um modelo. Mais comumente toda a literatura, você vai achar que NNs são treinados usando o algoritmo backpropagation. Este método é muito atraente para os matemáticos, mas requer que você pode expressar a taxa de erro do modelo usando uma fórmula matemática. Este é o caso de situações em que você sabe lotes de valores de entrada e de saída para a função que você está tentando aproximar. Este problema pode ser modelado matematicamente, como a minimização de uma função perda, que pode ser alcançado graças ao cálculo (e é por isso que os matemáticos adorar).

Mas redes neuronais também são úteis para sistemas que tentam maximizar ou minimizar algum resultado modelagem, a fórmula de que é muito difícil de modelar matematicamente. Por exemplo, uma rede neuronal conseguia controlar os músculos de um cyborg para conseguir correr. Em cada intervalo de tempo diferente, o modelo teria para estabelecer a quantidade de tensão deve estar presente em cada um dos músculos do corpo do ciborgue, com base na entrada provenientes de vários sensores. É impossível fornecer tais dados de treinamento. EAs permitir a formação de apenas fornecendo uma forma de avaliação do modelo. Para o nosso exemplo, nós puniria caindo e recompensar a distância percorrida através de uma superfície (em um prazo fixo). EA seria apenas selecionar os modelos que fazem o seu melhor neste sentido. Primeiras gerações sugam mas, surpreendentemente, depois de algumas centenas de gerações, tais indivíduos alcançar muito movimentos "naturais" e conseguem correr sem cair. Esses modelos também podem ser capazes de lidar com obstáculos e forças físicas externas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top