Еще в мае я представил доклад на AAPG ACE 2019 (Ежегодная конференция и выставка Американской ассоциации геологов-нефтяников) об использовании машинного обучения для прогнозирования стратиграфических поверхностей в каротажных диаграммах. Я описал пакет Python, над которым работал, как побочный проект под названием Predictatops. ДОИ здесь. Учитывая, что я упоминал о работе над проблемой прогнозирования стратиграфических вершин с использованием машинного обучения в предыдущих сообщениях в блоге на моем личном веб-сайте, я счел целесообразным объявить Predictatops и здесь, на моем веб-сайте.

"которое, очевидно, также было скопировано на носитель, так как вы сейчас читаете его там"

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

Уэллс:

В земле просверлены отверстия.

Журналы скважин:

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

Это продолжается до тех пор, пока не будет измерена вся скважина. Часто используется множество различных типов инструментов, которые измеряют разные свойства, что приводит к получению нескольких каротажных диаграмм для одной скважины. Они измеряют такие вещи, как скорость распространения звука между двумя частями скважины или количество отраженного сигнала, которое измеряется прибором после того, как прибор излучает определенный тип излучения. Затем эти измерения преобразуются в свойства горных пород, такие как плотность, размер зерна и т. д. Дальнейшие пояснения измерений ГИС приведены здесь и здесь. На фото ниже каротаж скважины.

Лучшие:

Вершины — это маркеры вершин вещей. В частности, вершины геологических единиц. Все, что ниже вершины, — это один геологический слой, а все, что выше вершины, — еще один геологический слой.

Различные типы топов:

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

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

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

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

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

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

Стратиграфическая корреляция:

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

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

Подробнее о корреляции стратиграфических каротажных диаграмм можно прочитать на этой странице SEPM (национальная ассоциация седиментологов).

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

Контролируемое машинное обучение:

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

Для более подробных объяснений машинного обучения в Интернете есть много вещей, которые вам предоставит Google. Я поклонник средних статей Кэсси Козырков, чья должность Главный инженер по анализу решений, Google, и она хорошо справляется с изложением ключевых моментов в плотной, но интересной для чтения манере.

Преобразование геологических наблюдений в объекты:

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

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

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

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

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

Predictatops: контролируемое машинное обучение стратиграфических поверхностей

Цель контролируемого машинного обучения Predictatops:

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

Как оценить успех:

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

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

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

Вы также можете сформулировать проблему в терминах бинарного вопроса о том, была ли вершина предсказана точно в том же месте, что и геолог. Проблема с этим подходом двояка. Во-первых, у вас сразу же появляется огромная проблема с несбалансированным классом. Если ваши каротажные диаграммы скважин имеют разные измерения через каждые 1/3 метра и обычно имеют длину 300 метров, каждая скважина будет иметь 1 экземпляр данных для представления вершины и 899 экземпляров для представления не вершины. Это сильно усложнит машинное обучение. Во-вторых, подход бинарного прогнозирования повлияет на то, как вы оцениваете точность, что приведет к получению некоторой не особенно полезной информации. Вы можете получить 4% точно предсказанных глубин и 96% неверных. Однако, если все ваши 96% неправильных вершин находятся в пределах плюс-минус 2 метра от фактических вершин, это удивительно хорошо. Если среднее расстояние между фактической вершиной и прогнозируемой вершиной составляет плюс-минус 56 метров, это нехорошо. В обоих случаях вы были точны всего на 4%.

Настройка проекта:

Если мы не можем сформулировать задачу как бинарную программу машинного обучения или классификационную задачу машинного обучения, то как мы сформулируем задачу?

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

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

Требования к данным:

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

Пока мы обсуждаем размеры обучающих наборов данных, здесь интересно то, что количество необходимых обучающих скважин уменьшается, если кто-то достаточно готов создать и выпустить предварительно обученную модель с открытым исходным кодом, скажем, для 200 000+ скважин в условиях осадконакопления. похожий на ваш. Затем вы можете использовать эту модель в качестве отправной точки и переобучить ее с помощью набора обучающих данных для конкретного случая использования. Это чрезмерно упрощенное описание трансферного обучения, которое привело к невероятным успехам в машинном обучении обработки изображений и естественного языка.

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

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

Статус проекта Predictatops:

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

Эффективность Predictatops:

Самый лучший McMurray в настоящее время имеет RMSE (среднеквадратическую ошибку) 6,6 метра. Более подробная информация доступна в этой презентации, представленной на AAPG ACE и в документации Predictatops.

Подождите, но я не доверяю своему геологу.

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

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

Когда вы хотели бы использовать этот тип подхода?

  1. Когда геологу не хватает времени интерпретировать все скважины, но есть время интерпретировать 1000 скважин из 7000.
  2. Когда у вас есть два участка, обработанных разными геологами, и вы хотите увидеть, как интерпретация геолога А переносится на соседний участок, обработанный геологом Б.
  3. Когда вы хотите определить 5% скважин с наибольшей неопределенностью, и ваши лучшие геологи сосредоточатся на них.

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

Да, самое замечательное в этом типе подхода то, что он оценивает каждую точку глубины в каждой скважине. Эта оценка может быть нормализована к вероятности того, насколько вероятно, что каждая точка глубины на самом деле является вершиной. Есть скважины, где только одна точка глубины или небольшая группа точек глубины имеют более высокие баллы. Другие скважины имеют более высокие оценки, распределенные по всей скважине. Кроме того, некоторые скважины предсказали вершины на той же глубине, что и их соседи. В других скважинах нет. Эту информацию можно использовать для создания оценок/карт/кривых неопределенностей и помочь геологам понять, на чем сосредоточить свои усилия по интерпретации. Я еще не делал этого с Predictatops, но это вполне возможно!

Упрощение использования демонстрационного набора данных:

Как упоминалось ранее, демонстрационный набор данных происходит из формации Мак-Мюррей в провинции Альберта, Канада. Информация об этом есть в README.md и документации Predictatops. Полная ссылка: Wynne et al., (1994) База данных нефтеносных песков Атабаски Месторождение Мак-Мюррей/Вабискоу, отчет об открытых файлах 1994–14, Альберта, Канада; Геологическая служба Альберты. Ссылки на отчет и набор данных.

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

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

Я работал над пул-реквестом для Python-пакета Rockhound, проекта, призванного сделать загрузку геологических демонстрационных наборов данных очень быстрой и простой, что позволит вам получить полностью подготовленный и объединенный набор данных McMurray с помощью двух строк кода. В настоящее время есть этот запрос на включение для набора данных McMurray, подготовленного для прогнозирования фаций. Как только этот запрос будет принят, я отправлю другой набор данных, подготовленный для стратиграфического прогноза.

Другие подходы машинного обучения к стратиграфии

Литостратиграфия:

Литостратиграфия в основном представляет собой сопоставление кривых, поэтому вычислительные подходы восходят к 1970-м годам. Некоторые из лучших результатов, по-видимому, являются специфическими для геологии вариациями динамической деформации времени. Одним из примеров является CORRELATOR от Kansas Geological Survey, но в Python есть и более современные подходы.

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

Хроностратиграфия:

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

  1. Alex Bayeh, Michael Ashby, Darrin Burton и Seth Brazell из Anadarko (теперь Occidental) опубликовали Подход на основе машинного обучения к вспомогательной корреляции каротажных диаграмм, в котором используются тысячи пар каротажных диаграмм, которые являются и не являются представляющий тот же слой для обучения модели, которая затем используется с небольшим количеством вершин из определенной формации и предсказанных вершин для этой формации. Я был взволнован, увидев такой подход, потому что (1) я думал, что подобный подход возможен, но у меня нет доступа к достаточно большому набору данных с открытым исходным кодом, чтобы попробовать его самому (2) он демонстрирует другой подход к контролируемому машинному обучению применительно к стратиграфии.
  2. Кроме того, за последние два десятилетия было опубликовано множество работ, пытающихся применить теорию вейвлет-преобразования к корреляции каротажных диаграмм. Мое мнение об этих подходах обычно заключалось в том, что они очень сложны, но их не так много, чтобы продемонстрировать их с точки зрения полезных прогнозов. Недавним исключением из этого правила был Ye at al., 2017 г. Быстрая и последовательная идентификация стратиграфических границ и моделей суммирования в каротажных диаграммах — автоматизированный процесс с использованием вейвлет-преобразований и бета-распределений, который выглядит как это был бы отличный шаг по созданию признаков для использования в контролируемом или неконтролируемом машинном обучении применительно к стратиграфии.

Вклад в Predictatops

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