Я уже рассказывал, как объяснял другу, сидящему в колонии строгого режима, что такое ИИ, так как он уже более трёх дет лишён свободы и просто не знает, как поменялся мир за это время.
Вторая серия о том, как ИИ работает технически.
Если объяснить совсем по сути, современный ИИ вроде ChatGPT — это не «мыслящая личность» и не база готовых ответов, а очень большая математическая функция, обученная угадывать, какой следующий кусок текста наиболее вероятен после предыдущих.
1. С чего всё начинается: текст превращают в числа
Компьютер не понимает слова как человек. Для него всё должно быть числами. Поэтому фраза вроде «Как работает ИИ?» сначала разбивается на маленькие кусочки — токены. Токеном может быть слово, часть слова, знак препинания или даже пробел в особом виде. Например, «работает» может быть одним токеном, а может быть разбито на несколько частей — зависит от словаря модели.
Каждому токену соответствует номер. То есть текст сначала превращается в последовательность целых чисел. Уже это делает язык удобным для машинной обработки.
Подписывайтесь на мой телеграм-канал Финсайд и потом не говорите, что вас не предупреждали: https://t.me/finside. Темы канала: экономика, инвестиции, финтех, банки. Автор: Олег Анисимов Также читайте, как я погорел на стартапе.
Но одного номера мало. Число «15273» само по себе не говорит, что это слово похоже на «модель» или связано с темой математики. Поэтому каждый токен переводится в вектор — длинный список чисел. Например, не просто «15273», а условно массив из 4 096 или 8 192 чисел. Это называется «эмбеддинг». Именно в таких векторах модель хранит «смысловые координаты». Слова с похожим употреблением оказываются рядом в этом многомерном пространстве.
2. Главная математика: линейная алгебра и вероятности
Внутри языковой модели почти всё держится на трёх вещах:
- умножение матриц;
- сложение и нелинейные преобразования;
- расчёт вероятностей.
Если очень грубо, модель берёт входные векторы и много раз прогоняет их через огромные таблицы чисел — матрицы весов. Вес — это просто параметр, число, которое модель подстроила во время обучения. Таких параметров могут быть миллиарды и сотни миллиардов.
Что делает модель на каждом шаге? Она пересчитывает представление текста, пытаясь уловить связи: к чему относится местоимение, где начало и конец мысли, какой стиль у текста, что логично продолжить дальше. Это и есть математика «понимания» в инженерном смысле: не осознание, а преобразование числовых представлений так, чтобы из них можно было хорошо предсказывать продолжение.
3. Почему все говорят про «трансформер» и attention
Большинство современных больших языковых моделей устроены по архитектуре Transformer. Её ключевая идея — attention, то есть механизм «внимания».
Когда модель читает текущий текст, она не обрабатывает каждое слово в полной изоляции. Она вычисляет, на какие предыдущие токены надо смотреть сильнее, а на какие слабее. Например, в предложении «Мария положила книгу на стол, потому что она была тяжёлая» модель пытается понять, к чему относится «она» — к книге или к столу. Для этого attention сравнивает токены друг с другом.
Технически это делается тоже через математику: из каждого токена вычисляются три вектора — Query, Key и Value. Потом считаются скалярные произведения между Query одного токена и Key других токенов. Получаются числа важности. После нормализации модель решает, сколько информации взять от каждого предыдущего элемента.
Иначе говоря, attention — это способ взвешенно смешивать контекст.
4. Как модель обучают
Обучение выглядит очень прозаично: модели дают огромные массивы текста и скрывают следующий токен. Её задача — предсказать его. Если предсказание плохое, веса немного меняют. Если хорошее — изменение меньше.
Формально модель выдаёт распределение вероятностей по словарю токенов. Например:
- «и» — 12 %
- «это» — 9 %
- «модель» — 18 %
- «работает» — 4 %
Правильный токен известен из обучающего текста. Считается ошибка, обычно через функцию потерь вроде cross-entropy. Затем по этой ошибке считается градиент — то есть как надо изменить каждый вес, чтобы в будущем ошибка стала меньше. Это делается методом обратного распространения ошибки и вариантами градиентного спуска.
Так модель проходит через гигантское количество примеров и постепенно подгоняет миллиарды параметров.
5. Где тут процессоры и почему нужны GPU
Обычный центральный процессор, CPU, хорош для самых разных задач, но плохо подходит для огромного числа одинаковых операций над матрицами. А обучение ИИ — это именно бесконечные массовые операции: умножения, сложения, нормализация, вычисление градиентов.
Поэтому используют GPU — графические процессоры. Исторически они создавались для графики, но оказались идеальны для параллельной математики. Если CPU силён в сложной логике и последовательных шагах, то GPU силён в том, чтобы одновременно выполнять тысячи похожих операций.
Для обучения крупных моделей используют не один GPU, а целые кластеры. Память тоже критична: веса модели, промежуточные активации, данные для обратного прохода — всё это занимает огромные объёмы. Поэтому важны не только вычисления, но и пропускная способность памяти, скорость обмена между ускорителями, сетевые соединения между серверами.
6. Почему всё в итоге сводится к числам
Кажется магией, что из одних чисел получается осмысленный текст. Но дело в масштабе. Если модель увидела огромное количество примеров, она начинает статистически улавливать закономерности:
- после одних слов чаще идут другие;
- определённые конструкции характерны для научного текста;
- в вопросе о математике часто встречаются слова «матрица», «вектор», «вероятность»;
- если раньше в разговоре упоминали Италию, то «Венеция» становится более вероятной, чем «Новосибирск».
То есть ИИ не «знает» всё в человеческом смысле, а строит очень сложную поверхность вероятностей над пространством текста.
7. Как происходит выдача ответа
Когда пользователь пишет запрос, модель снова превращает его в токены, прогоняет через свои слои и получает вероятности следующего токена. Затем выбирается один токен. Потом он добавляется к уже написанному тексту, и процесс повторяется.
Ответ рождается по одному токену за шаг.
Выбор бывает разным. Можно брать самый вероятный токен — это делает ответ более сухим и предсказуемым. Можно использовать «температуру» и сэмплирование: тогда из нескольких правдоподобных вариантов выбирается один случайным, но контролируемым образом. Чем выше температура, тем больше разнообразия и риск странностей. Чем ниже — тем больше шаблонности.
8. Почему ИИ ошибается и «галлюцинирует»
Потому что его цель — не «говорить правду», а строить правдоподобное продолжение. Если в данных было мало хороших примеров, если вопрос двусмысленный, если нужна точная свежая информация, модель может сгенерировать убедительный, но неверный текст.
Именно поэтому ИИ силён в языке, стиле, структуре, обобщении, программировании по шаблонам, но требует проверки там, где важны точные факты.
9. Самая короткая суть
ИИ такого типа — это гигантская система чисел, которая:
- переводит текст в токены и векторы;
- многократно преобразует их через матрицы;
- с помощью attention учитывает контекст;
- оценивает вероятности следующего токена;
- выдаёт ответ шаг за шагом.
Снаружи это похоже на разговор. Внутри — это колоссальная линейная алгебра, теория вероятностей, оптимизация и очень много вычислений на GPU.
На этом объяснение «на пальцах» закончено. Ниже более научное объяснение с формулами и числами.
Если смотреть уже не на общую идею, а на внутреннюю механику, то языковая модель — это композиция очень больших функций вида
где — входные токены, — распределения вероятностей следующих токенов, а — параметры модели. Параметров может быть , и больше: 7 млрд, 13 млрд, 70 млрд, 175 млрд и так далее. Каждый параметр — это просто число, но в сумме они образуют огромную вычислительную схему.
Токены, словарь, векторы
Пусть словарь модели содержит . Тогда любой текст после токенизации превращается в последовательность целых чисел:
Подписывайтесь на мой телеграм-канал Финсайд и потом не говорите, что вас не предупреждали: https://t.me/finside. Темы канала: экономика, инвестиции, финтех, банки. Автор: Олег Анисимов Также читайте, как я погорел на стартапе.
Дальше каждый токен заменяется на вектор размерности d. Типичные порядки: , , , . Если , то один токен становится точкой в пространстве из 4096 координат:
Матрица эмбеддингов имеет размер
Например, при и это уже 409,6 млн чисел только на входной словарь.
Позиция тоже кодируется числами
Порядок слов сам по себе не следует из набора токенов, поэтому к эмбеддингам добавляют позиционную информацию:
где — позиционные векторы. Иначе последовательности «кот укусил пса» и «пса укусил кот» выглядели бы почти одинаково.
Если длина контекста , а размерность , то вход в один слой — это матрица
то есть более 33 млн чисел только в представлении текущего контекста.
Внимание как математика связи токенов
Внутри слоя трансформера вычисляются три матрицы:
где — обучаемые веса. Затем строится матрица сходства:
Если длина контекста , то имеет размер . При это уже
элементов — только для одной головы внимания.
После этого применяется softmax:
и итог внимания получается так:
Смысл в том, что каждый токен получает взвешенную смесь других токенов. Если голов внимания , то всё это делается параллельно 32 раза, а затем результаты склеиваются.
Многослойность
Один блок трансформера обычно содержит:
- multi-head attention,
- остаточные связи,
- layer normalization,
- feed-forward network.
Упрощённо:
FFN — это обычно два линейных преобразования с расширением размерности. Например, при внутренний слой может быть или около того:
Если модель имеет 32, 48 или 80 таких блоков, вычисления проходят через них последовательно. Поэтому глубина тоже измеряется десятками слоёв, а не двумя-тремя.
Откуда берётся следующий токен
После всех слоёв модель получает вектор скрытого состояния для последней позиции и переводит его в логиты:
Подписывайтесь на мой телеграм-канал Финсайд и потом не говорите, что вас не предупреждали: https://t.me/finside. Темы канала: экономика, инвестиции, финтех, банки. Автор: Олег Анисимов Также читайте, как я погорел на стартапе.
где . Если , то модель выдаёт 100 тысяч чисел — «сырых оценок» для всех токенов словаря. Затем снова softmax:
На выходе — распределение вероятностей. Например:p(«модель»)=0.31,p(«система»)=0.22,p(«алгоритм»)=0.11
Дальше выбирается один токен: либо максимум, либо случайная выборка из распределения.
Температура и выборка
При сэмплировании логиты часто делят на температуру T:pi=∑jezj/Tezi/T
Если T=0.2, распределение становится «острее»: модель почти всегда выбирает самые вероятные варианты.
Если T=1.0, текст разнообразнее.
Если T=1.5, растёт креативность, но и вероятность абсурда тоже.
Иногда дополнительно используют top-k или top-p. Например, top-k = 40 означает: оставить только 40 самых вероятных токенов, остальные обнулить.
Обучение: ошибка и её уменьшение
На обучении известен правильный следующий токен. Потеря обычно считается через cross-entropy:
Поскольку правильный токен один, формула часто упрощается до
Если модель дала правильному токену вероятность 0,9, то потеря:
Если 0,01, то:
То есть ошибка резко растёт, когда модель уверенно ошибается.
После этого считается градиент:
и параметры обновляются, например, по схеме градиентного спуска:
где — шаг обучения. На практике используют Adam и его варианты, где обновление сложнее и включает экспоненциальные средние градиентов.
Сколько это стоит вычислительно
Для больших моделей счёт идёт уже не на миллионы, а на квадриллионы операций. Один шаг обучения требует прямого прохода, обратного прохода и обновления весов. Грубое инженерное правило: обучение модели с параметрами на D токенах требует порядка
операций с плавающей точкой.
Если взять модель в 70 млрд параметров и обучать её на 1 трлн токенов, получается порядок:
операций. Это уже астрономический объём вычислений.
Память и типы чисел
Параметры хранятся не как абстрактные числа, а в конкретном формате: fp32, fp16, bfloat16, int8, int4.
Если один параметр занимает 2 байта (fp16), то модель на 7 млрд параметров требует минимум:
только на веса.
Для 70 млрд параметров:
И это ещё без активаций, градиентов, состояний оптимизатора. Поэтому на обучении память может быть в несколько раз выше, чем «вес модели». Отсюда и кластеры из множества GPU.
Почему именно GPU
Главная операция — умножение больших матриц. Например, матрица умножается на . Это десятки и сотни миллиардов операций даже внутри одного слоя. GPU хороши именно потому, что умеют параллельно выполнять огромное число одинаковых арифметических действий. CPU для такой нагрузки слишком «узок».
Вся магия ИИ в итоге сводится к повторению одного и того же паттерна: взять гигантские массивы чисел, перемножить, нормализовать, посчитать вероятности, сравнить с правильным ответом и немного поправить веса. Миллиарды раз.
Итого в одном абзаце
Математически языковая модель — это функция, которая преобразует последовательность токенов в последовательность распределений вероятностей. Технически она состоит из матриц весов размером в миллиарды параметров, операций вида QKT, softmax, нелинейностей, градиентов и многократных обновлений θ. Физически всё это работает на ускорителях, которые за секунды выполняют колоссальные объёмы линейной алгебры. А текст, который видит пользователь, — лишь финальная интерпретация огромного каскада вычислений над числами.
Могу сразу сделать ещё один кусок в таком же стиле: отдельно про «почему ИИ врёт», отдельно про «что такое нейрон, слой, вес и токен» или отдельно про «сколько электричества и железа это требует».
Подписывайтесь на мой телеграм-канал Финсайд и потом не говорите, что вас не предупреждали: