Конволюция и деконволюция — работаем с сигналами под нефтяным соусом

от автора

Свёртка и восстановление сигнала (далее — конволюция и деконволюция) в инженерии вещи известные и давно не новые. Здесь, на Хабре, есть замечательные статьи, которые отлично объясняют, что это и как используется, на примере компьютерных технологий. Например, всеми любимые свёрточные нейронные сети (CNN) используют как раз конволюцию как механизм в своей основе (Сверточная нейронная сеть, часть 1: структура, топология, функции активации и обучающее множество). Или в другой работе используют деконволюцию для восстановления изображения (Восстановление расфокусированных и смазанных изображений) .

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

  • надеюсь, у этого материала будет образовательная ценность — по крайней мере, я постараюсь рассказать про подходы простыми словами и без лишнего академизма;

  • здесь будет не голая теория, а техники и приёмы, которые мы используем в работе, что может оказаться полезным для инженеров со смежными задачами: быть может, кто-то на нашем примере найдёт решение для себя;

  • помимо реверансов в адрес методов я постараюсь дать объективную критику и на примерах показать рамки применимости;

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

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


Контекст, нефтяной соус

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

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

Поведение давления описывает гидродинамика, у нас для этого принято уравнение пьезопроводности — оно пытается описать процессы фильтрации в пласте:

\frac{\partial p}{\partial t} = \eta \nabla^2 p, \qquad \eta = \frac{k}{\phi \mu c_t}

где p — давление, t — время, \eta — коэффициент пьезопроводности, k — проницаемость, \phi — пористость, \mu — вязкость флюида, c_t — общая сжимаемость системы.

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

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

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

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

Именно эти два свойства и делают законной свёртку, к которой мы скоро перейдём.

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

Конволюция, свёртка

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

В нашем случае это выглядит примерно так:

Далее функцию, которую даёт уравнение, мы будем называть единичной функцией (g(\tau)). Единичная — потому что такой отклик мы получаем при некотором эталонном единичном воздействии на систему (например, при добыче с неизменным дебитом). Если увеличим возмущение кратно — кратно вырастет и амплитуда отклика. То есть теоретически мы можем намоделировать поведение любой интенсивности, но в моменте, внутри одного режима, эту интенсивность менять нельзя.

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

Казалось бы, бери да на каждом новом шаге просто откладывай новую единичную функцию, как с самого начала. Но так делать нельзя. Физическая система условно “помнит” всё, что с ней происходило, — каждое внесённое в неё возмущение. Если проигнорировать ранее внесённые изменения, получим большие систематические ошибки в расчёте. На рисунке ниже видно характер ошибки и то, как она накапливается даже на малом числе шагов.

Чтобы лучше понять природу погрешности таких расчетов ниже приведена гифка с численного симулятора:

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

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

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

В момент, когда мы меняем режим, мы по сути гасим старый уровень воздействия и добавляем новый. Формально это два новых слагаемых, но они частично нивелируют друг друга, и достаточно зафиксировать их разницу. Другими словами, если у нас была функция с амплитудой 100, а нам нужно прийти к 70, на втором шаге мы можем смоделировать две функции — на -100 и на +70, — а можем сразу одну на -30. Математически это одно и то же.

На следующей смене режима добавляется новая дельта, при этом старые слагаемые никуда не исчезают — система продолжает “помнить” их. И дальше по тому же паттерну. Гифка ниже должна наглядно показать, как в действительности собирается сложная функция полностью.

По сути, то что мы рассмотрели — это и есть применение конволюции. Составление комплексного отклика системы, с использование единственного простого уравнения. Мы используем её, чтобы строить модели реальных физических процессов. Но просто “посмотреть” модель — половина дела. Дальше свёртка открывает нам мир поиска решений: мы можем подбирать параметры модели — сворачивать модель в предполагаемую работу системы, смотреть невязку с фактом, предлагать изменения, снова сворачивать, и так по кругу.

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

Деконволюция, восстановление сигнала

Эта штука уже поинтереснее и не такая простая и очевидная, как обычная свёртка. Для чего она нужна конкретно нам — опишу чуть позже, а пока будем считать, что нам нужно восстановить исходный сигнал из комплексного. Казалось бы — возьми да пройдись обратной функцией и разверни данные назад. Да, это было бы здорово, и на идеальном сигнале это сработает, причём детерминированно. Но на практике сигнал имеет шум, а информация об амплитуде — погрешности. При прямом восстановлении с каждым новым шагом мы будем лавинообразно закладывать этот шум в куски единичной функции, отчего воспользоваться ей уже не получится.

Решение, которое мы применяем на практике — и дерзкое и элегантное одновременно.

1. Принимаем первое приближение единичной функции

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

2. Дискретизация и псевдонепрерывность

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

3. Используем точки функции как параметры оптимизации

Теперь сама фича. Мы берём точки, по которым построили дискретную единичную функцию, загоняем их в оптимизатор как параметры и ищем такое их положение, чтобы свёртка этой единичной функции дала наименьшую невязку с фактическими данными. Заметки ради — мы используем оптимизатор L-BFGS-B.

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

4. Добавляем в задачу поиска кастомную регуляризацию

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

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

\text{целевая функция} = \lVert \text{невязка данных} \rVert^2 + \lambda \cdot \lVert \text{негладкость } g \rVert^2

Первое слагаемое тянет решение к данным, второе — наказывает за “рваность”. В роли меры негладкости мы берём кривизну функции на лог-сетке: чем сильнее функция изгибается от узла к узлу, тем больше штраф. У ровной, плавной кривой он близок к нулю, у пилообразной — взлетает. Коэффициент \lambda — это ручка баланса: увеличивая \lambda, мы повышаем итоговую гладкость функции, уменьшая — наоборот, возвращаем шум.

Ниже — иллюстрация того, как примерно происходит поиск единичной функции по всему описанному пайплайну:

Если что — эталон на графике единичной функции показан просто как пример, с чем сравнивать найденное решение; невязка же считается по свёртке, слева.

Кстати, ещё замечание: разумеется, не я автор такого решения. Решение весьма древнее, и наверняка в каждой конкретной области применения теории сигналов найдётся своя практическая статья, которая решает задачу таким образом. В нашем случае это работа von Schroeter, Hollaender, Gringarten «Deconvolution of Well-Test Data as a Nonlinear Total Least-Squares Problem» (SPE Journal, 2004).

Теперь — непосредственно польза от такой процедуры

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

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

Какие здесь можно сделать наблюдения:

  1. Найденная единичная функция отлично попала в фактические данные — это видно по детальному разбору отдельных участков.

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

  3. Функция извлекла данные о поведении системы на поздних временах.

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

Помимо прочего, стоит отметить дополнительные, неочевидные преимущества или фичи деконволюции:

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

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

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

  4. Зная конкретное поведение системы, мы можем чуть изменить условия задачи и искать уже не саму единичную функцию, а уточнять значения амплитуд (для нашей отрасли это актуально, поскольку качество записи дебитов скважины зачастую очень низкое).

Ложка дёгтя в столь волшебную пилюлю

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

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

  2. Без системы регуляризации — которая, к слову, для каждого класса задач будет своя — техника практически не работает и выдаёт мусор за решение.

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

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

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

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

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

Многоканальная деконволюция

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

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

Полигон для испытаний

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

Здесь у нас структурная карта псевдоместорождения и дополнительно, для усложнения, карта неоднородности системы по одному из свойств (проницаемости нефтяного пласта):

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

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

Теперь сама идея многоканальной деконволюции

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

Если приглядеться — это тот самый кривой кейс, который в прошлой главе не собирался обычной деконволюцией. Здесь он собрался отлично: сумма функций идеально описывает исходные (модельные) данные. При этом мы получили чистую свёртку по самому источнику и выделили влияния соседних источников.

Так сделать можно — и притом для каждого сигнала. В нашем случае мы ищем по 4 сигнала на каждый из 4 источников, 16 в общей сложности. Проблема в том, что для каждого источника решение будет своим независимым и никак не будет коррелировать с решениями по другим источникам. По сути, мы получим 4 независимых решения. А система-то у нас одна, и хотелось бы этим воспользоваться, чтобы уменьшить неопределённость.

Чтобы завязать сигналы в единое решение, мы вводим допущение: влияние источника 1 на источник 2 — то же самое, что влияние источника 2 на источник 1. Тем самым мы, во-первых, уменьшаем число искомых функций (с 16 до 10 в нашем кейсе), а во-вторых, завязываем все источники в единый клубок. Так, например, влияние источника 2 на источник 1 находится сразу и в стеке источника 1, и в стеке источника 2. Меняя его, мы вынуждаем поменяться весь стек функций источника 1. А там есть влияния и на источник 3, и на источник 4 — значит, мы заденем и их, они должны будут поменяться и повлиять уже на свои стеки и на соседние. И так по кругу — система получается взаимозависимая.

Конечная матрица единичных функций и их производных для нашего кейса выглядит примерно так:

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

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

Все полученные кривые были честно исследованы аналитическим инструментом, без обращения к численному исходнику. Получены близкие к модельным данные — параметры системы, её границы — всё в допустимых пределах, что на самом деле сильно подкупает и заставляет инструменту верить дальше.

Визуально одним анализом мы покрываем почти всю систему, как будто сканируя всё доступное пространство. Кстати, интересный факт: одно из названий этой технологии — Multiwell Retrospective Test, сокращённо MRT, что созвучно медицинскому МРТ. Уверен, названо так нарочно: мол, смотрите, мы сканируем пласт ровно так же, как МРТ сканирует мозг. Но это не точно.

Если кратко подвести итог и мыслить позитивно, технология даёт нам:

  • очищенные от соседнего влияния функции источников сигнала;

  • сами функции соседнего влияния, которые тоже несут массу информации;

  • постобработку всех функций стандартными средствами — а это очень широкое представление почти о каждом уголке системы и её характеристиках;

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

  • и сверх того — десятки работ в этом направлении извлекают из данных многоканальной деконволюции неприличный объём дополнительной информации, от статистики взаимовлияния до карт свойств системы.

Ух, столько всего, и всё такое классное. Как же нам повезло найти такой крутой инструмент, дающий настолько глубокий и детальный анализ. Ведь да же?

Критика. Или бочка дёгтя с ложкой смысла

Ну или может поварёшкой даже или может даже небольшим ведерком. Но суть в том, что неопределённости — а за ней и плохого по сути — здесь кратно больше, чем в стандартной односигнальной деконволюции.

Даже не касаясь примеров, посмотрим чисто теоретически. Оригинальная деконволюция недетерминирована — она может дать целое облако решений. Назовём эту неопределённость абстрактной величиной K. В многоканальном случае мы работаем уже не с одной функцией, а с n^2 функциями (или с n(n+1)/2 с учётом нашего допущения о симметрии). Грубо говоря, если неопределённость каждой функции перемножается, итог разрастается как K в степени числа функций — а это чудовищный рост (K^{n \cdot \log(n)} в лучшем случае). Да, часть неопределённости мы снимаем новыми инструментами регуляризации, которые становятся возможны в многоканальном случае, но порядок величины это, к сожалению, не меняет.

Но что там теория — давайте на практике посмотрим, почему мультиканальному инструменту сложно верить, на нашем же синтетическом примере.

Почти нереально попасть в настоящую физическую картину

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

А вот естественным путём прийти к той физической картине, которую я сам же и смоделировал, у меня не вышло. Я перебирал функции генерации начальных приближений, пересмотрел около десяти различных функций регуляризации, менял оптимизаторы и функции аппроксимации. Я получал что угодно, но не реальную физическую картину. Свёртки на каждый источник сигнала ложатся идеально. Диагностические графики — в целом физичные, но не соответствующие кейсу. Ниже — один из примеров: одна из функций одного из решений, сопоставленная с читерной.

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

Даже хорошая модель имеет слабую устойчивость

Но окей, допустим, проблемы с физичностью нет и мы круто попадаем в физику каждый раз. Попробуем воспользоваться функцией прогноза. На одном из источников частично заменим историю возмущений. То же самое повторим в численном моделировании и посмотрим, что выйдет:

Здесь мы с 3000 часов заменили амплитуды возмущений на нулевые в обозреваемом источнике. Как видим, первые 500 часов деконволюция ещё держится, а после — идёт вразнос. Это говорит о том, что найденное решение близко к фактическому, но им не является — оно просто даёт такую же картину при таких же вводных. Измени вводные — и система отработает неверно.

Мусор на входе — мусор на выходе

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

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

Здесь красная линия показывает ухудшенную связь, синяя — улучшенную. Часть связей действительно определилась удовлетворительно. Но при этом мы получили почти барьер между источниками Д1 и Д2, хотя по численной модели там улучшенный канал связи. А между Н1 и Д2 получили неплохую связь, хотя по факту там как раз барьер.

И всё же ведёрко смысла здесь есть

Тем не менее назвать технологию мусорной нельзя, и тому есть ряд веских обоснований:

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

  2. Абсолютным значениям, которые мы получаем в ходе анализа, верить сложно, но формы выходят очень похожими на фактические, что теоретически даёт дополнительную пищу для размышлений (хотя может и запутать).

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

  4. Прогноз поведения системы хоть и косой-кривой и уходит вразнос со временем, но на дистанции в 10–20% от длины комплексного сигнала ведёт себя вполне предсказуемо. Это можно использовать, когда нет возможности обратиться к точным моделям.

Заключение

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

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

Деконволюция — уже более творческий инструмент, который сложно сделать кнопочным. Чтобы им пользоваться, нужно хорошо понимать, как он работает и как работает конволюция, нужно разбираться в самом контексте исследования и грамотно выбирать функции регуляризации и их настройки под каждый конкретный случай. Но если эти трудности преодолеть — инструмент открывает широкое поле исследовательских возможностей: расширяет количество и качество извлекаемой информации, позволяет возродить такие данные, на которых классический анализ давно поставил крест. Инструмент, безусловно, небезопасный, но при должных мерах предосторожности пользоваться им можно. Я бы рекомендовал его каждому инженеру.

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

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

На этом — наконец-то всё. Надеюсь, статья найдёт своего читателя и пригодится и в исследованиях, и на производстве. Буду рад дискуссии и открыт для связи.

ссылка на оригинал статьи https://habr.com/ru/articles/1049244/