Книга: Инжиниринг искусственного интеллекта
Назад: Вопросы для самопроверки
Дальше: 2. КАК ОТЛИЧИТЬ ТЕКСТ, СГЕНЕРИРОВАННЫЙ LLM, ОТ ЧЕЛОВЕЧЕСКОГО

ПРИЛОЖЕНИЯ

1. ЕСЛИ ЕСТЬ ТОЛЬКО 10-20 МИНУТ, ТО…

Схема «лестницы»



· Токены (азбука)

· Эмбеддинги (смысл)

· Позиция (порядок)

· Самовнимание (контекст)

· Трансформерный блок (совещание + кабинет)

· Глубина (32–128 слоёв)

· LM Head (от вектора к логитам)

· Softmax + экспонента (вероятности)

· Выбор токена (температура, креативность)

· Авторегрессия (цикл «добавил → снова внимание»)



Шаг 1. Токены (30 секунд)



«Начинаем с текста. Модель не видит буквы или слова - она видит числа. Текст разбивается на токены - это не всегда слова. Например, слово "нейросети" может разбиться на "нейро" и "сети". Токен - это просто индекс в словаре, число от 0 до 50 000 - 200 000. Это единица измерения: сколько токенов вы отправили, столько и платите».



Шаг 2. Эмбеддинги (1 минута)



«Число само по себе не несёт смысла. Модель превращает каждый индекс в вектор - длинный список чисел (например, 4096 штук). Это как координаты точки в многомерном пространстве. Слова с близким смыслом оказываются рядом: "кот" и "кошка" близко, "кот" и "астероид" - далеко. Почему так? Потому что модель обучилась этому на миллиардах текстов».



«Важный момент: вектор токена "кот" после обучения - это не "значение слова кот". Это распределение признаков, которые помогают предсказывать следующие слова».



Шаг 3. Позиция (30 секунд)



«Если мы просто сложим эмбеддинги, фразы "кот укусил собаку" и "собака укусила кота" будут выглядеть одинаково. Поэтому мы добавляем к каждому вектору метку о его позиции - номер слова в предложении. Два основных метода: RoPE - вращает вектор в зависимости от позиции (как накручивает спираль), и ALiBi - штрафует внимание за расстояние (чем дальше слова, тем меньше их влияние)».



Шаг 4. Самовнимание ( Self Attention ) - 2 минуты (ключевой блок)



«Самое главное - механизм внимания. Он позволяет каждому слову "посмотреть" на все остальные и понять, кто с кем связан».



Объясняете через три роли Q , K , V (без математики, только смысл):



Q (query, запрос) - «что я ищу?»

K (key, ключ) - «что я могу дать?»

V (value, значение) - «какую информацию я несу?»



Метафора с Netflix



Вы заходите в Netflix, ищете «комедии с Адамом Сэндлером» - это ваш Q (запрос).

У каждого фильма есть описание, жанр, актёры - это K (ключ).

Система ищет, какие ключи (K) лучше всего соответствуют вашему запросу (Q), и выдаёт вам фильмы (это V).

В трансформере каждый токен одновременно является и пользователем (ищет), и фильмом (описывает себя), и содержимым. Всё это считается параллельно, за один проход.



Шаг 5. Трансформерный блок (2–3 минуты)



«Внимание - это только часть блока. Полный блок состоит из четырёх компонентов: многоголовое внимание, первая остаточная связь + нормализация, сеть прямого распространения (FFN), вторая остаточная связь + нормализация».



Метафора «совещание + кабинет»



Многоголовое внимание - это общее собрание, где каждый слушает всех. Разные «головы» ищут разные типы связей: грамматику, семантику, кореференцию («Иван купил машину. Он рад ей»).



Add (остаточная связь) - страховка. Берём исходный вектор (до внимания) и прибавляем к результату. Если слой испортил информацию - можно вернуться к исходному.



Norm (нормализация) - «причёсываем» числа (среднее 0, отклонение 1), чтобы обучение было стабильным.



FFN (Feed-Forward Network) - личный кабинет. Каждый токен уходит в свой кабинет, переваривает услышанное, делает выводы, формулирует свою новую позицию. Без FFN модель была бы просто пересказчиком - собрала бы информацию от соседей, но не смогла бы её переработать в новые смыслы.



Шаг 6. Глубина (32–128 слоёв) - 1 минута



«Один блок - это один "этаж" понимания. Первые блоки выделяют грамматику и простые связи. Десятые - роли в предложении (кто действует, на кого действует). Тридцатые - настроение, иронию, скрытый смысл.

Чем глубже сеть, тем сложные абстракции она может выучить. Но тем сложнее её обучать (тут и помогают остаточные связи)».



Шаг 7. От вектора к логитам (LM Head) - 1 минута



«После всех слоёв у нас есть вектор последнего токена. Он содержит понимание всего контекста. LM Head - это финальный линейный слой. Он умножает вектор (размер 4096) на матрицу (размер_словаря × 4096) и выдаёт логиты - сырые оценки для каждого токена в словаре. Логиты могут быть любыми: кот → 15.3, собака → 12.1, астероид → -2.0».



Шаг 8. Softmax и экспонента (2 минуты)



«Логиты неудобны - среди них есть отрицательные числа, они не нормированы. Softmax превращает их в вероятности через экспоненту:



вероятность_ i = exp (логит_ i ) / sum ( exp (логит_ j ))



Зачем экспонента?



Отрицательный логит (-2) после exp становится маленьким положительным числом (0.14) - "астероид" не исчезает полностью, но получает крошечный шанс.

Сумма всех exp всегда положительна - нет деления на ноль.

При T=1 получаем честные вероятности (кот 88%, собака 12%, астероид 0.08%).

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



Шаг 9. Выбор токена (температура, креативность) - 1 минута



«Модель не обязана выбирать самый вероятный токен - иначе ответы были бы скучными и повторяющимися. Используем температуру (делим логиты на T перед softmax):



T → 0 (холодно) - почти всегда максимум, детерминированно.

T = 1 - исходные вероятности.

T > 1 (горячо) - выравнивает шансы, модель может выбрать "астероид". Это креативность.



Дополнительно

Top-K (оставить только K лучших) и Top-P (оставить токены, чья суммарная вероятность достигает порога, например 0.9) - адаптивные фильтры».



Шаг 10. Авторегрессия (цикл генерации) - 1 минута



«Выбранный токен добавляем к входной последовательности и повторяем шаги 4–9. Снова внимание (но уже с каузальной маской - модель не видит будущие токены, потому что их ещё нет), снова FFN, снова выбор следующего токена.

Цикл повторяется, пока не встретится токен конца (EOS) или не кончится бюджет токенов. Чтобы получить ответ из 100 слов, модель выполняет этот цикл 100 раз».



Если останется ещё 5 минут - про мультимодальность



«Мультимодальная модель - это та, которая видит картинки и слышит звуки. Как это устроено на уровне трансформера?



Картинка → патчи

изображение режется на квадратики 16×16 пикселей. Каждый патч (как токен) превращается в вектор через линейный слой - это аналог эмбеддинга для картинки.



Vision Transformer (ViT)

обрабатывает эти векторы точно так же, как текстовые токены, со своим вниманием и позиционным кодированием.



CLIP

обучается на миллионах пар «картинка - подпись». В результате вектор картинки оказывается рядом с вектором её описания в едином пространстве.



Объединение

проектор (небольшой MLP) превращает векторы картинки в векторы, понятные текстовой LLM. LLM не знает, что это картинка - для неё это просто ещё одна последовательность токенов. Она отвечает, учитывая и текст, и «увиденное».



Главные риски мультимодальности



· Модель может распознать лицо без согласия.

· Вредоносная инструкция может быть спрятана в QR-коде или мелком тексте на картинке (визуальная инъекция).

· Модель может галлюцинировать («на стене висит картина», хотя комната пуста).

· Защита - фильтрация на входе, аудит выходов, red teaming для изображений».



Если останется ещё 5 минут - про агентов



«Агент - это LLM + права на действия. Он не просто отвечает, а может вызывать API, писать в базу данных, отправлять письма, удалять файлы.



Типы агентов (от простого к сложному)



ReAct (Reason + Act) - чередует мысль и действие: «Пользователь спросил погоду → вызов API → получил данные → ответил». 1–3 инструмента, 2–4 шага.



Plan-and-Execute - сначала составляет полный план (список шагов), потом выполняет. При ошибке перепланирует. Подходит для 10+ шагов.



Мультиагентные системы



Supervisor (центральный диспетчер) или Swarm (децентрализованный рой, как муравьи).



Важнейшее предупреждение



Агент - оверкилл для 80% задач. Не стройте агента там, где хватит одного LLM-вызова. И всегда изолируйте выполнение кода в песочнице (Docker, E2B - песочница) - иначе агент может выполнить rm -rf /.



Обязательные требования для продакшена



· Ограничение числа шагов (10–20) - иначе уйдёт в бесконечный цикл.

· Human-in-the-loop на опасные действия (удаление, платежи).

· Полная observability: логируем каждое рассуждение, каждый вызов, каждый ответ.



Nightmare library - набор запросов, на которых модель не имеет права деградировать (промпт-инъекции, запросы PII (Personally Identifiable Information) – персональные данные). Регрессия на них - стоп-фактор для релиза».



Назад: Вопросы для самопроверки
Дальше: 2. КАК ОТЛИЧИТЬ ТЕКСТ, СГЕНЕРИРОВАННЫЙ LLM, ОТ ЧЕЛОВЕЧЕСКОГО