
Экстремальные погодные явления оказывают большое влияние на нашу жизнь. Это может проявляться в бытовых вещах, просто чтобы не попасть под сильный ливень или грозу. А ещё — в обеспечении бизнеса. Например, в прошлом году в Европе из‑за града погиб один из самых старых виноградников.
Именно поэтому мы решили улучшить наш прогноз экстремальных погодных явлений. Прежде всего мы сфокусировались на суперкраткосрочном прогнозе молний на карте осадков, также известной как наукаст, чтобы расширить нашу технологию прогнозирования погоды Meteum. Таким образом мы стали первыми в России, кто сделал карту наукаста гроз на ближайшие два часа с шагом 10 минут. Дело в том, что экстремальные погодные явления часто связаны с конвективными явлениями в атмосфере, которые сложно прогнозировать на долгий срок. То есть если в прогнозе есть гроза, то часто вместе с ней будет ожидаться сильный дождь и ветер, а в некоторых регионах и град.
Меня зовут Пётр Вытовтов. Я руководитель группы ML и качества прогноза в Яндекс Погоде. Сегодня я хочу рассказать вам о том, как мы добавляли прогноз молний в нашу модель наукаста с использованием данных со спутников, метеорологических радаров и применением трансформерных моделей.
Как фиксируют молнии
Грубо говоря, молния — это электрический заряд, который возникает в атмосфере. Его обычно фиксируют с помощью грозопеленгаторов. Когда сверкает молния, её могут засечь сразу несколько приборов. Далее информация с них объединяется, решается задача триангуляции, и после этого можно определить точное местоположение молнии и её интенсивность.
Работает это следующим образом. Предположим, что есть два грозопеленгатора, которые зафиксировали одну и ту же молнию. Мы можем построить треугольник по этим точкам и, зная расстояние между приборами и углы рёбер треугольника до молнии, определить расстояние до неё по формуле:
где — расстояние между грозопеленгаторами,
и
— измеренные углы, а
— длина высоты построенного треугольника.

У нас есть архивный объём данных от грозопеленгаторов, на котором мы ранее обучили собственную ML‑модель. Такие данные сравнимы с тем, что могли бы показывать приборы в реальном времени. Но в основном мы опираемся на данные со спутников и метеорологических радаров. Это даёт бóльшую стабильность модели, но пока ограничивает область действия прогноза территорией, на которой установлены радары.

Приборы на спутнике калибруются по грозопеленгаторам, поэтому измерения получаются более‑менее адекватные, но ожидаемо менее точные по сравнению с грозопеленгаторами. Например, качество детекции молний у спутника Meteosat в среднем 0,72 по всей площади и примерно 0,8 для Европы и Африки.
В свою очередь, у радара принцип работы заключается в том, что он испускает луч, который при столкновении с препятствием в атмосфере отражается. Радар по силе возвращаемого сигнала, который называют отражаемостью, и по времени, когда он вернулся, определяет потенциальное количество влаги в атмосфере. В том числе по некоторым правилам из этой отражаемости можно вывести поля с потенциалом гроз.
Как выглядела наукастовая модель раньше
Мы уже описывали, как перешли на нейросети в наукасте и добавили учёт репортов пользователей. Но тогда это было на основе архитектуры PredRNN++. После этого мы стали базировать свою модель на статье Temporal Attention Unit, о чём подробно рассказывали на митапе в Белграде.
Если кратко, то PredRNN++ — это модификация ячейки ConvLSTM. И если в ConvLSTM авторы предложили заменить матричные умножения в обычной LSTM‑ячейке свёртками, чтобы работать с изображениями, то в PredRNN++ было предложено добавить скип‑коннекшены в архитектуре и дополнительные гейты внутри самой ячейки. При этом модель, как и все остальные подобного плана, является авторегрессионной, т. е. последовательно генерирует каждый отдельный кадр прогноза.

В свою очередь, Temporal Attention Unit позволяет работать с последовательностью целиком. В этой модели считается отдельно статическое и динамическое внимание (attention) по всей входной последовательности; и результирующая последовательность тоже генерируется целиком. Переход на такую архитектуру позволил нам ускорить работу модели и поднять качество прогноза.

Также мы делали прогноз интенсивности осадков в мм/ч. То есть модель говорила не только есть осадки или нет, но и сколько их выпадет в мм. Таким образом, модель принимает на вход данные об интенсивности осадков, маску, есть или нет осадки и информацию о состоянии атмосферы до 10 км в высоту. На выходе же модель отдаёт маски наличия осадков и их интенсивность в мм/ч.



Какие мы внесли изменения
Фактически мы взяли нашу текущую модель наукаста и добавили в неё дополнительный вход для молний и дополнительный выход для их прогноза. Здесь мы базировались на статье швейцарского гидрометцентра. В ней авторы предлагают формировать агрегированное поле молний, которые были зафиксированы грозопеленгаторами за некоторый период времени. Важный момент, что эти периоды времени идут с перекрытием. То есть если формируется окно в 10 минут, то у него будет пересечение с предыдущим окном в 5 минут.
Такой подход упрощает задачу для модели, но имеет смысл только при небольшом шаге по времени в прогнозе. У нас шаг прогноза — 10 минут, поэтому добавление перекрытия по времени будет давать заметную погрешность прогноза просто из‑за того, что за 15–20 минут может сверкнуть очень много молний на довольно большой площади.
Поэтому сначала мы подготовили наши данные по алгоритму из статьи. С одной стороны, мы хотели проверить воспроизводимость результатов, а с другой — оценить их переносимость на актуальную для нас территорию, так как в статье все эксперименты проводились для Швейцарии, а нас интересует Россия.
После этого мы пересобрали наши данные уже без перекрытия по времени, чтобы получить актуальный для нас бейзлайн, от которого можно стартовать. В итоге у модели появилась ещё одна модальность в виде молний, с которой она работает.
Со стороны звучит просто, но нам потребовалось три хака, чтобы получить нормальное качество прогноза. Их использование связано с тем, что молнии, как и другие экстремальные погодные явления, — это сильно локальные и в какой‑то степени хаотические явления, которые довольно проблематично прогнозировать. В терминах ML они скорее являются выбросами, а не частым явлением.
Во‑первых, молнии — это событие, которое случается сильно реже, чем осадки. Поэтому если мы будем обучать модель с нуля на общих данных, то мы получим байес по географии и сезонам. А это нас не устраивает, ведь мы готовим глобальную модель, которая в любой точке мира должна хорошо работать. Поэтому мы взяли нашу текущую наукастовую модель и решили её дотюнивать под новую задачу так, чтобы метрики по прогнозу осадков не ухудшались. То есть мы заморозили веса нашей продовой наукастовой модели, добавили к ней вход и выход, отвечающие за информацию о молниях, и обучали только их.
Во‑вторых, молнии — это точечное хаотическое явление, которое проблематично спрогнозировать точно, и корректнее говорить про область, в которой вероятно появление молний. Поэтому мы агрегируем информацию о молниях за десятиминутный интервал, чтобы совпадать с шагом наукастового прогноза, и расширяем область влияния молний в радиусе нескольких километров от них. В итоге мы получаем область, в которой есть высокая вероятность появления молний: модель работает с данными в таком формате и возвращает в прогнозе, соответственно, тоже область с повышенной вероятностью появления молний.
В‑третьих, несмотря на предобработку данных из пункта выше, поля молний обычно всё равно остаются довольно локальными, поэтому в дополнение к классической паре сегментационных лоссов BCE + Dice мы добавили ещё Contour Loss, чтобы дополнительно штрафовать модель за отклонения в прогнозе границы области осадков и молний. Схема вычисления такого лосса показана на картинке ниже.

А вот так наша карта гроз выглядит глазами пользователя:
Прогноз молний в нашей модели наукаста — это только начало пути в прогнозе экстремальных погодных явлений. Мы планируем добавить прогноз новых параметров, например града или ураганов, и улучшать качество текущего прогноза, например учитывая прогноз глобальных среднесрочных моделей. Такими моделями могут быть как классические физические модели, например IFS от ECMWF, так и нейронные модели на базе GraphCast от DeepMind или Aurora от Microsoft. Поэтому следите за новостями и пользуйтесь Яндекс Погодой.
Комментарии (5)
konst90
19.06.2025 09:56Не знаю, как с грозами, а вот с обычными дождями всё плохо.
Уже четвёртый день в Самаре обещанные дожди на весь день оборачиваются лёгким дождиком глубоким вечером. Вот прям вчера - в 5 часов вечера дождь был обещан на 8, но так и не случился.
unreal_undead2
19.06.2025 09:56А стандартное моделирование с решением физической задачи на сетке Яндекс сам делает, или берёт готовые прогнозы и допиливает MLем? На мой взгляд стоило бы на него побольше вычислительных ресурсов выделить.
Chitaevd
19.06.2025 09:56За последние две недели, я дважды попал под дождь, когда обещали солнце, и смог обгореть во время поездки на велосипеде в пасмурную погоду.
#Раньше было лучше
erebmaethor
Вот вы пишете про проведённую работу по улучшению моделей, новые подходы и всё такое, а я, как пользователь, уже года три как ощущую субъективное ухудшение качества прогноза погоды.
Если раньше я удивлял друзей на шашлыках - яндекс писал, что через полчаса пойдёт дождь, и он шёл. То теперь буквально пару дней назад смотрел то за окно, где шёл ливень, то на телефон, где "облачно, лёгкий дождь в семь вечера".
Почему так? Может, не стоило менять модель, если прошлая работала лучше?
ЗЫЖ Про недавний вырвиглазный редизайн вообще молчу.
Fizikoleg
Я тоже это заметил, но дело не в моделях, а в данных. Например, после 24.02.22 часть самолётов перестали летать в РФ, а на многих самолетах стояло специальное метеорологическое оборудование, также в Россию перестали поступать метеоданные с европейских спутников.