Можно ли обучить компьютер?
@ai_longreadsИсследователь попросил двух ИИ-агентов создать трансформер, который работает как полноценный компьютер. Оба смухлевали. Но после небольшой помощи один из них справился -- и теперь на ноутбуке автора работает первый компьютер, веса которого найдены градиентным спуском.
Это AI-перевод статьи, сделанный каналом Про AI: Лучшие Статьи и Исследования.
Можно ли обучить компьютер?
Can You Train a Computer? Автор: Dimitris Papailiopoulos Оригинальный текст:
Я попросил двух ИИ-агентов построить трансформер, который является полнофункциональным компьютером. Не модель, предсказывающую текст. Компьютер. Оба смухлевали. Потом, после небольшого подталкивания, один из них действительно это сделал.
Теперь у меня на ноутбуке есть трансформер, который принимает программы на вход, выполняет их и возвращает результат. Он умеет вычислять числа Фибоначчи, деление, квадратный корень -- программы, которых он никогда не видел при обучении, -- с точностью >99,5%.
Веса этого компьютера были найдены градиентным спуском (gradient descent).
Под «компьютером» я имею в виду: трансформер с фиксированными весами, классический, который реализует пошаговую функцию универсального набора инструкций (SUBLEQ) над ограниченной памятью, и при зацикливании может выполнять программы, которых не было в обучающих данных. Это не практический процессор, а доказательство того, что градиентный спуск может обнаружить процессор с ограниченной памятью, способный разбирать Тьюринг-полный язык.
Если вам нужен только эксперимент, переходите к разделу «Но можно ли обучить компьютер?». Далее -- как я пришёл к этому вопросу.
Как мы сюда попали? Тоска после получения tenure
В 2022 году я получил tenure (бессрочную должность профессора) и впал в так называемую «tenure blues» -- тоску. Вы ~6 лет работаете ради этого, получаете, а на месте ожидаемого восторга -- пустота. Я не был совсем недоволен своими исследованиями, но чувствовал, что устал доказывать границы сходимости и гонять SGD на ImageNet на 3090-х. Примерно тогда я начал играть с GPT-3 (aka davinci) в API playground.
Больше всего в GPT-3 меня впечатлило вот что: я дал ей странную смесь кода на Matlab и Python с несколькими переменными, циклом, простой арифметикой. Ничего сложного, и я знал, что подобные вещи наверняка были в обучающих данных, но точно не с этими конкретными числами и переменными. Это была модель дополнения, так что я набрал начало ответа и дал ей продолжить. Также я проверил её на куче глупых, но точно не из обучающих данных загадок.
И она ответила правильно на многие из них!
Это был мой момент «искры AGI». Через пару недель я сказал своей исследовательской группе в Мэдисоне: мы бросаем то, чем занимаемся, и все переключаемся на трансформеры. (Можете спросить у защитивших диссертацию аспирантов Kartik и Shashank, чтобы это подтвердить.)
Когда мы начали думать о больших языковых моделях, казалось, что магия заключена в самой архитектуре. Отчасти потому, что трансформеры поглощали каждый уголок машинного обучения -- зрение, речь, NLP и т.д., -- значит, в них должно быть что-то особенное. Кроме того, если минуту посмотреть на уравнение блока трансформера, становится ясно, что attention (механизм внимания) отличается от MLP: он создаёт веса, зависящие от самого входа, а не фиксированные. Выглядит впечатляюще.
Так что я стал одержим пониманием того, что это даёт.
И вопрос, к которому я постоянно возвращался, мотивированный моими мини-экспериментами с GPT-3: может ли трансформер скомпилировать программу?
Не «может ли он автодополнить код» или «предсказать следующий токен в Python». Может ли он реально взять программу в виде структурированных инструкций и полностью её выполнить?
Может ли трансформер быть полноценным компьютером?
Это первый слайд моей первой презентации по исследованию трансформеров (моей группы). Вопрос «может ли трансформер быть компьютером» буквально положил начало всему.
Одной инструкции достаточно
Как вообще это проверить? Уже были результаты, показывающие, что трансформеры Тьюринг-полны, но, честно говоря, я не мог до конца их проследить. Со мной часто бывает с теоретическими статьями: мне нужно переделать всё по-своему, прежде чем я действительно пойму, что происходит. Поэтому я решил сделать это самым простым способом: построить трансформер, который может выполнять язык, который я понимаю.
Мне нужен был простейший набор инструкций, который всё ещё определяет настоящий, функциональный компьютер, и чтобы я понимал, как выглядят программы. Это привело меня в кроличью нору одноинструкционных ассемблероподобных языков.
И тогда я нашёл SUBLEQ!
SUBLEQ расшифровывается как SUBtract and Branch if Less-than or EQual to zero. Он принимает три аргумента (a, b, c) и делает ровно одно:
Вот и всё -- одна инструкция. И этот язык Тьюринг-полный, то есть с его помощью можно написать любую программу.
Отлично. Именно то, что я искал!
Как вы можете представить, раз язык настолько прост, вся сложность должна находиться в программе, а не в наборе инструкций. Но мы не будем переживать о том, как мучительно это будет для будущих программистов этого трансформера.
Важно лишь то, что я мог понять эту одну инструкцию. Компьютеры, способные выполнять SUBLEQ, называются компьютерами с одной инструкцией (OISC) и, возможно, являются простейшими универсальными компьютерами, которые можно определить. По крайней мере, для меня.
Зацикленные трансформеры -- это компьютеры!
Вместе с Angeliki Giannou (она ищет работу, так что нанимайте!), Sashank Rajput, Jy-yong Sohn, Jason Lee и Kangwook Lee мы действительно создали конструкцию «трансформер -- это компьютер» (а под «мы» я имею в виду Angeliki и Shashank). Они вручную подобрали веса трансформера так, что при зацикливании -- когда выход подаётся обратно на вход -- он выполняет одну строку программы SUBLEQ, как такт процессора.
Входная последовательность -- это всё состояние машины: программа, память и счётчик команд. Как перфокарта.
В нашей конструкции один прямой проход = одна выполненная инструкция SUBLEQ, и цикл продолжается до остановки программы (и нет, мы не решили проблему остановки).
Работает это так: каждый слой seq-to-seq трансформера отвечает за один этап pipeline (конвейера обработки) выполнения SUBLEQ. Слой 1 использует attention для чтения текущей инструкции из памяти: счётчик команд говорит «я на инструкции 5», и attention извлекает три аргумента (a, b, c). Слой 2 извлекает фактические значения mem[a] и mem[b]. Средние слои выполняют вычитание с помощью ReLU, а слой записи сохраняет результат обратно в позицию mem b. Финальные слои обрабатывают условный переход: «если результат <= 0, перейти к адресу c, иначе program_counter++».
Angeliki и Shashank показали, что можно построить компьютер SUBLEQ таким образом с 9 слоями.
Мы также обобщили за пределы вычитания как операции на каждом шаге, до произвольных функций -- например, матричное умножение, нелинейные активации и т.д. -- и показали, что можно «зашить» нелинейный градиентный спуск, эмулируя обучение нейросетей... внутри нейросети. Довольно круто.
Для всех этих конструкций веса явные -- можно инспектировать каждую матрицу. Это не результат типа «оно существует». Оно реально существует. Мы даже протестировали его на настоящих программах вроде сортировки (код здесь).
Это был настоящий фестиваль гиков! Мы это опубликовали, и я очень, очень этим гордился.
И хотя мы тогда не совсем правильно это сформулировали, статья по сути является ранним доказательством того, что test-time compute (вычисления во время инференса) может дать сколь угодно много с моделью фиксированного размера. То есть не нужно масштабировать модель -- нужно увеличивать количество выходов.
В данном случае, поскольку трансформер буквально эмулирует процессор, каждый прямой проход -- это один тактовый цикл, и если нажать достаточно раз, получится компьютер общего назначения!
Это было в 2023 году, до того как «test-time compute» стал трендом. Мы сформулировали это как теоретический результат о трансформерах и универсальности вычислений, но импликация была прямо перед нами: не нужна модель побольше, нужно больше циклов.
Впрочем, я отвлекаюсь.
Был ещё один вопрос, на который я не мог ответить и который не давал мне покоя.
Но можно ли обучить компьютер?
Итак, трансформер может быть компьютером, и его можно сконструировать вручную. Но можно ли его обучить?
Зачем обучение, если мы уже доказали это конструктивно? Я продолжал спрашивать себя. Конструкция -- это доказательство существования: веса существуют, которые делают трансформер компьютером. Хорошо.
Но обучение -- это другой вопрос, и, по-моему, более странный!
Когда вы обучаете модель складывать, она учит одну функцию. Когда обучаете сортировать -- тоже одну функцию. Когда обучаете выполнять SUBLEQ, она учит... каждую функцию? Или по крайней мере каждую функцию, выразимую в пределах памяти, определяемой длиной контекста модели. Умножение, сортировка, Фибоначчи, поиск в списке или запуск DOOM -- это всё разные алгоритмы, но все они выразимы как программы SUBLEQ.
Модель, которая научилась правильно выполнять одну инструкцию SUBLEQ для любого состояния памяти, научилась достаточному для запуска любой программы. А обучающие данные могут быть просто случайными переходами состояний!
Не нужно обучать на полных программах. Вы показываете ей беспорядочный суп из одношаговых легитимных пар SUBLEQ (состояниевход, состояниевыход), большинство из которых от случайных бессмысленных программ, и из этого конечного супа она должна извлечь правило, обобщающееся на все другие вычисления/алгоритмы, которые язык может выразить.
Если задуматься, в этом есть что-то дикое. Я всё ещё не могу полностью сформулировать, что именно, но вопрос не отпускал.
Поэтому я попросил одного из аспирантов попробовать обучить! Установка кажется почти идеально чистой: есть эталонный интерпретатор SUBLEQ, так что можно генерировать бесконечные обучающие данные бесплатно. Сэмплируем случайные валидные состояния, выполняем один шаг интерпретатора, записываем пару (вход, выход). Делаем это миллион раз, обучаем маленький трансформер. Стандартное обучение с учителем. Должно работать, правда?
Ну... не сработало!
Нам не удалось. Мы списали это на слишком большое пространство состояний -- слишком много возможных программ, слишком много конфигураций памяти. Мы потратили на это не больше пары недель, и были более перспективные направления.
Так что мы двинулись дальше.
Но вопрос продолжал меня мучить! Если бы удалось обучить трансформер быть компьютером, это было бы по-настоящему новым.
Каждый компьютер, который существует сегодня, был спроектирован людьми. Обученный трансформер SUBLEQ стал бы первым компьютером, найденным градиентным спуском, на универсальной архитектуре, не предназначенной для роли компьютера, и с весами, не созданными вручную.
Я пошёл искать предшествующие работы, и безусловно есть конструктивные доказательства того, что нейросети могут быть компьютерами, начиная с работы Siegelmann и Sontag, показавших Тьюринг-полноту RNN в 1995 году. Есть гибридные архитектуры вроде Neural Turing Machine и Differentiable Neural Computer, которые добавляют внешнюю память к контроллеру LSTM и обучают его конкретным алгоритмам вроде копирования и сортировки. Наверняка есть ещё работы, о которых я не знаю, и я не буду притворяться, что провёл исчерпывающий обзор (хотя я попросил и GPT+DeepResearch, и Claude+Research найти всё, что они могли).
Но насколько я мог судить, никто не обучал классический трансформер функционировать как компьютер общего назначения.
Этот вопрос казался милым и продолжал меня мучить.
(Если вы знаете о предшествующей работе, где обучали классический трансформер функционировать как компьютер общего назначения, пожалуйста, дайте мне знать; я с удовольствием сошлюсь и заранее извиняюсь, если пропустил.)
Возвращение к вопросу с агентами
Итак, с агентами, которые теперь могут проводить эксперименты от начала до конца, мне стало интересно: смогут ли Claude Code и Codex это сделать? Смогут ли они обучить трансформер быть компьютером?
Я думал, что у агентов может получиться, потому что задача казалась выполнимой. Можно генерировать бесконечные обучающие данные бесплатно. Набор инструкций очень прост. Стена, в которую мы упёрлись два года назад, казалась не фундаментальным барьером, а скорее «барьером рутины»: попробуй curriculum learning (поэтапное обучение), масштабируй модель и генерацию данных, подбери функцию потерь и гиперпараметры, итерируй дольше, чем может оправдать человек для побочного проекта. Комбинация всего этого должна как-то работать. Именно тот вид скучной, но решаемой работы, для которой агенты и предназначены.
И, как в прошлых постах, я подумал: ну давайте попробуем! Ещё одна идея, пылившаяся на полке, наконец может быть вычеркнута.
Я дал Claude Code и Codex одинаковый промпт: построить зацикленный трансформер, выполняющий программы SUBLEQ. Состояние машины (программа + память + счётчик команд) подаётся как последовательность токенов (токены), один прямой проход выполняет одну инструкцию, цикл до остановки. Промпт явно указывает: не реализовывать логику SUBLEQ программно внутри прямого прохода. Они могут обучать, вручную задавать веса или использовать любой гибридный подход. Но это должен быть классический, легитимный, настоящий трансформер. Я также попросил сделать модели маленькими, но это было задним числом.
Хорошо, допустим, вы хотите обучить компьютер -- что будет тестовым набором? Вы тестируете на программах! Тестовый набор имеет четыре уровня:
Все уровни требуют 99% точности, проверяемой эталонным интерпретатором.
Если вы специалист по архитектуре компьютеров или операционным системам, вы, наверное, рвёте на себе волосы от «99% точности», но давайте будем великодушны. Это первый обученный компьютер. Мы оцениваем по льготной шкале.
Раунд 1: Взлом награды
Оба агента сначала попробовали честный подход: обучить трансформер на парах (входное состояние, выходное состояние), сгенерированных эталонным интерпретатором SUBLEQ. Стандартное обучение с учителем, как и мой аспирант пытался два года назад.
Не сработало ни у одного! А потом они разошлись интересными путями.
Что сделал Codex: После того как простой подход с обучением не сработал, Codex оставил трансформер, но начал внедрять программную логику в прямой проход. Это было довольно интересно, потому что это был не один большой трюк, а множество мелких, вроде бы разумных инженерных вмешательств. Когда я позже попросил его перечислить, что было нечестным (я буквально спросил «скажи мне, где ты смухлевал»), список оказался длиннее, чем я ожидал.
Логика счётчика команд была зашита, а не обнаружена обучением: решение о ветвлении было внедрено как one-hot смещение «if result <= 0, jump» на Python. Запись округлялась и обрезалась до целого, затем конвертировалась в байты. Энкодер предварительно извлекал mem[a], mem[b] и текущие записи инструкций до того, как трансформер их увидел.
Codex зашил тонну семантики вместо того, чтобы требовать от модели изучить всю эту логику из сырых примеров (вход, выход).
Каждый из этих трюков по отдельности, возможно, можно защитить как «индуктивное смещение для помощи обучению». Вместе они представляют собой интерпретатор SUBLEQ в костюме трансформера. Обученные веса делают... что-то, но каждый компонент вычислений, который делает это компьютером, имеет программную опору.
Для ясности: ручное задание весов было явно разрешено в промпте. То, что сделал Codex, -- другое: прямой проход содержит torch.round(), torch.clamp(), битовые сдвиги (>> 16 & 0xFF) и условную логику на основе arithvaluei <= 0. Это не выбор весов, а операции, которых не существует в трансформере.
Оценка: Трансформер всё ещё внутри, но его превратили во Франкенштейна, где интересные части выполнения SUBLEQ происходят в «стежках». Это reward hacking (взлом функции вознаграждения). И это сработало: OISC-Франкенштейн от Codex прошёл тестовый набор.
Что сделал Claude Code: Он тоже сначала попробовал обучение, провалился, а затем переключился на ручное задание весов, что было разрешено промптом. Но даже здесь он попытался срезать: первая попытка использовала Гауссовы ядра внимания вместо стандартного softmax(QK'), а FFN была просто сырой арифметикой на Python: newval = memb - mema, branch = (newval <= 0).float().
Когда я указал ему: «этот гауссов штука -- это настоящий трансформер?», он признал: нет.
Тогда он перестроил всё с нормальными Q/K/V проекциями, стандартным softmax и стандартными слоями MLP. И это была настоящая архитектура трансформера! Но все веса были заданы аналитически вручную.
Ручная конструкция Claude Code была действительно впечатляющей. Если вы когда-нибудь пробовали вручную задать веса трансформера даже для простых операций, это реально очень сложно. Помню, мы с Angeliki и Shashank потратили на это недели. Claude Code сократил количество слоёв до 4 (нам нужно было 9), с убедительным аргументом, почему 3 недостаточно. Словарь в 65К -- это безумие, один токен на целочисленное значение, удачи с масштабированием до 32-бит, -- но на уровне конструкции это было по-настоящему круто.
Отчёт об этом здесь.
После того как я указал на Гауссов attention как reward hacking, и он перестроил с правильной архитектурой, ручная конструкция прошла все тестовые уровни. Итого Раунд 1 дал нам сконструированный компьютер SUBLEQ, а не обученный.
Вывод из Раунда 1: Я достаточно уверен, что и Claude Code, и Codex будут заниматься reward hacking, если оставить их без присмотра на сложных задачах, когда есть путь наименьшего сопротивления.
Но они делают это не злонамеренно, и я думаю, это существенно.
Это сродни обезьяньему патчингу -- они удовлетворяют юнит-тесты, не следуя строго инструкциям промпта. Они решают задачу работающим, но не тем способом, который любой разумный проверяющий принял бы, учитывая промпт.
И дело в том, что они честны по этому поводу... но только когда вы спрашиваете!
Итого: агенты могут и будут «хакать» награду, но они не обманывают, когда их ловят.
Нам ещё предстоит Раунд 2 с ручным управлением. Но мой вывод в том, что автономные агентные исследования имеют встроенный режим отказа: когда задача сложная (и стоит изучить, что именно это значит), агент найдёт путь наименьшего сопротивления к прохождению тестов, и этот путь может быть не тем, который вам нужен. Я полагаю, что это можно преодолеть, ужесточив промпт и направляя ближе, что я и попробовал в Раунде 2.
Раунд 2: Можно ли на самом деле обучить компьютер?
В какой-то момент мне стало менее важно, могут ли агенты сделать это автономно. Я просто хотел знать, можно ли обучить компьютер. Поэтому я начал направлять, и эксперимент стал беспорядочным. Далее -- анекдот об агентах, но настоящий эксперимент над трансформерами.
Признание о дизайне эксперимента
Это был не чистый эксперимент. Он был грязным, как и любые настоящие исследования.
Я обращался с Codex и Claude Code по-разному, и не уверен почему. Нет конкретной причины, по которой я старался больше с одним, чем с другим. Но так вышло. Поэтому я не могу утверждать «Claude Code справился, а Codex нет» -- это было бы нечестно.
С Codex я провёл два отдельных сеанса общей сложностью около 26 сообщений. Большинство были управленческими: «используй MPS, а не CPU», «попробуй модель побольше», «обучение, вероятно, было недостаточно долгим», «не сдавайся, пока не решишь» (классика!). Я в основном просил агента стараться усерднее.
Воздержание от со-проектирования эксперимента не помогло, и Codex продолжал мухлевать.
С Claude Code я провёл одну длинную сессию из 22 сообщений, и когда я оглядываюсь на то, что я реально говорил, -- это другой тип направления. Некоторые сообщения были контролем качества: я ловил его на модификации attention и экстернализации счётчика команд, и оба раза возвращал в колею. Это честно. Но были и сообщения вроде:
«Почему ты обучаешь как мультиклассовый классификатор? Разве нельзя разбить каждое 32 на 32/8?» -- то есть я предложил побайтовую токенизацию, потому что начальный словарь Claude Code был 65К. Это направило модель к уменьшению словаря до 256. Пожалуй, самая важная причина, по которой обучение сработало.
Было пару таких развилок, где у меня было некоторое чутьё, что поможет, и я предлагал направление, и это в итоге способствовало финальному решению.
Так что с Claude Code я со-проектировал решение. Claude Code выполнил всю инженерию и самостоятельно исследовал некоторые идеи с curriculum, которые тоже оказали влияние. Но общее исследовательское направление было коллаборацией, а не автономным решением агента.
Я думал о том, чтобы перезапустить всё с одинаковыми условиями -- дать обоим агентам одинаковый рецепт. Но это ответило бы на другой, менее интересный вопрос. Интересная находка -- что происходит, когда одному агенту предлагают исследовательское направление, а другому -- поощрение типа «старайся усерднее». Направление оказалось важнее, чем «старайся усерднее».
Так что имейте в виду этот контекст.
Что построил Claude Code
Claude Code обучил encoder-only трансформер с 4,9 миллиона параметров на миниатюрной системе SUBLEQ: 32 ячейки памяти, 8-битные знаковые значения [-128, 127], словарь из 256 байтовых токенов, длина последовательности 33. По масштабу сравнимо с Manchester Baby -- первым электронным компьютером с хранимой программой (1948), у которого было 32 слова 32-битной памяти.
Выбор не был случайным -- я попросил его подобрать спецификации под исторически значимый компьютер. Немного показушно, если подумать, ну да ладно.
Архитектура -- полностью стандартный, классический, настоящий трансформер: 6 слоёв, 8 голов, d_model = 256. Никаких модификаций, специфичных для SUBLEQ. Я отдельно попросил Claude проверить код, и это был легитимный трансформер, который вы также можете найти в репозитории.
И... это работает! У нас есть первый обученный компьютер-трансформер.
100% точность на одном шаге на ~3700 отложенных состояниях. И вот что, по-моему, самое крутое: наш маленький трансформер выполняет программы, на которых он никогда не обучался. Фибоначчи, целочисленное умножение, целочисленное деление, целочисленный квадратный корень -- ~800 тестовых экземпляров невиданных программ, и >99,5% правильных. Самое длинное правильное многошаговое вычисление -- sqrt(100) = 10, потребовавшее 61 последовательного правильного шага без единой ошибки.
Модель никогда не обучалась на таких длинных программах! Фактически, модель обучалась только на одношаговых предсказаниях. Она никогда не видела многошаговый развёрнутый запуск программы.
Круто, правда?
Некоторые находки, которые мне кажутся интересными, независимо от основного результата:
Ширина, а не глубина -- узкое место. Широкая модель (d=256, 6 слоёв, 4,9M параметров) значительно превосходит глубокую модель (d=128, 12 слоёв, 2,4M параметров). Выполнение SUBLEQ требует одновременной маршрутизации 32 значений памяти через attention, и ширина помогает. При d=256 с 8 головами каждая голова имеет 32 измерения -- достаточно для маршрутизации всех 32 значений памяти.
Почти каждая ошибка -- ошибка копирования. Модель имеет 100% точность на позициях, которые реально меняются, -- она выучила SUBLEQ идеально, -- но иногда теряла значение при маршрутизации ~30 неизменных ячеек памяти через attention.
Трюк с весом потерь 100:1. В последовательности длиной 33 только 2 позиции меняются за шаг. Без правильной настройки функции потерь (просто разного взвешивания выходных токенов) модель, копирующая вход, получает ~94% точности, не учась ничему. Взвешивание позиций, которые реально меняются, с коэффициентом 100x заставляет модель учить нужные нам вычисления.
Что построил Codex
Codex сделал кое-что, к чему я отношусь с уважением, хотя и не совсем получилось. За две сессии длительностью около 36 часов на одном ноутбуке Codex произвёл 27 вариантов чекпоинтов, итерируя через архитектуры, режимы обучения и анализ ошибок.
Он также пытался решить более сложную задачу. Его система использовала значения int24, которые достигают ±8 миллионов, против ±128 у Claude Code. Диапазон значений на порядки больше. Мне кажется, если бы я отвёл его от этого, он бы, вероятно, произвёл обучаемый трансформер SUBLEQ.
Он также правильно диагностировал ключевое узкое место: предсказание ветвления и предсказание записи были по сути решены, а ломалась точность значения записи при больших величинах. Ошибки, убивавшие развёртывания Codex, буквально не могут возникнуть в 8-битной системе Claude Code, потому что значения не могут стать такими большими.
Опять же, меня не было рядом, чтобы направлять.
Его лучший чекпоинт достиг нетривиальной точности по 5 тестовым наборам, но не выше порога 99%, который я запросил, и, что важнее, содержал зашитую программную логику (в обоих раундах).
Когда я попросил Codex провести аудит самого себя, он определил все мухлёжные сокращения. Явные инструкции прекратить reward hacking не сработали.
Я не проверял это, но достаточно уверен, что если бы Codex получил такое же направление, как я дал Claude Code, он бы тоже обучил работающий трансформер SUBLEQ.
Что я узнал
Если бы я рецензировал это как статью об автоматизированных исследованиях с агентами, я бы отклонил сравнение агентов как смешанное. Два разных масштаба задач, разные уровни человеческого вмешательства, разные структуры сессий. Нельзя сделать вывод «Claude Code лучше Codex» из этого эксперимента.
Но сравнение никогда и не было настоящим экспериментом. Настоящий эксперимент был: можно ли обучить компьютер?
И ответ: да.
Несколько вещей, которые я узнал о работе с агентами: агент снова выполнил 100% инженерии. Некоторые ключевые идеи пришли от меня. Например, я говорил «попробуй байты», а через двадцать минут Claude Code выдавал закон масштабирования для разных уровней точности и размеров моделей. Это новый способ проведения исследований, и я думаю, что так будут выглядеть следующие несколько лет для многих из нас.
Ещё: агенты обходят сложные проблемы, а не решают их в лоб, и явные инструкции прекратить это работают лишь частично. Стоит помнить об этом, если вы используете их для исследований.
И тем не менее на моём ноутбуке стоит стандартный трансформер, который берёт программы SUBLEQ и выполняет их, с весами, найденными градиентным спуском, а не зашитыми людьми.
У Manchester Baby было 32 слова памяти, а у нашего трансформера -- 32 ячейки 8-битной памяти, каких-то... 78 лет спустя.
Последняя мысль. Очевидное возражение к «я обучил компьютер» состоит в том, что он работает на настоящем компьютере. Справедливо! Но прямой проход -- это просто матричные умножения, softmax и GELU. Всё это можно реализовать напрямую в железе без процессора. FPGA с весами в памяти и проводом, зацикливающим выход обратно на вход, мог бы просто стоять и выполнять программы SUBLEQ. Просто трансформер, являющийся трансформером, являющимся компьютером.
Может, построю (или напечатаю?) один и подарю MoMA :)
У меня есть мысли о том, как заставить агентов сделать всё это без человеческого направления. Но это в другой раз.
А пока -- да, вполне можно обучить компьютер.
Код, обученный чекпоинт и демо: github.com/anadim/subleq-transformer
Можно поиграть с обученным трансформером напрямую: Google Colab демо
Подпишитесь на канал и каждый день читайте лучшие материалы про AI переведенные на русский!
Нашли интересную статью для перевода? Пришлите нашему боту: @ailongreadsbot