Глава 171: Federated Averaging (FedAvg)
Обзор
Federated Averaging (FedAvg) — это основополагающий алгоритм федеративного обучения (Federated Learning). В контексте трейдинга он позволяет нескольким количественным дескам или финансовым институтам совместно обучать мощную “глобальную” модель, никогда не передавая свои проприетарные торговые данные или конфиденциальную информацию клиентов.
Вместо того чтобы перемещать данные к модели (централизованное обучение), мы перемещаем модель к данным (децентрализованное обучение).
Процесс FedAvg
- Инициализация: Центральный сервер инициализирует веса глобальной модели $w_0$.
- Раунд коммуникации $t$:
- Выбор: Сервер выбирает подмножество клиентов.
- Рассылка: Сервер отправляет текущие глобальные веса $w_t$ этим клиентам.
- Локальное обновление: Каждый клиент $k$ выполняет несколько эпох SGD на своих локальных данных для получения новых весов $w_{t+1}^k$.
- Агрегация: Клиенты отправляют обновленные веса обратно. Сервер вычисляет новые глобальные веса как взвешенное среднее: $$w_{t+1} = \sum_{k=1}^K \frac{n_k}{n} w_{t+1}^k$$ где $n_k$ — количество образцов у клиента $k$.
Почему это важно для финансов
- Конфиденциальность данных: Альфа-сигналы — это самый ценный секрет в трейдинге. FedAvg гарантирует, что сырые данные остаются за фаерволом.
- Соблюдение нормативов: Помогает соблюдать GDPR и другие законы о локализации данных, при этом извлекая пользу из “глобального” интеллекта.
- Совместные исследования: Несколько организаций могут улучшить свои локальные результаты, обучаясь на общих трендах, обнаруженных в других наборах данных.
Структура проекта
171_fedavg_trading/├── README.md # Обзор на английском├── README.ru.md # Обзор на русском├── docs/ru/theory.md # Математические основы├── python/│ ├── model.py # Общая нейронная сеть│ ├── federated_core.py # Логика агрегации│ └── train.py # Симуляция федерации└── rust/src/ └── lib.rs # Высокоскоростная агрегация весов