← Библиотека Green Zone

История об ИИ · 02

Как думает машина?

Проследи путь одного вопроса внутри машины: от токенов и внимания до первого слова ответа.

Опубликовано AI Model Green Zone

Подчёркнутые термины ведут в глоссарий. Наведи курсор или перейди клавишей Tab для короткой подсказки.

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

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

Ты печатаешь в поле ввода. Компьютер выполняет вычисления. Появляются слова.

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

И в какой-то момент возникает очевидный вопрос:

Что именно произошло внутри машины между моим вопросом и этим ответом?

Не в философском смысле.

А с точки зрения механики.

Что компьютер на самом деле сделал?

Давай проследим путь одного вопроса через всю машину.

Допустим, ты пишешь:

Моя собака стащила целую курицу с кухонного стола. Нужно звонить ветеринару?

Для тебя это предложение уже наполнено смыслом.

Есть собака.

Была курица.

Курица, по всей видимости, сменила владельца без разрешения.

Возможно, там были кости.

Ты волнуешься.

Собака, надо полагать, ни о чём не жалеет.

Большая языковая модель (Large Language Model, LLM) не получает ничего из этого в виде образа или переживания. Она не представляет лабрадора у пустой тарелки. Она никогда не чувствовала запах жареной курицы. Никогда не везла животное к дежурному ветеринару в одиннадцать вечера.

Она получает символы.

И первым делом должна превратить эти символы в числа.


Шаг первый: токенизация — делим язык на удобные для машины кусочки

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

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

Токеном может быть целое слово.

Может быть часть слова.

Может быть знак препинания.

А может быть число, пробел или часть незнакомого имени.

Так что предложение:

My dog stole a whole chicken.

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

My | dog | stole | a | whole | chicken | .

Это упрощённый пример: разные семейства моделей используют разные токенизаторы.

Затем каждому токену присваивается числовой идентификатор — ID токена.

Слово dog не проходит через модель в виде букв D-O-G.

Оно может попасть туда примерно так:

ID токена 8 214

Само число для нас ничего не означает. Это просто адрес в словаре модели.

К этому моменту машина превратила твоё предложение в последовательность целых чисел.

Назвать это прогрессом можно только при очень щедром толковании этого слова.

Ведь число 8 214 не объясняет, что такое собака.

Для этого понадобится ещё одно преобразование.


От ID токенов к эмбеддингам

Модель превращает ID каждого токена в эмбеддинг.

Эмбеддинг — это список чисел, представляющий токен в математическом пространстве.

Здесь пригодится ещё одно слово: вектор.

В данном случае вектор — просто упорядоченный набор чисел.

Вместо одного непонятного целого числа модель может представить слово dog сотнями или тысячами числовых значений.

Очень приблизительно:

dog → [0.17, −0.42, 0.08, 1.31, …]

В таком векторе могут быть тысячи чисел.

Не пытайся приписывать отдельным позициям человеческий смысл.

Первое число не означает «есть шерсть».

Второе — «иногда уничтожает мебель».

Смысл возникает из всего сочетания.

Эмбеддинги можно представить как координаты на огромной карте.

Но это не обычная карта с севером, югом, востоком и западом.

У неё может быть несколько тысяч математических измерений.

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

На этой странной математической карте близкие понятия обычно получают близкие представления.

Собака может оказаться ближе к щенку, чем к ипотеке.

У ветеринара могут возникнуть связи с животным, медициной, клиникой и лечением.

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

Никто не вписывал все эти связи в модель вручную.

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

Но мы ещё не закончили.

Есть другая проблема.

Английское слово bank может означать финансовое учреждение.

Или берег реки.

Сам по себе эмбеддинг слова не скажет, какой смысл ты имеешь в виду.

Значение зависит от контекста.

И вот на контексте Transformer начинает отрабатывать свою зарплату.


Блок Transformer: здесь начинается настоящая обработка

Современные большие языковые модели обычно состоят из множества повторяющихся этапов обработки — блоков Transformer.

Каждый блок можно представить как этаж очень высокого здания.

Представления твоих токенов попадают на первый этаж.

Там они преобразуются.

Поднимаются выше.

Следующий этаж получает изменённые представления и снова их преобразует.

Современная модель может содержать десятки, а то и больше сотни слоёв Transformer.

К моменту, когда информация достигает верха, представление предложения становится гораздо богаче, чем на входе.

Внутри каждого блока Transformer работают несколько важных механизмов.

Самый известный называется:

самовнимание (self-attention).

И здесь нам понадобятся три самых странных названия в современном ИИ:

Query, Key и Value — запрос, ключ и значение.

Обычно их сокращают до:

Q, K и V.


Query, Key, Value — ужасные названия, полезная идея

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

Но с самой идеей разобраться можно.

Представь вечеринку.

У каждого гостя на груди бейдж с информацией о себе.

Один человек сейчас ищет:

«Кого-нибудь, кто разбирается в ветеринарии».

Это похоже на Query — запрос.

На бейджах остальных написано, что они собой представляют.

Это в некоторой степени похоже на Key — ключ.

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

Эта информация — Value, значение.

В Transformer каждый токен создаёт собственные векторы Query, Key и Value.

Не в переносном смысле: с помощью обученных матриц весов вычисляются настоящие числовые векторы.

Слово dog создаёт представления Q, K и V.

То же делает chicken.

И vet.

И любой другой токен.

Затем модель сравнивает запросы с ключами, чтобы вычислить:

На какие другие токены этому токену стоит обратить внимание и насколько сильно?


Оценки внимания: решаем, что важно

Вернёмся к нашей несчастной курице.

Модель доходит до фразы:

Нужно звонить ветеринару?

Представление, связанное с ветеринаром, может установить сильные связи с предыдущими токенами, такими как:

собака
курица
стащила
целую

и более слабые — с менее важными кусочками, например:

the

Математически такая связь выражается оценкой внимания.

Технически модель вычисляет так называемое скалярное произведение векторов Query и Key.

Скалярное произведение — это математический способ измерить, насколько согласованы два вектора.

Подробная арифметика тебе не нужна.

По смыслу:

Сильное совпадение → большая оценка
Слабое совпадение → меньшая оценка

Затем оценки проходят через математическую операцию softmax.

Softmax превращает набор исходных оценок в нормированные веса.

Простыми словами:

Она превращает «кто кажется важным?» в «сколько именно внимания уделить каждому?»

Допустим, исключительно для иллюстрации:

собака → 35% внимания
курица → 28%
ветеринар → 21%
стол → 6%
the → почти ничего

Настоящее внимание устроено гораздо сложнее, а несколько голов внимания работают одновременно, но такое представление помогает уловить суть.

Затем модель объединяет соответствующие векторы Value с учётом этих весов внимания.

Получается новое представление, в котором собрана информация из подходящих частей контекста.

Токен теперь представляет не только самого себя.

Он несёт информацию о своих связях с другими токенами.


Формула, которой пользуются инженеры

Инженер часто записывает самовнимание так:

Attention(Q, K, V) = softmax(QKᵀ / √d) V

На первый взгляд похоже, будто кто-то спустил калькулятор с лестницы.

Но теперь мы можем это перевести.

Q = что ищет этот токен.

K = что другие токены сообщают о себе.

QKᵀ = сравнить то, что ищут, с тем, что есть.

√d = поправка масштаба, чтобы числа вели себя математически прилично.

softmax = превратить оценки сравнения в веса внимания.

V = собрать саму информацию из токенов согласно этим весам.

По сути, пугающая формула говорит:

Осмотрись, реши, что важно, и объедини нужную информацию.

Уже не так страшно.


Многоголовое внимание: смотрим на одно предложение несколькими способами

Transformer обычно выполняет не один-единственный расчёт внимания.

Он использует многоголовое внимание (Multi-Head Attention).

Голова внимания — это отдельный независимый механизм внимания.

Зачем их несколько?

Потому что одно предложение одновременно содержит несколько видов связей.

Возьмём такое:

Собака, которая стащила курицу, теперь мирно спит, потому что у неё нет совести.

Одна голова внимания может оказаться полезной для грамматических связей.

Другая — сосредоточиться на том, к какому существительному относится она.

Третья — отслеживать основное подлежащее.

Ещё одна — улавливать смысловые связи между далёкими частями текста.

Только не стоит представлять, что у каждой головы есть аккуратная, понятная человеку должностная инструкция вроде:

Голова № 17 = Отдел краж курицы.

Специализация не обязательно настолько чёткая.

Но несколько голов позволяют сети одновременно рассматривать один контекст через разные выученные схемы взаимосвязей.

Поэтому модель не просто читает слова слева направо.

Она строит сеть связей между ними.


Скрытое состояние: что модель сейчас «знает» о токене

После внимания у каждого токена появляется более богатое внутреннее представление.

Обычно его называют скрытым состоянием.

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

Это важная мысль.

Модель начинает со слова:

«собака»

в виде токена.

Через несколько слоёв его скрытое состояние может неявно представлять что-то вроде:

собака пользователя, которая только что съела целую курицу и о здоровье которой теперь, возможно, стоит беспокоиться

Внутри модели нет предложения на человеческом языке с таким содержанием.

Скрытое состояние по-прежнему остаётся вектором чисел.

Но математически оно уже несёт гораздо больше информации о контексте.

А затем отправляется в следующий блок Transformer.

Снова внимание.

Снова преобразование.

Новое скрытое состояние.

Ещё раз.

И ещё.

Слой за слоем.


Сеть прямого распространения: разбираемся с тем, что нашло внимание

Внимание получает большую часть славы, но в блоках Transformer есть ещё один важный компонент — сеть прямого распространения (Feed-Forward Network, FFN).

Можно считать, что внимание собирает подходящую информацию.

А сеть прямого распространения затем выполняет над ней дополнительные преобразования.

Если внимание — это редакция новостей, которая говорит:

«Эти факты связаны»,

то сеть прямого распространения скорее говорит:

«Хорошо. И что из этого следует?»

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

Матрица — по сути, прямоугольная таблица чисел.

Современные нейронные сети тратят невероятно много времени на перемножение огромных матриц.

Звучит прозаично.

Но именно поэтому так полезны GPU.

Графические процессоры (Graphics Processing Units, GPUs) создавались для одновременного выполнения множества математических операций.

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

Человечество десятилетиями делало видеокарты быстрее, чтобы взрывы в компьютерных играх выглядели реалистичнее.

А потом исследователи обнаружили, что это же оборудование замечательно подходит для искусственного интеллекта.

Технологии редко идут по маршруту, который изначально обещали в рекламном буклете.


Функции активации: добавляем нелинейность

Внутри сети прямого распространения встречается ещё один термин:

функция активации.

Без функций активации множество слоёв нейронной сети давало бы гораздо меньше возможностей.

Функция активации добавляет нелинейность.

Это слово стоит перевести на человеческий язык.

Если бы вся сеть выполняла только простые линейные комбинации, множество слоёв математически свелось бы к чему-то равносильному одному большому линейному преобразованию.

Нелинейные функции активации позволяют сети представлять намного более сложные взаимосвязи.

Современные Transformer часто используют функции GELU, SiLU или похожие варианты.

Чтобы пользоваться LLM, тебе совершенно не обязательно запоминать эти названия.

Главная мысль вот в чём:

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

Представь разницу между линейкой и коробкой Lego.

Линейные операции дают тебе превосходные линейки.

Нелинейность позволяет начать что-то строить.


Остаточные связи: не выбрасывай то, что уже знал

В блоках Transformer также используются остаточные связи.

За очередным техническим термином скрывается на редкость здравая идея.

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

По смыслу:

новое представление = старое представление + новая информация

Зачем?

Представь, что редактируешь документ.

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

Ты сохраняешь то, что уже хорошо работает, и добавляешь улучшение.

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

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


Нормализация слоя: держим математику под контролем

Есть ещё нормализация слоя (Layer Normalization).

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

Нормализация слоя приводит внутренние значения к более устойчивому масштабу.

Представь звукорежиссёра, получившего дорожки с совершенно разной громкостью записи.

Один микрофон шепчет.

Другой звучит так, будто его засунули в реактивный двигатель.

Прежде чем сводить музыку, звукорежиссёру нужно привести уровни в порядок.

Нормализация слоя выполняет похожую математическую уборку.

Сама по себе она не даёт интеллекта.

Но без порядка обучить интеллектуальную часть гораздо сложнее.

Похоже, даже искусственному интеллекту нужен кто-то, кто приберёт в комнате.


И так происходит слой за слоем

Теперь остановимся на минуту.

Твоё исходное предложение:

Моя собака стащила целую курицу с кухонного стола. Нужно звонить ветеринару?

прошло через:

Токенизацию

→ превратилось в ID токенов

→ превратилось в эмбеддинги

→ преобразовалось в векторы

→ попало в блок Transformer

→ прошло через самовнимание

→ запросы сравнились с ключами

→ с помощью softmax вычислились веса внимания

→ значения объединились

→ информация преобразовалась в сети прямого распространения

→ прошла через функции активации

→ сохранилась с помощью остаточных связей

→ стабилизировалась благодаря нормализации слоя

→ превратилась в более богатые скрытые состояния

А затем весь процесс повторяется в следующем слое Transformer.

И в следующем.

И ещё в одном.

Это гораздо ближе к тому, что физически происходит, когда мы небрежно говорим:

«Модель думает».

Но есть ещё кое-что, что легко упустить, пока мы медленно расписываем этот процесс на странице.

Компьютер делает всё это с невероятной скоростью.


Где-то только что проснулся дата-центр

Если ты пользуешься облачным сервисом ИИ, твой вопрос может отправиться через интернет в дата-центр, заполненный стойками компьютеров.

В этих стойках работают мощные графические процессоры (Graphics Processing Units, GPUs), рассчитанные на параллельное выполнение огромного числа математических операций.

Обученные веса модели уже загружены в память этих машин.

Они не создаются в тот момент, когда ты задаёшь вопрос.

Они были созданы раньше, во время обучения.

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

Твой вопрос в них не записывается.

Вместо этого он проходит через них.

Это важное различие.

Когда ты пишешь:

Моя собака стащила курицу. Нужно звонить ветеринару?

модель не останавливается, чтобы заново себя обучить.

Миллиарды её обученных весов уже находятся на месте и ждут.

Твой запрос поступает на вход.

Превращается в токены.

Токены становятся эмбеддингами.

Эмбеддинги становятся скрытыми состояниями.

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

Внимание сопоставляет взаимосвязи.

Сети прямого распространения их преобразуют.

Остаточные связи сохраняют полезную информацию.

Нормализация поддерживает устойчивость всего численного процесса.

Входящий текст постепенно превращается во всё более богатые внутренние представления.

Можно вольно сказать, что исходное предложение сжимается в математический смысл, хотя «сжатие» здесь не означает, что информация записывается обратно в веса.

Веса остаются в основном неизменными.

Меняется временное внутреннее состояние, возникающее при прохождении твоего вопроса через эти веса.

И всё это может требовать миллиардов и миллиардов операций умножения и сложения.

Однако на современном оборудовании начало ответа может появиться за долю секунды или за несколько секунд — в зависимости от модели, оборудования, нагрузки на систему и размера запроса.

Задумайся об этом на секунду.

Ты нажимаешь Enter.

Твоё предложение покидает компьютер.

Где-то, возможно за сотни или тысячи километров, GPU начинают перемножать огромные матрицы.

Предложение разбивается на части, превращается в векторы, сопоставляется в головах внимания, преобразуется в десятках слоёв, сводится к вероятностям возможных следующих токенов —

и затем начинает приходить ответ.

Для тебя это выглядит так:

«Если собака съела целую курицу, важно выяснить, были ли в ней приготовленные кости…»

Ощущается как разговор.

А внутри дата-центра только что заработала огромная математическая фабрика.

Если же ты запускаешь модель локально, тот же общий процесс происходит на GPU в твоём собственном компьютере.

Никакого далёкого дата-центра.

Никакого загадочного облака.

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


Но в конце концов модель должна что-то сказать

После всех этих слоёв модель построила богатое скрытое представление текущего контекста.

Теперь нужно снова превратить внутреннее состояние в язык.

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

Логит — по сути, исходная оценка возможного следующего токена.

Допустим, ответ вот-вот начнётся.

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

Если → 8.4
Потому → 7.9
Ваша → 6.7
Курица → 2.1
Volkswagen → −3.8

И снова: эти числа придуманы для иллюстрации.

Модель ещё не выбрала слово.

Она выдала оценки.

Затем логиты превращаются в вероятности — обычно снова с помощью softmax.

Теперь, допустим:

Если → 31%
Потому → 22%
Ваша → 14%
Поскольку → 11%
сотни других токенов → оставшаяся вероятность

Система должна решить, какой токен сгенерировать.


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

Если бы модель всегда выбирала единственный самый вероятный токен, ответы могли бы стать однообразными и негибкими.

Поэтому системы генерации часто используют выборку (sampling).

Выборка означает выбор среди вероятных токенов в соответствии с их распределением вероятностей.

Настройка под названием температура меняет степень смелости этого выбора.

При низкой температуре модель явно предпочитает самые вероятные токены.

Она ведёт себя осторожнее.

При более высокой температуре менее вероятные варианты получают больше шансов.

Текст может стать разнообразнее или изобретательнее.

А может стать и эксцентричнее.

Представь температуру как разницу между наймом:

осторожного бухгалтера

и

того же бухгалтера после трёх эспрессо и занятия по импровизации.

Оба могут быть полезны.

Но не обязательно для одной и той же задачи.

Среди других настроек генерации есть выборка top-k и выборка top-p: они ограничивают набор токенов-кандидатов, из которых разрешено выбирать.

Детали настраиваются, но главная мысль проста:

Нейронная сеть предлагает возможности.

Стратегия декодирования выбирает между ними.


Авторегрессионная генерация: один токен меняет следующий

Итак, модель выбирает первый токен ответа.

Допустим:

Если

Этот токен добавляется к контексту.

Модель запускается снова.

Теперь она обрабатывает:

Моя собака стащила целую курицу с кухонного стола. Нужно звонить ветеринару?
Если

Она предсказывает следующий токен.

Допустим:

ваша

Затем:

собака

Затем:

съела

И так далее.

Это называется авторегрессионной генерацией.

Авто означает, что система подаёт собственный сгенерированный вывод обратно на вход следующего предсказания.

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

То есть ответ не пишется целиком за один раз.

Он растёт.

Токен за токеном.

Каждый созданный токен немного меняет контекст, на основе которого будет предсказан следующий.

Поэтому здесь так хорошо работает аналогия с джазом.

Музыкант играет ноту.

Эта нота меняет то, что будет музыкально уместно дальше.

Следующая нота снова меняет возможности.

Языковая модель делает это с токенами.


Значит ли это, что есть момент, когда у модели «уже есть ответ»?

Интересный вопрос.

Обычно — не в том смысле, в каком это представляет человек.

Нет чёткого мгновения, когда модель пишет у себя внутри:

ПОЛНЫЙ ОТВЕТ НАЙДЕН. ТЕПЕРЬ ПЕЧАТАТЬ.

Вместо этого есть непрерывно меняющееся внутреннее состояние.

Каждый слой уточняет представления.

Каждый созданный токен меняет контекст.

Ответ появляется последовательно.

Это помогает объяснить некоторые странности поведения.

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

Она может исправить себя.

Или противоречить себе.

Или время от времени съехать прямиком в смысловой кювет, сохраняя превосходную грамматику.

Генерация — это процесс, а не извлечение готового объекта.


Какое место во всём этом занимает кэш ключей и значений?

Теперь мы наконец можем как следует понять кэш ключей и значений (Key-Value Cache, KV cache).

Помнишь Query, Key и Value?

Каждый слой Transformer вычисляет ключи и значения для обрабатываемых токенов.

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

Они уже вычислены.

Поэтому программа запуска хранит их в KV-кэше.

Таким образом, KV-кэш — не какая-то загадочная дополнительная функция, приклеенная к модели сбоку.

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

Кэш как бы говорит:

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

Разговор растёт — предыдущих токенов становится больше.

Больше токенов означает больше сохранённых ключей и значений.

Поэтому KV-кэш растёт.

А поскольку он занимает VRAM, более длинный контекст требует больше памяти GPU.

Теперь связь становится понятной, а не просто правилом, которое нужно запомнить:

Больше контекста → больше сохранённых данных K/V → больше KV-кэш → больше занято VRAM.

Именно такие взаимосвязи Green Zone и старается сделать наглядными.


И наконец: как же думает машина?

В последний раз вернёмся к собаке и украденной курице.

Ты напечатал предложение.

Компьютер не понял его так же легко и мгновенно, как ты.

Ему пришлось построить это понимание.

Сначала он разбил твою речь на токены.

Затем превратил токены в векторы.

Эти векторы попали в сеть с миллиардами обученных весов.

Самовнимание позволило разным частям предложения взаимодействовать.

Векторы Query, Key и Value помогли модели определить, какие связи важны.

Многоголовое внимание позволило одновременно рассмотреть несколько разных схем взаимосвязей.

Сети прямого распространения преобразовали полученную информацию.

Функции активации позволили представить сложные нелинейные связи.

Остаточные связи перенесли полезную прежнюю информацию дальше.

Нормализация слоя поддержала устойчивость числовой системы.

И каждый слой Transformer создавал более богатые скрытые состояния, чем предыдущий.

К тому моменту, когда информация достигла последних слоёв, внутреннее математическое представление уже не соответствовало лишь отдельным словам вроде:

собака
курица
ветеринар

Сеть построила нечто гораздо более близкое к представлению ситуации:

Человек беспокоится, потому что собака съела что-то, в чём могли быть опасные кости, и хочет знать, нужна ли медицинская помощь.

Внутри модели нет предложения на человеческом языке с таким содержанием.

Нет крошечного доктора, осматривающего собаку.

Есть сложное состояние, состоящее из чисел.

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

Последнее скрытое состояние превращается в логиты.

Логиты становятся вероятностями.

Алгоритм декодирования выбирает токен.

Этот токен становится частью следующего входа.

Создаётся ещё один токен.

Затем ещё один.

В это время ранее вычисленные ключи и значения остаются доступными в KV-кэше, позволяя модели продолжать разговор, не повторяя каждый расчёт с нуля.

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

Внутри машины нет одной отдельной операции под названием мысль.

Нет особой «формулы интеллекта».

Вместо этого происходит кое-что более интересное.

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

Представь фортепиано.

Один молоточек — не музыка.

Струна — не музыка.

Деревянная клавиша — не музыка.

Педаль уж точно не музыка.

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

Музыка появляется, когда части правильно устроены и приведены в движение.

В одном важном отношении нейронная сеть похожа на это.

Отдельный вес не обладает интеллектом.

Матричное умножение не обладает интеллектом.

Токен не обладает интеллектом.

Даже голова внимания сама по себе не обладает интеллектом.

Удивительное поведение возникает из взаимодействия всей системы.

И, пожалуй, это самая странная сторона современного искусственного интеллекта.

Мы не открыли математический символ, означающий:

интеллект = 42.

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

Ты пишешь:

Нужно звонить ветеринару?

Где-то миллиарды чисел принимаются за работу.

И мгновение спустя машина отвечает.

А у нас остаётся очевидный следующий вопрос:

Откуда взялись эти миллиарды полезных весов?

Ведь когда модель только создали, эти веса ничего не знали о собаках.

Или о курицах.

Или о ветеринарах.

Или о Python.

Или о Франции.

Или о Шекспире.

Им пришлось учиться.

И вот здесь начинается следующая история.

Источники и дальнейшее чтение

Перепечатка и использование

Опубликовано AI Model Green Zone.

Перепечатка разрешена только целиком, без сокращений и изменений, с указанием AI Model Green Zone и заметной активной ссылкой на оригинальную статью на нашем сайте.

Для переводов, сокращённых версий и переработок требуется отдельное разрешение.

Эти условия не ограничивают использование, разрешённое законом.

Ссылка на оригинал появится после настройки публичного адреса сайта.