Skip to Content
🌐 Русский00 · Основы

00 · Основы: пять идей, которые тебе действительно нужны

🌐 English · Русский · Eesti

Всё в этом туториале — внимание (attention), градиенты, трансформеры — построено из пяти идей, и ни одна из них не сложнее того, что ты видел на хорошем школьном уроке математики. Эта страница даёт каждую из них простым языком, с той самой терминологией, которой пользуются следующие уроки. Если ты уже знаешь все пять — смело прыгай в 01 · Обзор. А если какой-нибудь урок вдруг покажется написанным на иностранном языке — возвращайся сюда.

1. Модель — это просто функция

В школе функция — это что-то вроде f(x) = 3x + 2: числа на входе, числа на выходе. Языковая модель — ровно то же самое, просто больше. microGPT — это функция, которая берёт несколько символов на вход и выдаёт ~27 чисел на выход (по одной оценке на каждый возможный следующий символ). Вся функция собрана из сложений, умножений и пары кривых вроде exp(x). Внутри нет никакой магии, нет базы заученных предложений — только арифметика.

Фишка вот в чём: в этой функции примерно 4 000 ручек, которые называются параметрами (или весами). Покрути ручки — и тот же вход даст другой выход. «Обучение» — это и есть кручение ручек до тех пор, пока выходы не станут хорошими. В этом вся игра.

2. Символы становятся числами (токены)

Функции едят числа, а не буквы. Поэтому первый шаг — скучная таблица соответствий: a → 1, b → 2, … Это называется токенизацией, а каждое такое число — токен (token). Большие модели вроде ChatGPT используют в качестве токенов куски слов; microGPT не усложняет — один токен на символ. Есть ещё один особый токен, который на входе означает «НАЧАЛО текста», а на выходе — «СТОП».

3. Векторы, матрицы и скалярное произведение

Вектор — это просто список чисел, например [2, -1, 3]. Матрица — таблица чисел. Вот и всё: когда урок говорит «эмбеддинг — это 16-мерный вектор», это значит «этот символ представлен списком из 16 чисел».

Единственная операция, которую обязательно нужно знать, — скалярное произведение (dot product): перемножь два вектора позиция за позицией и сложи всё вместе.

[1, 2, 3] · [4, 0, -1] = 1·4 + 2·0 + 3·(-1) = 1

Зачем оно? Потому что скалярное произведение — это мера похожести. Если два вектора смотрят в одну сторону, скалярное произведение большое и положительное; если они никак не связаны — оно близко к нулю; если противоположны — отрицательное. Внимание (урок 03) почти целиком построено на этом одном трюке: «насколько то, что я ищу, похоже на то, что предлагает каждый предыдущий символ?»

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

4. Производная — это ручка чувствительности

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

Если я чуть-чуть подтолкну этот вход вверх, насколько и в какую сторону сдвинется выход?

Если f(x) = x² и x = 3, производная равна 6: сдвинь x вверх на волосок — и f поднимется примерно на 6 волосков. Когда у функции много входов, это число называется градиентом — по одному числу чувствительности на каждую ручку.

Почему это важно: обучению нужно знать про каждую из 4 000 ручек — «если я поверну эту ручку вверх, ошибка модели станет лучше или хуже, и насколько?» Градиент — это ровно тот список ответов. А дальше рецепт почти до смешного прост: подтолкни каждую ручку на крошечный шаг в сторону уменьшения ошибки и повтори тысячи раз. Это градиентный спуск — то самое «обучение» в машинном обучении.

Цепное правило — это способ протащить градиенты через цепочку операций: чувствительности перемножаются, как передаточные числа шестерёнок. Если удвоение a учетверяет b, а удвоение b утраивает c, то толчок a сдвигает c с коэффициентом 4 × 3. Урок 02 показывает это буквально — как импульсы, текущие назад по графу; и стоит это один раз увидеть, как загадочный вызов .backward() в каждом фреймворке глубокого обучения перестаёт быть загадочным.

5. Оценки становятся вероятностями (софтмакс)

Сырые выходы модели — это 27 произвольных оценок, которые называются логитами (logits) — что-нибудь вроде [2.3, -1.1, 0.4, …]. А нам нужны вероятности: 27 положительных чисел, дающих в сумме 1. Преобразователь называется софтмакс (softmax):

  1. Возьми exp() от каждой оценки — теперь всё положительное, а большие оценки стали намного больше.
  2. Подели каждую на общую сумму — теперь они дают в сумме 1.

Вот и вся функция. Большая оценка превращается в большую вероятность, маленькая — в маленькую, и ничто никогда не становится ровно нулём — у каждого символа остаётся хотя бы крошечный шанс. Когда урок 05 играет со слайдером температуры, он всего лишь делит оценки на константу перед софтмаксом: высокая температура сглаживает различия (больше случайности, больше творчества), низкая — заостряет их (больше уверенности, больше повторов).

Как уроки используют эти идеи

УрокО чём онНа какие идеи опирается
01 · ОбзорВесь цикл за 30 секундфункции (1), токены (2), софтмакс (5)
02 · АвтоградКак .backward() вычисляет каждый градиентпроизводные и цепное правило (4)
03 · ВниманиеКак символ «смотрит» на более ранние символыскалярное произведение (3), софтмакс (5)
04 · Блок трансформераПолный прямой проход, собранный от и довсе сразу
05 · Обучение и генерацияКак ручки по-настоящему крутятсяградиенты (4), софтмакс и температура (5)

Застрял на каком-то слове дальше? Загляни в Глоссарий — каждый термин, которым пользуются уроки, по одному безжалостному предложению на каждый.

И напоследок, для бодрости духа: microGPT — это ~150 строк обычного Python. Не 150 000 — 150. К концу урока 05 ты увидишь, как каждая из них делает свою работу в 3D. После этого в GPT не останется ни одного чёрного ящика.

Last updated on