В чрезвычайно популярной статье, опубликованной в NIPS 2018: Neural Ordinary Differential Equations (Neural ODE) [1], было представлено новое семейство нейронных сетей. В отличие от старых добрых RNN и LSTM, которые предсказывают будущую траекторию процесса на основе предыдущих траекторий, Neural ODE представляет производные этого процесса, из которых будущие траектории могут быть получены путем численного интегрирования, и поэтому он утверждает, что имеет сплошное скрытое пространство. Для оптимизации нейронного ОДУ был принят метод сопряженной чувствительности (ASM, не формальное сокращение, просто для удобства), и его выводы были приложены в приложении. Они были чисто математическими и не предлагают подробного контекста или интуитивного понимания того, почему оптимизация проводится таким образом.

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

Поэтому я поискал литературу по ASM и обнаружил, что она в основном используется в метеорологии, изучении атмосферы и прогнозировании погоды. Одна из найденных мною статей называется Что такое сопряженная модель? [2], и это именно тот вопрос, который я задавал себе. В этой статье дается ясное объяснение ASM для систем с дискретным временем, и эта идея может быть распространена на непрерывное время. Эта история заимствует мотивацию из метеорологии и обсуждает, как можно получить ASM с помощью множителя Лагранжа. Надеюсь, мы сможем развить некоторую интуицию, чтобы упростить математику.

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

Прогноз погоды основывается на моделях, которые принимают вектор a в качестве входных данных и выдают вектор b в качестве выходных данных. Входные данные можно рассматривать как текущую погоду, содержащую такую ​​информацию, как скорость ветра, влажность, температура и т. Д., А выходными данными будет прогноз погоды через некоторые временные интервалы. Выходные данные не обязательно должны иметь тот же формат, что и входные, но для простоты предположим, что они содержат ту же информацию и, следовательно, имеют одинаковые размеры. Затем результат оценивается с помощью одного или нескольких показателей производительности, таких как среднеквадратичная ошибка. Обычно функции для измерения производительности являются скалярными.

Модель обычно вычисляет b из a посредством численного интегрирования, но здесь достаточно рассматривать это как последовательность операций, где каждая операция может рассматриваться как изменение текущей погоды для некоторых шаг времени:

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

Метеорология занимается «чувствительностью» модели: учитывая управляющий вход a 𝒸, как небольшое возмущение на входе влияет на характеристики s𝒸? Это важно, потому что прогноз погоды, который резко меняется из-за небольшого входного возмущения, не очень полезен. Представьте, если телеведущий скажет, что завтра будет 90 F и солнечно, но окажется снежным из-за некоторого шума в измерениях, используемых для прогнозирования, сколько людей будет замерзать на пляже ?!

Хотя начать с цепного правила конвейера легко, я хочу проследить логику, описанную в статье [2], чтобы прийти к ответу. Пусть слегка возмущенный вход будет a ₚ, что даст возмущение как

Легко видеть, что существует последовательность событий, вызванных возмущением Δ a: сначала изменяется выходной сигнал модели b, а затем изменяется измеренная производительность s и соответствующие им возмущения. находятся

Нас интересует, как Δs изменяется с Δ a. Учитывая цепочку событий, интуитивно не понятно, как это можно вычислить, но мы можем начать с чего-то простого: мы можем вычислить Δs как результат Δ b, потому что мы полностью знаем функцию измерения производительности. Дж (.). С приближением Δs рядами Тейлора первого порядка имеем:

Обратите внимание, что здесь Δs стало линейной оценкой возмущения в результате аппроксимации. А уравнение 1 интуитивно означает, что отношение Δs к Δ b - это просто скорость изменения s на b при b = b 𝒸.

Вот конкретный пример: предположим, J (.) - это среднеквадратичная ошибка:

где верхние индексы (f) и (v) представляют собой прогноз и основную истину соответственно. Следуя уравнению 1, мы можем оценить Δs как:

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

Следуя той же логике для вывода уравнения 1, мы можем посмотреть на первую половину конвейера (b = M (a)) и написать следующее:

b / ∂ a - матрица Якоби. Комбинируя уравнения 1 и 2, мы получим (в основном цепное правило…):

это именно то, что нам нужно. В этом примере мы показали, что ∂s / ∂ b можно легко вычислить, поэтому нам остается только ∂ b / ∂ a, чтобы иметь дело с. Все, что нам известно, это a 𝒸, b 𝒸 и функция, с помощью которой b вычисляется от a до последовательность из N операций. Итак, давайте снова применим вывод для уравнения 1 в следующей последовательности:

где верхний индекс (i) обозначает соответствующий вывод после операции iᵗʰ. Третье уравнение выше означает, что операция 0ᵗʰ была применена непосредственно к a. После некоторого шлейфового соединения (или снова цепного правила):

Цепочка произведений частных производных в уравнении (4) равна ∂ b / ∂ a, что нам и нужно для решения уравнения (3). Более точно, мы имеем следующее:

Ура! Мы пришли к ответу. В отличие от статьи, я намеренно сохранил значения a и b для оценки частных производных, потому что я хочу показать все, что нам нужно для вычисления возмущения в s . Также их выписывание помогает при реализации этого алгоритма (при необходимости).

В отношении уравнения 6 необходимо сделать два замечания. (1) Нам нужны все выходные данные (все b 𝒸) на протяжении всей последовательности операций в модели. Это можно сделать, сохранив все промежуточные выходные данные при вычислении b 𝒸 из a 𝒸. (2) Чтобы вычислить ∂ b / ∂ a, нам нужно вычислить все частные производные по операциям модели и оценить их с сохраненными выходными данными. Поскольку очень часто операции идентичны (например, метод Ньютона используется на каждом шаге), матрицы Якоби такие же, и поэтому их вычисление не требует больших затрат.

Пока что в этом методе нет ничего "сопутствующего", но вот и вся хитрость. Поскольку s является скаляром, по расположению числителя ∂s / ∂ a представляет собой вектор-строку. Если мы заставим ∂s / ∂ a быть вектором-столбцом, транспонируя его, уравнение 6 станет:

Здесь транспонирование исходного якобиана, т.е. (∂ b / ∂ a) ᵀ, называется сопряженным, а уравнение 7 называется сопряженная модель уравнения 2. С помощью уравнения 7 мы всегда сможем узнать, слишком ли чувствительна наша модель прогноза погоды к входным данным, и никому не придется снова замерзать на пляже.

Пока что мы повторно продемонстрировали ASM на примере метеорологии. Теперь мы обобщим ASM и определим чувствительность с помощью множителей Лагранжа. Вот мягкое введение в множители Лагранжа.

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

Все, что мы обсуждали в примере с метеорологией, можно применить к этой задаче оптимизации. Предположим, у модели есть некоторые параметры p, которые мы можем изменить, чтобы изменить производительность, и наша цель - максимизировать производительность конечного результата b ⁽ᴺ⁾, настроив p, при этом ограничение определяется одной операцией b ⁽ⁿ⁾ = Mₙ (b ⁽ⁿ⁻¹⁾) в последовательности. Если все операции в последовательности одинаковы, мы можем просто написать b ⁽ⁿ⁾ = M (b ⁽ⁿ⁻¹⁾). Нам понадобится ds / d p для итеративного обновления параметров для оптимизации s, и идея такая же, как и при вычислении ds / d a. Мы не будем обсуждать эту конкретную проблему, а вместо этого рассмотрим проблему непрерывного времени, которую можно хорошо обобщить на пример метеорологии, отметив их параллели.

Рассмотрим задачу оптимизации 9, где F (x, x ’, t, p) называется дифференциально-алгебраическим уравнением (ДАУ). Подобные системы уравнений также называют неявными системами, обобщенными системами или дескрипторными системами. Обратите внимание, что для производной по времени мы будем использовать x ’взаимозаменяемо с \ dot {x}, потому что сложно ввести точку над x. Возможно, кто-то более знаком с полуявным DAE или обыкновенными дифференциальными уравнениями (ODE):

Фактически DAE являются обобщенными формами ODE, потому что не все DAE могут быть записаны в полу-явной форме. Однако мы предположим, что F (x, x ’, t, p) = 0 действительно может быть записано как ОДУ для облегчения понимания. Итак, чтобы оптимизировать G (.) Относительно параметра p в задаче 9, нам нужно будет вычислить dG / d p. Давайте сначала сравним эту проблему с примером метеорологии.

Первое ограничение x '= f (x, t, p) можно рассматривать как непрерывную временную версию b ⁽ⁿ⁾ = M (b ⁽ⁿ⁻¹⁾) в примере с метеорологией. В то время как первый вычисляет производную x, которая затем численно интегрируется для получения следующего состояния, последний напрямую отображает текущий выходной b в его следующее состояние. Кроме того, начальное условие x (0) параллельно управляющему входу a 𝒸.

Целевая функция в задаче 8 оценивает производительность выходного сигнала b после N шагов операции модели с функцией J (.), В то время как целевая функция в задаче 9 оценивает производительность путем интегрирования функция g (.) со временем от 0 до T. В качестве альтернативы мы можем думать о чувствительности dG / d p как о чувствительности dg / d p функции g ( x, T, p) определяется только в момент T.

Теперь давайте, наконец, перейдем к математике для расчета dG / d p. Сначала мы вводим множитель Лагранжа λ и формируем расширенную целевую функцию (здесь я буду использовать скриншоты уравнений из статьи [3]. Такие переменные, как x и p, являются векторами, но не выделены жирным шрифтом):

Сама λ является функцией времени, а * обозначает сопряженное транспонирование или просто транспонирование, если нас интересуют только реальные значения. Затем мы берем его производную по p, чтобы выразить чувствительность dG / d p,

Нижние индексы используются для обозначения частных производных. Например, F = ∂F / ∂ p. Затем мы избавляемся от x ’во втором интеграле путем интегрирования по частям:

Поскольку xₚ обычно сложно вычислить, мы хотим избавиться от второго интеграла, установив кусок коэффициента перед xₚ равным 0. Это даст нам условие, и сопряженное уравнение:

Наконец, мы можем записать чувствительность как:

Легко найти чувствительность xₚ при t = 0, но трудно вычислить ее при t = T. Поэтому, чтобы избежать вычисления xₚ при t = T, мы можем просто установить λ (T) = 0. Мы можем делать это, пока наша система DAE имеет индекс-0 или индекс-1. И поэтому наша чувствительность становится

Кажется, эта форма далеко ушла от примера с метеорологией, но давайте рассмотрим подробнее. Чтобы вычислить чувствительность dG / d p, мы сначала должны численно интегрировать F (x, x ', t, p ), чтобы получить полную траекторию x от t = 0 до T с начальным условием x (0) = x₀ (p ). Затем нам нужно вычислить полную траекторию λ от t = T до 0 с заданным вручную начальным условием λ (T) = 0. Это делается путем численного интегрирования сопряженного уравнения назад во времени. Затем траектория λ используется для расчета чувствительности. Это очень похоже на пример с метеорологией, где мы сначала вычисляем N операций вперед, чтобы получить все b ⁽ⁿ⁾, а затем вычисляем назад все частные производные каждого вывода по отношению к предыдущему. Эти частные производные затем используются для расчета чувствительности.

Кроме того, если мы мыслим в терминах множителей Лагранжа, множитель в локальном оптимуме на каждом временном шаге - это отношение градиента целевой функции к градиенту функции ограничения по параметрам. Если мы вернемся к уравнению 7, то увидим, что множитель Лагранжа просто равен λ = ∂s / ∂ b, что связывает ∂s / ∂ a и ∂ b / ∂ a.

Это немного сложнее для случая непрерывного времени, но если мы проигнорируем первый член в сопряженном уравнении ниже, мы увидим, что λ связывает ∂F / ∂ x и ∂g / ∂ x, градиент целевой функции и градиент ограничения относительно x. Итак, для чего нужна первая производная по времени? Должно быть много интерпретаций, но вот простое объяснение, которое я придумал. При изучении динамических систем переменная и ее производная рассматриваются как две независимые величины, и поэтому ограничение для этой задачи оптимизации в основном принимает две независимые переменные в качестве входных данных. Поэтому при вычислении градиента необходимо учитывать их вклад. Фактически, производная от λ * по времени может рассматриваться как добавление другого множителя, независимого от λ, чтобы иметь дело с градиентным изменением ограничения в результате x ’. Нам нужны оба компонента, чтобы согласовать градиент F с градиентом g.

Другое наблюдение: сопряженное уравнение связывает производные по x вместо p. Это потому, что мы устранили необходимость вычислять ∂ x / ∂ p, записав это сопряженное уравнение. Окончательное выражение чувствительности, естественно, будет обеспечивать градиенты по отношению к p.

Я нарисовал очень упрощенную картину ASM. На самом деле у него есть много ограничений и приложений, которые я здесь не обсуждал. Например, как мы можем гарантировать численную стабильность ASM? Что, если система DAE - это индекс-2 Хессенберга вместо индекса-0 или индекса-1? Кроме того, я обсуждал только применение ASM для оптимизации параметров динамической модели, но он также широко используется при оптимизации формы для проектирования крыловых профилей, вычисления чувствительности для полудискретизированных уравнений в частных производных (PDE) и т. Д. Чтобы полностью понять ASM, подробнее надо копать.

Ссылки

[1] Тиан Ци Чен, Юлия Рубанова, Джесси Бетанкур и Дэвид К. Дювено. «Нейронные обыкновенные дифференциальные уравнения». NeurIPS, 2018.

[2] Эррико, Рональд М. н.д. Что такое сопряженная модель? Http://bio.cgrer.uiowa.edu/people/tchai/HTM/Reference/adjoint_errico.pdf.

[3] Цао, Ян, Шенгтай Ли, Линда Петцольд и Раду Сербан. 2003. «Сопряженный анализ чувствительности для дифференциально-алгебраических уравнений: сопряженная система DAE и ее численное решение». SIAM Journal of Scientific Computing 24 (3): 1076–89.

[4] А. М. Брэдли, Оптимизация с ограничениями в частных производных и сопряженный метод, 15 октября 2019 г. (исходное значение - 16 ноября 2010 г.). Https://cs.stanford.edu/~ambrad/adjoint_tutorial.pdf

[5] Цао, Ян, Шенгтай Ли и Линда Петцольд. 2002. «Анализ сопряженной чувствительности для дифференциально-алгебраических уравнений: алгоритмы и программное обеспечение». Журнал вычислительной и прикладной математики 149: 171–91.