Glossário

Algoritmos evolutivos

Descobre como os algoritmos evolutivos optimizam as soluções de IA e ML, desde a afinação de hiperparâmetros à robótica, utilizando estratégias inspiradas na natureza.

Treina os modelos YOLO simplesmente
com Ultralytics HUB

Aprende mais

Os algoritmos evolutivos são um subconjunto da aprendizagem automática e da inteligência artificial, inspirados no processo de seleção natural e de evolução. Estes algoritmos são utilizados para resolver problemas de otimização complexos, melhorando iterativamente uma população de soluções candidatas ao longo de gerações. Imitando a evolução biológica, empregam mecanismos como a seleção, a mutação e o cruzamento para desenvolver soluções para um problema.

Conceitos fundamentais dos algoritmos evolutivos

No coração dos Algoritmos Evolutivos estão vários conceitos-chave emprestados da biologia:

  • População: Um conjunto de soluções candidatas para o problema em causa, muitas vezes representadas como cadeias de bits ou números reais. Esta população inicial pode ser gerada aleatoriamente ou semeada com heurísticas.
  • Função de aptidão: Esta função avalia cada solução candidata na população, atribuindo uma pontuação de 'aptidão' que indica o quão bem ela resolve o problema. O objetivo do Algoritmo Evolutivo é maximizar ou minimizar esta pontuação de aptidão.
  • Seleção: Com base na sua aptidão, algumas soluções candidatas são escolhidas para se tornarem "pais" da geração seguinte. As soluções com maior pontuação de aptidão têm maior probabilidade de serem selecionadas, imitando a "sobrevivência do mais apto". Existem vários métodos de seleção, como a seleção por roleta ou a seleção por torneio.
  • Cruzamento (Recombinação): Os pais trocam informações genéticas para criar novos descendentes, simulando a reprodução biológica. Este processo combina caraterísticas de diferentes soluções na esperança de criar soluções ainda melhores. Uma técnica comum de crossover é o crossover de ponto único ou o crossover de dois pontos.
  • Mutação: Para manter a diversidade e explorar novas partes do espaço de soluções, são introduzidas alterações aleatórias (mutações) na descendência. Isto evita a convergência prematura e ajuda a escapar aos óptimos locais. A mutação por inversão de bits ou a mutação gaussiana são exemplos típicos.
  • Gerações: O processo iterativo de seleção, cruzamento e mutação é repetido ao longo de muitas gerações. Em cada geração, a população evolui para melhores soluções. O algoritmo normalmente termina após um número fixo de gerações ou quando uma solução satisfatória é encontrada.

Estes componentes trabalham em conjunto num ciclo. Começando com uma população inicial, o algoritmo avalia a aptidão de cada solução, seleciona os indivíduos mais aptos, permite-lhes reproduzir-se (cruzamento), introduz variações aleatórias (mutação) e forma uma nova geração. Este ciclo repete-se, melhorando gradualmente a aptidão média da população e, idealmente, encontrando uma solução óptima ou quase óptima.

Aplicações dos algoritmos evolutivos na IA

Os algoritmos evolutivos são versáteis e têm sido aplicados a uma vasta gama de problemas no domínio da inteligência artificial e da aprendizagem automática:

  • Afinação de hiperparâmetros: Na aprendizagem automática, o desempenho do modelo depende em grande medida dos hiperparâmetros. Os algoritmos evolutivos podem pesquisar eficientemente o espaço dos hiperparâmetros para encontrar configurações óptimas para modelos como Ultralytics YOLOv8 , melhorando métricas como a precisão média (mAP). Ferramentas como o Ray Tune podem ser usadas para automatizar esse processo, aproveitando estratégias evolutivas para navegar em paisagens complexas de hiperparâmetros.
  • Pesquisa de Arquitetura Neural (NAS): A conceção de arquitecturas de redes neuronais eficazes pode ser morosa e exigir conhecimentos especializados. A Pesquisa de Arquitetura Neural (NAS) utiliza Algoritmos Evolutivos para automatizar o processo de conceção, explorando diferentes estruturas de rede e ligações para descobrir arquitecturas que atinjam um elevado desempenho para tarefas específicas. Por exemplo, os modelos YOLO-NAS são produtos de técnicas NAS, fornecendo capacidades de deteção de objectos de última geração.
  • Seleção e engenharia de caraterísticas: Os algoritmos evolutivos podem ser utilizados para selecionar as caraterísticas mais relevantes de um conjunto de dados, melhorando a eficiência do modelo e reduzindo o sobreajuste. Também podem ser utilizados na engenharia de caraterísticas para criar caraterísticas novas e mais informativas que melhorem a precisão do modelo.
  • Robótica e controlo: Na robótica, os algoritmos evolutivos podem otimizar a conceção de robôs, os sistemas de controlo e o planeamento de movimentos. Por exemplo, podem ser utilizados para desenvolver controladores para que os robôs naveguem em ambientes complexos ou executem tarefas específicas, contribuindo para os avanços na robótica e na automação.
  • Problemas de otimização: Para além da aprendizagem automática, os Algoritmos Evolutivos são eficazes na resolução de vários problemas de otimização, tais como agendamento, encaminhamento e atribuição de recursos. São particularmente úteis quando o espaço de pesquisa é grande e complexo, e os métodos de otimização tradicionais podem ter dificuldades.

Algoritmos evolutivos vs. métodos baseados em gradientes

Embora tanto os algoritmos evolutivos como os métodos baseados em gradientes, como o Gradient Descent, sejam utilizados na aprendizagem automática, diferem significativamente na sua abordagem. Os métodos baseados em gradientes baseiam-se no cálculo de gradientes para ajustar iterativamente os parâmetros do modelo na direção da minimização de uma função de perda. São altamente eficientes para problemas em que os gradientes podem ser calculados, como o treino de redes neuronais.

Os algoritmos evolutivos, por outro lado, são métodos de otimização sem derivadas. Não requerem informação sobre o gradiente e são mais adequados para problemas em que os gradientes são difíceis ou impossíveis de calcular, ou quando a função objetivo é não diferenciável ou descontínua. Também são eficazes na exploração de espaços de pesquisa mais amplos e na fuga de óptimos locais, o que pode ser um desafio para os métodos baseados em gradientes. No entanto, os Algoritmos Evolutivos podem ser computacionalmente mais dispendiosos, especialmente para problemas de elevada dimensão, uma vez que requerem frequentemente a avaliação de uma grande população ao longo de muitas gerações.

Conclusão

Os algoritmos evolutivos oferecem uma abordagem poderosa e flexível para resolver problemas de otimização complexos em IA e aprendizagem automática. Inspirados na evolução natural, proporcionam uma estrutura robusta para explorar vastos espaços de solução e encontrar soluções eficazes, particularmente em cenários em que as técnicas de otimização tradicionais são insuficientes. À medida que a IA continua a avançar, espera-se que os algoritmos evolutivos desempenhem um papel cada vez mais importante na resolução de problemas difíceis em vários domínios, desde a otimização de modelos de aprendizagem automática até à conceção de sistemas complexos e muito mais. Para saber mais sobre conceitos de IA relacionados, explora o abrangente GlossárioUltralytics .

Lê tudo