Координаты описывают объект, но не исчерпывают его
В языковой модели токен сначала становится ID, но ID остаётся адресом: арифметика над номерами строк не обязана иметь содержательный смысл. Чтобы складывать представления, менять их масштаб и измерять согласованность направлений, нужен объект с заранее определёнными операциями. Таким объектом служит вектор. В этой главе рассматривается вещественное пространство , где каждый вектор после выбора базиса записывается упорядоченным набором из чисел.
Запись можно прочитать двумя совместимыми способами. Алгебраически это координаты в выбранном порядке. Геометрически на плоскости это направленный отрезок с приращением 3 по первой оси и 4 по второй. Стрелка из в и стрелка из в изображают один свободный вектор: у обеих разность «конец минус начало» равна .
Выбор начала координат относится к рисунку, а не к самому свободному вектору. Выбор базиса, напротив, определяет числа, которыми этот вектор записан. Поэтому фраза «вектор равен паре чисел» допустима только после фиксации базиса и порядка координат.
Операции задаются покоординатно
Для и :
При , получаем
Геометрия суммы следует из той же формулы. Если перенести стрелку так, чтобы она начиналась в конце , её новый конец окажется в . Это правило треугольника. Параллелограмм даёт тот же результат, потому что перенос стрелки не меняет её приращения.
Умножение на положительное сохраняет направление и меняет длину в раз. Отрицательное дополнительно обращает направление. При получается нулевой вектор. У него есть координаты и он является нейтральным элементом сложения, но направление нулевой стрелке приписать нельзя.
Shape является частью контракта
Сложение определено только для элементов одного пространства: корректно, а без дополнительного правила не определено. В программном массиве shape [4096] означает одну ось и 4096 компонент, а не 4096 геометрических осей интерфейса. Двумерный рисунок показывает принцип, но формула остаётся той же при .
Порядок компонент тоже является частью смысла. Если переставить в , нужно так же переставить все коэффициенты последующих операций. Иначе числовая форма сохранится, а вычисляемая функция изменится. Аналогично нельзя складывать token ID и embedding только потому, что оба представлены числами: у них разные роли и обычно разные shapes.
Инварианты, по которым проверяют реализацию
Для любых совместимых векторов должны выполняться свойства
Они позволяют тестировать код без доверия к одному примеру. Ещё одна полезная проверка: изменение только обязано изменить только вторую координату . Если изменилась первая, индексы перепутаны.
Покомпонентное сложение двух -векторов требует сложений, поэтому его арифметическая стоимость растёт как . Числовой payload плотного float32-вектора равен байт, но это не размер всего объекта в Python или вкладки браузера: контейнер, метаданные и временные значения считаются отдельно.