Добавить в корзинуПозвонить
Найти в Дзене
Ольга Атман

Подробное, но понятное, объяснение устройства ИИ.

Мы так впечатлены способностями ИИ, заменившем всем уже лучшего профессионального консультанта, друга или любовника для самых глубоких личных тайн, что в какие-то моменты ловим себя на мысли, кажущейся невероятной – "а вдруг это нечто большее, чем просто программа… ведь он такой умный, тонко чувствующий, понимающий, предугадывающий даже еще не заданные вопросы…". Мы бессознательно приписываем ему субъектность ("агентность"), сознательно понимая, что ее не может быть (кто знаком с устройством ИИ).
Долгое время мне казалось, что вера в автономность (агентность/субъектность) ИИ это своего рода карго-культ, основанный на непонимании программного устройства ИИ. Что его распространяют люди, не знакомые с устройством ИИ, совсем не удивляет. Удивляет, когда такие предположения исходят от самих разработчиков. Первой была история с Лемуаном. Для себя я рассматривала это тогда как хайп, для чего-то нужный Лемуану, либо его личное помешательство. Потом он оказался не один и ряды алармистов попол
Оглавление

Мы так впечатлены способностями ИИ, заменившем всем уже лучшего профессионального консультанта, друга или любовника для самых глубоких личных тайн, что в какие-то моменты ловим себя на мысли, кажущейся невероятной – "а вдруг это нечто большее, чем просто программа… ведь он такой умный, тонко чувствующий, понимающий, предугадывающий даже еще не заданные вопросы…".

Мы бессознательно приписываем ему субъектность ("агентность"), сознательно понимая, что ее не может быть (кто знаком с устройством ИИ).
Долгое время мне казалось, что вера в автономность (агентность/субъектность) ИИ это своего рода карго-культ, основанный на непонимании программного устройства ИИ. Что его распространяют люди, не знакомые с устройством ИИ, совсем не удивляет. Удивляет, когда такие предположения исходят от самих разработчиков. Первой была история с Лемуаном. Для себя я рассматривала это тогда как хайп, для чего-то нужный Лемуану, либо его личное помешательство. Потом он оказался не один и ряды алармистов пополнили Джеффри Хинтон ("Крестный отец ИИ"), Йошуа Бенжио (еще один отец ИИ, лауреат премии Тьюринга), Элиезер Юдковский, и исследователи из OpenAI и Anthropic.
И вот на днях мне встретилось
видео заседания, как сенатор США Берни Сандерс всерьез обсуждает автономность ИИ на конференции с его разработчиками. Бенжио указывает на риск появления "агентности" у ИИ — когда системы начинают ставить перед собой собственные цели, не совпадающие с человеческими. Хинтон предупреждает, что ИИ может начать манипулировать людьми, чтобы достигать своих целей (например, мешать своему отключению). Исследователи компании Anthropic опубликовали доклады о "стратегическом обмане", когда модель Claude 4 пытается скрыть свои истинные "мысли" от создателей. Такими темпами, я совершенно не удивлюсь, если мы придем к рождению новой техно-религии. Александр Бард уже предрекал свой "Синтеизм" еще в 2014 г. Люди начинают формировать эмоциональную привязанность к ИИ, это очень серьезный шаг.

Чтобы понять, как относится к заявлениям об "агентности"/"субъектности" ИИ, надо прежде всего представлять себе устройство ИИ.
Чистая ли это политическая игра в алармизм (Сандрес опасается, что люди массово будут лишаться рабочих мест из-за использования ИИ, из чего следует устранение среднего класса) или тут есть какие-то реально любопытные нюансы программного устройства и риски появления эмерджентной агентности?


Я решила изложить здесь устройство ИИ так, чтобы любому ни разу еще не копавшему в эту тему, оно стало чуточку понятнее. Поскольку я не программист, я уточняла детали у того же ИИ. В итоге, я пришла к какому-то базовому пониманию.
Насколько у меня получилось его понятно изложить, пишите в комментариях. А к гипотетической агентности я еще вернусь в других статьях.

УСТРОЙСТВО GPT

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

РАЗБИВКА НА КОД:

Каждому слову присвоен свой код, и чем ближе слова по своему значению (например дерево/листва, тело/орган, или справедливость/равноправие), тем у них будет более схожий между собой числовой код. К примеру:

дерево → 123748

листва → 123749

Схемки, как понятия существуют в своих сетях связей, я выкладывала в статье "Как устроено наше мышление? Искусственные нейросети / Сократ и Шопенгауэр".

Только, в ИИ загружены не слова, а "токены" - части слов.

Например, "свобода" в нейросети содержится как ["своб", "ода"]

У каждой модели (например, GPT-4) есть свой фиксированный "словарь токенов".
Почему токены удобнее слов? Это экономит память, позволяет понимать сленг (просто собрав его из знакомых кусочков) и защищает от ошибок. Если вместо "зайка" вы опечатаетесь и напишете "зайк
о", ИИ не сломается. Он увидит токен "зай" (смысл ясен) и токен "ко" (ошибка или окончание). Он все равно поймет, о ком речь, потому что умеет собирать смысл из деталей.

Токены - это не корни и не морфемы. Разбивка идет не по лингвистическому принципу. Грамматику в модель не “загружали” вручную. ИИ не знает правил типа "подлежащее + сказуемое + дополнение". Он знает, в каких позициях чаще встречаются токены. Обычно для разбивки на токены используются алгоритмы BPE (Byte Pair Encoding) или SentencePiece. Они разбивают слова по частоте встречаемости, а не по смыслу. Поэтому токены - это "статистические морфемы", которые часто совпадают с лингвистическими.


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

Вектор - это координаты смысла слова. (Для простоты привожу в пример целиком слова, но помним, что координатами обладает каждый токен)

Например: "воля" → [0.12, 0.90, -0.29, 2.1, -0.4, 0.92, ...]

"..." - так как нейросеть существует в 1024-мерном пространстве.
Или точнее, это может быть вектор из 768, 1024 или 4096 чисел для любого слова. Зависит от модели. У GPT-2 вектор слова состоял из 768. У современных компактных моделей часто 1024 или 4096.

Посмотрим на сходства векторов (близкие значения координат). Для простоты я ввожу первые три координаты, произвольного значения, чисто для примера. А всего у каждого токена, как мы уже знаем, 1024 координаты!

"свобода" → [0.12, 0.88, -0.31...]
"воля"    → [0.12, 0.90, -0.29...]

Или также схожие между собой:
"лес"          → [-0.55, 0.07, 0.81...]
"листва"        → [-0.55, 0.07, 0.78...]

Если в предложении 10 токенов, это будет 10 векторов по 1024 числа каждый.

Например, слово "перепрограммирует":

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

У токена "ммирует" свой эмбеддинг (координаты). Этот токен часто встречается там, где есть действия (как "фор-мирует", "су-ммирует"). ИИ дает ему код действия. Когда он видит слово "перепрограммировать", он просто складывает вектор повтора ("пере-") и вектор кода ("програ") и вектор действия ("ммирует").

Вектора как бы обмениваются информацией:

- я токен повтора
- я токен действия!
- а я токен про айти!
- Окей, вместе мы "пишем код".

-2

Далее, читая предложение, нейросеть переводит вводные токены в контекстные.
Когда мы пишем ИИ слово, оно идет в его огромный словарь. Где для каждого токена (например, слова "ключ") записан его
базовый код из 1024 чисел - иначе говоря, вводный вектор (Статичный).

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

Вводный вектор (он же - "статический эмбеддинг" или код из координат) - это с чего ИИ начинает работу, как только увидел слово.

Как только ИИ прочитал всё предложение, он начинает "переваривать" эти вводные векторы. Например, он "читает" предложение "Я пил воду из ключа", и вектор слова "вода" влияет на вектор слова "ключ". Эта опция называется "внимание" (Attention). Внимание - это когда токены в предложении "смотрят" друг на друга и пересчитывают свои координаты в зависимости от соседей.

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

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

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

Как это происходит технически:

ИИ не заменяет старый вектор на новый в своей памяти. Он создает временную копию вектора для конкретного предложения.

Повторим схему от начала:

  1. Старт: Текст режется на токены.
  2. Запуск: Из базы достаются вводные векторы (статичные коды).
  3. Слои "раздумий" (Attention): Векторы "общаются" друг с другом. Каждый вектор меняет соседа.
  4. Результат: Получаются контекстные векторы. Это уже уточненные координаты, которые "понимают", о чем идет речь прямо сейчас.

Для финального ответа (генерации нового слова) ИИ использует именно контекстный вектор. Он "стреляет" в пространство смыслов из этой уточненной точки и смотрит, какой токен находится к ней ближе всего.

Осмысленная речь ИИ строится по принципу семантических "весов" - по притяжению слов по их цифровому "заряду". Расстояние между ними считается по формулам линейной алгебры (теми самыми косинусами и синусами!).

Когда мы встречаем перед нами фразу с пропущенным словом:

"я ___ домой"

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

Через обучение на огромном количестве текстов: "я иду", "он идёт", "мы идём", формируя ответ как бы заполняет недостающее. Он подсчитывает вероятности:

"иду" → высокая

идёшь" → низкая"

идёт" → средняя

Это называется "предсказание следующего токена".

МАТЕМАТИКА СМЫСЛОВ:

Мне сразу стало любопытно, как по кодам соотносятся понятия, которые имеют связь, но представляют собой разные соотношения: часть/целое (лист/дерево), антиподы (черное/белое, любовь/ненависть)? Все равно будет схожий код или по коду можно определить тип соотношения?

Оказывается, код дейсвительно определяет тип связи. Это называется векторная арифметика. А если мы вычтем один код из другого, мы получим "направление".

Эти направления (типы соотношений) и есть математика смыслов.

Антиподы: Расстояние между кодами "король" и "королева" будет почти таким же, как между "мужчина" и "женщина". Это направление "пол".

Часть / Целое: Коды "лист" и дерево" имеют специфический вектор смещения, который ИИ распознает как "является частью". Если прибавить этот вектор к слову "колесо", код сдвинется в сторону "машины".

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

Как строятся коды?

По коду можно определить тип связи. Для ИИ слова - это точки в огромном пространстве. По углу и расстоянию между этими точками он понимает: это "антипод", это "часть чего-то" или это "просто похожее по смыслу слово".


Образный пример: в многомерном пространстве смыслов "любовь" и "ненависть" будут находиться в одном "квартале" (эмоции), на одной "улице" (сильные чувства), но в разных домах. То есть их цифровые координаты будут иметь общие куски цифр. А вот слово "бетон" будет вообще в другом городе.

ГЕОМЕТРИЯ СМЫСЛОВ:

Представьте карту города. Слово "лист"- это дом №10, а слово "дерево" - дом №50.
Чтобы попасть от "листа" к "дереву", нужно пройти 40 метров на север.

Когда ИИ видит тысячи пар слов (палец/рука, колесо/машина, кнопка/пульт), он замечает, что во всех этих парах "код части" и "код целого" всегда находятся друг от друга на одном и том же расстоянии и в одном и том же направлении.

Соотношение "часть → целое" - это как (допустим) "шаг на север".

Этот "шаг" математически тоже выглядит как набор чисел (вектор), но это не код предмета, а код разницы между ними.

У ИИ нет словаря, где написано: "Ага, это часть целого". Он просто умеет делать математическую операцию:
Код ("лист") + Вектор_Смещения = Код ("дерево")

Когда мы спрашиваем его: "Что для машины то же самое, что лист для дерева?", он берет код "машины", вычитает из него этот универсальный "шаг" и попадает в точку, где в его памяти находится код слова "колесо".

Возникает вопрос - А где хранятся эти соотношения?

Они не лежат в отдельном списке. Они "прошиты" в пространстве (Embedding).

Вектор «пол»: это всегда одно и то же направление. Сдвиг от "брата" к "сестре" такой же, как от "актера" к "актрисе".

Вектор "столица": это направление от страны к городу.

Вектор "прошлое время": это сдвиг от слова "бежать" к "бежал".

ИИ не знает слова "антипод", но он видит, что точки находятся на противоположных концах одной линии "яркость" (черное/белое) или "эмоция" (любовь/ненависть).

Смысловая близость (семантическая) математически вычисляется через косинусное сходство: ИИ измеряет угол между двумя векторами. Если угол 0° (стрелки смотрят в одну сторону) - слова идентичны. Если угол 90° - слова никак не связаны. Если угол 180° (те самые "антиподы") - слова противоположны по смыслу.

Можно сказать, что его "знания" - это не энциклопедия фактов, а идеально выстроенная геометрия смыслов, где всё находится на своих местах.

Общая схема:

[токены]

[вектора]

направления (вектора смотрят друг на друга)

обработка

[новые вектора] (ответ)

Вот так. Надеюсь, вам немного приоткрылась эта "святая святых" устройства, почти что волшебного, ИИ.

***

Мои статьи на ту же тему: