Исследовательский проект по Bayesian Optimization и transfer learning для оптимизации реакционных условий на данных эмуляторов.
Проект проверяет, может ли предварительно обученная Gaussian Process-модель ускорить Bayesian Optimization на новой задаче по сравнению с холодным стартом.
Bayesian Optimization часто используется, когда целевую функцию дорого вычислять напрямую. В химических задачах это может быть оптимизация выхода реакции, подбор условий или поиск лучших параметров эксперимента.
В этом проекте сравниваются два сценария:
- cold start — Bayesian Optimization начинается с небольшого набора случайных точек;
- warm start / transfer — оптимизация использует предварительно обученную GP-модель как стартовую точку.
Цель — сравнить динамику оптимизации и понять, даёт ли transfer-подход преимущество на новой задаче.
- Язык: Python
- Среда: Jupyter Notebook, Python scripts
- ML / Optimization: BoTorch, GPyTorch, Gaussian Process, Bayesian Optimization
- Данные и анализ: NumPy, pandas, torch
- Визуализация: matplotlib
- Эмуляторы: Olympus Emulator
| Папка | Содержание |
|---|---|
scripts/ |
Скрипты для генерации данных, обучения GP-моделей, запуска Bayesian Optimization и анализа результатов |
notebooks/ |
Ноутбуки для экспериментов и проверки идей |
data/ |
Сгенерированные данные для обучения и тестирования |
models/ |
Сохранённые веса обученных моделей |
results/ |
Результаты запусков Bayesian Optimization |
results_split2/ |
Дополнительные результаты экспериментов |
analysis/ |
Сводные таблицы и анализ результатов |
diagnostics/ |
Диагностические материалы и проверки |
| Файл | Назначение |
|---|---|
generate_raw_data.py |
Генерация исходных данных с помощью Olympus Emulator |
generate_multi_data.py |
Генерация данных для нескольких задач / эмуляторов |
train_gp.py |
Обучение Gaussian Process-модели на сгенерированных данных |
train_gp_with_transforms.py |
Обучение GP-модели с input / outcome transforms |
train_multi_gp.py |
Обучение моделей для нескольких задач |
run_bo.py |
Запуск Bayesian Optimization и сравнение cold start / warm start |
run_bo_multi.py |
Запуск BO-экспериментов для нескольких задач |
analyze_bo_results.py |
Анализ результатов по нескольким seed-ам |
diagnostic_nlml.py |
Диагностика модели через negative log marginal likelihood |
- генерация обучающих данных через Olympus Emulator;
- обучение Gaussian Process-моделей на torch / GPyTorch;
- использование
SingleTaskGPиз BoTorch; - нормализация входных данных и стандартизация целевой переменной;
- запуск Bayesian Optimization через acquisition function;
- сравнение cold start и warm start подходов;
- сохранение истории оптимизации в CSV;
- построение графиков сравнения;
- агрегация результатов по нескольким random seed.
В базовом сценарии:
-
генерируются данные для одной задачи-эмулятора;
-
на этих данных обучается GP-модель;
-
затем Bayesian Optimization запускается на новой задаче;
-
сравниваются два варианта:
- без предварительного обучения модели;
- с использованием предобученных весов;
-
результаты сохраняются и анализируются по истории лучшего найденного значения.