Векторы: геометрия, нормы (L1/L2) и скалярное произведение
Когда говорят «вектор», большинство новичков думают «массив чисел». Это неверная интуиция. Вектор — это стрелка в пространстве: у неё есть направление и длина. Представьте, что вы стоите в центре города. «Три квартала на север и два на восток» — это вектор. В ML каждый объект (клиент, фото, слово) превращается в такую стрелку в многомерном пространстве признаков, и модель учится различать эти стрелки.
Вектор: интуиция и математика
Норма вектора — это его «длина». Но длину можно считать по-разному. L2 (евклидова) — прямая линия от начала до конца стрелки: x2+y2. L1 (манхэттенская) — движение по клеткам города, только вдоль осей: ∣x∣+∣y∣. Нажмите на каждую метрику ниже, чтобы увидеть разницу наглядно.
Скалярное произведение a⋅b=a1b1+a2b2 — это мера того, насколько два вектора «смотрят в одну сторону». Если угол между ними маленький — произведение большое и положительное. Если перпендикулярны — ноль. Если смотрят в разные стороны — отрицательное. Потащите вектор B мышью и посмотрите, как меняется результат.
Каждый нейрон делает ровно одну операцию: вычисляет скалярное произведение входного вектора на вектор весов. Потом функция активации решает, «зажигаться» нейрону или нет. Именно поэтому понимание векторов — это не абстрактная математика, а основа понимания того, как работает любая нейросеть.
import numpy as np
a = np.array([1.0, 2.0, 3.0])
b = np.array([4.0, 5.0, 6.0])
dot = np.dot(a, b) # 1*4 + 2*5 + 3*6 = 32
l2 = np.linalg.norm(a) # √14 ≈ 3.74
l1 = np.linalg.norm(a, ord=1) # 6.0
cos_sim = dot / (np.linalg.norm(a) * np.linalg.norm(b))