Meta Learning и Transfer Learning

Meta Learning и Transfer Learning

Обзор

Проект реализует продвинутые техники обучения для улучшения производительности A/B тестов и оптимизации параметров:

  • Meta Learning — накопление знаний из завершенных A/B тестов
  • Transfer Learning — перенос знаний между похожими задачами
  • State Persistence — сохранение состояния для восстановления после перезапусков

Meta Learning

Концепция

Meta Learning (обучение обучению) накапливает знания о том, как эффективно оптимизировать параметры на основе опыта предыдущих A/B тестов.

Как это работает

graph LR
    A[AB Test 1] -->|Результаты| ML[Meta Learning Manager]
    B[AB Test 2] -->|Результаты| ML
    C[AB Test 3] -->|Результаты| ML
    ML -->|Извлечение знаний| KB[(Knowledge Base)]
    KB -->|Применение| D[AB Test 4]
    D -->|Улучшенная инициализация| GA[Genetic Algorithm]

Извлекаемые знания

  1. Паттерны оптимизации — какие параметры работают лучше в определенных условиях
  2. Лучшие стратегии — успешные комбинации параметров
  3. Параметры стратегий — оптимальные значения для разных контекстов
  4. История успехов — результаты предыдущих тестов
  5. Архитектуры сетей — успешные конфигурации нейронных сетей
  6. Стратегии наград — эффективные функции награды
  7. Динамические параметры — адаптивные значения параметров

Конфигурация

ab_tests:
  meta_learning:
    enabled: true                    # Включить Meta Learning
    knowledge_retention_days: 30     # Дни хранения знаний
    min_tasks_for_learning: 5        # Минимальное количество задач для обучения
    similarity_threshold: 0.7        # Порог схожести задач

Использование

Meta Learning автоматически активируется после завершения A/B теста:

// После завершения A/B теста
metaLearningManager.LearnFromABTest(
    ctx,
    testID,
    exchange,
    pair,
    modelType,
    results,
    quotes,
)

Знания сохраняются глобально и доступны всем воркерам через knowledge_key = {exchange}_{pair}_{model_type}.

Transfer Learning

Концепция

Transfer Learning переносит знания из похожих задач (source tasks) в новую задачу (target task) для ускорения оптимизации.

Как это работает

graph TB
    ST1[Source Task 1<br/>BTCUSDT DQN] -->|Знания| TM[Transfer Model]
    ST2[Source Task 2<br/>ETHUSDT DQN] -->|Знания| TM
    ST3[Source Task 3<br/>TONUSDT DQN] -->|Знания| TM
    TM -->|Инициализация| TT[Target Task<br/>BNBUSDT DQN]
    TT -->|Начальная популяция| GA[Genetic Algorithm]
    GA -->|Ускоренная сходимость| RES[Результаты]

Процесс переноса

  1. Поиск похожих задач — по бирже, паре и типу модели
  2. Извлечение знаний — лучшие параметры из source tasks
  3. Создание Transfer Model — матрица переноса и веса признаков
  4. Инициализация популяции — создание начальной популяции GA на основе знаний
  5. Адаптация — адаптация параметров к target task

Конфигурация

ab_tests:
  transfer_learning:
    enabled: true                    # Включить Transfer Learning
    use_similar_exchanges: true      # Использовать похожие биржи
    use_similar_pairs: true          # Использовать похожие пары
    max_source_tasks: 10             # Максимальное количество source tasks

Использование

Transfer Learning активируется при генерации начальной популяции GA:

// При генерации агентов
similarTasks, err := transferLearningManager.LoadSimilarTasks(
    ctx,
    exchange,
    pair,
    modelType,
    useSimilarExchanges,
    useSimilarPairs,
    maxSourceTasks,
)

if len(similarTasks) > 0 {
    // Создать начальную популяцию на основе знаний
    initialPopulation := transferLearningManager.CreateInitialPopulation(
        similarTasks,
        populationSize,
    )
}

State Persistence

Концепция

State Persistence сохраняет состояние Genetic Algorithm для восстановления после перезапусков подов.

Типы checkpoint’ов

  1. Full — полное состояние популяции (каждые N поколений)
  2. Incremental — инкрементальные изменения
  3. Final — финальное состояние после завершения

Конфигурация

ab_tests:
  state_management:
    enabled: true                    # Включить управление состоянием
    checkpoint_interval: 5           # Интервал сохранения (каждые N поколений)
    retention_days: 7                # Дни хранения checkpoint'ов

Использование

// Сохранение checkpoint
err := stateManager.SaveGACheckpoint(
    ctx,
    testID,
    messageID,
    generation,
    population,
    checkpointType,
    exchange,
    pair,
    modelType,
)

// Восстановление checkpoint
checkpoint, err := stateManager.RestoreGACheckpoint(ctx, testID)
if checkpoint != nil {
    // Восстановить популяцию и продолжить
    population = checkpoint.StateData.GAPopulation
    currentGeneration = *checkpoint.Generation
}

Интеграция в A/B тесты

Полный цикл

sequenceDiagram
    participant AB as AB Test
    participant TL as Transfer Learning
    participant GA as Genetic Algorithm
    participant SM as State Manager
    participant ML as Meta Learning
    
    AB->>TL: Загрузка похожих задач
    TL->>GA: Инициализация популяции
    GA->>SM: Сохранение checkpoint
    SM->>GA: Восстановление после перезапуска
    GA->>AB: Результаты теста
    AB->>ML: Извлечение знаний
    ML->>TL: Обновление Transfer Model

Пример использования

// 1. Загрузка Transfer Learning знаний
similarTasks, _ := transferLearningManager.LoadSimilarTasks(...)
if len(similarTasks) > 0 {
    // Инициализировать популяцию на основе знаний
    initialPopulation = createPopulationFromKnowledge(similarTasks)
}

// 2. Восстановление checkpoint (если есть)
checkpoint, _ := stateManager.RestoreGACheckpoint(ctx, testID)
if checkpoint != nil {
    // Продолжить с восстановленного состояния
    population = checkpoint.StateData.GAPopulation
    generation = *checkpoint.Generation
}

// 3. Запуск GA с checkpoint'ами
for generation < maxGenerations {
    // ... эволюция популяции ...
    
    // Сохранение checkpoint каждые N поколений
    if generation % checkpointInterval == 0 {
        stateManager.SaveGACheckpoint(...)
    }
}

// 4. Сохранение Meta Learning знаний после завершения
metaLearningManager.LearnFromABTest(ctx, testID, ...)

Преимущества

Meta Learning

  • Накопление опыта — система учится на каждом тесте
  • Улучшение инициализации — лучшие стартовые параметры
  • Глобальные знания — доступны всем воркерам
  • Адаптация — система адаптируется к изменениям рынка

Transfer Learning

  • Ускорение сходимости — быстрее находим оптимальные параметры
  • Использование опыта — перенос знаний между похожими задачами
  • Меньше вычислений — меньше поколений GA для достижения результата
  • Масштабируемость — знания накапливаются со временем

State Persistence

  • Защита от потерь — данные сохраняются при перезапусках
  • Продолжение работы — можно продолжить с последнего checkpoint
  • Отказоустойчивость — система восстанавливается после сбоев
  • Мониторинг прогресса — можно отслеживать прогресс в реальном времени

Рекомендации

Meta Learning

  1. Включайте после накопления достаточного количества тестов (минимум 5)
  2. Настройте knowledge_retention_days в зависимости от частоты изменений рынка
  3. Используйте similarity_threshold для фильтрации релевантных знаний

Transfer Learning

  1. Включайте для похожих задач (одинаковый тип модели)
  2. Используйте use_similar_exchanges и use_similar_pairs для точности
  3. Ограничьте max_source_tasks для производительности

State Persistence

  1. Настройте checkpoint_interval в зависимости от длительности тестов
  2. Используйте retention_days для управления размером БД
  3. Включите автоматическую очистку истекших checkpoint’ов

Мониторинг

Метрики Meta Learning

  • Количество сохраненных знаний
  • Количество применений знаний
  • Улучшение результатов при использовании знаний

Метрики Transfer Learning

  • Количество найденных похожих задач
  • Ускорение сходимости (сравнение с baseline)
  • Качество переноса знаний

Метрики State Persistence

  • Количество сохраненных checkpoint’ов
  • Количество восстановлений
  • Размер БД состояний

Troubleshooting

Meta Learning не сохраняет знания

Проверьте:

  • Включен ли meta_learning.enabled
  • Настроен ли StateStorage
  • Есть ли доступ к БД состояний

Transfer Learning не находит похожие задачи

Проверьте:

  • Есть ли завершенные тесты с тем же типом модели
  • Настройки use_similar_exchanges и use_similar_pairs
  • Пороги схожести в конфигурации

Checkpoint’ы не восстанавливаются

Проверьте:

  • Включен ли state_management.enabled
  • Правильность test_id при восстановлении
  • Наличие checkpoint’ов в БД