Почему машинному обучению нужна причинно-следственная связь

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

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

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

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

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

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

Давайте посмотрим на это на примере. Рассмотрим следующие уравнения с тремя переменными и совместно независимыми членами шума как заданную систему истинности:

На самом деле мы не знаем этих систем, мы называем их структурно-причинными моделями (СКМ). Все, что у нас есть (помимо некоторой теории), — это данные наблюдений системы. Итак, давайте поступим так, как если бы это было так, и сгенерируем выборку из совместного распределения (X, Y, Z) в качестве наших «наблюдений».

# Defining the systems variables
import numpy as np
import random
import matplotlib.pyplot as plt
random.seed(10)
Z = np.random.normal(loc = 3, scale=1, size = 300).reshape(-1, 1)
Y = 3*Z + np.random.normal(loc = 1, scale=0.5, size = 300).reshape(-1, 1)
X = 2*(Z-1) + np.random.normal(loc = 3, scale=1, size = 300).reshape(-1, 1)

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

# Visualize the association
plt.scatter(X, Y, color='blue')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

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

# Regress Y on X
from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
result = linreg.fit(X, Y)

# Evaluate the regression
r_sq = result.score(X, Y)
print(r_sq) #output:0.78214..

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

Допустим, мы можем это сделать. Ниже мы модифицируем нашу систему, вмешиваясь в X.

# The effect of intervening on X
np.random.seed(10)
Z = np.random.normal(loc = 3, scale=1, size = 300).reshape(-1, 1)
Y = 3*Z + np.random.normal(loc = 1, scale=0.5, size = 300).reshape(-1, 1)
X = np.random.normal(loc = 3, scale=1, size = 300).reshape(-1, 1) #intervene on X

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

linreg2 = LinearRegression()
result2 = linreg2.fit(X, Y)
# Evaluate the regression
r_sq_2 = result2.score(X, Y)
print(r_sq_2) #output: 0.0025...

Как видно выше, у нас чрезвычайно низкое значение R-квадрата, что указывает на очень плохое соответствие нашей регрессии. Другими словами, похоже, что между X и Y нет никакой связи.

Это становится еще более очевидным при построении данных:

# Visualize the association
plt.scatter(X, Y, color='blue')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

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

Быстрый ответ на эту проблему может быть таким: «Тогда давайте проведем как можно больше экспериментов и/или снабдим нашу модель как можно большим количеством данных, надеясь, что модель учтет все возможные варианты и получит надежное понимание контекста своего приложения».

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

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

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

Машинное обучение на основе причинно-следственных связей

«Если мы хотим включить алгоритмы обучения в процесс принятия решений человеком, мы должны быть уверены, что предсказания алгоритма останутся в силе, если условия эксперимента изменятся» (Schölkopf et al., 2021).

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

Причинный вывод можно разделить на две основные задачи.

  1. Использование качественных причинных знаний для причинно-следственных прогнозов
  2. Изучение причинно-следственных графов (причинное открытие)

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

И то, и другое можно понимать как каузальное машинное обучение.

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

Об авторах:

Кеннет Стиппа входит в группу причинно-следственных связей в Институте науки о данных Немецкого аэрокосмического центра. Он имеет опыт работы в области информационных систем и предпринимательства в Калифорнийском университете в Беркли и Университете Цеппелин, где он участвовал как в стартапах, так и в исследовательских проектах, связанных с машинным обучением. Помимо совместной работы с Джейкобом, Кеннет работал специалистом по данным в BMW и в настоящее время получает степень магистра в области прикладной математики и компьютерных наук в Гейдельбергском университете. Подробнее: https://www.linkedin.com/in/kenneth-styppa-546779159/

Якоб Рунге возглавляет группу причинно-следственных связей в Институте науки о данных Немецкого аэрокосмического центра в Йене и заведует кафедрой компьютерных наук в Техническом университете Берлина. Группа Causal Inference разрабатывает теорию, методы и доступные инструменты причинного вывода для приложений в науках о системе Земли и во многих других областях. Якоб имеет докторскую степень по физике Берлинского университета имени Гумбольдта и начал свой путь в области причинно-следственных связей в Потсдамском институте исследований воздействия на климат. Методы группы распространяются с открытым исходным кодом на https://github.com/jakobrunge/tigramite.git. Подробнее о группе на www.climateinformaticslab.com

Цитата из:

Шёлькопф, Бернхард и др. «К обучению каузальному представлению». Протоколы IEEE 109.5 (2021): 612–634.