Por que o cross-over faz parte dos algoritmos genéticos?


8

Algoritmos genéticos chamaram minha atenção recentemente ao tentar corrigir / melhorar os oponentes do computador para jogos de estratégia baseados em turnos.

Eu implementei um algoritmo genético simples que não usava nenhum cruzamento, apenas alguma mutação aleatória. Pareceu funcionar neste caso, e então comecei a pensar:

Por que o cross-over faz parte dos algoritmos genéticos? A mutação não seria suficiente?

Isso é de um despejo de dados em um site antigo de IA. O autor da questão tinha o UID de 7.

Respostas:


7

A mutação é geralmente definida como um operador global , ou seja, a mutação iterada é (eventualmente) capaz de atingir todos os pontos no espaço vetorial definido pelo genoma. Nesse sentido, a mutação sozinha é certamente 'suficiente'.

Com relação à motivação para o crossover - de Essentials of Metaheuristics , p42 :

O crossover foi originalmente baseado na premissa de que indivíduos altamente aptos geralmente compartilham certas características, chamadas de blocos de construção , em comum. Por exemplo, no indivíduo booleano 10110101, talvez *** 101 * 1 possa ser um componente básico

(onde * significa "0 ou 1")

Portanto, a idéia é que o crossover funcione, espalhando rapidamente os blocos de construção por toda a população.

Os métodos de cruzamento também assumem que existe algum grau de ligação entre os genes no cromossomo: ou seja, as configurações de certos genes nos grupos estão fortemente correlacionadas à melhoria da aptidão. Por exemplo, os genes A e B podem contribuir para a aptidão apenas quando ambos estão definidos como 1: se um estiver definido como 0, o fato de o outro estar definido como 1 não fará nada.

Observe também que o crossover não é um operador global . Se o único operador for crossover, então (também da p42):

Eventualmente, a população converge, e freqüentemente (infelizmente) converge prematuramente, para cópias do mesmo indivíduo. Nesta fase, não há escapatória: quando um indivíduo passa por si mesmo, nada de novo é gerado.

Por esse motivo, o crossover é geralmente usado junto com algum operador de mutação global.


5

O cruzamento permite combinar dois pais (vs. mutação, que usa apenas um pai). Em alguns casos, é útil (por exemplo, se você treina um bot de FPS, se um dos pais é bom em fotografar e outro é bom em movimento, faz sentido combiná-los). Em alguns outros casos, não é.


4

Ao pensar em crossover, é importante pensar sobre o cenário do fitness.

Considere um cenário hipotético em que estamos aplicando um algoritmo genético para encontrar uma solução com bom desempenho em duas tarefas. Isso pode ser do exemplo de Franck (mover e disparar) para uma IA, ou talvez possam ser previstas duas saídas em um cenário de aprendizado de máquina genético, mas, na verdade, a maioria dos cenários em que os GAs são aplicados são sinônimos (mesmo na solução de uma única tarefa, pode haver aspectos diferentes da tarefa a ser abordada).

Suponhamos que tivéssemos um indivíduo, 1, com desempenho razoável em ambas as tarefas, e descobrimos uma série de mutações que produziram 2 novos indivíduos, 2 e 3, que tiveram um desempenho melhor que o indivíduo 1 nas tarefas 1 e 2, respectivamente. Agora, embora ambas sejam aprimoramentos, idealmente, queremos encontrar uma solução geralmente boa; portanto, queremos combinar os recursos que consideramos benéficos.

É aqui que entra o crossover; combinando os genomas dos indivíduos 2 e 3, podemos encontrar um novo indivíduo que produza uma mistura de suas performances. Embora seja possível que esse indivíduo possa ser produzido por uma série de mutações aplicadas ao Indivíduo 2 ou Indivíduo 3, a paisagem pode simplesmente não se adequar a isso (pode não haver mutações favoráveis ​​nessa direção, por exemplo).

insira a descrição da imagem aqui

Você está parcialmente certo, portanto; às vezes pode ser que os benefícios do crossover possam ser replicados com uma série de mutações. Às vezes, esse pode não ser o caso, e o crossover pode suavizar o cenário de condicionamento físico do seu GA, acelerando a otimização e ajudando seu GA a escapar dos ideais locais.


Se (como deve ser o caso) o operador de mutação é global (ou seja, capaz de expressar todos os pontos no espaço de pesquisa), é sempre possível expressar os resultados do cruzamento através de (alguma sequência de) mutações. No entanto (conforme minha resposta), o inverso não é o caso.
NietzscheanAI

Isso é verdade, eu apenas quis ilustrar o ponto feito por você e Franck com um exemplo :)
Tim Atkinson

Exemplos são sempre bom - I deve incluir mais deles ;-)
NietzscheanAI
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.