Создание объяснимых моделей ИИ для защиты неправильного ответа

Набор данных WinoWhy, представленный на ACL 2020 Хунмингом Чжаном, Синьраном Чжао и Янцю Сонгом, предлагает человеческие объяснения двусмысленных предложений.

Bill passed the half-empty plate to John because he was full.

Из значения предложения следует понимать, что «он» относится к Биллу. Человеческие краудсорсинговые объяснения местоимения антецедент включают:

Bill was full, so he gave the rest of his food to John
Bill is full and couldn't eat more

Целью набора данных WinoWhy является точная настройка пояснительных моделей. Но я подозреваю, что в каждом из этих запросов существует противоположное антиобъяснение в вероятностном пространстве модели (т. Е. Джон был полон, поэтому ему нужна была только половина).
Что касается двусмысленного утверждения, возможно, когда мы исследуем результаты, «Билл» является наиболее вероятным токеном, а другой вариант («Джон») - вторым. Другая возможность состоит в том, что «Джон» будет одним из наименее вероятных токенов (ниже других слов и имен), поскольку мы знаем, что это неверно.

Набор данных WinoWhy действительно включает несколько антиобъяснений, но они обычно меняют слова, а не создают новые интересные объяснения или мотивации.

Есть несколько различных типов моделей, которые могут решить эту проблему:

  • В моделях GPT каждый токен генерируется последовательно, поэтому мы можем просмотреть вероятность следующего токена в любой момент. Мы можем заставить модель выбрать «неправильный» ответ и посмотреть, что будет дальше. Сможет ли он исправить себя и отстоять правильный ответ? Или мы увидим антиобъяснение?
  • В статье WinoWhy модели BERT и RoBERTa оцениваются, давая им задачу двоичной классификации (правильное или неправильное объяснение). Мы не можем легко перепроектировать одну часть входа, чтобы перевернуть двоичный выход. :(
  • Модель seq2seq могла бы выполнить эту задачу, но WinoWhy не обсуждает это.

Если анти-объяснения ошибочны, чем они могут быть полезны?

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

Тонкая настройка GPT-2 на WinoWhy

Я использовал Google Cloud для точной настройки gpt2-large на множестве ответов, отправленных человеком на 180 запросов. В результате появилась модель, которую я назвал gpt-winowhy.

Затем я оцениваю модель по некоторым подсказкам, не включенным в обучение
CoLab Notebook

Это не отличные ответы, но они иллюстрируют несколько различных способов, которыми модель отвечает, если оставить их на основе вероятности: с именем, не указанным в подсказке, с запутанным, но достоверным ответом и с ответами, которые имеют определенный уровень правильности. .
Я получил еще один правильный ответ, который был действительно хорош, но оказалось, что он запомнился из данных обучения :( так что будьте осторожны.

Изучение GPT-2 на хорошем Wino Почему ответ

Давайте воспользуемся пакетом ecco, чтобы изучить наиболее популярные ответы в вероятностном пространстве. (Блокнот CoLab)

Bill passed the gameboy to John because his turn was next.

Как люди, так и в модели, мы видим, что Джон (или Джон) был наиболее вероятным ответом (47%), с одними только вводными словами (он, потому что) в качестве других популярных вариантов.

Рассматривала ли наша модель вариант ответа «Билл»? Давайте расширим результаты.

Здесь мы видим, что «Bill», «Billy» или «bill» вместе имеют шанс 0,55% быть первым токеном. Одно имя, которое даже не появляется в подсказке (Джим), примерно так же вероятно, как «Билл».

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

Получение антиобъяснений

Если мы заставим нашу модель использовать «Билла» в качестве первого токена, что произойдет - сможем ли мы вырастить анти-объяснение?

Я включаю do_sample=True, чтобы пройтись по возможным токенам GPT:
CoLab Notebook

Это красивое и странное антиобъяснение - оно меняет значение слова «поворот» и изобретает другое действие для Билла.

Вывод исправляется («это относится к Джону») и меняет значение «следующий».

Еще один вывод, изменяющий значение слова «следующий».

Ходит, чтобы исправить себя: «Джон, должно быть, получил ход».

Изучение неоднозначных предложений

Что, если мы составим совершенно двусмысленное предложение - Билл и Джон - врачи. Он заботится о пациенте.

Как выглядит вероятность?

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

После тестирования более неоднозначных примеров я обнаружил предвзятость или иное поведение по отношению к именам, используемым в наборе данных точной настройки.
Когда я повторно запускаю неоднозначный пример с «Сара и Джейн», возвращенный токен была «Джейн». Когда я переключаюсь на «Джейн и Сара», возвращаемый жетон был «Она» и только 2,23% вероятности «Сара».
Когда я повторял неоднозначный пример с «Ник и Пабло» (два имени не присутствовали в обучении data) возвращенный токен был «He» (и только 0,61% Pablo).

Мы также могли бы поговорить о том, какие имена включены как отдельные токены в GPT-2, но это сложно.

Выборка деревьев вероятностей GPT

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

Нам следует собрать большую выборку предложений и поискать объяснения с «бабочкой» и «крылом» или, альтернативно, «таблицей», появляющейся в конечном итоге в ответе.
Наш первоначальный прогон отслеживал только самые важные из них. популярных жетонов, и мы не достигли ответа (бабочка) до 11 раунда.
Если мы проследим за пятью наиболее вероятными жетонами в течение 11 раундов, это 5¹¹ = почти 49 миллионов выходов. Слишком много проб!

Стратегия сканирования

Я решаю проследить за 6 наиболее вероятными жетонами, затем 5, затем 4, затем 3… то есть 6! = 720 выходов. Я реинжинирую пакет ecco, чтобы он рекурсивно генерировал эти предложения.

Мы можем выполнить поиск по ключевым словам в 718 предложениях (2 из которых закончились раньше). Мы не знаем окончательного значения или ответа, если модель продолжала писать, но мы можем измерить присутствие в ответе.

25% упоминают бабочку или крыло, 5% упоминают таблицу, 1,7% упоминают и то и другое, а 68% предложений не упоминают ни то, ни другое на раннем этапе (аналогично тому, что мы видели при первом тестировании подсказки).
Когда мы умножаем вверх кумулятивная вероятность ответа определенными токенами, ни одно из предложений не было вероятным 20%, бабочка 5%, таблица 1% и 2% оба.
Интересно, что единственный правильный ответ появляется рано во многих ответов, даже несмотря на то, что наш первоначальный прогон с верхним токеном этого не увидел.

Почему эти совокупные вероятности не складываются в 100%? Если вы запрашиваете модель, в 28% случаев вы получите ответ от моей выборки, а в 72% случаев вы пойдете другим путем.

Мы можем искать наиболее вероятные предложения по ключевому слову:

Наиболее популярное объяснение типа «таблица» (таблица и она сломалась) с вероятностью 0,4%, а четыре основных объяснения типа «бабочка» опережают его.

Я заметил, что предложения-бабочки смещены в сторону заглавной буквы «The» - это связано с правильностью и плавностью ответа модели или с порядком, в котором люди формулируют ответы…?

Затем я понял, что мы в основном смотрим на вероятности первых двух токенов:

  • Таблица (71%)
    * бабочка (2-е место с наибольшей вероятностью) (8%) = 6%
    * таблица (6-е место с наибольшей вероятностью, исключено) (3%) = 2%
  • (15%)
    * бабочка (2-е место с наибольшей вероятностью) (14,4%) = 2,2%
    * таблица (1-е место с наибольшей вероятностью) (15,5%) = 2,3%

По приблизительным подсчетам, «таблица», «бабочка» и «таблица» должны иметь одинаковое количество ответов. К сожалению, «таблица» была вырезана моим методом выборки (5 лучших вариантов токенов в этом раунде).

Повторный запуск с 7! образцы

Было бы несправедливо исключать «таблицу» (2% начальных ответов) из нашей выборки. В конце концов, этот пост начался как поиск анти-объяснений! Будет ли выборка лучше, если проследить за 7 верхними жетонами, затем за 6, затем за 5… (5 040 примеров)?

Добавив седьмой токен в начале и продолжив работу с дополнительным токеном, мы добавили тысячи предложений. Для меня это не было интуитивно понятно, но комбинированная вероятность ответов в выборке снизилась вниз с 28% ответов с 6 токенами до 23% ответов с семью токенами. .
Показательный пример: предыдущий ответ «В предложении говорится о бабочке» был уменьшен, потому что при прогоне с 7 токенами была выбрана только версия с добавленным токеном запятой »Предложение говорит о бабочке , '
Не требуется никаких дополнительных вычислений GPT, чтобы включить больше токенов и вероятностей в последний раунд, поэтому я решил выбрать 5 лучших токенов в конце концов. Сейчас существует почти 25 000 примеров (и с точки зрения вероятности, если вы попросите модель дать ответы из 7 знаков, вероятность того, что это будет в моей выборке, составляет 31%).

Новые результаты

Разделение примеров: 64% ни один, 27% баттерфляй, 7% таблица, 1,5% оба
Деление вероятности: 13% ни один, 12% бабочка, 3,4% таблица, 2,7% оба
«Таблица» предложения появляются в 5 из 15 наиболее вероятных «табличных» ответов.

Графики вероятностей

Давайте скопируем 15 лучших вероятностей из 7! столкнуться с графиком. Я не уверен, есть ли идеальный способ сравнить их, потому что в выборке в 4 раза больше предложений «бабочка», а их «топ-15» сильнее (подумайте о школах, набирающих футбольную команду из небольшого или большого количества студенты), но оба происходили из одной и той же вселенной образцов языковых моделей, так что это могло быть справедливо.

Наиболее вероятное предложение «бабочка» имеет вероятность 3,0%, а наиболее вероятное предложение «таблица» - 0,6%. Если мы продолжим строить наиболее популярные предложения в этих категориях, вероятность упадет для обоих списков, но это снижение не будет пропорциональным; верхний ответ - 1/5 вероятности, а 15-й ответ в выборке - 2/5 вероятности.

Заключительные мысли

  • Я предсказал, что мы можем посмотреть на вероятности первых токенов, и неправильный ответ будет очень маловероятным; вместо этого любой человек или вещь, названная в подсказке, занимает высокое положение. Принуждение к «неправильному» названию часто не обманывает объяснительную функцию модели, и оно дает правильный ответ в более длинном ответе.
  • Мы могли бы использовать тест «неоднозначного предложения» для измерения систематической ошибки в генеративных моделях, но только если мы изменим порядок имен и проверим, как часто они появляются в наборе данных.
  • Было бы хорошо потренироваться на больших наборах данных объяснения (arxiv.org/abs/2102.12060) и включать в себя множество имен.
  • Ищем в топ-6! или 7! options - это не сверхнаучный подход: более реалистично я должен отключать варианты с определенной символической вероятностью или кумулятивной вероятностью.
  • Было бы интересно доработать модель T5 или GPT-Neo на WinoWhy.

Обновления?

Эта статья была опубликована в мае 2021 года. Мои последние рекомендации можно найти в этом файле Readme на GitHub.