Гибридный пайплайн CNN-NEAT + GBM (Фазы 1–7)¶
Семифазный пайплайн объединяет нейроэволюцию, градиентный бустинг и ансамблевое
дообучение. Фазы 2–7 описывают исследовательскую концепцию; Фаза 1 полностью
реализована в библиотеке cnn_neat.
flowchart TD
P1["Фаза 1: CNN-NEAT эволюция\n(для каждого k=0..9)"] --> P2["Фаза 2: Извлечение признаков\nF_k = flatten(G*_k(X))"]
P2 --> P3["Фаза 3: GBM per class\nXGBoost/LightGBM OvR"]
P3 --> P4["Фаза 4: Отбор пар\nscore_k = 0.65·AUC + 0.35·bal_acc"]
P4 --> P5["Фаза 5: Ансамблирование\nsoftmax(s_0,...,s_9)"]
P5 --> P6["Фаза 6: Fine-tune CNN\nAdam, CE-loss, 10 классов"]
P6 --> P7["Фаза 7: Сравнение\nResNet-18/34/50"]
Фаза 1. CNN-NEAT эволюция¶
Для каждого класса \(k \in \{0,\ldots,9\}\) независимо запускается эволюция с
positive_class = k. Результат — лучший геном:
где \(f_k\) — fitness на val-подмножестве в постановке OvR для класса \(k\), \(\mathcal{P}^{(T)}\) — популяция после \(T\) поколений.
Реализация
См. Цикл эволюции и cnn_neat.evolution_loop.run_evolution.
Фаза 2. Извлечение признаков¶
Для лучшего генома \(G^*_k\) извлекается вектор признаков:
Размерность \(d_k = C \cdot H_\text{out} \cdot W_\text{out}\). При output_image_size = (1,1): \(d_k = 3\);
при \((4,4)\): \(d_k = 48\); при \((8,8)\): \(d_k = 192\).
Аналогично извлекаются \(\mathbf{F}_k^\text{val}\), \(\mathbf{F}_k^\text{test}\). Опционально — Z-score нормализация признаков.
Фаза 3. Обучение GBM по классам¶
Для каждого \(k\) обучается бинарный GBM:
| Параметр | XGBoost | LightGBM |
|---|---|---|
n_estimators |
500 | 500 |
max_depth |
6 | 7 |
learning_rate |
0.05 | 0.05 |
subsample |
0.8 | 0.8 |
scale_pos_weight |
9.0 | 9.0 |
early_stopping |
50 | 50 |
Дисбаланс OvR (~10% позитивных) компенсируется scale_pos_weight ≈ N_\text{neg}/N_\text{pos}.
Фаза 4. Отбор лучших пар¶
Ранжирование пар \((G^*_k, \text{gbm}_k)\):
Фаза 5. Ансамблирование¶
10 бинарных классификаторов → многоклассовый через softmax логитов:
Фаза 6. Fine-tune CNN¶
Минимизация 10-классовой кросс-энтропии; топологии заморожены:
| Компонент | Значение |
|---|---|
| Оптимизатор | Adam, \(\eta = 10^{-3}\), weight_decay \(= 10^{-4}\) |
| Расписание | Cosine Annealing |
| Аугментации | RandomCrop(32, pad=4), RandomHorizontalFlip |
| Эпохи | 50, early stopping (patience=10) |
Фаза 7. Сравнение с ResNet¶
Итоговая оценка сравнивается с ResNet-18, ResNet-34, ResNet-50, обученными from scratch на полном CIFAR-10 при идентичных аугментациях и оптимизации.
Метрики: top-1 accuracy, macro ROC-AUC, время обучения, число параметров.