Объяснимость и интерпретируемость ИИ

Один из ключевых вопросов ИИ – это вопрос его интерпретируемости и объяснимости. В литературе эти термины иногда используются как взаимозаменяемые, но иногда разделяются: интерпретируемость ИИ – возможность понять как моделью был получен определенный ответ (фокус внимания на внутренних механиках модели), объяснимость – возможность понять почему получился такой ответ (фокус на входных данных и их влиянии на результат). Это, в общем, две стороны одной медали, но часто вопрос интерпретируемости волнует исследователей и разработчиков, а вопрос объяснимости – конечных пользователей. Области, которые занимаются вопросами интерпретируемости и объяснимости называются Interpretable AI и Explainable AI (XAI) соответственно.
Мы пока не будем углубляться в детали и начнем погружение со статьи «Rethinking Interpretability in the Era of Large Language Models» («Переосмысление интерпретируемости в эру больших языковых моделей»), в которой объяснимость и интерпретируемость не разделяются, а рассматриваются как взаимозаменяемые понятия.

Введение

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

<i>График из презентации Andrew Ng, лекция «Linear regression with one value, model representation»; примечания Andrew Ng, перевод мой</i>
График из презентации Andrew Ng, лекция «Linear regression with one value, model representation»; примечания Andrew Ng, перевод мой

На графике зеленым цветом нарисована такая прямая. Теперь с ее помощью можно оценить стоимость нового дома, для которого известна только площадь (на оси X отмечен стрелкой, примерно 1 200 кв. футов).
Все понятно.
Есть и более сложные алгоритмы, которые изначально задуманы достаточно прозрачными. Яркий пример – дерево решений. Этот алгоритм выдает ответ в формате «если …, то …» («если доход клиента превышает 100 тысяч рублей, то он вернет кредит», например). Математику внутри дерева решений объяснить просто, там тоже все понятно (я знаю, что без объяснения может быть непонятно, но про деревья решений планирую писать отдельный пост, поэтому не буду здесь углубляться в детали).
А с каким-нибудь трансформером вроде GPT ничего не понятно, поэтому нужно разрабатывать специальные инструменты, чтобы забраться внутрь и объяснить, как там что работает.

Плюсы и минусы работы с большими языковыми моделями

Большой плюс языковых моделей в том, что они могут выдавать ответ на человеческом языке. То есть, чтобы его интерпретировать, не надо уметь читать сложные графики. Кроме того, с ними можно вести диалог, уточняя и расширяя объяснения, чтобы лучше понять логику полученного результата.
Однако стоит учитывать, что, во-первых, большие языковые модели страдают галлюцинациями и могут выдавать убедительный по форме, но неверный по сути ответ. Я как-то попала в такую ловушку, работая с GPT на больших массивах данных. У меня был метод проверить, влез ли мой документ в контекстное окно модели (то есть, видит ли она его целиком и может ли обработать целиком за один раз). Я задавала вопросы про какой-нибудь объект, который находится в конце документа (я работаю с патентами, и запросы были, например, такие: «Напиши название патента номер 775» или «Сколько пунктов формулы в патенте 800»). Логика была в том, что, если модель правильно отвечает на вопрос, значит, она прочитала конец документа, значит, имеет его в доступе целиком.
А вот не значит.
Спустя некоторое время мне стало ясно, что ответы, которые генерируются моделью по мои документам, неполные или некорректные, однако открытой информации о том, какие механики использует GPT, не так много, поэтому пришлось ее допрашивать. Спрашиваю: «Дает ли мой метод (описанный выше) достоверный результат?» «Да,» – отвечает GPT. – «Отличный метод для проверки контекстного окна». Но я же вижу, что ее краткие пересказы неполные и анализ выглядит некорректно. Пришлось повозиться с запросами, но в итоге удалось выяснить, что GPT, по всей видимости, использует «скользящее окно». То есть, если она не может прочитать текст целиком, она читает доступный кусочек. Потом следующий, и так до тех пор, пока не найдет правильный ответ. Кроме того, она, скорее всего, использует инструменты (но наотрез отказывается в этом сознаваться) и пишет код, чтобы найти патент с нужным номером и вернуть мне его название, не читая весь документ. Так что размер документа надо ограничивать вручную и давать его по частям, иначе она не справится, но не сообщит об этом.

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

Но это было лирическое отступление.

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

Предложенные методики

Итак, принимая во внимание все перечисленные подводные камни, авторы предлагают некоторые подходы, которые могут помочь нам лучше понять принципы работы модели, с которой мы имеем дело.
Во-первых, в статье рассматривается локальное объяснение – то есть, объяснение одного конкретного ответа большой языковой модели. Хороший метод представить такое объяснение – вместе с ответом выводить описание того, какая часть входных данных какой внесла вклад в формирование результата (то есть, мы передали, например, рентгеновский снимок и хотим понять, на что конкретно обратила внимание модель, делая предсказание о наличии или отсутствии на снимке опухоли). Так можно понять, были ли приняты во внимание действительно важные факторы. Бороться с галлюцинациями здесь помогает метод цепочки рассуждений (chain-of-thought prompting), который подразумевает требование к модели представлять подробное описание каждого логического шага. Еще один вариант повышения надежности – включить в процесс работы модели обязательный этап обращения к внешним источникам с доказанной достоверностью (например, методическим рекомендациям по выявлению опухолей).
Во-вторых, рассматривается глобальное объяснение – объяснение принципов работы модели в целом. Методы, позволяющие понять работу моделей в целом, применимы только к моделям с открытым исходным кодом (то есть, например, с GPT такое не прокатит, а с Llama можно попробовать).
Один из вариантов – «прощупать» модель, проверяя конкретные элементы. Например, можно взять предложение на естественном языке, преобразовать его в набор векторов с помощью большой языковой модели, а потом преобразовать обратно каждый вектор по отдельности, чтобы понять, где какая информация зашифрована. Работая с векторами, можно также выяснить, какие из них были домножены на дополнительные коэффициенты (то есть, были определены как наиболее значимые).

Можно выводить результаты вычислений модели в конкретном слое или в группе слоев, чтобы понять, как поданная на вход информация была изменена. И этот подход, и предыдущий, требуют разработки дополнительных алгоритмов, потому что вручную большие и сложные модели не проверить. Работа над такими алгоритмами ведется разными группами исследователей.
Подход попроще – создать маленькую модель с небольшим числом слоев и посмотреть, как информация обрабатывается внутри нее, а затем попытаться масштабировать наблюдение.
В-третьих, можно работать с набором данных. Поскольку большинство современных языковых моделей умеет работать с кодом, они могут эффективно обрабатывать данные, представленные в табличном формате, и строить разные графики и диаграммы. Это позволяет понять структуру и особенности набора данных и предположить, как они повлияют на результаты работы модели. Например, если в нашем наборе 90% записей относится к кошкам и только 10% – к собакам, модель будет гораздо хуже отвечать на вопросы о собаках, поскольку у нее слишком мало информации для обучения. Здесь есть проблема: во многих случаях наборы данных, на которых обучены модели, не раскрываются. Однако, если такие наборы вдруг в доступе есть, их изучение может оказаться весьма полезным.
С текстом работать сложнее, чем с таблицами, но кое-что все же можно придумать. Например, можно попробовать применить к тексту объяснимые модели, такие как деревья решений, чтобы структурировать его и сделать анализ более доступным. Другой подход – цепочки промптов, которые делают работу модели более прозрачной и дают пользователю доступ к ее «мыслительному процессу». Этот метод подвержен галлюцинациям, однако их вероятность можно снизить за счет аккуратной работы с запросами.

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

Заключение

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

P.S.: заходите в мой телеграм, там много постов про разные модели и инструменты (и не только).

1
1 комментарий

Будем верить, что в будущем смогут обеспечить и прозрачность 👍

1