Skip to content

ayayankina/bayesian-optimization-transfer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bayesian-optimization-transfer

Исследовательский проект по 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.

Основной эксперимент

В базовом сценарии:

  1. генерируются данные для одной задачи-эмулятора;

  2. на этих данных обучается GP-модель;

  3. затем Bayesian Optimization запускается на новой задаче;

  4. сравниваются два варианта:

    • без предварительного обучения модели;
    • с использованием предобученных весов;
  5. результаты сохраняются и анализируются по истории лучшего найденного значения.

About

Исследовательский проект по Bayesian Optimization и transfer learning на BoTorch / GPyTorch

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors