Por que os algoritmos genéticos não são usados ​​para otimizar redes neurais?


13

Pelo meu entendimento, os algoritmos genéticos são ferramentas poderosas para otimização multiobjetivo.

Além disso, o treinamento de redes neurais (especialmente as profundas) é difícil e tem muitos problemas (funções de custo não convexas - mínimos locais, gradientes de fuga e explosão etc.).

Também sou conceitualmente que treinar um NN com o GA é viável. Fiquei me perguntando, por que eles não são usados ​​na prática? É uma questão de desempenho?

Respostas:


5

O treinamento de redes neurais (NNs) com algoritmos genéticos (GAs) não é apenas viável, existem algumas áreas de nicho em que o desempenho é bom o suficiente para ser usado com freqüência. Um bom exemplo disso é a Neuroevolução de topologias aumentadas ou NEAT , uma abordagem bem-sucedida para gerar controladores em ambientes simples, como jogos.

No caso mais geral, porém, a abordagem não se adapta bem a redes grandes e profundas com muitos parâmetros a serem ajustados.

Os algoritmos genéticos e outras pesquisas globais por parâmetros ideais são robustos de uma maneira que os algoritmos baseados em gradiente não são. Por exemplo, você pode treinar um NN com ativações da função step ou qualquer outra função de ativação não diferenciável. Eles têm fraquezas em outros lugares. Uma coisa relevante no caso dos GAs usados ​​para RNs é que os parâmetros de peso são intercambiáveis ​​em algumas combinações, mas fortemente co-dependentes em outras combinações. A fusão de duas redes neurais igualmente boas com parâmetros diferentes - o que você faria no cruzamento em um GA - normalmente resultará em uma terceira rede com desempenho ruim. O sucesso da NEAT é parcialmente encontrar uma maneira de resolver esse problema "aumentando" as conexões da NN e combinando-as entre redes neurais semelhantes.

As abordagens baseadas em gradiente são muito mais eficientes. Em geral, e não apenas no domínio de NNs, se você puder calcular o gradiente de uma função com relação aos parâmetros, poderá encontrar parâmetros ideais mais rapidamente do que a maioria das outras técnicas de otimização. Um gradiente preciso garante pelo menos uma pequena melhoria de uma única avaliação, e a maioria dos outros otimizadores se enquadra em um paradigma de geração e repetição que não pode oferecer esse tipo de garantia. A fraqueza de tentar encontrar ótimas locais acabou não sendo um grande obstáculo para as funções de perda em NNs, e foi enfrentada com algum grau de sucesso usando extensões para a descida básica do gradiente, como momento, RPROP, Adam etc.

Na prática, em uma grande rede de várias camadas, os métodos de gradiente são ordens de magnitude provavelmente mais rápidas que as pesquisas no GA, como a NEAT, para encontrar parâmetros de rede. Você não encontrará CNNs treinadas pelo GA que resolvam o ImageNet, ou mesmo o MNIST, onde o GA encontrou os pesos da rede sem ajuda. No entanto, os AGs, ou pelo menos algumas variantes deles, não são 100% descartados. Por exemplo, este blog de 2017 analisa artigos recentes, incluindo Evolução em Grande Escala de Classificadores de Imagem, que explora o uso de GAs para descobrir hiperparâmetros NN, uma tarefa importante no aprendizado de máquina e não muito tratável usando métodos baseados em gradiente.


1

Na verdade, o Google Brain já fez algo semelhante para classificadores de imagem

Ainda assim, suas pesquisas usam retropropagação para treinar redes, mas usam algoritmos genéticos para encontrar uma boa arquitetura. Mais uma coisa a mencionar: para obter o melhor modelo - era necessário uma enorme quantidade de poder computacional.

Eles publicaram o primeiro artigo em 2017 e em 2018 receberam uma versão melhorada . Você pode ler sobre isso em sua postagem no blog

Há outra pesquisa para pesquisa de arquitetura de rede, mas eles usam otimização bayesiana em vez de algoritmos genéticos

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.