alterna ai
ALTERNA AI / ГЛАВА 00 · 02

Вход и правило преобразования

На предыдущей странице: модель — не вся программа.

Если меняется число на входе, может измениться ответ. Это ещё не означает, что правило обучилось.

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

Откуда вообще берутся веса?

Вес (weight) — настраиваемый коэффициент модели. Это не номер слова и не ответ нейросети. Веса хранятся в таблицах; одно и то же число может участвовать в расчёте для разных токенов.

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

Как из начальных чисел получается обученная модель

  1. Модель делает прогноз по учебному примеру.
  2. Прогноз сравнивают с известным правильным ответом.
  3. Разницу оценивают числом — ошибкой, или функцией потерь (loss).
  4. Производные показывают, как малые изменения параметров повлияют на ошибку; их набор называют градиентом (gradient).
  5. Правило исправления — оптимизатор — немного меняет параметры, и расчёт повторяют.

После многих таких исправлений значения весов могут стать полезными для задачи. Это не гарантия качества на новых данных: их проверяют отдельно. В следующих главах таблицы E, Wq и U содержат те самые настраиваемые числа.

Четыре объекта, которые нельзя смешивать

Рассмотрим семейство функций

y=f(w,b)(x)=wx+b.y=f_{(w,b)}(x)=wx+b.

Здесь архитектура — порядок операций «умножить, затем прибавить». Параметры θ=(w,b) выбирают конкретную функцию семейства. Input x относится к текущему примеру. Activation y возникает во время текущего вычисления. Эти объекты могут быть представлены числами, но их роль различна.

При w=1, b=0, x=2 получаем y=2. Если заменить только x на 3, точка перейдёт с (2,2) на (3,3) вдоль прежней прямой. Если сохранить x=2, но заменить w на 2, получится новая функция y=2x и output 4. В обоих опытах ответ изменён, однако только во втором изменился parameter state.

Состояние x w b y Причина изменения
Базовое 2 1 0 2 Нет
Новый пример 3 1 0 3 Другой input
Новый slope 2 2 0 4 Другой parameter w
Новый offset 2 1 1 3 Другой parameter b

Геометрия аффинного преобразования

Коэффициент w задаёт изменение выхода на единицу изменения входа:

f(x+Δx)−f(x)=wΔx.f(x+\Delta x)-f(x)=w\Delta x.

Bias b=f(0) сдвигает прямую. При b≠0 преобразование строго является аффинным, а не линейным: для линейного отображения требуется f(0)=0. Традиционное название «линейная регрессия» при этом сохраняется.

Влияние параметра зависит от input:

∂y∂w=x,∂y∂b=1.\frac{\partial y}{\partial w}=x,\qquad \frac{\partial y}{\partial b}=1.

При x=0 изменение w не изменяет текущий output, хотя сам parameter store меняется. Значит, параметру нельзя навсегда приписать одинаковый видимый эффект на любом примере.

От скаляра к векторам и shapes

Если у объекта два признака, используем вектор x=[x₁,x₂] и weights w=[w₁,w₂]:

y=w⋅x+b=w1x1+w2x2+b.y=w\cdot x+b=w_1x_1+w_2x_2+b.

Например, [1,2]·[3,4]=1·3+2·4=11. Совместимость shapes является частью смысла операции: dot принимает два вектора одинаковой длины и возвращает скаляр. Для batch из n примеров матрица X может иметь shape [n,d], вектор w — [d], а predictions — [n].

Большая нейросеть повторяет матричные и покоординатные операции много раз. Это не превращает каждую внутреннюю координату в человеческое понятие. Число внутри activation может участвовать в полезном распределённом представлении, не имея постоянной подписи «животное» или «грамматика».

Зачем нужна нелинейность

Композиция аффинных преобразований без нелинейности снова аффинна:

W2(W1x+b1)+b2=(W2W1)x+(W2b1+b2).W_2(W_1x+b_1)+b_2=(W_2W_1)x+(W_2b_1+b_2).

Добавление ReLU(r)=max(0,r) между слоями ломает это сворачивание. Для вектора правило применяется покоординатно: ReLU([-2,3])=[0,3]. Нелинейность расширяет класс функций, но сама по себе не обеспечивает обучение, обобщение или истинность ответа.

Dataset, target и prediction

Dataset — набор примеров для обучения или оценки. В supervised learning запись часто содержит пару (x,y*), где y* — известная цель. Prediction f_θ(x) вычисляется моделью. Target не является activation, а dataset не является папкой, которую каждый forward обязан читать заново.

Во время inference те же параметры последовательно обрабатывают разные inputs. Временные activations создаются и удаляются, а weights остаются фиксированными, пока отдельная процедура не выполнит update. Нижняя лаборатория позволяет менять x, w и b раздельно: наблюдайте не только новый y, но и то, изменилась ли прямая целиком.

Тот же механизм в коде

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

x, w, b = 2, 1, 0
y = w * x + b
print(y)  # 2

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

При фиксированных w и b это та же функция, применённая к другому примеру. Изменение ответа не доказывает обучения.

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

Академическая база →