Генеративная состязательная сеть (GAN) приближает распределение, в то время как байесовские сети (BN) определяют температуру и лыжный маршрут.

Как лыжник, я уже наблюдал in situ за воздействием изменения климата: снег выпадает позже в сезоне, меньше снега на средних высотах… Как специалист по анализу данных, мне интересно, что будет дальше: с более теплый климат, можно ли будет кататься на тех же спусках?

Данные: лыжные прогулки от Camp-To-Camp

Лыжный туризм - это внедорожный вариант катания на лыжах на курортах: на подъеме он выглядит как трейлраннинг или треккинг, но на лыжах, спускаясь вниз, он похож на фрирайд, хотя лыжи тоньше и легче. Что касается внедорожников, то площадка намного больше, чем на горнолыжных курортах.

Однако эта деятельность зависит от качества и количества снежного покрова, а также от лавинного риска. Получение предварительной информации о маршрутах - raison d’être Camp-To-Camp. Актуальная информация собирается с помощью отчетов о выездах, которые немного похожи на отчеты Strava, но содержат больше количественной и качественной информации об условиях на открытом воздухе. Отчеты указывают на условия: отсутствие отчета или плохой отчет по данному маршруту или дате, вероятно, означает, что условия не подходят.

Для моей задачи машинного обучения были выбраны отчеты о выезде из региона Монблан, французской административной части Верхней Савойи. Это самый разнообразный горнолыжный регион с высотой вершин от 1000 до 4810 м на горе Монблан. Но протяженность региона недостаточно велика, чтобы выдержать совершенно другие климатические условия. Отчеты о выезде охватывают период с 2009 по 2019 год. Всего имеется 6656 отчетов о выезде, исключая все неполные отчеты.

Отчеты бывают как текстовыми, так и количественными. В предыдущем посте Пример использования полного NLP с fastText и Tensorflow 2 я сосредоточился на текстовом описании маршрутов. В этом посте я рассмотрю количественные характеристики выездных отчетов. Я выбрал следующие функции, которые имеют отношение к нашей цели и широко доступны в отчетах:

  • Максимальная высота [метр], которая является особенностью ландшафта, но также выбирается лыжниками (например: кататься на лыжах в мае можно только на большой высоте).
  • Лыжи наверху [метр], показывающий, когда снежный покров достаточно толстый для использования лыж (лыжники привыкли носить лыжи на рюкзаке), заполненный Минимальная высота если отсутствует.
  • Лыжи сняты, вниз [метр], аналогично предыдущему, но для спуска требуется больше снега или другой маршрут (например, частично вверх по канатной дороге и вниз по лыжам), заполненный Минимальная высота, если отсутствует.
  • Лыжный рейтинг, определенный для маршрута (не вылазки), по шкале редактора Volopress [8] от 1,1 до 5,5, «нормальный» (для всех) - от 2,1 до 3.3. Косвенное указание топографии местности (уклон, покрытие…). Он преобразован из порядкового в числовой.
  • Оценка состояния - субъективная оценка лыжником прогулки по пятибалльной шкале от ужасного до отличного. Он преобразован из порядкового в числовой.
  • День сезона, который извлекается из даты начала как смещение до ближайшего 15 февраля, середины зимы.

Есть также субъективные оценки количества и качества снежного покрова, но они отсутствовали в большинстве отчетов.

Погодные условия отражаются через температуру. Я использовал температуру утром [° C] с сайта www.historique-data.net на курорте Межев, который расположен на высоте около 1000 м над уровнем моря. Фактическая температура в месте для прогулок другая, но она коррелирована. Чтобы учесть погодные условия в непосредственной близости от прогулки, на основе утренней температуры выводятся две дополнительные характеристики: среднее значение за последние 7 и 30 дней до прогулки.

Всего у меня есть 9 характеристик, количественно описывающих лыжные прогулки.

О чем говорят данные?

Корреляция по признакам довольно информативна. Три температуры взаимосвязаны, даже дневная температура и среднее значение за последние 30 дней. Высота также коррелирована, причем ожидается сильная корреляция на лыжах на и спадах. День сезона в основном коррелирует с тремя температурами и максимальной высотой. Но рейтинг состояния мало коррелирует с какой-либо другой характеристикой, даже меньше коррелирует, чем рейтинг лыжного спорта, который в основном зависит от топографии!

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

  • Сезонность налицо, выездов в летнее время не так много :-)

  • Сезон выезда довольно равномерно распределен по годам в диапазоне 2010–2019 гг., Это хорошо для статистики.

  • Сезон длится 100 дней до и 110 дней после 15 февраля.

Температура уже повышается?

Диапазон времени наблюдений (2010–2019 гг.) Слишком мал, чтобы учесть годовые колебания и получить четкие указания на эволюцию климата. В любом случае сравним начало (2010–2012 гг.) И конец (2017–2019 гг.) Наблюдений.

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

Утренняя температура поднялась на среднее изменение на 1,8 ° C!

GAN

Генеративные состязательные сети (GAN) [1] - это метод одновременного обучения двух глубоких нейронных сетей с учетом эталонного набора данных:

  • генератор принимает в качестве входных данных случайно сгенерированные переменные из распределения (например, гауссовские), то есть скрытые переменные, и выводит случайные переменные, которые имитируют желаемое распределение.
  • Дискриминатор - это двоичный классификатор, предназначенный для отделения входных данных, принадлежащих к набору данных, от тех, которые являются конечными продуктами генератора.

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

Приложения GAN варьируются от расширения данных [6] до передачи стилей [7]. GAN может аппроксимировать распределение, как математически сформулировано в [2]. Я использую это свойство для создания генератора отчетов о выезде, вход генератора - это набор гауссовских независимых переменных, выход - количественные переменные отчета, которые распределяются аналогично реальным отчетам.

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

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

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

Байесовская сеть

В приведенной выше модели GAN все функции объединены в черный ящик, я не могу создавать отношения или условия между ними. Чтобы устранить этот недостаток, я встроу байесовскую сеть в архитектуру GAN.

Байесовские сети [4] - это графические вероятностные модели, показывающие причинность на прямом ациклическом графе. В данном случае я хочу выразить зависимость между типом прогулки (максимальная высота, рейтинг лыж), погодными условиями (температура, день сезона) и остальными характеристиками (включение и выключение лыж, рейтинг состояния).

Подобно условной GAN [3], мой новый генератор для GAN состоит из трех генераторов, которые получают комбинацию случайных величин и наблюдаемых переменных в качестве условий:

  • Первый - это наличие на входе скрытых случайных величин и вывод первых двух характеристик (максимальная высота, рейтинг лыж).
  • Второй генератор принимает на вход эти две функции и некоторые скрытые переменные. Выходы 2-го генератора - это три температуры и день сезона.
  • Та же схема применяется к третьему генератору, но с использованием в качестве входных данных 6 уже сгенерированных признаков и некоторых скрытых переменных (случайных).

В конце концов, выходные данные трех генераторов объединяются в один вектор из 9 функций. Эти характеристики вводятся в тот же дискриминатор, что и в предыдущем случае.

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

Аналогичное обучение применяется ко второму GAN. Проверка аналогична: корреляции признаков, маржинальные распределения.

Сосредоточьтесь на конкретном маршруте

Теперь я могу устанавливать параметры, относящиеся к конкретному маршруту: максимальная высота и рейтинг лыж. Я выбрал маршрут Trou de la Mouche, лыжный рейтинг 2.3, максимальная высота 2453м. Trou de la Mouche (буквально летающая дыра) - это проход через ущелье, имеющее форму головы и тела насекомого. Это довольно известный маршрут в этом регионе, так как парковка очень доступна на высоте 1440 м, склон мягкий и непрерывный на протяжении 1000 м, а качество снега часто отличное, так как он не слишком подвержен воздействию солнца.

Сейчас я пробую выходные данные генератора GAN по сравнению с отчетами о выезде из лагеря в лагерь. Высота подъема / спуска лыж показана на рисунке ниже, реальная высота обычно составляет 1440 м, высота стоянки. Сгенерированная высота обычно составляет от 1200 до 1600 м. GAN не знает высоту парковки, но знает о распределении отметок включения / выключения для подобных выездов.

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

Влияние глобального потепления

По-прежнему используя параметры маршрута «Trou de la Mouche» и описанную выше архитектуру GAN, теперь я смещаю сгенерированные температуры на выходе генератора G2 на фиксированное смещение в диапазоне от 1 до 6 ° C. Текущие цели глобального потепления увеличиваются на 3–5 ° C по сравнению с доиндустриальной эпохой, то есть на 1,5–3,5 ° C с настоящего момента. Однако есть исследования, показывающие, что в Альпах этот рост удваивается [5], поэтому можно ожидать большего роста.

При подъеме на 3,5 ° C средняя высота увеличивается на 100 м, а при 6 ° C - на 200 м. Учитывая, что фактическая высота старта «Trou de la Mouche» составляет 1440 м, при повышении температуры на 3,5 ° C снегом будет покрыта только половина выездов. Для 30% экскурсий потребуется подъем на высоту 100 м.

Вывод

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

Блокнот доступен в моем Data-Science блоге:



использованная литература

  1. Генеративные состязательные сети, И. Гудфеллоу, Ж. Пуже-Абади, М. Мирза, Б. Сюй, Д. Вард-Фарли, С. Озаир, А. Курвиль, Ю. Бенжио, NIPS, 2014
  2. Байесовский ГАН, Ю. Саатчи, А.Г. Уилсон, НИПС, 2017
  3. Условно порождающие состязательные сети, М. Мирза, С. Осиндеро, 2014 г.
  4. « Введение в байесовские сети », Девин Сони, Medium, 2018
  5. « Древесная находка подтверждает альпийское таяние », The Guardian, 2013 г.
  6. « Использование генеративных состязательных сетей (GAN) для увеличения данных в колоректальных изображениях », Джерри Вей, Medium, 2019
  7. Передача нейронного стиля, Tensorflow tutorial
  8. Cotation Toponeige (фр.), Volopress