Новые способности ценой прозрачности: что не так с Astra от OpenAI
Есть глобально два способа сделать модель лучше:
Первые несколько волн прогресса у трансформеров (это наши любимые GPT, Claude и иже с ними) пришли с увеличением числа слоёв, объёма данных и мощности процессоров. А потом придумали цепочки рассуждений (chain-of-thoughts), и трансформеры стали ещё круче.
Цепочки рассуждений — это подход к решению задач: модели дают задачу и требуют расписать каждый шаг решения. Например, дают какой-нибудь сложный математический пример, и она расписывает: сначала раскроем скобки, потом выполним умножение, потом сложение, — и результат получается точнее при том же размере самой модели и при том же наборе обучающих данных.
Сейчас нейросети (я использую слова “нейросеть”, “модель” и “языковая модель” как синонимы в этом посте) стали огромные, и им нужны всё более мощные процессоры, и процессоры дорожают.
Сведущий человек объяснял мне, что у процессоров есть физический предел, до которого их можно уменьшить и сделать мощнее, но я не рискну это всё вам воспроизводить, чтобы не наврать. В общем, возможности процессоров ограничены.
Поэтому исследователи почесали в затылке, вернулись к идее оптимизировать вычисления и придумали вставить в трансформер рекуррентный блок.
“Рекуррентный” значит “возвратный” или “повторяемый”. Это такой блок, который много раз гоняет один и тот же кусочек данных через одни и те же вычисления.
Допустим, наши данные — это текст, и допустим, что наша модель обрабатывает его слово за словом. “Обычная” модель обрабатывает одно слово, выдаёт результат, обрабатывает следующее и так далее. Модель с рекуррентным блоком берёт одно слово и несколько раз его пересчитывает, каждый раз извлекая из него немного больше информации.
Эта идея описана в статье “Scaling up Test-Time Compute with Latent Reasoning: A Recurrent Depth Approach” (“Масштабируем вычисления скрытыми рассуждениями: подход через рекуррентную глубину”). Рассмотрим схему из этой статьи:
Процесс состоит из трёх этапов:
- Текст, который передали модели на вход, превращается в векторы — это на схеме голубой блок P;
- Рекуррентный блок крутит одно слово несколько раз — это зелёные блоки;
- Наконец, получается матрица, которая трансформируется в предсказание следующего слова — розовый блок.
Этапы 1 и 3 стандартные, а вот этап 2 новый. На вход в него подаётся векторное представление слова (e на схеме). В блоке R происходит вычисление: там просто математическая формула, которая меняет вектор, в который превратилось слово, и получается новый вектор.
А потом они берут новый вектор, исходный вектор, склеивают их и снова прогоняют через формулу, и получается третий вектор. Потом берут этот третий вектор, исходный — и опять в ту же формулу.
Хорошая математическая аналогия — формула Герона для нахождения квадратного корня числа. Вот она:
Допустим, мы хотим посчитать квадратный корень из 25. Для начала нам надо выбрать число наобум — допустим, 7, — и подставить его в формулу вместо x_n.
Вместо a в формуле мы подставим 25 (потому что мы ищем его корень). Получится так:
½*(7 + 25/7) –> примерно 5,29.
Потом мы берём 5,29 (наш новый вектор) и подставляем его обратно в формулу:
½*(5,29 + 25/5,29) –> получится примерно 5,008.
Можно сказать, мы уже получили ответ. Но давайте его тоже подставим в формулу:
½*(5,008 + 25/5,008) = 5,000006 — мы медленно приближаемся к числу 5.
А когда мы 5 подставим в формулу, получится
Здорово, правда? Дальше результат не будет меняться, и вот мы получили квадратный корень — можно даже без калькулятора обойтись. Можете попробовать подставить разные числа и посмотреть, что получится.
Рекуррентный блок делает примерно то же самое: он на каждом шаге получает немного более точный ответ до тех пор, пока ответ не перестанет заметно меняться. И выходит, что модель та же, данные те же, а результат лучше.
Astra — новая модель OpenAI — использует такую архитектуру: эти ребята времени зря не теряют и собирают пылесосом все новые идеи, у которых есть потенциал.
Архитектура не нравится специалистам по безопасности: оказалось, что модель стала менее прозрачной и менее контролируемой, и при этом более способной.
Дело в том, что цепочку рассуждений можно было открыть, посмотреть и понять, как модель пришла к своему ответу. А вот такие рекуррентные блоки никакого видимого человеку выхода не дают, поэтому вскрыть их и изучить сложнее.
В техническое описание OpenAI недавно добавили отчёт о проверках безопасности, но сама архитектура закрыта (во всяком случае, пока).
Посмотрим, во что выльется эта история, но наблюдать за ней интересно. Я вот думаю, что методами механистической интерпретации в рекуррентные блоки заглянуть можно: собирать результаты после каждого прогона, потом их изучать и смотреть, что поменялось. В Astra влезть не выйдет: это закрытая коммерческая модель. Но есть некоторые открытые эксперименты. Туда можно попробовать влезть.
Что почитать, чтобы лучше разобраться в теме
- Здесь есть раздел про рекуррентные нейросети (“Наконец, о нейросетях”), он поможет лучше понять рекуррентный блок.
- Здесь подробно описано, как языковые модели обрабатывают текст и превращают его в векторы.
- Здесь я рассказала, что за механистическая интерпретация такая и с чем её едят, а здесь — какие в этой области есть нерешённые проблемы.