Переход к основному контенту
OpenAI

Понимание нейронных сетей через разреженные сети

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

Загрузка…

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

Как мы понимаем интерпретируемость

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

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

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

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

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

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

Новый подход: изучение разреженных моделей

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

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

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

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

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

Оценка интерпретируемости

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

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

Диаграмма рассеяния, показывающая возможности модели (потери до обучения) по оси x и интерпретируемость (размер сокращенной схемы) по оси y. Точки представляют модели разных размеров и уровней разреженности, цвет указывает на общее количество параметров, а размер маркера — на количество ненулевых параметров. Стрелки, направленные вверх и вправо, указывают на «лучшие» результаты.

Мы построили график зависимости интерпретируемости от возможностей моделей (вниз и влево — «лучше»). При фиксированном размере разреженной модели увеличение разреженности — установка большего количества весов на ноль — уменьшает возможности, но увеличивает интерпретируемость. Увеличение размера модели смещает этот рубеж, предполагая, что мы можем создавать более крупные модели, которые будут как способными, так и интерпретируемыми.

Конкретизируем. Представьте себе задачу, в которой модель, обученная на коде Python, должна завершить строку с правильным типом кавычек. В Python ‘hello’ должно заканчиваться одинарной кавычкой, а “hello” — двойной кавычкой. Модель может решить эту задачу, запомнив, какой тип кавычек открыл строку, и воспроизведя его в конце.

Наши наиболее интерпретируемые модели содержат раздельные схемы, которые реализуют именно этот алгоритм.

Диаграмма, иллюстрирующая пример схемы в разреженном трансформере. На ней показано, как определенные нейроны и головы внимания активируются в ответ на входные токены, такие как «(» и «circuits», с обозначенными путями для положительных и отрицательных весов, умножений, нелинейностей и связей между слоями MLP и внимания, что в итоге приводит к вероятностям выходных токенов.

Пример схемы в разреженном трансформере, которая предсказывает, следует ли завершить строку одинарной или двойной кавычкой. В этой схеме используется всего пять остаточных каналов (вертикальные серые линии), два нейрона MLP в слое 0, один канал запроса-ключа внимания и один канал значений в слое 10. Модель (1) кодирует одинарные кавычки в одном остаточном канале, а двойные кавычки — в другом; (2) использует слой MLP для преобразования этого в один канал, который обнаруживает любую кавычку, и другой, который различает одинарные и двойные кавычки; (3) применяет операцию внимания для игнорирования промежуточных токенов, поиска предыдущей кавычки и копирования ее типа в конечный токен; и (4) предсказывает соответствующую закрывающую кавычку.

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

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

Диаграмма, демонстрирующая пример схемы разреженного трансформера в функции Python get_neighbors. Два назначения current = set() заключены в рамку, а цветные стрелки показывают, какие головы внимания (обозначенные индексами Q/K/V) активируются, чтобы связать каждое появление переменной current с ее использованием в цикле.

Еще один пример схемы, менее подробный. Чтобы определить тип переменной с именем current, одна операция внимания копирует имя переменной в токен set() при его определении, а другая последующая операция копирует тип из токена set() в использование переменной далее, позволяя модели сделать вывод о правильном следующем токене.

Дальнейшие планы и перспективы

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

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

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

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

Авторы

Leo Gao, Achyuta Rajaram, Jacob Coxon, Soham V. Govande, Bowen Baker, Dan Mossing