Глава 245: ALBERT для трейдинга
Введение
ALBERT (A Lite BERT for Self-supervised Learning of Language Representations) — это оптимизированный вариант языковой модели BERT, который достигает сопоставимой производительности при значительно меньшем количестве параметров. Представленный Lan et al. (2019), ALBERT решает проблемы ограничений памяти и скорости обучения BERT с помощью двух ключевых техник сокращения параметров: факторизованной параметризации эмбеддингов и межслойного разделения параметров.
Для финансовых NLP-приложений ALBERT предлагает привлекательный компромисс. Анализ финансовых текстов — извлечение тональности из отчётов о доходах, классификация новостей, интерпретация документов SEC — требует моделей, способных понимать нюансы языка, но производственные торговые системы также требуют низкой задержки и эффективного использования ресурсов. Компактная архитектура ALBERT делает практичным одновременное развёртывание нескольких специализированных моделей: одной для тональности, одной для обнаружения событий, одной для распознавания сущностей — всё в рамках бюджета памяти одного GPU или даже на CPU.
В этой главе представлена полная система применения ALBERT для анализа финансовых текстов и генерации торговых сигналов. Мы рассмотрим архитектурные инновации, делающие ALBERT эффективным, процесс тонкой настройки для классификации финансовых текстов и рабочую реализацию на Rust, подключённую к криптовалютной бирже Bybit для генерации торговых сигналов на основе тональности в реальном времени.
Ключевые концепции
Факторизованная параметризация эмбеддингов
В стандартном BERT размер эмбеддинга $E$ привязан к размеру скрытого слоя $H$, что означает, что матрица эмбеддингов имеет $V \times H$ параметров, где $V$ — размер словаря. Это расточительно, поскольку эмбеддинги изучают контекстно-независимые представления, тогда как скрытые слои изучают контекстно-зависимые.
ALBERT разделяет эти два измерения, сначала проецируя one-hot векторы словаря в пространство эмбеддингов меньшей размерности $E$, а затем проецируя в скрытое пространство:
$$\text{Эмбеддинг: } V \times E + E \times H \quad \text{вместо} \quad V \times H$$
Для типичных значений ($V = 30000$, $H = 768$, $E = 128$) это сокращает параметры эмбеддингов с 23M до 3.9M — сокращение на 83%. Интуиция заключается в том, что эмбеддинги на уровне слов не нуждаются в такой же репрезентативной мощности, как контекстуализированные скрытые состояния.
Межслойное разделение параметров
BERT укладывает $L$ идентичных трансформерных слоёв, каждый со своими параметрами внимания и прямого прохода. ALBERT разделяет параметры между всеми слоями, поэтому модель изучает единый трансформерный блок, который применяется рекурсивно:
$$\mathbf{h}^{(l)} = \text{TransformerBlock}(\mathbf{h}^{(l-1)}; \Theta) \quad \text{для } l = 1, \ldots, L$$
где $\Theta$ — один и тот же набор параметров для каждого слоя. Это сокращает количество параметров трансформера в $L$ раз (обычно 12 или 24). Исследования показывают, что скрытые представления ALBERT осциллируют, а не сходятся, что указывает на то, что общие параметры изучают универсальную функцию уточнения признаков.
Существуют три стратегии разделения:
- Полное разделение: разделяются и параметры внимания, и прямого прохода (стандартный ALBERT)
- Разделение только внимания: разделяются только веса многоголового внимания
- Разделение только FFN: разделяются только веса сети прямого прохода
Предсказание порядка предложений (SOP)
BERT использует предсказание следующего предложения (NSP) как цель предобучения, но эта задача оказалась слишком простой — модель может решить её преимущественно через определение темы, а не через понимание межпредложенческой когерентности.
ALBERT заменяет NSP на предсказание порядка предложений (SOP), которое использует последовательные предложения из одного документа как положительные примеры и те же предложения в обратном порядке как отрицательные:
$$\mathcal{L}_{SOP} = -\left[ y \log P(\text{правильный порядок}) + (1 - y) \log P(\text{обратный порядок}) \right]$$
SOP заставляет модель изучать детальные дискурсивные связи, что особенно ценно для финансовых текстов, где логический поток информации имеет значение — например, понимание того, что “выручка выросла”, за которым следует “но маржа сократилась”, несёт иной смысл, чем обратный порядок.
Механизм самовнимания
Как и BERT, ALBERT использует многоголовое самовнимание. Для входной последовательности $\mathbf{X} \in \mathbb{R}^{n \times d}$ внимание вычисляется как:
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V$$
где $Q = \mathbf{X}W_Q$, $K = \mathbf{X}W_K$, $V = \mathbf{X}W_V$ — проекции запроса, ключа и значения, а $d_k$ — размерность каждой головы внимания.
Многоголовое внимание позволяет модели обращать внимание на информацию из различных подпространств представлений:
$$\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h) W_O$$
В финансовых текстах разные головы внимания могут специализироваться: одна может обращать внимание на числовые значения, другая — на слова, несущие тональность, а третья — на связи между сущностями.
Конфигурации ALBERT
| Конфигурация | Слои | Скрытый | Эмбеддинг | Головы | Параметры |
|---|---|---|---|---|---|
| ALBERT-base | 12 | 768 | 128 | 12 | 12M |
| ALBERT-large | 24 | 1024 | 128 | 16 | 18M |
| ALBERT-xlarge | 24 | 2048 | 128 | 16 | 60M |
| ALBERT-xxlarge | 12 | 4096 | 128 | 64 | 235M |
Сравните с BERT-base (110M параметров) и BERT-large (340M параметров). ALBERT-base достигает 89% производительности BERT-base при всего 11% параметров.
Применения финансового NLP
Анализ тональности
Анализ финансовой тональности классифицирует текст на категории: бычий, медвежий или нейтральный. ALBERT обрабатывает финансовый текст через свои трансформерные слои и выдаёт классификацию:
$$P(\text{тональность} | \text{текст}) = \text{softmax}(W_c \cdot \mathbf{h}_{[CLS]} + b_c)$$
где $\mathbf{h}_{[CLS]}$ — скрытое представление специального токена классификации. Для финансовых текстов тональность более нюансирована, чем простое положительное/отрицательное:
- Бычьи сигналы: “выручка превысила ожидания”, “сильный прогноз”, “рост доли рынка”
- Медвежьи сигналы: “не оправдала ожидания”, “давление на маржу”, “регуляторные препятствия”
- Нейтральные/Сложные: “выручка выросла, но маржа снизилась”, “превысили по EPS, но не дотянули по выручке”
Классификация влияния новостей
Помимо тональности, ALBERT может классифицировать ожидаемое влияние финансовых новостей на рынок:
- Высокое влияние: сюрпризы в отчётах, объявления о слияниях и поглощениях, регуляторные действия, смена CEO
- Среднее влияние: повышения/понижения рейтингов аналитиками, запуски продуктов, объявления о партнёрствах
- Низкое влияние: участие в конференциях, рутинные отчётности, незначительные операционные обновления
Модель учится различать информацию, которая сдвинет цены, и шум, что критически важно для стратегий, основанных на событиях.
Распознавание именованных сущностей для финансов
ALBERT можно тонко настроить для классификации на уровне токенов для извлечения финансовых сущностей:
- Организации: названия компаний, бирж, регулирующих органов
- Финансовые метрики: выручка, EPS, EBITDA, маржа
- Денежные значения: суммы в долларах, проценты, коэффициенты
- Временные выражения: квартальные результаты, ссылки на финансовый год
- События: слияния, поглощения, IPO, банкротства
Подходы машинного обучения
Тонкая настройка для классификации
Стандартный подход для адаптации ALBERT к финансовым задачам включает:
- Загрузку предобученных весов ALBERT
- Добавление задачно-специфичной классификационной головы поверх представления токена [CLS]
- Тонкую настройку всей модели на размеченных финансовых данных с пониженной скоростью обучения
Функция потерь классификации:
$$\mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \sum_{c=1}^{C} y_{i,c} \log \hat{y}_{i,c}$$
где $C$ — количество классов и $\hat{y}_{i,c} = P(c | \mathbf{x}_i)$.
Ключевые гиперпараметры для финансовой тонкой настройки:
- Скорость обучения: $2 \times 10^{-5}$ (ниже, чем при предобучении, для сохранения изученных представлений)
- Размер батча: 16-32 (меньшие батчи добавляют регуляризирующий шум)
- Эпохи: 3-5 (финансовые датасеты обычно малы; больше эпох рискует переобучением)
- Максимальная длина последовательности: 128-256 токенов (большинство финансовых заголовков и твитов помещаются в 128)
Извлечение признаков для торговых сигналов
Вместо сквозной классификации эмбеддинги ALBERT могут служить признаками для последующих торговых моделей:
- Извлечь эмбеддинг [CLS] из ALBERT для каждого текста
- Агрегировать эмбеддинги за временное окно (например, все новости за последний час)
- Подать агрегированные признаки в торговую модель (логистическая регрессия, градиентный бустинг или нейронная сеть)
Функция агрегации может быть:
$$\mathbf{f}_t = \frac{1}{|\mathcal{D}t|} \sum{d \in \mathcal{D}t} \mathbf{h}{[CLS]}^{(d)}$$
где $\mathcal{D}_t$ — набор документов во временном окне, заканчивающемся в момент $t$.
Преобразование оценки тональности в торговый сигнал
Преобразование оценок тональности в исполняемые торговые сигналы требует тщательной калибровки:
$$\text{signal}_t = \alpha \cdot \text{sentiment}t + (1 - \alpha) \cdot \text{signal}{t-1}$$
где $\alpha$ — параметр экспоненциального сглаживания, контролирующий скорость реакции сигнала на новую информацию. Более высокий $\alpha$ делает сигнал более отзывчивым, но и более шумным.
Размер позиции может учитывать уверенность тональности:
$$\text{position}_t = \text{sign}(\text{signal}_t) \cdot \min\left(|\text{signal}_t| \cdot \text{leverage}, \text{max_position}\right)$$
Инженерия признаков
Предобработка текста для финансовых данных
Финансовый текст имеет уникальные требования к предобработке:
- Нормализация тикеров: сопоставление “$AAPL”, “Apple Inc.”, “Apple” в каноническую форму
- Обработка чисел: замена конкретных чисел токенами масштаба (“[NUM_M]” для миллионов, “[NUM_B]” для миллиардов)
- Расшифровка финансовых аббревиатур: “EPS” → “прибыль на акцию”, “P/E” → “цена к прибыли”
- Временной контекст: аннотация временных ссылок относительно торговых часов (“до рынка”, “после закрытия”)
Инженерия признаков тональности
Помимо сырых оценок тональности, производные признаки улучшают торговую эффективность:
- Моментум тональности: $\Delta S_t = S_t - S_{t-k}$, показывающий, улучшается или ухудшается тональность
- Дисперсия тональности: стандартное отклонение тональности по нескольким источникам, указывающее на разногласия
- Взаимодействие тональности и объёма: высокое изменение тональности с высоким торговым объёмом подтверждает сигнал
- Кросс-активная тональность: перетекание тональности от связанных активов (например, от сектора-аналога, партнёров по цепочке поставок)
Признаки на основе эмбеддингов
Эмбеддинги ALBERT захватывают семантические связи, которые упускают простые оценки тональности:
- Косинусное сходство с эталонными текстами: измерение сходства текущих новостей с исторически бычьими/медвежьими периодами
- Расстояние до кластера эмбеддингов: определение, к какому “режиму” принадлежит текущая текстовая среда
- Временной дрейф эмбеддингов: отслеживание сдвигов пространства эмбеддингов для обнаружения смены режимов
Применения
Генерация альфы на основе тональности
Сигналы тональности на основе ALBERT могут генерировать альфу через:
- Моментум новостей: агрегирование тональности из недавних новостей и торговля в направлении тренда тональности. Положительное ускорение тональности запускает длинные позиции; отрицательное замедление — выходы.
- Контрарианские сигналы: когда тональность достигает экстремальных уровней, возврат к среднему становится более вероятным. ALBERT может обнаружить, когда консенсусная тональность противоречит фундаментальным показателям.
- Арбитраж событий: быстрая классификация влияния свежих новостей и открытие позиций до полной реакции рынка.
Управление рисками
Анализ тональности улучшает управление рисками через:
- Обнаружение хвостовых рисков: внезапные сдвиги полярности тональности могут сигнализировать о надвигающихся событиях волатильности
- Предупреждение о разрушении корреляций: когда тональность расходится между коррелированными активами, корреляционная структура может вот-вот измениться
- Риск ликвидности: кластеризация негативной тональности может предсказать отток ликвидности
Применение на крипторынке
Криптовалютные рынки особенно подходят для NLP-трейдинга, поскольку:
- Рынки 24/7: новости могут влиять на цены в любое время, создавая возможности для автоматизированных систем тональности
- Влияние социальных сетей: цены криптовалют сильно зависят от тональности в Twitter, Reddit и Telegram
- Меньшее институциональное покрытие: меньше аналитического покрытия означает, что NLP-модели сталкиваются с меньшей конкуренцией от аналитиков-людей
- Высокая волатильность: большие ценовые движения означают больший потенциал альфы от сигналов тональности
Реализация на Rust
Наша реализация на Rust предоставляет полный набор инструментов для классификации текстов в стиле ALBERT со следующими компонентами:
ALBERTTokenizer
ALBERTTokenizer реализует упрощённый конвейер токенизации для финансовых текстов. Он обрабатывает приведение к нижнему регистру, вставку специальных токенов ([CLS] и [SEP]) и поиск по словарю. Неизвестные токены сопоставляются с токеном [UNK]. Токенизатор поддерживает словарное отображение, которое может быть расширено доменно-специфичными финансовыми терминами.
EmbeddingLayer
EmbeddingLayer реализует факторизованную параметризацию эмбеддингов ALBERT. Он проецирует идентификаторы токенов через пространство эмбеддингов низкой размерности ($E = 128$), прежде чем отображать в полную скрытую размерность ($H$). Эта двухэтапная проекция значительно сокращает количество параметров по сравнению с прямым эмбеддингом.
TransformerBlock
TransformerBlock реализует единый трансформерный слой с подслоями самовнимания и прямого прохода. В ALBERT этот единый блок разделяется между всеми слоями — одни и те же параметры применяются $L$ раз. Реализация включает нормализацию слоя и остаточные связи.
ALBERTClassifier
ALBERTClassifier объединяет токенизацию, эмбеддинг, разделяемые трансформерные слои и классификационную голову. Он поддерживает многоклассовую классификацию (бычий/медвежий/нейтральный) с выходом softmax. Обучение использует кросс-энтропийные потери со стохастическим градиентным спуском.
SentimentAggregator
SentimentAggregator преобразует индивидуальные классификации текстов в торговые сигналы. Он поддерживает скользящее окно оценок тональности, вычисляет экспоненциально взвешенные средние и генерирует сигналы позиций на основе настраиваемых порогов.
BybitClient
Структура BybitClient обеспечивает асинхронный HTTP-доступ к Bybit V5 API. Она получает данные kline (свечей) из эндпоинта /v5/market/kline для ценовых данных, используемых в бэктестинге сигналов тональности.
Интеграция с Bybit API
Реализация подключается к REST API Bybit V5 для получения рыночных данных для валидации торговых сигналов на основе тональности:
- Эндпоинт Kline (
/v5/market/kline): предоставляет OHLCV-данные свечей с настраиваемыми интервалами. Используется для вычисления доходностей, служащих метками для обучения модели тональности, и для бэктестинга стратегий тональности. - Эндпоинт Ticker (
/v5/market/tickers): предоставляет текущую цену и статистику за 24 часа. Используется для генерации сигналов в реальном времени и управления позициями.
Ссылки
- Lan, Z., Chen, M., Goodman, S., Gimpel, K., Sharma, P., & Soricut, R. (2019). ALBERT: A Lite BERT for Self-supervised Learning of Language Representations. arXiv preprint arXiv:1909.11942.
- Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL-HLT.
- Araci, D. (2019). FinBERT: Financial Sentiment Analysis with Pre-trained Language Models. arXiv preprint arXiv:1908.10063.
- Malo, P., Sinha, A., Korhonen, P., Wallenius, J., & Takala, P. (2014). Good debt or bad debt: Detecting semantic orientations in economic texts. Journal of the Association for Information Science and Technology, 65(4), 782-796.
- Loughran, T., & McDonald, B. (2011). When is a liability not a liability? Textual analysis, dictionaries, and 10-Ks. The Journal of Finance, 66(1), 35-65.