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

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

Внимание, спойлер: качество сетевых прогнозов резко возросло.

Бизнес-цели

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

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

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

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

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

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

В рамках этого эксперимента мы попытались найти ответы на следующие локальные вопросы:

  1. Действительно ли функция потерь класса Intersection over Union является лучшим результатом для рассматриваемой ниже задачи? Казалось бы, ответ очевиден, но какой? И действительно ли лучший с точки зрения бизнеса?
  2. Можно ли улучшить результаты, комбинируя функции разных классов? Например, Intersection over Union и кросс-энтропия с разными весами.
  3. Можно ли улучшить результаты, добавляя к функции потерь различные дополнения, разработанные специально для сейсмических данных?

И на более общий вопрос:

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

Общее описание эксперимента и данных

Для эксперимента мы взяли ту же задачу выделения геологических слоев на 2D срезах сейсмического куба (см. рис. 1).

Рис. 1. Пример 2D-среза (слева) и результат маркировки соответствующих геологических слоев (справа)(источник)

И тот же набор полностью размеченных данных из голландского сектора Северного моря. Исходные сейсмические данные представлены в открытом репозитории сейсмических данных: Project Netherlands Offshore Block F3. Краткое описание можно найти в статье Silva et al. «Набор данных по Нидерландам: новый общедоступный набор данных для машинного обучения в интерпретации сейсмических данных».

Поскольку в нашем случае речь идет о 2D-срезах, мы использовали не оригинальный 3D-куб, а уже сделанный срез, доступный здесь: Netherlands F3 Interpretation Dataset.

В ходе эксперимента решались следующие задачи:

  1. Мы просмотрели исходные данные и отобрали срезы, наиболее близкие по качеству к ручной разметке (аналогично предыдущему эксперименту).
  2. Мы записали архитектуру нейронной сети, методику и параметры обучения, а также принцип выбора срезов для обучения и проверки (аналогично предыдущему эксперименту).
  3. Мы выбрали исследуемые функции потерь.
  4. Мы выбрали лучшие параметры для параметризованных функций потерь.
  5. Мы обучали нейронные сети с разными функциями на одном и том же объеме данных и выбирали лучшую функцию.
  6. Мы обучали нейронные сети различным сочетаниям выбранной функции с функциями другого класса на одном и том же объеме данных.
  7. Мы обучали нейронные сети с регуляризацией выбранной функции на одном и том же количестве данных.

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

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

Проблема 1. Выбор данных

В качестве исходных данных использовались готовые инлайны и кросслайны сейсмического куба из голландского сектора Северного моря. Как и в предыдущем эксперименте, имитирующем работу интерпретатора, для обучения сети мы выбирали только чистые маски, просмотрев все срезы. В результате было отобрано 700 кросслайнов и 400 инлайнов из ~1600 исходных изображений.

Задача 2. Параметры эксперимента

Этот и следующие разделы представляют интерес, в первую очередь, для специалистов Data Science, поэтому будет использоваться соответствующая терминология.

Для обучения мы выбрали 5% от общего количества слайсов, причем инлайны и кросслайны в равных долях, т.е. 40+40. Слайсы выбирались равномерно по всему кубу. Для проверки использовался 1 срез между соседними изображениями обучающей выборки. Таким образом, проверочная выборка состояла из 39 инлайнов и 39 кросслайнов.

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

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

Маски целевых срезов были представлены в виде бинарных кубов размерности ВхШх10, где последнее измерение соответствует количеству классов, а каждое значение куба равно 0 или 1 в зависимости от того, принадлежит ли данный пиксель изображения к классу соответствующего слой или нет.

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

Для уменьшения влияния случайности выбора начальных весов на результаты сеть обучалась за 1 эру с бинарной кросс-энтропией как функцией потерь. Все остальные тренировки начинались с полученных весов.

Задача 3. Выбор функции потерь

Для эксперимента были выбраны 2 базовых класса функций в 6 вариантах:

Бинарная перекрестная энтропия:

  1. бинарная перекрестная энтропия;
  2. взвешенная бинарная кросс-энтропия;
  3. сбалансированная бинарная кросс-энтропия.

Пересечение через Союз:

  1. потеря Жаккара;
  2. Тверской проигрыш;
  3. Потеря Ловаша.

Краткое описание перечисленных функций с кодом для Keras приведено в статье.

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

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

Используются следующие обозначения:

  • pt — для бинарной маски цели (Ground Truth);
  • pp — для прогнозируемой маски

Для всех функций, если не указано иное, предполагается, что маска предсказания сети содержит вероятности для каждого пикселя изображения, т.е. значения в интервале (0, 1).

Двоичная перекрестная энтропия

Описание: https://towardsdatascience.com/understanding-binary-cross-entropy-log-loss-a-visual-explanation-a3ac6025181a

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

Взвешенная бинарная кросс-энтропия

Эта функция совпадает с бинарной кросс-энтропией со значением бета, равным 1. Рекомендуется при сильном дисбалансе классов. Для бета›1 уменьшается количество ложноотрицательных прогнозов (False Negative) и увеличивается полнота (Recall), для beta‹1 уменьшается количество ложноположительных прогнозов (False Positive) и увеличивается точность (Precision).

Сбалансированная бинарная кросс-энтропия

Эта функция аналогична взвешенной кросс-энтропии, но корректирует вклад не только «единиц», но и нулевых значений целевой маски. Совпадает (с точностью до константы) с бинарной кросс-энтропией для значения коэффициента бета = 0,5.

Проигрыш Жаккара

Коэффициент Жаккара (он же Intersection over Union, IoU) определяет меру «похожести» двух областей. Dice index делает то же самое:

Рассматривать обе эти функции нет смысла. Мы выбрали Жаккард.

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

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

Потеря Тверски

Описание: https://arxiv.org/pdf/1706.05721.pdf

Эта функция представляет собой параметризованный вариант оптимизации коэффициента Жаккара, совпадающего с ним при альфа = бета = 1 и с индексом Дайса при альфа = бета = 0,5. Для других ненулевых и несовпадающих значений мы можем сместить акцент в сторону точности или полноты так же, как и в функциях взвешенной и сбалансированной кросс-энтропии.

Задачу о смещении акцента можно переписать, используя единственный коэффициент, лежащий в интервале (0, 1). В результате функция потерь будет выглядеть так:

Потеря Ловаша

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

Описание функции можно найти здесь, одну из реализаций кода — здесь.

NB!

Для упрощения сравнения значений и графиков здесь и далее под термином «коэффициент Жаккара» будем понимать «один минус сам коэффициент». Потери Жаккара являются одним из способов оптимизации этого отношения, наряду с потерями Тверски и потерями Ловаша.

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

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

Количество связных составляющих (т. е. сплошных пятен одного цвета) на каждом полученном прогнозе является косвенным критерием оценки объема его последующего уточнения интерпретатором. Если это значение равно 10, то слои подобраны правильно и речь идет о максимальной малой коррекции горизонта. Если их немного, то нужно «очистить» только небольшие области изображения. Если их существенно больше, то все плохо и может даже понадобиться полная переразметка.

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

Взвешенная бинарная кросс-энтропия

По результатам экспериментов был выбран параметр бета = 2:

Рис. 2. Сравнение качества сетевого прогноза по основной функции потерь и выбранным критериям

Рисунок 3.Статистика количества подключенных компонентов по значениям параметра бета

Сбалансированная бинарная кросс-энтропия

По результатам экспериментов был выбран параметр бета = 0,7:

Рисунок 4. Сравнение качества прогноза по основной функции потерь и выбранным параметрам

Рисунок 5. Статистика количества подключенных компонентов

Потеря Тверски

По результатам экспериментов был выбран параметр бета = 0,7:

Рисунок 6. Сравнение качества прогноза по основной функции потерь и выбранным параметрам

Рис. 7. Сравнение качества прогноза по основной функции потерь и выбранным параметрам

Из вышеприведенных цифр можно сделать два вывода.

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

Задача 5. Выбор функции потерь

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

Рисунок 8. Сравнение результатов прогнозирования разных сетей с разными функциями потерь по выбранным критериям

Таблица 1. Средние значения критериев

Рисунок 9. Сравнение сетевых прогнозов по количеству прогнозов с заданным количеством связанных компонентов

Из представленных диаграмм и таблиц можно сделать следующие выводы относительно использования «соло» функций потерь:

  1. В нашем случае функции «Жаккара» класса Intersection over Union действительно показывают лучшие значения, чем кросс-энтропийные. Более того, значительно лучше.
  2. Среди выбранных подходов к оптимизации функции потерь на основе коэффициента Жаккара потери Ловажа показали лучший результат.

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

Рис. 10. Прогнозы сетей для одного из «лучших» срезов

Рис. 11. Прогнозы сети для одного из «худших» срезов

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

Итак, на данном этапе мы определились с явным лидером — проигрышем Ловаж, результаты которого можно описать следующим образом:

  • около 60 % прогнозов близки к идеальным, т.е. требуют лишь нескольких корректировок отдельных участков горизонтов;
  • примерно 30% прогнозов содержат не более 2-х лишних мест, т.е. требуют незначительных доработок;
  • примерно 1% прогнозов содержит от 10 до 25 лишних пятен, т.е. требует существенной доработки.

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

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

Задача 6. Выбор наилучшей комбинации функций потерь

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

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

Всего мы проверили 3 пары по 9 возможных коэффициентов в каждой (от 0,1\0,9 до 0,9\0,1). На рисунках ниже по оси x показан коэффициент до потерь Ловажа. Коэффициент перед второй функцией равен единице минус коэффициент перед первой. Левое значение — только кросс-энтропийная функция, правое значение — только потеря Ловажа.

Рисунок 12. Оценка результатов прогноза сетей, обученных на BCE + Ловаж

Рисунок 13. Оценка результатов прогноза сетей, обученных на WBCE + Ловаж

Рисунок 14. Оценка результатов прогноза сетей, обученных на BBCE + Ловаж

Видно, что выбранная «соло» функция не была улучшена добавлением кросс-энтропии. Снижение некоторых значений коэффициента Жаккара на 1–2 тысячных может быть важным в конкурентной среде, но не компенсирует влияния на бизнес по критерию количества связанных компонентов.

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

0,8 * JaccardLoss + 0,2 * BBCE

Среднее значение подключенных компонентов: 11,5695 -> 11,2895

Среднее Жаккара: 0,0307 -> 0,0283

Но эти значения хуже, чем у «сольного» проигрыша Ловажа.

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

Задача 7. «Лучшая» регуляризация функции потерь

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

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

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

Мы обучили 13 сетей с описанной в статье регуляризацией и коэффициентом перед ней, принимая значения от 0,1 до 0,0001. На рисунках ниже показаны некоторые рейтинги по обоим критериям.

Рисунок 15. Сравнение качества сетевого прогноза по выбранным критериям

Рис. 16. Статистика количества связанных компонентов по значениям коэффициентов до регуляризации

Видно, что регуляризация с коэффициентом 0,025 существенно снизила статистику по критерию количества компонент связности. Однако критерий Жаккара в этом случае ожидаемо увеличился до 0,0357. Однако это незначительное увеличение по сравнению с уменьшением при ручной доработке.

Рисунок 17. Сравнение сетевых прогнозов по количеству прогнозов с заданным количеством связанных компонентов

Наконец, мы сравниваем границы классов на целевой и предсказанной масках для ранее выбранного среза «наихудшего случая».

Рис. 18. Сетевой прогноз для одного из худших сегментов

Рисунок 19. Наложение части горизонтов целевой маски и прогноза

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

Суммарные характеристики выбранной функции потерь с регуляризацией:

  • около 87% прогнозов близки к идеальным, т.е. требуют лишь незначительной корректировки отдельных участков горизонтов;
  • примерно 10% прогнозов содержат 1 лишнее место, т.е. требуют незначительных доработок;
  • около 3% прогнозов содержат от 2 до 5 лишних пятен, т.е. требуют чуть более существенной доработки.

Заключение

  1. Только за счет настройки одного параметра обучения — функции потерь — мы смогли значительно улучшить качество прогноза сети и примерно в три раза сократить количество необходимых уточнений.
  2. При острой нехватке времени на эксперименты стоит взять любую из функций потерь Intersection over Union (лучшими в рассматриваемой задаче оказались потери Ловажа) с подбором коэффициента сглаживающей регуляризации. Если есть время, можно поэкспериментировать с комбинациями этого класса функций с кросс-энтропией, но шансы на значительный прирост качества невелики.
  3. Такой подход хорош для бизнес-задач, поскольку исправляет мелкие ошибки в исходной верстке. Но регуляризация вряд ли будет полезна в конкурентной среде, так как снижает оценку целевого показателя.

Дополнительная литература:

  1. Рейнальдо Моцарт Силва, Лаис Барони, Родриго С. Феррейра, Даниэль Чивитарезе, Даниэла Шварцман, Эмилио Витал Бразилия. Набор данных Нидерландов: новый общедоступный набор данных для машинного обучения при интерпретации сейсмических данных (https://arxiv.org/pdf/1904.00770v1.pdf)
  2. Ларс Нерадзик. Потери для сегментации изображения (https://lars76.github.io/neural-networks/object-detection/losses-for-segmentation/)
  3. Даниэль Годой. Понимание бинарной кросс-энтропии/логарифмической потери: визуальное объяснение (https://towardsdatascience.com/understanding-binary-cross-entropy-log-loss-a-visual-explanation-a3ac6025181a)
  4. Сейед Садег Мохсени Салехи, Дениз Эрдогмус и Али Голипур. Функция потерь Тверски для сегментации изображений с использованием трехмерных полностью сверточных глубоких сетей (https://arxiv.org/pdf/1706.05721.pdf)
  5. Максим Берман, Амаль Раннен Трики, Мэтью Б. Блашко. Потеря Ловаса-Софтмакс: удобный суррогат для оптимизации меры пересечения над объединением в нейронных сетях (https://arxiv.org/pdf/1705.08790.pdf)
  6. Бас Питерс, Эльдад Хабер и Джастин Гранек. Нейронные сети для геофизиков и их применение для интерпретации сейсмических данных (https://arxiv.org/pdf/1903.11215v1.pdf)