Что ж, опрос показал, что для многих вектор — это пока школьная "стрелочка". А начиная со следующего поста из серии #llm_internals этот термин и многомерные пространства будут везде. Чтобы вы не поплыли на матчасти, делаю отдельный мини-ликбез по векторам — и потом уже пойдём к самому интересному.
Благо, понять всё это крайне просто.
Что такое вектор?
Как мы выяснили, "стрелочку" из школьной физики и геометрии помнят плюс-минус все. И да, это действительно вектор. Но в школе, как обычно, дают лишь один частный случай.
Вектор — это направленный отрезок. То есть, по сути, это просто координаты начала и координаты конца:
(x1, y1), (x2, y2).Но можно ещё проще — нас всегда интересует только направление и длина вектора. Поэтому, переносим его начало в точку
(0, 0), и остаётся всего две интересные координаты: (x2, y2). По сути, это координаты одной точки — конца вектора. Поэтому понятие "точка в пространстве" и "вектор" — обычно одно и то же.Но это был вектор на плоскости, т.е. в 2-мерном пространстве. А ещё есть вектор в 3-мерном пространстве. Разница лишь в том, что добавляется ещё одна координата:
(x1, y1, z1).А что вообще может быть координатой?
Что угодно! И это главный сдвиг, который надо сделать в голове.
В школе мы привыкли: x — «вправо», y — «вверх», z — «в глубину». Но в качестве координат можно взять любые параметры одного объекта:
- Человек: (рост, вес, возраст) — 3-мерный вектор. Каждый человек — точка в 3D-пространстве "людей по этим параметрам".
- День: (температура, влажность, ветер) — 3-мерный «погодный» вектор.
- Игровой персонаж: (HP, MP, level, gold) — уже 4-мерный.
И никто не запрещает расширять. Можете ещё что-нибудь про человека учесть (доход, размер накоплений, IQ, количество друзей, количество кошек) — 8-мерный вектор. И так до бесконечности.
🟠В общем случае, это N-мерный вектор, где N — количество параметров или размерность (dimension, dim)
Можно ли склеить два вектора в один большой?
Можно! И часто это очень удобно.
Например, есть две точки в 3-мерном пространстве — две мухи в вашей комнате. Если хотите описать "состояние пары" одной точкой, склейте их координаты: (x1, y1, z1, x2, y2, z2). Получится 6-мерный вектор. Одна сущность "пара мух" = одна точка в 6-мерном пространстве.
В статистической физике есть понятие "состояние системы", и это может быть бесконечномерный вектор 🤯 (например, координаты и скорости всех молекул воздуха в вашей комнате). Ну ладно, технически это не совсем бесконечное количество, а вот гильбертово пространство волновых функций... Всё, стоп!
Итого: чем больше параметров нужно учесть, тем больше размерность пространства, в котором их удобно описывать.
При чём тут LLM?
В моделях каждому токену соответствует не пара чисел, а 8-12 тысяч. То есть токен — точка, например, в 12000-мерном пространстве 🤔
Стрелочку тут не нарисуешь, но математика та же. Это всё ещё просто список из 12000 чисел.
И главное: модель училась располагать токены в этом пространстве так, чтобы близкие по смыслу оказывались рядом. "Программист" близко к "разработчику" — потому что числа в их списках получились похожие. Вот и вся магия.
————
Если в голове щёлкнули три вещи — «вектор = список чисел», «координаты = любые параметры», «размерность = сколько параметров» — то с матчастью на этом всё. В следующем посте идём к трансформеру 🤖
🟢P.S. Советую изучить картинку на обложке этого поста. Там GPT шикарно и без ошибок визуализировал всё, что я пытался донести текстом.
#llm_internals #math
