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

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

Принятие решений в сложных системах

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

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

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

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

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

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

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

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

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

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

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

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

Как не объяснить

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

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

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

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

Начните с симметрии

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

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

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

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

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

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

Метод последовательных глобальных приближений

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

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

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

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

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

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

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

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