Quando devo usar algoritmos genéticos em oposição às redes neurais? [fechadas]

139

Existe uma regra de ouro (ou conjunto de exemplos) para determinar quando usar algoritmos genéticos em oposição às redes neurais (e vice-versa) para resolver um problema?

Eu sei que existem casos em que você pode ter os dois métodos misturados, mas estou procurando uma comparação de alto nível entre os dois métodos.

Neil N
fonte
3
Vale ressaltar que existem dois tipos de redes neurais - supervisionadas e não supervisionadas. Os supervisionados obtêm dados de treinamento de um feedback humano não supervisionado e são mais como AGs nesse sentido.
Chris S
3
Eu não acho que seja "lista-y". As respostas comparam dois métodos e esclarecem quando usar um vs o outro.
Neil N
Resposta curta: use o GA quando a função a ser modelada não for contínua / discreta ou quando o conjunto de dados for astronomicamente de alta dimensão. Use redes neurais ou GA (ou outro modelo) para o resto, dependendo do que lhe der os melhores resultados. Para mais informações sobre, veja a minha resposta aqui: stackoverflow.com/a/49684833/1121352
gaborous

Respostas:

130

Da wikipedia:

Um algoritmo genético (GA) é uma técnica de pesquisa usada na computação para encontrar soluções exatas ou aproximadas para otimização e problemas de pesquisa.

e:

As redes neurais são ferramentas de modelagem de dados estatísticos não lineares. Eles podem ser usados ​​para modelar relacionamentos complexos entre entradas e saídas ou para encontrar padrões nos dados.

Se você tiver um problema em que possa quantificar o valor de uma solução, um algoritmo genético poderá executar uma pesquisa direcionada no espaço da solução. (Por exemplo, encontre a rota mais curta entre dois pontos)

Quando você tem vários itens em classes diferentes, uma rede neural pode "aprender" a classificar itens que não havia "visto" antes. (Por exemplo, reconhecimento facial, reconhecimento de voz)

Os tempos de execução também devem ser considerados. Um algoritmo genético leva muito tempo para encontrar uma solução aceitável. Uma rede neural leva muito tempo para "aprender", mas pode quase instantaneamente classificar novas entradas.

Dawie Strauss
fonte
13
Eu só quero adicionar um pouco à definição do GA. Às vezes, as pessoas pensam no espaço da solução de um problema do GA como um conjunto de estados ou valores. Como "Encontre todas as maneiras pelas quais um conjunto de quatro peças de xadrez pode ser organizado em um tabuleiro de xadrez para criar um xeque-mate". No entanto, o espaço da solução também pode ser um conjunto de algoritmos. É aqui que o verdadeiro poder dos algoritmos genéticos entra em jogo. Eles ajudam você a responder a uma pergunta como "Encontre uma sequência de movimentos com um determinado conjunto de peças de xadrez que resultem em um xeque-mate".
Lfalin 13/03/2014
44

Um algoritmo genético (apesar do nome sexy) é, para a maioria dos propósitos, uma técnica de otimização . Isso se resume principalmente a você ter um número de variáveis ​​e querer encontrar a melhor combinação de valores para essas variáveis. Apenas empresta técnicas da evolução natural para chegar lá.

Redes neurais são úteis para reconhecer padrões . Eles seguem um modelo simplista do cérebro e, alterando vários pesos entre eles, tentam prever resultados com base em entradas.

São duas entidades fundamentalmente diferentes, mas às vezes os problemas que eles são capazes de resolver se sobrepõem.

zenna
fonte
22
As redes neurais são apenas uma técnica de interpolação, na verdade. :)
Don Reba
3
+1 para algoritmos genéticos (otimização) e redes neurais (aprendizado supervisionado) não tem quase nada em comum.
alfa
2
O único elemento comum é que eles se reorganizam dinamicamente quando se aproximam de um objetivo.
22814 lfalin
1
Não tenho certeza se há sobreposição, realmente. As redes neurais são um modelo com uma função de custo, os GA são uma técnica de otimização que pode ser usada para minimizar essa função de custo, como disse @zenna.
Matthieu Brucher
37

Os GAs geram novos padrões em uma estrutura que você define.

As NNs classificam (ou reconhecem) os padrões existentes com base nos dados de treinamento que você fornece.

Os GAs têm bom desempenho na busca eficiente de um grande espaço de estado de soluções e na convergência de uma ou mais boas soluções, mas não necessariamente a 'melhor' solução.

Os RN podem aprender a reconhecer padrões (via treinamento), mas é notoriamente difícil descobrir o que aprenderam, ou seja, extrair o conhecimento deles depois de treinado e reutilizá-lo em outro (não RN).

Steven A. Lowe
fonte
26

Você está comparando duas coisas totalmente diferentes aqui.

Redes neurais são usadas para regressão / classificação - dado um conjunto de exemplos (x, y), você deseja regredir o y desconhecido para um determinado x.

Algoritmos genéticos são uma técnica de otimização. Dada uma função f (x), você deseja determinar o x que minimiza / maximiza f (x).

bayer
fonte
10
De fato. São realmente técnicas "ortogonais". Você pode usar um GA para encontrar pesos de rede neural e / ou arquitetura.
Redcalx
23

Existem muitas semelhanças entre eles, então tentarei apenas descrever suas diferenças .

Redes neurais

São capazes de analisar padrões online (aqueles que mudam com o tempo). Geralmente, essa é uma amostra com variação temporal que precisa ser correspondida e prevista.

Exemplos :

  • Extrapolação de gráfico
  • Reconhecimento facial

Algorítmos genéticos

Usado quando você pode codificar atributos que você acha que podem contribuir para um problema específico que não muda. A ênfase está em ser capaz de codificar esses atributos (às vezes você sabe o que são) e que o problema é em grande parte imutável (caso contrário, as evoluções não convergem).

Exemplos :

  • Programação de aviões / expedição
  • Horários.
  • Encontrando as melhores características para um agente simples em um ambiente artificial
  • Renderizando uma aproximação de uma imagem com polígonos aleatórios
Desconhecido
fonte
8

Os algoritmos genéticos (geralmente) funcionam com dados discretos (enumerações, intervalos inteiros etc.). Um aplicativo típico para os GAs está pesquisando em um espaço discreto uma solução "suficientemente boa" quando a única alternativa disponível é uma pesquisa de força bruta (avaliando todas as combinações).

As redes neurais, por outro lado, (geralmente) trabalham com dados contínuos (flutuadores, etc.). Uma aplicação típica para NNs é a aproximação de funções, onde você tem um conjunto X de entradas e um conjunto Y de saídas relacionadas, mas a função analítica f: X → Y.

Obviamente, existem milhares de variantes de ambos, portanto a linha entre eles é um pouco borrada.

nbro
fonte
5

Não existe uma regra de ouro. Em muitos casos, você pode formular seu problema para fazer uso de qualquer um deles. O aprendizado de máquina ainda é uma área ativa de pesquisa e qual modelo de aprendizado usar pode ser discutível.

Os GAs adotam linguagens sensuais da evolução, mas você está esperando o computador encontrar uma solução através de um processo aleatório. Estude seus dados, faça boas suposições, tente saber o que deseja e escolha uma abordagem que possa fazer bom uso delas. Se a sua primeira escolha der maus resultados, saiba por que foi assim e melhore o próprio algoritmo ou escolha um melhor.

inclinar
fonte