Genome dag
Определение 3.1
Геном CNN-NEAT — ориентированный ациклический граф \(G = (V, E)\), где \(V = V_\text{in} \cup V_\text{hidden} \cup \{o\}\), \(E \subseteq V \times V\).
3.1 Граф генома (DAG)¶
Геном представляет собой ориентированный ациклический граф \(G = (V, E)\).
Множество вершин \(V = V_\text{in} \cup V_\text{hidden} \cup \{o\}\):
- Входные вершины (views): \(V_\text{in} = \{0, 1, \ldots, V-1\}\), где \(V =\)
num_input_views(по умолчанию \(V=1\)). - Выходная вершина (fusion output): \(o = V\) (фиксированный ID).
- Скрытые вершины: целые ID, назначаемые при split-мутации: \(\text{id}_\text{new} = \max(V_\text{all}) + 1\).
Множество рёбер \(E\): каждое ребро \((u \to w) \in E\) описывается объектом ConvolutionConnectionGene с параметрами \((k_h, k_w, p_h, p_w, s=1, \sigma, \text{enabled})\), где \(\sigma\) — масштаб инициализации весов.
DAG-инварианты (проверяются при каждой структурной мутации):
- Граф ацикличен: топологическая сортировка существует.
- Self-loop запрещены: \(u \neq w\) для всех \((u,w) \in E\).
- Добавление \((u \to w)\) отклоняется, если существует путь \(w \leadsto u\).
Хэш топологии:
Хэш используется для гарантии уникальности топологий внутри одного run.
Минимальная инициализация (minimal_connections=True): для каждого входа \(i \in V_\text{in}\) создаётся прямое ребро \(i \to o\).