Künstliche Intelligenz -> Evulotionäre/Genetische Algorithmen

Könnte jemand mich aufklähren, welche Vorteile und Nachteile hat die Gauß-Mutation im Vergleich zu Swap und Insert-Mutation?

http://fuzzy.cs.ovgu.de/ci/ea/ea2011_v04_operatoren.pdf, Seite 7.

Ich würde sagen, die Gaussian Mutation ist eine spezielle Form der Swap-, Revision- und Insertion-Mutation.

This operator adds a unit Gaussian distributed random value to the chosen gene. If it falls outside of the user-specified lower or upper bounds for that gene, the new gene value is clipped. This mutation operator can only be used for integer and float genes.
https://en.wikipedia.org/wiki/Mutation_(genetic_algorithm)

Bei genetischen Algorithmen geht es darum, einen Trad-Off zwischen Exploration und Exploitation zu finden. Eine kleinere gaußsche Standardabweichung bedeutet höhere Exploitation; eine größere gaußsche Standardabweichung bedeutet höhere Exploration. Die Gauß-Mutation „bettet die phänotypische Nachbarschaft mit (oder „besser“) ein.“

Einen (oder den) eindeutigen Vorteil kann ich auf die schnelle nicht finden.

Sooo tief bin ich da nicht drin, aber da das eine sehr spezielle Frage ist, die gleichzeitg sehr unspezifisch gestellt ist, ein paar cents:

Ich kenne nur einige Stichworte dazu, weil ich mal mit https://github.com/jenetics/jenetics rumgespielt habe (eine Library, die ich in vieler Hinsicht „gut“ finde - das ist recht selten). (Dass aus diesem „Rumspielen“ dann sogar ein Paper wurde, könnte ich erwähnen, um meinen Aussagen mehr Kredibilität zu verleihen, aber … das will ich nicht). Die Library hat passenderweise ja auch zwei Unterklassen von Mutator, nämlich SwapMutator und GaussianMutator. Die Dokumentation der Klassen ist sehr gut, und könnte die Frage schon zum Teil beantworten.

Die möglichen oder tatsächlichen Vor- und Nachteile hängen sicher auch davon ab, wie das Problem denn nun auf das „biologische Modell“ abgebildet wird, das da drunter liegt. In dieser Library sind die biologischen Konzepte grob so modelliert:

  • Ein „phenotype“ ist ein Element der Population
  • Jeder „phenotype“ ist demnach eine Kombination aus „genotype“ mit einer Fitness
  • Jeder „genotype“ besteht aus „chromosomes“
  • Jedes „chromosome“ besteht aus „genes“
  • Jedes „gene“ hat „alleles“

Das könnte sicher auch anders modelliert werden. Aber zwei mögliche Punkte könnten (meinem Verständnis nach) sein, dass

  • mit der „Swap“-Mutation (vielleicht (!), je nach Modellierung) nicht alle Ergebnisse/Zustände erreicht werden können
  • die Gauß’sche Mutation nur angewendet hat, wenn man numerische Gene hat

Ganz grob und mit vielen Vorbehalten: Wenn man sich vorstellt, dass eines der oben genannten Konzepte auf irgendeiner Ebene einfach ein double-Wert ist, dann könnte man mit vielen Swaps auf der Folge der 64 bits, aus denen das Ding besteht, sicher erreichen, dass dieser Double-Wert mal 0.1, mal 0.2 und mal 0.3 repräsentiert. Aber sehr, sehr oft wäre der Wert irgendwas wie 1.234e23, oder +Infinity, und sehr oft auch NaN oder schlicht irgendwas denormalisiertes. Wenn im Rahmen dieser Optimierung letztendlich nur ~„an einem (numerischen!) Wert rumgewackelt“ werden soll, wäre ein +/- someRandomValue demnach viel zielgerichteter, um diese „Exploration des Zustandsraums“ einigermaßen systematisch ablaufen zu lassen. Zumindest mehr als mit random-swaps auf Bitfolgen.

Ich danke dir, mir wurde echt sehr geholfen-