aimclub / GOLEM

Graph Optimiser for Learning and Evolution of Models
https://thegolem.readthedocs.io
BSD 3-Clause "New" or "Revised" License
60 stars 7 forks source link

Fix lack of diversity in population (same individuals) #89

Open gkirgizov opened 1 year ago

gkirgizov commented 1 year ago

Problem is captured by the following, where we see too many individuals with the same structure: image

Comment from @valer1435 on a possible cause: стоит посмотреть внимательно, как выглядит популяция до этого метода и после. Как будто он запихивает в популяцию лучшие индивиды, не учитывая, что они там могут уже быть image

YamLyubov commented 1 year ago

Небольшой анализ для случая поиска молекул выявил, что наиболее значительную роль в накапливании дубликатов играет наследование. Наследование же в свою очередь основано на отборе. На данный момент отбор имеет некоторый механизм избавления от дубликатов, однако он не работает так, как ожилается. Данный механизм пытается выявить дубликаты по uid индивида, однако различные uid индиводов не гарантируют различие в структуре их графов.

График доли уникальных индивидов после применения каждого оператора по поколениям: uniqueness Видно, что сильнее всего уникальность снижается после применения оператора наследования.

После костыльной попытки исправить упомянутый выше механизм избавления от дубликатов при отборе, были получены следующие результаты:

Before fix After fix
uniqueness uniqueness_with_hash
fitness_line_without_hash fitness_line
result_pareto_withot_hash result_pareto

По одному запуску нельзя слелать вывод об улучшении метрики, однако видно, что фронт парето стал более разнообразным. После фикса видно, что мутация так же может значительно снижать разнообразие популяции. Ниже есть пара предположений о возможных причинах (пункт 2).

Другие возможные проблемы, которые не так значительно влияют на уникальность:

  1. Повторы возникают еще на этапе расширения начальной популяции (происходит проверка на равество, а она не корректная). Проверка графов на равенство зависит от корней графов. Так как при адаптации напрвление ребер выбирается случайным образом у одних и тех же молекул могут быть получены разные наборы корней.
Original molecule Possible OptGraph 1 Possible OptGraph 1
Untitled Figure_1 Figure_2
  1. (Скорее всего минимально влияет на проблему) Многие мутации (не только для молекул) реализованы таким образом, что иногда они могут возвращать тот же граф (например, была выбрана мутация, для которой не оказалось доступных действий). Однако, оператор в таком случае будет считать, что операция была применена и добавит тот же граф в новую популяцию.
gkirgizov commented 1 year ago

Need to research how the lines in question (with filtering dublicates of unsuccessful mutations) influences diversity & the work of reproduction controller.

See discussion there: https://github.com/aimclub/GOLEM/pull/148#issuecomment-1676868821