Come facciamo a sapere che la prossima generazione sarà migliore?


32

Sono stato recentemente introdotto negli algoritmi genetici da questo articolo di MSDN , in cui li chiama evoluzione combinatoria, ma sembra essere la stessa cosa e sto lottando per capire come combinare due potenziali soluzioni produrrà sempre una nuova soluzione che è almeno buono come i suoi genitori.

Perché è così? Sicuramente combinare potrebbe produrre qualcosa di peggio.

Per quanto ho capito, l'algoritmo si basa sul concetto che quando un maschio e una femmina di una specie producono prole, quelle prole avranno le caratteristiche di entrambi i genitori. Alcune combinazioni saranno migliori, altre peggiori e altre altrettanto buone. Quelli che sono migliori (per qualsiasi definizione di "migliore" sia appropriata) hanno maggiori possibilità di sopravvivere e produrre discendenti che hanno le caratteristiche migliorate. Tuttavia, ci saranno combinazioni più deboli. Perché questo non è un problema con GA?


12
However, there will be combinations that are weaker. Why isn't this an issue with GA?- Perché le combinazioni più deboli vengono scartate.
Robert Harvey,

6
Sappiamo che la prossima generazione non sarà peggio perché non buttiamo via quelli buoni ma buttiamo via quelli cattivi. E c'è una ragionevole possibilità che combinare alcuni di quelli buoni ne faccia uno ancora migliore, ma non è garantito.
user253751

7
Why isn't this an issue with GA?Beh, lo è, o più esattamente, potrebbe essere. Uno dei molti (molti) parametri da ottimizzare con GA è la dimensione della popolazione: se è troppo basso, potresti produrre solo individui più deboli, ma se è troppo alto, il tempo di calcolo associato alla funzione di fitness potrebbe essere troppo alto.
Loufylouf,

3
È una differenza tra allevamento e diserbo : la fase riproduttiva può (produrrà) progenie peggiori, ma la fase diserbo eliminerà (dovrebbe) le peggiori prestazioni prima della fase riproduttiva successiva.
TripeHound,

Grazie a tutti voi. Se ho capito bene, è stato il modo in cui l'ha definito nell'articolo che mi ha buttato giù dalle tracce. Ha detto " Il nuovo, presumibilmente molto buono, Organismo infantile sostituisce un povero Organismo " che ha sollevato la mia domanda. Sembra che fosse sbagliato :)
Avrohom Yisroel,

Risposte:


43

Un algoritmo genetico cerca di migliorare ad ogni generazione abbattendo la popolazione. Ogni membro viene valutato in base a una funzione di fitness e solo una parte di punteggio elevato può riprodurre.

Hai ragione, però: non vi è alcuna garanzia che la prossima generazione migliorerà sul punteggio del suo predecessore.

Considera il programma donnole di Dawkins : "evolvere" la corda "Methinks it is like a weasel". A partire da una popolazione di stringhe casuali, la funzione di fitness valuta la corrispondenza testuale più vicina, che è perturbata per produrre la generazione successiva. Con una semplice riproduzione crossover, due stringhe con punteggio elevato che sono combinate potrebbero facilmente produrre una prole con punteggio più basso. Anche una mutazione casuale "asessuata" di una singola corda ad alta forma fisica potrebbe ridurre la forma fisica del bambino.

Vale la pena notare, penso, che questo non è necessariamente un difetto. Con questo tipo di ricerca, c'è l'idea dei massimi locali . Un membro della popolazione potrebbe rappresentare una soluzione che non è il risultato ottimale, ma è il migliore che può essere raggiunto senza peggiorare la strada.

Immagina che la funzione fitness per il programma donnola non solo trovi la distanza di modifica, ma abbia una nozione di "parola" e verifica se l'ultima parola della stringa è il nome di un animale. Qualsiasi nome di animale "weasel"ottiene un buon punteggio, ma ottiene un grande bonus.

Ora cosa succede se "Methinks it is like a walrus"si evolve? Segna bene. Non così come la stringa target finale, ma migliore "Methinks it is like a walrut"o altre variazioni vicine che potrebbero essere raggiunte da un singolo passaggio di mutazione.

La stringa di tricheco è un massimo locale e la ricerca può rimanere bloccata lì a meno che il programma non consenta di peggiorare il punteggio della prossima generazione.


1
Rilevante: youtube.com/watch?v=YT1vXXMsYak - la dimostrazione del programma per computer di Dawkin è a circa 12 minuti, anche se vale la pena guardare l'intera lezione in quanto descrive le basi teoriche di base su cui è l'evoluzione (sia biologica che simulata) messa a terra.
Periata Breatta,

24
In effetti, a volte consentirai a una certa percentuale di membri con punteggio più debole di sopravvivere al fine di aumentare la "diversità genetica", oltre a introdurre mutazioni completamente casuali che non si basano su alcun membro esistente.
Jörg W Mittag,

@JoshCaswell Grazie per questo. Sebbene tutte le risposte siano state eccellenti, lo segnerò come accettato in quanto copre tutto ciò che ho chiesto e un paio di cose che non avevo ancora chiesto!
Avrohom Yisroel,

Sono contento di aver potuto aiutare, @AvrohomYisroel
Josh Caswell il

6

Non sappiamo che andrà meglio, sappiamo che non peggiorerà.

In ogni generazione, non consiste solo nell'ospring degli elementi migliori, ma include anche gli elementi migliori stessi, se lo desideri cloni. Dato che sono ancora presenti, avranno lo stesso punteggio di prima. Ciò significa che se nessuna delle progenie è migliore, i vincitori delle generazioni precedenti vinceranno di nuovo - e saranno ri-mutati / riprodotti.

Considera: con un individuo progenitore che è una lettera, ad es. A Un bambino mutato è definito aggiungendo un numero A1, ad esempio , le soluzioni cross-bread sono scritte con parentesi attorno al genitore, ad esempio, (A1B2) e il nucleo di fitness di ogni singolo scritto scritto dopo di esso - più alto è meglio[12]

Per dimostrazione, prendi in considerazione un pool di 5, in cui manteniamo il migliore 2. e riempiamo con 1 mutazione di ciascuno, più un incrocio

Generazione 1

  • A [10]
  • B [5]
  • C [4]
  • D [3]
  • E [1]

Mantieni A, Bpoiché sono i due migliori, e riempi altri 3 slot con i discendenti

Seconda generazione

  • A [10]
  • B [5]
  • (AB) [7]
  • A1 [12]
  • B1 [4]

Mantieni Ae (AB), dato che sono i migliori 2 - Questo significa che il nonno Asarà ancora in piscina poiché la maggior parte dei bambini lavora più debole

Terza generazione

  • A [10]
  • (AB) [12]
  • (A(AB)) [14]
  • A2 [8]
  • (AB)1 [13]

Keep (AB)1e (A(AB))- questa volta non sono stati mantenuti i nonni, poiché due dei loro figli li hanno picchiati. Ma se (AB1)si fosse comportato in modo leggermente peggiore, saremmo (AB)invece rimasti .

Questo continua fino a quando il punteggio non si stabilizza. Ciò indica che hai raggiunto una sorta di massimi locali (potenzialmente massimi globali). Uno dei motivi per rilevare questo sarebbe se gli stessi individui continuassero ad essere "clonati" nella generazione successiva. (anche se per problemi di dimensioni elevate che potrebbero richiedere troppo tempo, quindi meglio forse controllare solo il miglioramento <una tolleranza particolare)


1
"In ogni generazione, non consiste solo nell'ospring degli elementi migliori, ma include anche gli elementi migliori" Questo dipende dall'implementazione. Alcune implementazioni non lo fanno. In tal modo a volte viene chiamato "elitismo".
jpmc26,

4

In generale, gli algoritmi genetici funzionano creando una serie di variazioni (casuali) sui genitori di ogni generazione. Quindi viene applicata una funzione di selezione e la prole più adatta a questa funzione sopravvive. Quindi la prole non è necessariamente migliore poiché la variazione è casuale, ma combinata con la selezione si ottiene un miglioramento nel tempo.


4
Ah, quindi sembra che l'articolo sia stato un po 'fuorviante. Ha detto " Il nuovo, presumibilmente molto buono, bambino Organismo sostituisce un povero Organismo " che è ciò che mi ha confuso. Immagino che se combina un sacco di organismi, nel complesso ci aspetteremmo un aumento, anche se i singoli nuovi organismi potrebbero essere più deboli di quelli precedenti. È giusto? Grazie
Avrohom Yisroel il

@AvrohomYisroel: esattamente.
Jacques B

1
@AvrohomYisroel: attenzione alla comprensione approssimativa dei non specialisti. (Inoltre, attenzione alla precisione "muro di gergo" degli specialisti.)
Eric Towers,

@EricTowers Sì, vedo il problema! Ho pensato che fosse un esperto, a giudicare dagli articoli precedenti che ha scritto, ma sembra che abbia chiaramente commesso alcuni errori in questo articolo.
Avrohom Yisroel,

4

Quando ho studiato algoritmi genetici al college, mi è stato spiegato in questo modo:

Immagina che una soluzione sia una combinazione di "geni", in cui ciascun gene influenza quanto sia buona la soluzione nel suo insieme. Quando due soluzioni vengono accoppiate, i loro geni vengono scelti casualmente da ciascun genitore.

Ora, se il gene porta, in generale, a una buona soluzione, la sua frequenza aumenta nel pool genico. In casi estremi, il gene dominerà la popolazione.

Quindi, quando pensi agli algoritmi genetici (e all'evoluzione in generale), non dovresti pensare agli individui. Dovresti pensare ai geni e alle popolazioni nel loro insieme. Anche se si perde una soluzione "migliore", ciò non significa che i suoi geni siano persi.

C'è anche l'idea dell'elitismo negli algoritmi genetici. Significa che le migliori soluzioni sono sempre conservate per generazioni. Ciò potrebbe accelerare la convergenza dell'algoritmo, ma è più facile che l'algoritmo si blocchi nell'optima locale.


2

Gli algoritmi GA non sono deterministici, non garantiscono un miglioramento in ogni generazione e inoltre non garantiscono di trovare un totale ottimale. Tuttavia, la fase di selezione di un GA, utilizzando una funzione di fitness, rende più probabile la sopravvivenza di "buone soluzioni".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.