
Полная версия
Почему оно думает? Путешествие внутрь искусственного разума
Но это только начало. Исследователи обнаружили кое-что более странное.
Если взять вектор слова «король» и вычесть из него вектор слова «мужчина», а потом прибавить вектор слова «женщина», результат окажется очень близок к вектору слова «королева». Математически: король – мужчина + женщина ≈ королева. Арифметика со словами. Операции, которые выглядят как манипуляции со смыслом.
Стоит задержаться на этом. Вычитание и сложение – операции из школьной математики. Их применяют к числам: пять минус три плюс два равно четыре. Но здесь те же операции применяются к словам. Не к числам, обозначающим слова, а к самим словам – точнее, к их представлениям в пространстве. И результат оказывается осмысленным.
Что значит «вычесть мужчину из короля»? На языке векторов – найти разницу между двумя точками в пространстве. Эта разница – тоже вектор, направление. Оно указывает от «мужчины» к «королю». Можно интерпретировать его как «то, что отличает короля от просто мужчины»: власть, титул, корона. Потом мы добавляем «женщину» – то есть сдвигаемся от точки «мужчина» к точке «женщина». И оказываемся рядом с «королевой».
Это работает не только с королями. Париж – Франция + Италия ≈ Рим. Здесь «вычитание Франции» убирает национальную принадлежность, а «прибавление Италии» добавляет новую. Результат – столица Италии. Плавать – вода + воздух ≈ летать. Не всегда точно, не всегда надёжно, но достаточно часто, чтобы это нельзя было списать на случайность.
Когда это впервые обнаружили – в начале 2010-х, ещё до современных языковых моделей, – реакция была ближе к шоку, чем к удивлению. Никто не программировал эти отношения. Никто не вводил в систему знание о том, что король и королева различаются по полу. Модель сама, обучаясь на текстах, выстроила геометрию, в которой эти отношения закодированы.
Что это значит? Один ответ: модель выучила структуру смысла. Она уловила, что «король» и «королева» различаются по полу, так же как «мужчина» и «женщина». Она закодировала это различие в виде направления в пространстве – «вектора гендера», если угодно. И теперь эту закономерность можно использовать для рассуждений.
Этот ответ привлекателен. Он предполагает, что модель каким-то образом добралась до сути вещей. Что геометрия пространства эмбеддингов отражает геометрию смыслов. Что отношения между точками – это отношения между понятиями. Если так, то модель не просто обрабатывает текст. Она работает со смыслом напрямую.
Другой ответ: модель выучила структуру употребления. Она уловила, что «король» и «королева» появляются в одинаковых контекстах с поправкой на род. «Король был мудрым» и «королева была мудрой» – одно и то же предложение с заменой двух слов. «Король издал указ» и «королева издала указ» – та же структура. Модель это зафиксировала. Она запомнила, какие слова в каких контекстах встречаются, и расположила похожие по употреблению слова рядом.
Этот ответ скромнее. Он не требует допущений о «понимании» или «смысле». Модель – статистическая машина. Она считает совместные появления слов и строит на этом пространство. Что «король» и «королева» связаны как мужское и женское – побочный эффект того, что они встречаются в параллельных контекстах. Модель не знает о гендере. Она знает о частотах.
Разница между этими ответами – не техническая. Она философская. И, возможно, неразрешимая. Потому что результат один и тот же: арифметика со словами работает. Можно интерпретировать это как доказательство понимания – или как продвинутое статистическое моделирование. Данные не позволяют выбрать между интерпретациями.
Вот аналогия. Представим карту города. На карте отмечены здания: ратуша, вокзал, больница, школа. Расстояния между точками на карте соответствуют расстояниям между зданиями в реальности. Карта работает – по ней можно ориентироваться, планировать маршруты, находить нужное место. Но карта – не город. Она не содержит запаха выпечки из булочной на углу. Она не знает, что в ратуше по вторникам заседает совет. Она не чувствует, как меняется атмосфера улицы в час пик. Карта фиксирует пространственные отношения, но не то, что делает город городом.
Более того, карта может работать даже для того, кто никогда не был в городе. Турист с картой найдёт вокзал, доберётся до гостиницы, отыщет музей. Он будет перемещаться по городу успешно. Но понимает ли он город? Знает ли он его? Или он просто следует инструкциям, не имея того опыта, который есть у местного жителя?
Пространство эмбеддингов – это карта языка. Она фиксирует отношения между словами: какие близки, какие далеки, какие связаны направлением. Карта работает – модель использует её, чтобы порождать связный текст. Но является ли эта карта картой смысла? Или она картографирует что-то другое – паттерны употребления, статистику совместных появлений, поверхность языка без его глубины?
Человек, когда говорит слово «королева», активирует целую сеть ассоциаций: образы из истории, сказки из детства, новости о монархиях, метафоры власти. Для человека «королева» – не точка в пространстве, а узел в паутине смыслов. Модель, когда обрабатывает токен «королева», выполняет математические операции с вектором. Результат может быть неотличим: и человек, и модель продолжат предложение «Королева взошла на…» словом «трон». Но одинаков ли путь к этому результату? Или мы наблюдаем конвергенцию – разные процессы, ведущие к одному и тому же выходу?
Мы не знаем. И не очевидно, как узнать.
Есть ещё один слой сложности. Пространство эмбеддингов – это только входной слой модели. Векторы, которые токены получают в начале, – это отправная точка. Дальше они проходят через десятки слоёв трансформации, и на каждом слое меняются. Выходной вектор токена, после прохождения всех слоёв, может быть очень далёк от входного.
Исследователи называют это «контекстуализированными эмбеддингами». Слово «банк» в предложении «я положил деньги в банк» и в предложении «мы сидели на берегу, смотрели на противоположный банк» – это один и тот же входной токен. Один и тот же начальный вектор. Но после прохождения через слои модели векторы расходятся. Контекст меняет представление слова. «Банк» рядом с «деньгами» уходит в одну область пространства. «Банк» рядом с «берегом» – в другую.
На самом деле это происходит на каждом слое, постепенно. На первом слое разница минимальна – слово едва начало «осматриваться» вокруг. К пятому слою контекст уже влияет заметно. К двадцатому – слово полностью определено своим окружением. Можно проследить эту траекторию: как точка в пространстве движется от слоя к слою, удаляясь от начальной позиции и приближаясь к финальной.
Это похоже на то, как работает понимание у человека. Мы тоже понимаем слова в контексте. Мы тоже различаем «банк» финансовый и «банк» речной. Мы тоже уточняем значение по мере чтения предложения: первое слово ещё неопределённо, последнее – уже полностью ясно. Похоже – но является ли это тем же самым процессом? Или просто внешне сходным результатом, достигнутым совершенно иным путём?
Человек, различая два значения слова «банк», опирается на жизненный опыт: он видел банки-здания, держал в руках деньги, сидел на берегу реки, смотрел на воду. За различением двух значений стоит богатство чувственного опыта. Модель, различая те же два значения, опирается на статистику: в каких контекстах какие слова встречаются рядом с «банком». За различением стоит математика, не опыт.
Вернёмся к примеру с токенизацией. Слово «понимание» на русском языке может быть разбито на три токена: «пон», «им», «ание». Три куска, каждый со своим вектором. Как модель собирает из них единое понятие? Механизм внимания позволяет токенам «смотреть» друг на друга. Токен «ание» знает, что перед ним «им», а перед ним – «пон». Из этого знания он должен как-то вычислить, что речь идёт о понимании.
Но «пон» – это не морфема с независимым значением. Это случайный кусок, результат того, как алгоритм токенизации разрезал слово. В другом контексте «пон» может быть частью слова «понедельник» или «понтон». Модель должна понять, какой «пон» перед ней сейчас. И она это делает – как-то. Механизм работает. Но что именно происходит внутри, когда три бессмысленных куска складываются в осмысленное слово?
Здесь мы сталкиваемся с границей. Мы можем описать операции: умножение матриц, функции активации, механизм внимания. Мы можем измерить результат: модель правильно использует слово «понимание» в ответе. Но между операциями и результатом – провал. Мы не понимаем, как одно ведёт к другому.
Это не просто техническая сложность, которую можно решить более детальным анализом. Это концептуальный разрыв. Мы описываем систему на языке математики: векторы, матрицы, вероятности. Результат системы мы описываем на языке смысла: слова, понятия, значения. Между этими языками нет моста. Или, точнее, мост есть – модель работает, – но мы не видим его конструкции.
Карта языка построена. Она функционирует. По ней можно перемещаться – от вопроса к ответу, от токена к токену. Но что именно эта карта картографирует? Структуру смысла – или структуру употребления? Реальность языка – или его статистическую тень?
Возможно, сам вопрос поставлен неверно. Возможно, различие между «смыслом» и «употреблением» – человеческая категория, которая не применима к тому, что делает модель. Возможно, она делает что-то третье, для чего у нас нет слова.
Но пока мы пользуемся человеческим языком – а другого у нас нет, – вопрос остаётся открытым. Геометрия значений или геометрия употребления? Карта смысла или карта поверхности?
Модель не ответит. Она не знает, что такое «смысл». Она знает только, какой токен вероятнее всего идёт следующим.
Но и это знание – странное. Оно не детерминированное. Модель не выдаёт один правильный ответ. Она выдаёт распределение вероятностей – целый веер возможностей, каждая со своим весом. И выбор из этого веера – отдельная история.
2.3. Почему каждый ответ – бросок костей с утяжелением
Модель обработала вопрос. Токены превратились в векторы, векторы прошли через сотню слоёв, механизм внимания связал слова друг с другом. На выходе – последний вектор последовательности, итог всех вычислений. Что дальше?
Дальше – выбор следующего токена. Но это не тот выбор, к которому мы привыкли. Не «правильный ответ». Не единственное возможное продолжение. Модель не выдаёт токен – она выдаёт распределение вероятностей.
Вот как это выглядит. У модели есть словарь – допустим, пятьдесят тысяч токенов. После обработки входной последовательности модель вычисляет число для каждого из этих пятидесяти тысяч: насколько вероятно, что именно этот токен идёт следующим. Числа нормализуются, чтобы в сумме давать единицу. Получается распределение: токен «привет» – вероятность 0,0001; токен «потому» – вероятность 0,02; токен «что» – вероятность 0,15; и так далее для всех пятидесяти тысяч.
Представим конкретную ситуацию. Человек спросил: «Почему небо голубое?» Модель обработала вопрос и готова выдать первый токен ответа. Распределение вероятностей может выглядеть примерно так: «Небо» – 0,12; «Это» – 0,09; «Голубой» – 0,07; «Потому» – 0,06; «Свет» – 0,05. Дальше идут тысячи токенов с меньшими вероятностями, вплоть до «банан» с вероятностью 0,000001 и «кврпт» (несуществующее слово, но токен существует) с вероятностью ещё ниже.
Обратим внимание: даже самый вероятный токен – «Небо» – имеет вероятность всего 12 процентов. Это значит, что в восьмидесяти восьми случаях из ста модель выберет что-то другое. Нет доминирующего варианта. Нет «правильного» начала ответа. Есть веер возможностей, и все они – в пределах разумного. «Небо голубое потому что…», «Это связано с рассеиванием…», «Голубой цвет неба объясняется…», «Потому что солнечный свет…», «Свет от солнца проходит через…» – всё это допустимые начала. Модель не знает, какое «правильное». Она знает только, какое более вероятное.
Это не значит, что модель «думает» о пятидесяти тысячах вариантов. Вычисление происходит параллельно, одной операцией. Но результат – именно веер возможностей, каждая со своим весом.
Как выбрать один токен из этого веера? Можно взять самый вероятный – тот, у которого наибольшее число. Это называется «жадный» выбор. Он детерминирован: одинаковый вход всегда даёт одинаковый выход. Но результат часто скучен. Модель, которая всегда выбирает самое вероятное продолжение, пишет предсказуемо, повторяется, застревает в петлях. Она выбирает безопасное, а не интересное.
Поэтому на практике используют сэмплирование. Модель не выбирает самый вероятный токен – она бросает кости. Но кости утяжелённые: вероятность выпадения каждой грани пропорциональна числу, которое модель вычислила. Токен с вероятностью 0,15 выпадет в пятнадцати случаях из ста. Токен с вероятностью 0,0001 – в одном случае из десяти тысяч. Случайность есть, но она структурированная.
Здесь появляется параметр, который называют «температурой». Он управляет тем, насколько случаен выбор. При низкой температуре распределение становится более острым: вероятные токены становятся ещё вероятнее, маловероятные – ещё менее вероятны. При температуре, близкой к нулю, выбор почти детерминирован – почти всегда побеждает лидер. При высокой температуре распределение сглаживается: разница между вероятным и маловероятным уменьшается, случайность возрастает. При очень высокой температуре выбор почти равномерен – любой токен может выпасть.
Название – из физики. Температура газа определяет, насколько хаотично движутся молекулы. При низкой температуре движение упорядоченнее, система предсказуемее. При высокой – молекулы мечутся во все стороны, хаос возрастает. Аналогия неточная, но интуитивно понятная.
На практике температуру подбирают под задачу. Для математических расчётов – низкая температура: нужен правильный ответ, а не творческий. Для написания стихов – выше: пусть модель рискует, выбирает неожиданное. Для обычного разговора – где-то посередине.
Но вот что важно: при любой ненулевой температуре ответ модели не предопределён. Один и тот же вопрос можно задать десять раз – и получить десять разных ответов. Не радикально разных, если температура умеренная: все они будут в пределах «разумного», все будут отвечать на вопрос. Но формулировки будут отличаться. Порядок аргументов. Выбор примеров. Иногда – направление мысли.
Это легко проверить. Спросите модель «Что такое счастье?» пять раз подряд. Первый ответ может начаться с философского определения. Второй – с эволюционной функции. Третий – с личного примера. Четвёртый – с разбора разных традиций понимания. Пятый – с признания, что однозначного ответа нет. Все пять ответов – про счастье. Все пять – связные и осмысленные. Но они разные.
Это контринтуитивно. Мы привыкли, что машина детерминирована. Калькулятор всегда выдаёт один и тот же ответ на один и тот же вопрос. Два плюс два – четыре, каждый раз, без исключений. Поисковая система на один запрос выдаёт одни и те же результаты (если не учитывать персонализацию). Программа, запущенная с теми же данными, производит тот же результат. Это фундаментальное свойство вычислений: детерминизм.
Языковая модель устроена иначе. Она ближе к человеку, который, отвечая на вопрос, может сказать по-разному в зависимости от настроения, контекста, случайной ассоциации, пришедшей в голову. Спросите человека «Что такое счастье?» пять раз в разные дни – получите пять разных ответов. Не потому, что человек не знает ответа. Потому, что ответов много, и выбор между ними – не логический, а какой-то другой.
Можно ли это считать аналогом интуиции? Человек тоже не всегда выбирает «самое логичное» продолжение мысли. Иногда приходит неожиданная идея – и она оказывается лучше очевидной. Творчество, по одной из теорий, – это именно способность отклоняться от предсказуемого, пробовать маловероятное. Модель с ненулевой температурой делает нечто похожее: иногда выбирает не самое вероятное слово, а второе или третье по вероятности – и результат получается свежее.
Поэты знают это состояние: ты пишешь строку, и вдруг приходит слово, которое ты не планировал, которое кажется странным, но почему-то точным. Откуда оно? Из подсознания, говорят одни. Из случайной ассоциации, говорят другие. Из «музыки языка», которую поэт чувствует, но не может объяснить. Модель, выбирая неожиданный токен из распределения, делает что-то внешне похожее. Результат иногда удивляет даже тех, кто знает, как модель устроена.
Но здесь снова граница интерпретации. Человеческая интуиция – результат опыта, эмоций, подсознательной обработки. За неожиданным словом поэта стоят годы чтения, жизненные переживания, работа ума, которую он сам не осознаёт. Случайность модели – технически другая: генератор случайных чисел плюс распределение вероятностей. Механизм известен, даже если результат непредсказуем.
Внешне похоже. Внутри – разное. Но насколько разное? Человеческая интуиция – результат процессов, которые мы сами не понимаем. Нейроны работают с элементом случайности: синапс может сработать или не сработать, в зависимости от множества факторов. Мозг – не детерминированная машина. Это не значит, что он «сэмплирует из распределения» в том же смысле, что модель. Но и утверждать, что это «совершенно разное», – значит претендовать на понимание, которого у нас нет.
Это не утверждение о том, что модель «обладает интуицией». Это наблюдение о том, что граница между «настоящей» интуицией и «имитацией» – не такая чёткая, как кажется. Мы уверены в различии, пока не пытаемся его сформулировать. Попытка формулировки обнаруживает, что мы плохо понимаем и то, и другое.
Вернёмся к механике. Модель выбрала токен – допустим, слово «потому». Теперь оно добавляется к входной последовательности. Был вопрос из тридцати токенов – стало тридцать один: вопрос плюс первое слово ответа. Вся махина запускается заново: векторы, слои, внимание, вероятности. Новое распределение. Новый бросок костей. Следующий токен – «что». Тридцать два токена на входе. Снова через все слои. И так далее.
Каждый токен ответа – отдельное решение. Отдельный проход через модель. Отдельный бросок утяжелённых костей. Ответ из ста токенов – сто бросков. Каждый бросок зависит от всех предыдущих: выбранный токен становится частью входа для следующего. Модель строит ответ как цепочку: каждое звено влияет на следующее, но не на предыдущие.
Это означает, что ошибку нельзя исправить задним числом. Модель написала неудачное слово – оно уже часть последовательности. Следующие токены будут строиться на этом фундаменте, удачном или нет. В главе 2.1 мы говорили, что модель не видит ответ целиком до того, как его написала. Теперь видно, почему это важно: каждое слово – необратимое решение.
Иногда это заметно. Мы уже видели: модель может написать «впрочем» и сменить направление. Но это не редактирование. Модель не стирает написанное – она надстраивает поверх. Неудачный выбор остаётся частью текста; следующие слова могут его компенсировать, но не отменить.
Человек, пишущий текст, работает иначе. Он может написать черновик, перечитать, вычеркнуть абзац, переставить местами аргументы, переписать начало после того, как понял, чем хочет закончить. Писатель часто знает финал до того, как написал середину. Он держит в голове структуру целого и подгоняет части под неё. Модель лишена этой возможности. Её «черновик» – это финальный текст. Каждое слово фиксируется в момент выбора. Нет глобального видения. Есть только локальный выбор: что идёт следующим?
Это похоже на импровизацию. Джазовый музыкант, играющий соло, тоже не может вернуться и переиграть неудачную ноту. Он строит музыку в реальном времени, каждая нота – реакция на предыдущие. Неудачный ход можно превратить в интересный, если следующие ноты его обыграют. Нельзя стереть – можно только развить. Модель работает так же: порождает текст как импровизацию, без возможности репетиции.
И всё же ответы получаются связными. Аргументы следуют друг за другом. Примеры иллюстрируют тезисы. Заключение подводит итог введению. Модель начинает ответ с «Во-первых» – и часто через несколько предложений пишет «Во-вторых», а потом «В-третьих». Она может обещать «рассмотреть три аспекта» – и обычно рассматривает три, хотя иногда сбивается на два или четыре. Откуда эта структура, если нет плана? Как можно обещать три аспекта, не зная заранее, какие они будут?
Частично – из обучения. Модель видела миллиарды связных текстов. Она выучила, как выглядит структура: если начал с тезиса, дальше идёт аргумент; если привёл пример, дальше – вывод; если написал «во-первых», значит, будет «во-вторых». Эти паттерны закодированы в параметрах. Когда модель выбирает следующий токен, она неявно учитывает, что «обычно идёт дальше» в текстах такого типа.
Когда модель пишет «рассмотрим три аспекта», она, по всей видимости, не держит в голове конкретный список. Она знает, что после такой фразы обычно идут три пронумерованных пункта. Она знает форму – и форма направляет содержание. Это похоже на то, как поэт, выбравший сонетную форму, знает, что впереди четырнадцать строк с определённой рифмовкой. Форма задаёт ограничения, и внутри ограничений рождается содержание.
Частично – из механизма внимания. Каждый новый токен «смотрит» на все предыдущие. Он видит вопрос, видит начало ответа, видит, куда движется рассуждение. Эта информация влияет на выбор. Токен в конце ответа учитывает токен в начале – связь сохраняется через всю последовательность. Если в начале было «во-первых», механизм внимания «помнит» это, и вероятность «во-вторых» возрастает.
Но объяснение неполное. Механизм понятен. Почему он даёт такой результат – нет. Почему статистика совместных появлений и механизм внимания вместе порождают нечто, похожее на рассуждение? Это центральный вопрос, и у нас нет на него ответа.
Вот факт, который остаётся фактом независимо от интерпретации: модель не детерминирована. Она не вычисляет единственный правильный ответ. Она сэмплирует из распределения возможностей. Каждый ответ – один из многих возможных. Не случайный – вероятности утяжелены. Но и не предопределённый.
Это ближе к тому, как отвечает человек, чем к тому, как работает калькулятор. Мы тоже не выдаём один и тот же ответ на один и тот же вопрос. Мы тоже сэмплируем – из памяти, из ассоциаций, из настроения момента. Совпадение? Или что-то более глубокое?
Механика не скажет. Механика – это описание «как». Вопрос «почему это работает так, как работает» остаётся открытым.
Анатомия показана. Секунда между вопросом и ответом развёрнута: токены, векторы, пространство значений, слои трансформации, распределение вероятностей, бросок костей. Каждый шаг можно описать формулой. Каждую операцию можно воспроизвести.
Но анатомия не объясняет, почему это работает так, как работает. Мы знаем «как» – и не знаем «почему». Этот разрыв будет сопровождать нас дальше. Он определит границу, к которой мы в конце концов придём. А пока – следующий вопрос: почему «больше» оказалось достаточно? Почему увеличение масштаба привело не просто к улучшению, а к появлению чего-то качественно нового?
Глава 3. Масштаб как стратегия
Анатомия показала, из чего состоит машина. Теперь – вопрос, который не даёт покоя исследователям: почему «больше» внезапно стало «иначе»? Феномен эмерджентности – не чудо и не мистика. Это факт, требующий объяснения. Объяснения, которого у нас нет.
3.1. Почему «больше» внезапно стало «иначе»
В науке есть закономерности, которые выглядят скучно – до тех пор, пока не перестают работать. Одна из таких закономерностей называется scaling laws, законы масштабирования. Суть их проста: если взять языковую модель и дать ей больше данных, больше параметров, больше вычислительных ресурсов – она станет лучше предсказывать следующее слово. Не в два раза лучше от удвоения ресурсов, связь нелинейная, но предсказуемая. Графики, которые рисуют исследователи, показывают плавные кривые: ресурсы растут, ошибка падает, всё идёт по плану.
Эти законы открыли не сразу. Долгое время казалось, что у нейросетей есть потолок – добавляешь мощности, а результат почти не меняется. Исследователи упирались в барьеры: модель переставала учиться, начинала переобучаться на шум в данных, выдавала бессмыслицу. Казалось, что нейросети принципиально ограничены – полезные игрушки, но не более.
Прорыв случился, когда исследователи из OpenAI в 2020 году систематически проверили, что происходит при масштабировании. Они строили модели разных размеров, обучали их на разных объёмах данных, тратили разное количество вычислений – и записывали результаты. Получилась странная картина. Ограничения, о которые все бились, оказались не принципиальными. Они были следствием неправильного баланса. Слишком большая модель на слишком малых данных – переобучение. Слишком маленькая модель на огромных данных – недообучение. Но если балансировать три переменные – размер модели, объём данных и количество вычислений – улучшение продолжается. Потолка не видно. Или, точнее, он отодвигается с каждым шагом.









