aimclub / GOLEM

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

Cellular graph encodings #263

Open donRumata03 opened 8 months ago

donRumata03 commented 8 months ago

Tracking issue for this research direction.

На данный момент на графах с количеством вершин $> 40$ сходимость GOLEM деградирует: #69. Методы поиска графов с доступам к градиенту целевой функции, например NOTEARS, работают с заметно большими графами. Один из вариантов преодоления этой проблемы — использовать непрямые кодировки в эволюции: особи представляются не как графы непосредственно, а как что-то, раскодирующееся в них. Статья, упомянутая в #100, утверждает, что такие кодировки стоит искать среди expressive encodings. При специализации задачи для графов возникает несколько вариантов. По сравнению с прямыми кодировками им свойственны:

L-systems

https://en.wikipedia.org/wiki/L-system

Создание графа делится на две части — генерация объекта простой структуры (строки/матрицы) из грамматики и преобразование его в желаемое представление (в данном случае — в граф). Отличаются об обычных грамматик тем, что раскрытие происходит не в произвольном порядке, а по итерациям — сначала раскрываются нетерминалы, сгенерированные раньше.

Можно парсить дерево из строки, а можно генерировать матрицу смежности графа, как в «Designing neural networks using genetic algorithms with graph generation system».

Простой подход, но очень много проблем.

Гиперграфовые грамматики

На каждом шаге вывода имеется гиперграф с рёбрами, помеченными метками-нетерминалами, которые заменяются на гиперграфы с входными и выходными узлами. При этом сопоставление узлов вставляемого графа и вершин, инцидентных ребру, при эволюции осмысленно производить на основе soft matching по эволюционирующим меткам (см. статью):

Graph Design by Graph Grammar Evolution, 2007 ↑↑↑ здесь отдельно поддерживается пулл правил, отдельно грамматики — его подмножества.

Коэволюция компонентов и методов их комбинации

Популяции:

Это частный случай грамматики, где глобальный терминал раскрывается в структуру с нетерминалами-ссылками на блоки, которые уже раскрываются в сами блоки, но применяются хитрые мутации к правой части правил.

Evolving Deep Neural Networks, Risto Miikkulainen, 2023

Клеточные кодировки

Граф представляется деревом программы особого вида, которое «исполняется» клетками в процессе эмбриогенеза. Когда программа клетки завершается, она превращается в вершину графа. К этому дереву уже применяются «простые» мутации.

Обладают привлекательными теоретическими свойствами:

В частности, для многих классов графов можно подобрать набор разрешённых операций в клетках, чтобы выполнялась полнота и замкнутость для конкретной задачи. Соответственно, можно автоматически генерировать кодировку для произвольного объекта GraphRequirements и каких-то graph verifier-ов, а значит мутации не будут выводить из искомого класса графов.

Кажется, можно доказать, что клеточные кодировки являются expressive encodings в смысле статьи из #100.

На данный момент фокус направлен на них.

GANы

TODO

Эволюция в пространстве embedding-ов? Эволюция весов части GAN?!

Graph Learning for Combinatorial Optimization: A Survey of State-of-the-Art: https://arxiv.org/pdf/2008.12646.pdf

Бенчмарки, процесс разработки

На данный момент — ведутся эксперименты, после чего, в случае успеха — буде внедрять в GOLEM.

Реализовано MVP, проверена замкнутость и полнота в разных подпространствах DAGов: с 1 или многими истоками и стоками, получен прирост скорость сходимости по правнению с обычным DEAP.

Текущие задачи:

В процессе разработка идей:

При генерации дерева кодировки и мутациях вершины устанавливаются в случайную инструкцию клеточной кодировки, изменяющую окрестность клетки-вершины: она может обрезать связи, может добавлять вершину (по-разному связанную с этой и наследующую/отбирающую связи материнской клетки). Всего таких инструкций ≈20 штук.

image

Также планируется тестирование на NAS Bench.