Как Мы Делали Краткосрочный Прогноз Осадков. Лекция В Яндексе

В начале зимы Яндекс.

Погода научился показывать будут ли осадки в ближайшие два часа.

Спустя пару месяцев тема прогнозирования погоды стала центральной на одном из мероприятий Data & Science. Среди спикеров в тот день был Алексей Преображенский, разработчик команды Яндекс.

Погода.

Алексей рассказал о нашем алгоритме прогнозирования текущей погоды и сверточной нейронной сети, лежащей в основе этого алгоритма.

Ниже приведена стенограмма лекции и слайды.




Меня зовут Алексей Преображенский, я не метеоролог, а разработчик, и буду говорить о технических вещах, об анализе данных.

Сколько людей здесь занимаются анализом данных — например, участвуют в соревнованиях на Kaggle? Много.

И кто участвует в яндекс обучение в машинном обучении? Та же сумма, отлично.

Мой доклад организован в некотором роде как тренинг.

Вас ждет рассказ о том, как мы в команде Яндекс.

Погоды строили научное вещание, какие алгоритмы использовали, какие данные использовали, как проводили измерения и что у нас получилось.

Каждый, кто смотрел фильм «Назад в будущее 2», наверняка знает, что такое прогноз погоды.

Когда Док Браун выходит из машины и говорит, что дождь прекратится через 5 секунд, это прогноз погоды.

Но это сейчас в фильмах.

Прогноз текущей погоды в реальной жизни — по крайней мере, в сознании менеджеров — выглядит либо как уведомление человеку посредством текстового или push-уведомления, либо как карта осадков, которая перемещается во времени.

Задача была именно разработать продукт, который бы совмещал в себе и уведомления, и карту осадков.

Нужен был прогноз осадков на карте будущего, плывущие облака.

Полтора года назад, когда мы начинали, у нас не было ничего, кроме данных.

В отличие от участников Kaggle, у нас не было ни фиксированных метрик, ни базовых решений.

Единственное, что существовало, — это постоянная гонка технологий, в которой мы хотели обогнать самих себя.

Первое решение — это просто День сурка.

Обогнать прогноз, решить, что завтра будет так же, как вчера.

И следующая модель должна улучшить характеристики предыдущей.

Что нужно для прогноза осадков? Нам нужны данные, радиолокационные изображения.

Вам необходимо понять, как частицы движутся в атмосфере, какие ветры дуют и как применить это движение к частицам.

Расскажу обо всех трёх составляющих прогноза.



Как мы делали краткосрочный прогноз осадков.
</p><p>
 Лекция в Яндексе

Во-первых, это радиолокационные изображения.

Они бывают самых разных форматов и от разных поставщиков.

Это просто отдельные изображения в формате PNG, с оговоркой, что цвет с таким-то кодом обозначает такую-то интенсивность отраженного сигнала.

Это может быть GeoTIFF — картинка в формате TIFF с геоинформацией внутри себя, на которой указано, к каким координатам она относится.

Или — научный формат NetCDF. Радары сильно различаются по скорости обновления.

Есть радары, которые обновляются раз в 10 минут, раз в 15 минут. Хуже всего то, что данные радаров — в отличие от относительно чистых данных конкурентов — содержат артефакты.

Радары работают на физических принципах, на отражении волн, поэтому у них есть слепые зоны.

Причём, когда небольшие фрагменты зоны видимости радиально перекрываются зданиями, это далеко не самый сложный случай.



Как мы делали краткосрочный прогноз осадков.
</p><p>
 Лекция в Яндексе

Некоторые радары покрывают примерно 50% круга.

Есть и артефакты, сделанные людьми.

Например, в период бета-тестирования мы столкнулись с человеком, который купил себе точку Wi-Fi, неправильно настроил на ней частоту и номер канала, а затем выставил ее в окно.

В результате над Иваново в виде облака висел огромный лазерный меч.

Мы увидели это на карте и ничего не могли с этим поделать, пока не позвонили в Управление частотой.

Пожалуйста, если вы покупаете точки Wi-Fi где-то в Китае, настройте их на российские частоты.



Как мы делали краткосрочный прогноз осадков.
</p><p>
 Лекция в Яндексе

Помимо радиолокационных данных нам нужно еще откуда-то взять векторное поле.

В принципе, его можно взять только из двух мест: либо путем анализа предыдущих радиолокационных изображений и применения, скажем, алгоритмов оптического потока, либо из каких-то других источников.

Например, можно использовать моделирование погоды и результаты работы того же ORF или Meteum. Берем поле ветра и используем его для передачи изображений, которые возвращает радар.

Оба метода получения векторных полей имеют недостатки.

Оптический поток невозможно рассчитать в местах, где не летают облака.

Лучу радара не от чего отскакивать, нет данных о скорости и направлении движения воздуха.

Моделирование погоды может не соответствовать реальности.

Поэтому, если бы мы использовали только данные модели погоды, то могло бы случиться так, что на исторических данных радара облако летит в одном направлении, а затем в прогнозе ветра оно внезапно разворачивается и летит в другом направлении.

Третьим компонентом прогнозирования текущей погоды является алгоритм применения векторного поля.

Здесь наука может сделать довольно многое.

За основу мы взяли сплайн-трансформацию тонкой пластины — преобразование изображения, которое представляет его в виде тонкой резиновой пластины и растягивается в некоторых местах.

Мы параметризуем это преобразование всего несколькими опорными векторами и восстанавливаем все остальные векторы движения внутри изображения с помощью сплайн-интерполяции.

Эта технология используется, например, для восстановления движения из последнего кадра видео.

Известный научный труд. Вооружившись полученными знаниями, мы начали пробовать строить прогноз.

Первое решение, которое пришло в голову, — просто обучить несколько нейросетей так, чтобы первая нейросеть прогнозировала ситуацию на радаре через 10 минут, вторая — через 20 минут, а третья — через 30. Требование было следующее: предсказать данные радара примерно на два часа вперед.

Как мы делали краткосрочный прогноз осадков.
</p><p>
 Лекция в Яндексе

Прогнозы оказались такими.

Примерно в то же время, когда мы обучили 12 нейронных сетей, мы смогли визуализировать данные на карте.

Глядя на прыгающие облака, менеджеры сказали: это мы точно не выпустим.

Один из них сказал: я, конечно, понимаю, что это максимизирует вероятность того, что там что-то произойдет, но пользователю это объяснить нельзя — облака так не прыгают в реальной жизни.

На следующей итерации мы решили посчитать только векторное поле и умножить опорные векторы на 2 и 3, чтобы получить перевод не 10, а 20 и 30 минут соответственно.



Как мы делали краткосрочный прогноз осадков.
</p><p>
 Лекция в Яндексе

На ближних горизонтах результаты выглядели вполне прилично, но чем дальше, тем чаще появлялись артефакты с края.

Оказалось, что в векторном поле слишком большие векторы разрывают тонкий пластинчатый сплайн, и мы имеем второе зеркальное отображение нашей картинки.

Затем отражения сливаются.

Артефакт не был заметен на ближних горизонтах, но на дальних горизонтах был очень заметен.

Облако появилось из ниоткуда.



Как мы делали краткосрочный прогноз осадков.
</p><p>
 Лекция в Яндексе

Третье решение заключалось в последовательном применении одного и того же преобразования сплайна тонкой пластины к одному изображению.

С одной стороны, это способствовало накоплению ошибок.

Это было первое действительно работающее решение, которое мы показали во время внутреннего бета-тестирования.

Нейронная сеть получила на вход шесть радиолокационных изображений за последний час и с помощью нескольких сверток сократила их до тензора из 16 векторов 4х4. Сплайн-преобразование восстанавливалось из векторов и последовательно применялось к изображению для получения каждого последующего горизонта прогноза.

Решение показало себя неплохо, но остался единственный вопрос: зачем нам нейронная сеть? Если красные свертки — единственная часть, которую мы обучаем, почему бы нам не вычислить векторное поле самостоятельно, алгоритмически? Итак, четвертое решение, значительно улучшившее результат, использовало явную минимизацию функции потерь.



Как мы делали краткосрочный прогноз осадков.
</p><p>
 Лекция в Яндексе

Мы искали векторное поле, которое одинаково хорошо аппроксимировало бы переход на 10 минут за последний час.

От -60 минут до -50, затем до -40 и т. д. Мы применили это векторное поле к t0, чтобы получить прогноз на 10 минут. Алгоритмически гораздо лучше найти векторное поле с помощью минимизации.

Это работает быстрее и не требует никакой подготовки.

Самое приятное то, что для этого не требуются все данные.

Вы можете пропустить некоторые данные – а радары довольно часто опаздывают. Мы долго думали, что оставить — нейронные сети или алгоритмические расчеты векторного поля.

Но тот самый лазерный меч в Иваново все победил.

Когда оно нависает над тобой, как дамоклов меч, и сводит на нет все векторы вокруг себя, облака не могут ни пересекать его, ни двигаться с ним в одной области.

На снимке даже не происходит никакого физического движения.



Как мы делали краткосрочный прогноз осадков.
</p><p>
 Лекция в Яндексе

Таким образом, мы в конечном итоге пришли к нейронной сети.

Сейчас нейросеть работает и делает прогнозы; здесь схематично показана его архитектура.

Он состоит из 12 примерно одинаковых блоков.

Каждый блок последовательно строит прогноз для своего горизонта, получая на вход определенный тензор состояния и последнее радиолокационное изображение, последний прогноз с предыдущего горизонта.

Тензор состояния имеет довольно небольшую размерность, всего 32 х 32 на 30 каналов, но путем свертки в инволюцию мы получаем из него векторное поле, опорные векторы для сплайн-преобразования тонкой пластины.

И, наоборот, путем свертки в деконволюцию мы получаем места, где выпадают осадки.

Эта архитектура нейросети учитывает, что в некоторых местах осадки выпадают традиционно.

Например, облако, падающее на город, с большей вероятностью упадет, чем на лес, потому что над городом другая атмосфера и микроклимат. Например, там просто теплее.

От горизонта к горизонту, от блока к блоку мы передаем рассматриваемое состояние и попутно немного изменяем его, используя остаточную сеть.

Остаток — это когда мы совсем немного меняем сам тензор, добавляя ему размерности.

Обученная часть — это дельта от обученной части, изменение тензора.

Берем запомненное состояние, используем деконволюцию, чтобы сделать из него некую карту осадков, добавляем ее к облакам и перемещаем их.

Это текущая сетевая архитектура.

Он работает, предсказывает, и результаты довольно хорошие — вы их можете увидеть.

В сети .

Но они довольно хороши с точки зрения показателей науки о данных, показателей ROC AUC и F1, и бизнес не интересуют абстрактные цифры и кривые, которые мы рисуем.

Бизнес заинтересован в точности этих прогнозов, в точности текста о том, что дождь закончится через 10 минут 20 секунд. Теперь перед нами стоит другая задача.

Теперь нейронная сеть обучается с помощью какой-то функции потерь.

Это максимизирует вероятность правильной классификации с использованием двоичной энтропии.

Но на самом деле необходимо улучшать другие показатели бизнеса – не правильность классификации, а правильность определения времени начала и прекращения осадков.

Исследование того, как получить функции потерь из бизнес-метрик для обучения нейронных сетей, очень важно и интересно.

Мы продолжаем развиваться в правильном направлении.

Помимо бизнес-требований, у нас еще немало планов по развитию текущего решения.

Например, на данный момент мы используем только снимки, но у нас есть огромный объем информации.

Самое интересное — это радиальная скорость.

Радар использует эффект Доплера для определения не только наличия частиц в воздухе, но и их скорости.

По длине отраженной волны он понимает, с какой скоростью они движутся к радару или от него.

Результаты также можно использовать для прогнозирования векторного поля.

Но, к сожалению, у нас есть только лучевая скорость и только в тех местах, где действительно есть частицы и осадки.

Вы можете смешивать векторные поля из моделирования погоды.

Ветры есть, но можно добавить еще что-то — например, температуру.

У нас есть рельеф, высоты, география использования земель, тип подстилающей поверхности.

В городах осадки ведут себя иначе, чем над обширным Балтийским морем.

Они пролетают над ним и выпадают в Петербурге.

Еще более серьезная проблема, которую мы сейчас решаем, — это передача прогнозов между радарами.

Теперь нейросеть строит прогноз только для одной зоны, вокруг одного радара.

Облако, приближающееся к границе видимости радара, никогда не перетечет к следующему радару, потому что соседний радар не распознает, что где-то там было облако.

Во входных данных такой информации нет, и этот вопрос остается открытым.

Это все.

Я рассказал обо всех различиях и сходствах между решениями соревнований на Kaggle и бизнес-задачами.

Наша текущая архитектура — это сверточная нейронная сеть.

Он предсказывает не только движение, но и осадки.

Спасибо.

Теги: #Машинное обучение #математика #Алгоритмы #нейронные сети #прогноз #Яндекс.

погода #Яндекс.

погода #погода #осадки #радиолокационные системы #сверточные нейронные сети #сплайны

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.