Когда не следует использовать нейронные сети

Как-то один друг, изучавший искусственный интеллект, попросил у меня совета по выбору модели. В то время он углубился в тему нейронных сетей (neural networks, NN) и их многочисленных вариантов. Он полагал, что нейронные сети способны решить любую задачу и это идеальное решение на все случаи жизни. Зачем в таком случае утруждать себя изучением других методов?

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

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

Итак, начнем с фундаментальных понятий.


Все модели неточны, но некоторые из них полезны

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

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

Ошибка новичка заключается в том, что он отождествляет точность с полезностью. Для ясности приведу примеры из жизни. На каждой странице Amazon размещены десятки предложений товаров, которые я никогда не куплю. Точность алгоритма близка к 0%. Тем не менее несколько долларов, которые приносят его случайные попадания, сложатся к концу года в миллиарды долларов. Точно так же Medium ежедневно предлагает подписчикам около 20 статей, из которых мне интересны одна-две  —  этого достаточно, чтобы я продолжал посещать сайт каждый день. Точность  —  лишь одна из многих вершин айсберга полезности.

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

  • Интерпретируемость  —  способность информировать о решаемой проблеме.
  • Объяснимость  —  способность объяснить найденные результаты.
  • Гибкость  —  способность описывать сложные предметы.
  • Сложность  —  затратность запуска и обучения модели.

Например, при работе с деревом решений, можно узнать, как была решена проблема (интерпретируемость), и отследить, какие решения привели к определенному результату (объяснимость). Чем гуще дерево, тем более мощным (гибкость) и дорогостоящим (сложность) оно будет.

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

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

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

Осталось выяснить, как быть в случаях, когда необходимы эти характеристики.


Эмпирическое правило

Одному моему преподавателю принадлежит меткое определение: “В области искусственного интеллекта используются простые модели для решения сложных задач и сложные модели для решения простых задач”. Рассмотрим каждую часть этого эмпирического правила.

  • Простые модели  —  это классические методы машинного обучения, такие как линейные классификаторы, деревья решений, k-ближайшие соседи и т. д. Как правило, это модели, которые можно реализовать самостоятельно за полдня без частого обращения к Google и большого количества математики.
  • Трудные задачи  —  это все те задачи, для решения которых нам, людям, нужна подготовка и какое-то время, чтобы подумать. Например, оценка стоимости дома, рассмотрение предложения о кредите, выбор методики лечения пациента и т. д.
  • Сложные модели  —  это все методы, требующие больших вычислений, такие как SVM и NN, или, в более широком смысле, почти все ядровые и градиентные методы. Вам вряд ли удастся самостоятельно написать сколько-нибудь полезный код, особенно без частого обращения к Google.
  • Простые задачи  —  это все интуитивные задачи, с которыми каждый человек сталкивается ежедневно. Например, увидев знакомого, вы не тратите время его на распознавание  —  вы мгновенно понимаете, (1) что это человек, (2) кто этот человек и (3) что выражает его лицо. На самом деле, читая этот текст прямо сейчас, вы не задумываетесь о форме букв или о том, как каждый слог соответствует звукам, которые вы произносите про себя. Более того, вы даже не знаете, как миллионы нейронов вашего мозга соединяются, чтобы донести до вас смысл текста.

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

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

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

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

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

Наконец, дополним эмпирическое правило: чем мощнее модель, тем менее она поддается интерпретации / объяснению. Если деревья решений считаются одними из наиболее проверяемых моделей, то о случайных лесах так не скажешь. Аналогичный пример: если модели k-ближайших соседей довольно понятны, гауссовские процессы значительно более непрозрачны. Еще одним примером является линейная модель SVM по сравнению со всеми ее ядровыми вариантами, которые довольно сложно осмыслить.

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


Шкала сложности

Для удобства стоит категоризировать наиболее распространенные методы на основе соотношения интерпретируемость/сложность. Вот (предлагаемая автором) шкала сложности.

Модели с высокой степенью интерпретируемости/объяснимости. Все линейные модели, логистическая регрессия, деревья решений, k-ближайшие соседи и т. д. Эти модели являются скорее “алгоритмическими”, чем “математическими”.

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

Продвинутые модели. Ядровые SVM, нейронные сети, байесовские модели и т. д. Методы этой категории часто являются единственно возможными подходами к решению определенных проблем и / или настройке на специфические характеристики (такие как оценки неопределенности). Более того, они могут различаться по степени сложности (например, трансформаторы в сравнении с MLP).


Крайние случаи

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

Задачи компьютерного зрения. В работе с изображениями и видео обычно нет других вариантов, кроме CNN (Convolutional Neural Network, сверточная нейронная сеть) и ViT (Vision Transformer, трансформатор зрения). Однако используемая формулировка может существенно повлиять на полезность модели. Например, модели сегментации/обнаружения обладают большей объяснимостью, чем классификаторы изображений (в конце концов, они сообщают, где находится объект). Целесообразно также освоить смешанные подходы, например использование CNN для анализа изображения и более простой модели для анализа результатов CNN.

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

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

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


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

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

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи Ygor Serpa: When Not to Use Neural Networks

Предыдущая статьяДобавление личного домена в AWS WebSocket
Следующая статья3 худших совета по осваиванию науки о данных