Backpropagation vs Algorithm Genetic para treinamento em Redes Neurais

34

Eu li alguns artigos discutindo prós e contras de cada método, alguns argumentando que o GA não melhora nenhuma a solução ideal, enquanto outros mostram que é mais eficaz. Parece que o GA é geralmente preferido na literatura (embora a maioria das pessoas o modifique de alguma maneira para alcançar os resultados de que precisam), então por que a maioria das soluções de software parece usar apenas a retropropagação?

Existe alguma regra geral quando usar um ou outro? Talvez dependa do tipo de NN ou exista alguma solução de ponta que geralmente supera outras?

Se possível, estou procurando respostas gerais: "se o NN é enorme, o GA é melhor" ou "o GA é sempre melhor, mas tem problemas de desempenho computacional" etc.

sashkello
fonte

Respostas:

23

Se você olhar atentamente a literatura científica, encontrará resultados contrastantes. Obviamente, em alguns casos, o GA (e mais em geral, algoritmos evolutivos) pode ajudá-lo a encontrar um projeto NN ideal, mas normalmente eles têm muitas desvantagens (ajuste dos parâmetros do algoritmo, complexidade computacional etc.) e seu uso não é viável para real- aplicações mundiais. É claro que você pode encontrar um conjunto de problemas em que o GA / EAs é sempremelhor do que a retropropagação. Dado que encontrar um projeto ideal de NN é um problema complexo de otimização multimodal, os GA / EAs podem ajudar (como meta-heurísticas) a melhorar os resultados obtidos com algoritmos "tradicionais", por exemplo, usando GA / EAs para encontrar apenas a configuração inicial de pesos ou ajudar os algoritmos tradicionais a escapar dos mínimos locais (se você estiver interessado, escrevi um artigo sobre este tópico).

Eu trabalhei muito nesse campo e posso dizer que há muitos trabalhos científicos sobre AG / EAs aplicados a RNs porque eles são (ou melhor, costumavam ser) um campo de pesquisa emergente.

Matteo De Felice
fonte
2
Isso é algo que eu também inventei recentemente - primeiro encontre a solução 'boa' e depois a melhore ainda mais com o GA. Não só aplicável a NNs, mas otimização em geral ...
sashkello
11
Estou confuso por que eles são mutuamente exclusivos. Eu pensei que o GA deveria aprender a estrutura; Backpropagation só pode aprender os pesos
pete
8

Um dos principais problemas das redes neurais é o ajuste excessivo, o que significa que algoritmos que se esforçam muito para encontrar uma rede que minimiza algum critério com base em uma amostra finita de dados terminam em uma rede que funciona muito bem para essa amostra específica de dados, mas que terão pouca generalização. Sou bastante cauteloso ao usar os GAs para projetar redes neurais por esse motivo, especialmente se eles otimizam a arquitetura ao mesmo tempo em que otimizam os pesos. Geralmente, descobri que as redes de treinamento (com regularização) de um número (digamos 20) de vetores iniciais aleatórios de peso e a formação de um conjunto de todas as redes resultantes são geralmente uma abordagem tão boa quanto qualquer outra.

Essencialmente, a otimização é a raiz de todos os males do aprendizado de máquina. Quanto mais você pratica, maior a probabilidade de acabar supercondicionando os dados.

Dikran Marsupial
fonte
Dikran, embora o GA faça a seleção natural, mas não ignore as informações como você mencionou, apenas garante que a solução selecionada resolva o problema, caso contrário, descubra o motivo e atualize o agoritmo que forma a base do dinamismo até a rede convergem em uma ou duas melhores soluções. espero que você entenda isso?
convergir para a melhor solução avaliada em uma amostra finita de dados é exatamente o que causa o excesso de ajuste. Para evitar o excesso de ajustes, você deseja convergir para uma solução que não é a melhor (por exemplo, parada precoce no treinamento de redes neurais). Os GAs não são melhores do que qualquer outra forma de otimização no ajuste de redes neurais; você precisa evitar a otimização excessiva do critério de treinamento.
Dikran Marsupial 15/09/14
5

Sempre que você lida com grandes quantidades de dados e deseja resolver uma tarefa de aprendizado supervisionado com uma rede neural de feed-forward, soluções baseadas em retropropagação são muito mais viáveis. A razão para isso é que, para uma rede neural complexa, o número de parâmetros livres é muito alto. Um projeto da indústria em que estou trabalhando atualmente envolve uma rede neural de feed-forward com cerca de 1000 entradas, duas camadas ocultas com 384 neurônios cada e 60 saídas. Isso leva a 1000 * 384 + 384 * 384 + 384 * 60 = 554496 parâmetros de peso que devem ser otimizados. Usar uma abordagem de GA aqui seria terrivelmente lenta.

Schreon
fonte
Meu entendimento é que o GA foi projetado para resolver problemas que são mais difíceis de resolver com abordagens padrão. Não deveria ter um desempenho melhor exatamente em uma situação que você descreveu?
Sashkello
2
Eu pensei que o GA deveria ser usado para descobrir qual estrutura é, por exemplo, quantas camadas ocultas e como elas estão conectadas. Backpropagation só pode descobrir os pesos
pete
2

A segunda resposta está errada. A super adaptação não é causada pela otimização. A adaptação excessiva acontece quando o modelo é muito complicado e pode caber em todos os pontos de dados sem aprender a regra real que os criou (por exemplo, apenas memorizá-los, no caso extremo). Existem várias maneiras de evitar a adaptação excessiva, como escolher modelos mais simples, desistências, dropconnect, redução de peso e apenas usando mais dados. O objetivo deve ser otimizar sua rede e torná-la a mais precisa possível, levando em conta essas restrições.

Para responder à pergunta, o backprop é supostamente muito mais rápido que a otimização estocástica (algoritmos genéticos e afins.) Meu palpite é que isso porque ele tira vantagem do que a saída real deveria ser, ajusta os pesos na direção certa com base nisso. , onde a otimização estocástica tenta alterações completamente aleatórias e ignora essas informações.

No entanto, ao explorar uma área maior, os GAs provavelmente terão melhor desempenho a longo prazo, evitando as optimas locais, e levará mais tempo para treinar.

Estou curioso para saber quanto GAs são mais lentos do que o backprop e se alguém conhece algoritmos híbridos (a pesquisa de dispersão parece ser o ideal para isso).

Houshalter
fonte
11
Discordo do seu primeiro parágrafo. O excesso de ajuste é evitado principalmente por meio de abordagens de regularização no problema de treinamento . Se você começar a meta-otimização - isso está solucionando muitos problemas de treinamento (por exemplo, ajustando os parâmetros do kernel, arquiteturas de rede, ...) - cuidar do ajuste excessivo se torna muito mais difícil e certamente não é mais garantido implicitamente.
Marc Claesen
Se o ajuste excessivo não fosse causado pela otimização, a parada precoce não seria um remédio eficaz para o ajuste excessivo.
Dikran Marsupial 10/01
1

A diferença entre o GA e a retropropagação é que o AG é baseado em números aleatórios e que a retropropagação é baseada em um algoritmo estático, como a descida do gradiente estocástico. A GA baseada em números aleatórios e adicionada a essa mutação significa que provavelmente evitaria ser pego em mínimos locais. Porém, o GA baseado em números aleatórios significa que é bastante provável que, por 2 vezes diferentes, você execute o aprendizado na mesma rede, pode chegar a uma conclusão diferente, ou seja, um conjunto diferente de pesos

user4433437
fonte
Apenas comentando, também usamos init aleatório. para os pesos em back-prop. Se usarmos a mesma semente durante a inicialização, ela levará à mesma solução, mas se você não usar, provavelmente não. Portanto, back-prop também depende de uma entrada aleatória. Ao corrigir a semente, você também terá o mesmo resultado no algoritmo genético, pois ele usará a mesma seq. de números novamente.
gunes