Как делают погоду в «Яндексе»
Сегодня, 23 марта, в России свой профессиональный праздник отмечают метеорологи и все, кто так или иначе причастен к работе гидрометеорологической службы. В честь этого Информационная служба Хабра пообщалась с руководителем сервиса «Яндекс Погода» Александром Ганьшиным. Мы узнали, как в компании собирают данные для прогнозов, какие алгоритмы обрабатывают их и как погода добирается до смартфонов пользователей.
Как выглядит процесс формирования погоды, какие для этого нужны данные, откуда их собирать, и как итоговый результат доходит до пользователей?
Чтобы погода оказалась в приложении «Яндекс Погоды», её надо для начала измерить. Для этого существует множество способов. Погода представляет собой состояние атмосферы в текущий момент и состоит из температуры, давления, осадков, облачности, направления ветра, влажности и других данных. Для получения объективной информации об этом состоянии существует сеть метеостанций, которые в одинаковый момент времени, по одному протоколу и на одинаковом оборудовании производят измерения. Таких станций всего существует около 10 тыс., и они очень неравномерно распределены по земной поверхности. Всё дело в том, что в развитых странах их плотность выше, чем в развивающихся.
Обычно рядом с этими станциями периодически запускают радиозонды, которые проводят такие же измерения, но на высоте 15-20 километров. Ещё часть данных собирают метеостанции-буи в океане, корабли, коммерческие самолёты во время выполнения рейсов и метеорологические спутники и радары. Все эти средства измерения собирают данные, которые создают начальные условия для формирования прогнозов погоды. Этих данных уже достаточно для того, чтобы понять, какая погода в конкретной точки Земли в настоящий момент времени.
После сбора данных их необходимо обработать таким образом, чтобы можно было построить прогноз и узнать, как данные будут меняться в зависимости от времени. Для этого используются физико-математические модели, построенные на уравнениях гидродинамики и газодинамики. С их помощью описываются все процессы, которые происходят в атмосфере. Уравнения решаются не аналитическим путём, а численно с помощью суперкомпьютеров. В мире существует около десяти таких компьютеров, предназначенных для работы с прогнозами погоды. В них заложены одинаковые уравнения, но отличаются они приближениями и начальными условиями. В России, Европе, Канаде, США, Японии и других странах — свои модели и способы решения уравнений, но в итоге каждый суперкомпьютер обрабатывает входные данные и выдаёт прогноз на ближайшие 10-15 дней.
После этого прогноз оказывается в смартфоне, но только в том случае, если у пользователя не установлена «Яндекс Погода». Для пользователей «Яндекс Погоды» начинается следующий этап. В «Яндексе» мы исходим из того, что модели расчёта прогнозов погоды ошибаются. У каждой модели есть свои особенности. К примеру, одна из них может занижать ночную температуру, тогда метеоролог, который работает с моделью, прибавляет пару градусов для нивелирования погрешности. В «Яндекс Погоде» процесс исправления ошибок устроен похожим образом. Мы используем четыре глобальных прогноза погоды из Европы, Канады, США, Японии и рассчитываем один собственный прогноз с помощью модели Weather Research & Forecasting Model (WRF) с открытым исходным кодом. В итоге получается пять разных прогнозов.
Далее в дело вступает машинное обучение, с помощью которого мы выявляем, какие модели и при каких условиях обычно ошибаются и как эти ошибки можно исправить. Для модели машинного обучения используются пять прогнозов погоды из разных источников, наблюдения на метеорологических станциях, исторические данные о погоде и дополнительные данные, которые, как мы считаем, могут влиять на погоду. К примеру, высота солнца над горизонтом, удалённость от океана, высота над уровнем моря, тип подстилающей поверхности и всевозможные производные от этих данных. Таким образом мы сравниваем прогнозы от разных метеорологических моделей, находим в них закономерности и исправляем ошибки.
Как обнаруживаются и предсказываются осадки и их движение? Как точно понять, что на конкретной улице города идёт дождь, если специальные датчики стоят не на каждом углу?
Как я уже говорил, самый объективный способ измерения погоды и в том числе осадков — метеостанции. Но на всю планету приходится всего около 10 тыс. метеорологических станций, что усложняет наблюдение за дождём. К тому же, осадки — это дискретная величина. Дождь может пойти на одной улице, но на соседней всё будет сухо. Поэтому проще всего измерить осадки с помощью специального ведра на метеостанции, в которое собирается дождевая вода, и можно узнать, сколько миллиметров осадков выпало за сутки. Это один из способов получения данных о дожде.
Другой способ подразумевает использование специальных приборов, которые называются метеорологическими радарами. Их принцип работы схож с авиационными радарами. Подобное устройство, установленное в определённой точке, испускает вокруг себя радиоимпульс и принимает отражения. Если в атмосфере есть осадки, то сигнал отразится от капель дождя и вернётся. Сам радар измеряет ослабление этого сигнала и связывает его с миллиметрами выпавших осадков в конкретном месте. Подобные радары сканируют область в радиусе 250 километров и выдают результаты в разрешении примерно 2x2 километра. С их помощью можно получать информацию об осадках каждые 10 минут.
Если рядом нет радаров, то можно использовать спутниковые приборы. Есть спутники, которые работают так же, как радары, но только из космоса. Их проблема в том, что над одной и той же точкой они пролетают довольно редко. С их помощью можно получать данные с периодичностью примерно в три дня, а люди, скорее всего, не будут столько ждать информацию о дожде. Поэтому для оперативного получения данных мы используем геостационарные спутники. На геостационарной орбите у нас буквально находится большая профессиональная камера, которая делает снимки видимой части Земли каждые 10-15 минут. С помощью этих снимков можно получить данные об осадках. Определяют их нейросети, которые получают снимки и понимают, над какими участками сейчас на самом деле идёт дождь.
Самый точный и верный способ получить данные об осадках — воспользоваться метеостанцией. Это прямой способ измерения, который никогда не ошибается, но делает замеры довольно редко. Радары и спутники относятся к косвенным способам измерения, которые подвержены влиянию внешних факторов и могут ошибаться. Но есть ещё один способ, который позволяет получать данные быстро и без ошибок. Человек всегда может выглянуть в окно и сказать, идёт ли сейчас на улице дождь. Для этого не нужно специальное оборудование и сложные формулы. Именно поэтому «Яндекс Погода» спрашивает пользователей о состоянии за окном. Пользователи приложения становятся настоящими метеорологами, помогающими составлять прогноз погоды.
Всего у нас четыре источника информации, которые мы используем для построения карты осадков. Мы смешиваем данные метеомоделей, данные, полученные с помощью нейросетей со спутников, данные с радаров и сообщения от пользователей. Модель машинного обучения принимает пользовательские отчёты за объективную правду и на основе полученных данных учится точно определять области на карте с осадками и прогнозировать их перемещение.
Пользователи могут сами сообщать об осадках, а если кто-то будет постоянно давать ложную информацию, то как это скажется на точности прогноза?
Плотность расположения наших пользователей достаточно высокая, потому что область проникновения приложения «Яндекс Погода» в стране высокая. Поэтому обычно рядом с пользователем, который постоянно сообщает ложную информацию, находятся другие люди, сообщающие свои показания. Для нивелирования ложной информации мы используем антифрод-систему, позволяющую выявлять недобросовестных пользователей. Поэтому если какой-то один пользователь постоянно сообщает не то, что его соседи, то мы можем присвоить его данным низкий приоритет или вообще какое-то время не учитывать в прогнозе.
Как отслеживать молнии и можно ли их предсказывать?
Информацию о молниях можно получить тремя разными способами. Первый заключается в использовании метеорологических моделей. Они содержат в себе блоки, которые учитывают данные о температуре, осадках, развитии конвекции и могут спрогнозировать вероятные места возникновения молний.
Во втором способе используются метеорологические радары, о которых мы говорили раньше. Так как они измеряют отражаемость от капель воды в атмосфере, то чем выше степень ослабления сигнала, тем выше вероятность возникновения молнии. В грозовых облаках, как правило, более высокая степень ослабления сигнала, чем в дождевых или любых других.
И третий способ заключается в использовании грозапеленгаторов. Если мы хотим в режиме реального времени узнать, где же сейчас ударила молния, то этот способ на текущий момент является эталонным средством. Грозапеленгаторы представляют собой продвинутые и дорогостоящие радиоприёмники, измеряющие время прохождения сигнала в определённом радиодиапазоне. Если приёмник будет один, то мы узнаем примерное расстояние, на котором ударила молния. А с сетью таких приёмников можно будет получить точные координаты. Принцип работы похож на GPS-спутники, которые по времени прохождения радиосигнала определяют местоположение. С помощью одного спутника узнать точное местоположение не получится, но если спутников будет несколько, то можно получить координаты.
Что такое ощущение температуры и как рассчитываются эти ощущения? Как учитывается фактор того, что все люди по-разному воспринимают температуру?
Сейчас берётся скорее средний пользователь в вакууме. Из факторов учитывается сама температура, влажность воздуха, скорость ветра и солнечная радиация. К примеру, когда на нас светит солнце, то мы ощущаем, что на улице чуть теплее, а когда дует ветер, то кажется, что прохладнее. Используя эти четыре фактора, можно построить формулу ощущения температуры.
Мы проводили исследования с участием пользователей сервиса «Яндекс Толока», давали им задачки, чтобы понять, как они ощущают погоду на улице. Понятное дело, что формула получилась средней для всех людей, но дальше мы бы хотели идти в сторону персонализации погоды. Каждый человек по-своему мерзляв или морозостоек. В этом смысле можно разбить людей на несколько классов на основе того, как они одеваются в ту или иную погоду. С помощью этих данных можно будет давать более точные прогнозы с учётом индивидуальности. Прогноз должен быть не просто точным, но и понятным для пользователя.
Каким может быть прогноз погоды в будущем?
В первую очередь чаще и больше будет использоваться машинное обучение. Раньше к нему меньше обращались, но в последнее время всё больше крупных компаний разрабатывают собственные модели машинного обучения для прогнозов погоды. Атмосфера — естественный источник больших данных, в которых можно поискать закономерности и получить интересные результаты.
Профессиональных измерительных приборов в мире очень мало, а сетей из любительских и более дешёвых метеостанций в разы больше. Поэтому видится тренд на использование в прогнозировании погоды данных из таких сетей. В отличие от профессионального оборудования, любительские сети легче масштабировать, а данные с профессиональных станций можно использовать для фильтрации шумов.
Третий тренд развития нацелен на долгосрочную перспективу и заключается в использовании квантовых компьютеров. Сейчас прогнозирование упирается в вычислительные мощности оборудования и невозможность детально описать текущее состояние атмосферы и возможные сценарии процессов в атмосфере. К тому же из-за большого количества неопределённостей возникают ошибки, которые накапливаются, как снежный ком. Поэтому требуется либо увеличивать вычислительные мощности, либо идти в сторону квантовых компьютеров, которые смогут просчитывать всё возможное многообразие развития ситуаций. С точки зрения прогнозирования погоды там большие перспективы.