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

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

Вот несколько примеров обратных задач:

  • Радар использует измерения радиоволн для определения дальности, угла или скорости движущихся объектов.
  • Магнитно-резонансная томография (МРТ) создает изображения срезов внутренней части тела с использованием магнитных полей. Эти многочисленные срезы можно использовать для реконструкции 3D-модели, этот метод называется томографией.
  • Во время своей диссертации я работал над томографией Земли, то есть картированием внутренней части мантии Земли с использованием сейсмических записей (Adenis, 2017).
  • В более общем смысле, многие из неразрушающих методов, которые позволяют видеть внутри объекта или человека, используют обратные методы.

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

Формализм

Математически так называемая прямая задача записывается как d = g (m), где d - вектор содержащий наблюдения, m вектор, содержащий искомую модель, называемый параметрами модели, а g - это теория модели. обратная проблема состоит в том, чтобы найти m, зная d и g.

Например, в сейсмологии мы часто моделируем скорость сейсмических волн (модель м), используя время прихода на самописец (данные d). Время, необходимое волне, чтобы пройти из точки A в точку B, напрямую связано со скоростью этой волны на пути AB. Эта связь выражается функцией g, которая возвращает время, заданное скоростной моделью вдоль AB.

Матрица G содержит частные производные от g по модели:

Если g является линейным, задачу можно записать в виде матричного произведения: d = G.m (где. Обозначает умножение матриц). Теперь вы можете увидеть, откуда обратная задача получила свое название: ее можно решить, найдя обратную матрицу G.

Чтобы решить обратную задачу, линейную или нелинейную, можно использовать алгоритм Tarantola & Valette (1982). Этот алгоритм можно интерпретировать как байесовский вывод. Как и во многих байсовских моделях, ожидается, что наблюдения и параметры модели будут следовать гауссовскому распределению.

Данные

d0 содержит наблюдаемые данные (измерения), а Cd0 - корреляционная матрица данных, которая указывает, как два наблюдаемых данных коррелируют друг с другом.

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

В этом случае мы имеем до инверсии:

Модель

Далее у нас есть:

m0 - это модель a priori, то есть априорное знание модели, которое мы часто выбираем нулевым или постоянным. Cm0 - это корреляционная матрица модели, т.е. как точки модели соотносятся друг с другом. Опять же, в более простой настройке эта матрица диагональна, и диагональ содержит априорную ошибку для j -го параметра:

И у нас есть до инверсии:

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

Cd0, m0 и Cm0 содержат априорное знание системы. Результирующая модель сильно зависит от выбора, сделанного во время разработки этих матриц.

Линейное и нелинейное решение

Если проблема линейна (т.е. если мы можем записать ее как d = G.m), оценка Тарантола и Валетт (1982) для прогнозируемой модели будет:

Алгоритм обновления можно представить в простом виде:

Если проблема нелинейная, итерационный алгоритм принимает следующий вид:

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

заявка

Это приложение представляет собой упрощенный пример картографирования с использованием сейсмической записи. Процесс реализован на python и доступен в этой записной книжке.

Различные шаги:

  1. Синтетическая модель генерируется случайным образом.
  2. Из этой модели извлекаются синтетические данные, соответствующие измерениям.
  3. Исходя из этих измерений, исходная модель перестраивается обратным методом.

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

Синтетическая модель

Ниже представлена ​​рандомизированная синтетическая модель, также называемая исходной моделью. Эта модель представляет собой карту скорости сейсмической волны c в км / с. У нас есть 5x5 ячеек, и каждая ячейка представляет собой квадрат длиной 1 км.

В каждой ячейке с координатой s = (широта, долгота) скорость c (s) постоянна. Чтобы упростить расчет, мы установили модель, обратную скорости:

Среднее и стандартное отклонение m дают нам оценку для m0 и sigma_m0.

В этом формализме m - это вектор размером M = 5x5. Следовательно, корреляционная матрица Cm0 имеет размер (M, M) и в этом примере задается равной единичной матрице, умноженной на sigma_m0.

Синтетический набор данных

Давайте рассмотрим сейсмическую волну, бегущую по карте. Нам известны координаты начальной точки A (эпицентр землетрясения) и конечной точки B (местоположение сейсмического регистратора). Следовательно, мы знаем путь волны, а также длительность dt, которая требуется волне, чтобы перейти от A к B. Набор данных состоит из набора N временных дельт (в секундах), и их соответствующие пути.

Время dt, затрачиваемое волной на прохождение пути, равно сумме времени, проведенного в каждой ячейке:

Где l (s) - длина пути в ячейке s. Последний шаг происходит от c = l / t, поскольку это определение скорости (она равна расстоянию во времени).

Это уравнение и есть наша прямая задача d = g (m). Из этого уравнения мы можем вычислить синтетический набор данных d0. Также это соотношение используется для построения обратной модели.

Здесь d0 - размер N. Мы также устанавливаем матрицу корреляции Cd0 равной единичной матрице, умноженной на стандартное отклонение наших данных.

Прямая проблема

Теперь у нас есть все, что нам нужно. Наша модель g задается уравнением прямой задачи:

Где li (sj) - длина i -го пути в j -ой ячейке. G имеют размер NxM.

Здесь нам повезло, так как у нас линейный процесс. Мы можем напрямую извлечь матрицу G из прямой модели. Но исчисление g и G может иметь решающее значение для некоторых проблем (только подумайте, насколько смехотворно трудной была бы эта проблема, если бы мы попытались смоделировать скорость c вместо 1 / c).

Нужно потратить некоторое время на строгое определение модели, данных и отношения между ними. Некоторые хитрые примеры можно найти в Debayle & Sambridge (2004) (решение для скорости сейсмических волн) и в приложении Адениса и др. (2017) описывают формализм, который я использовал для моделирования затухания во время моей докторской диссертации. Этот формализм более подробно описан в моей диссертации, но на французском языке (Adenis, 2017).

Решение

Применим к нашей проблеме линейное решение Тарантолы и Валетта (1982). Это дает нам следующую карту для 1 / c.

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

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

Ниже показано, что вы получаете с более крупной моделью (чекер 25x25 с примерно 1000 данных). Слева представлена ​​исходная карта, из которой я извлекаю данные, а справа - перестроенная карта. Ниже приведен пример карты, полученной при увеличении sigma_m0. Увеличение этого параметра позволяет модели иметь более широкие вариации. Поскольку наш набор данных не содержит шума, эта модель ближе к нашей синтетической модели.

Заключение

Я представил формализм обратных методов, разработанный Тарантолой и Валеттом (1982). В отличие от машинного обучения обратная задача начинается с теории - отношения, связывающего данные и модель. Без прямой задачи d = g (m) нет обратной задачи.

Я привел упрощенный пример картирования по сейсмическим данным. Блокнот доступен, если вы хотите его опробовать. Параметры (m0, Cm0 и Cd0), используемые в примере, очень простые.

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

Не стесняйтесь задавать вопросы по этой статье, я с радостью отвечу!