Головна / Статті / Вісім ідей лінійної алгебри, на яких тримаються ембединги, LoRA і PCA

Вісім ідей лінійної алгебри, на яких тримаються ембединги, LoRA і PCA

Вектори, матриці, власні вектори, косинусна подібність, норми, SVD і ранг — на простих прикладах із цінами на будинки та з ШІ-техніками, які від них залежать.

1673 слів

Щоб будувати щось на ШІ, математичний диплом не потрібен, але трохи лінійної алгебри розвіює купу загадок. Моделі не вміють безпосередньо читати текст, зображення чи звук. Усе спершу перетворюється на числа. Але й після цього потрібен спосіб упорядкувати числа так, щоб модель могла порівнювати об'єкти, помічати закономірності й робити прогнози, і цей інструментарій дає лінійна алгебра. Ось вісім понять, які варто знати, перш ніж називати себе ШІ-інженером.

1. Вектори зберігають дані

Вектор — це впорядкований список чисел, що описує щось. Будинок можна записати так:

[300000, 150, 3]

Ці три елементи означають ціну ($300 000), площу (150 квадратних метрів) і кількість спалень (3).

Навіщо це? Коли об'єкти подано векторами, модель може їх порівнювати. Два будинки зі схожими ціною, площею й кількістю спалень мають схожі вектори — так модель і бачить, що вони пов'язані.

2. Матриці складають багато векторів разом

Уявіть матрицю як сітку з рядків і стовпців. Один вектор описує один об'єкт, а матриця вміщує цілий набір:

[ 300000   150   3 ]  → House 1
[ 450000   200   4 ]  → House 2
[ 250000   120   2 ]  → House 3

Кожен рядок — це будинок, а кожен стовпець — ознака: ціна, площа, спальні. Матриці дають змогу системі обробляти багато даних за раз, а не по одному вектору, завдяки чому обчислення на великих наборах даних лишаються ефективними.

3. Власні значення й власні вектори вказують на головне

Власний вектор — особливий вектор, який після перетворення, як і раніше, напрямлений уздовж тієї самої прямої. Він може стати довшим чи коротшим, але не повертається в новому напрямку. Його власне значення показує, наскільки він розтягнувся чи стиснувся. Це співвідношення записують так:

Av=λv

A = the transformation
v = the eigenvector (special direction)
λ = the eigenvalue (how much it stretches or shrinks)

Щоб у цьому розібратися, згадаймо, що вектор має напрямок і модуль, тобто довжину.

        ●
       ↗
      /
     /
    /
   /
  ●

Модуль — це довжина стрілки, а напрямок — куди вона вказує. Множення вектора на матрицю перетворює його: результат може розтягнутися, стиснутися, повернутися чи змінитися якось інакше. Крихітний приклад:

[3].[2 0] = [6]
[4] [0 2]   [4]

Вектор [3, 4] має модуль 5 і напрямлений приблизно під кутом 53,13 градуса. Після множення він стає [6, 8] із модулем 10 і тим самим кутом 53,13 градуса. Він став удвічі довшим, не повернувшись, отже, це власний вектор із власним значенням 2.

Це важливо, бо спектральний аналіз виявляє домінантні закономірності чи напрямки в даних. На ньому ґрунтується метод головних компонент (PCA), який стискає набори даних, зберігаючи важливу інформацію.

4. Скалярний добуток і косинусна подібність вимірюють схожість

Візьміть два вектори однакової довжини, поєднайте їх — і скалярний добуток поверне одне число:

A · B = (a₁ × b₁) + (a₂ × b₂) + ... + (aₙ × bₙ)

Застосуймо його до двох будинків:

House 1 (A) = [300000, 150, 3]
House 2 (B) = [450000, 200, 4]

A · B = (300000 × 450000) + (150 × 200) + (3 × 4)
      = 135,000,030,012

Цей результат має дві вади.

Перша — масштаб. Ціни величезні порівняно з кількістю спалень, тож ціна домінує у відповіді, а кількість спалень майже не враховується. Ліки — масштабування ознак: стисніть кожну ознаку в схожий діапазон, наприклад від 0 до 1, де 0 — найменше бачене значення, а 1 — найбільше.

// All three features are on roughly the same scale (0–1),
// so price doesn't dominate simply because its original number is much larger.

A' = [0.60,0.50,0.60]
B' = [0.90,0.67,0.80]

Друга — довжина. У «сирому» скалярному добутку довший вектор отримує більший бал просто тому, що він довший. Є два способи це виправити: спершу нормалізувати вектори, а потім узяти скалярний добуток, або обчислити скалярний добуток і завершити косинусною подібністю. Для нормалізації потрібна норма L2 — довжина вектора по прямій:

# L2 Norm (Euclidean Distance) → Straight-line distance from the origin.
# It measures the overall length of a vector.

||x||₂ = √(x₁² + x₂²+...+xₙ²)

||A'||₂ = √(0.60²+0.50²+0.60²) ≈ 0.985
A'' = [0.60/0.985, 0.50/0.985 ,0.60/0.985] ≈ [0.609,  0.508,  0.609]

||B'||₂ = √(0.90²+0.67²+0.80²) ≈ 1.378
B'' = [0.90/1.378, 0.67/1.378, 0.80/1.378] ≈[0.653,  0.486,  0.581]


A''⋅B'' = (0.609)(0.653)+(0.508)(0.486)+(0.609)(0.581)
        ≈ 0.398+0.247+0.354
        ≈0.999

І саме обчислення косинуса:

# cosine similarity
A' · B' = (0.60×0.90)+(0.50×0.67)+(0.60×0.80)
        ≈ 1.355

||A'||₂ ≈ 0.985

||B′||₂ ≈ 1.378

Cosine Similarity = (A' · B')/||A'||||B'||
                  ≈ 1.355/(0.985*1.378)
                  ≈ 0.999

Поширене тлумачення значення:

  • 1,0 — той самий напрямок, максимальна подібність
  • від 0,9 до 1,0 — надзвичайно схожі
  • від 0,7 до 0,9 — доволі схожі
  • від 0,4 до 0,7 — помірно схожі
  • більше за 0 і менше за 0,4 — слабка подібність
  • 0 — перпендикулярні, спільного напрямку немає
  • менше за 0 — дедалі протилежніші
  • -1,0 — строго протилежні, максимальна відмінність

Не сприймайте ці діапазони як закон. Що вважати схожим, залежить від ваших даних і моделі. Сама ідея важлива, бо пошук за подібністю, рекомендаційні системи й нейромережі спираються на те, наскільки сильно пов'язані два набори чисел.

5. Норми вимірюють розмір і похибку

Вектори можуть представляти будинки, користувачів, товари, зображення чи слова. Норма дає одне число для розміру вектора, що дає змогу порівнювати вектори за величиною. Три поширені норми:

Норма L1, вона ж манхеттенська відстань, додає модулі всіх елементів і дає сумарну величину.

||x||₁ = ∣x₁∣+∣x₂∣+⋯+∣xₙ∣

Норма L2, або евклідова відстань, — це відстань по прямій від початку координат, тобто загальна довжина.

||x||₂ = √(x₁² + x₂²+...+xₙ²)

Норма L-нескінченність дивиться лише на найбільший модуль.

||x||∞ = max⁡(∣x₁∣,∣x₂∣, ⋯ , ∣xₙ∣)

Для питання «наскільки великий» уявіть вектор стрілкою: його норма — довжина стрілки, і довший вектор має більшу норму. Саме на цьому тримається описаний вище крок нормалізації. Нормалізація зводить вектор до довжини 1, тож порівняння залежить від напрямку, а не від розміру.

Для питання «наскільки хибний» розглядайте різницю між прогнозом і істиною як вектор похибки. Його норма показує, наскільки ви схибили.

yactual=[10,20]
ypredicted=[8,23]

Error     = [10,20]−[8,23]=[2,−3]
||error||₁=∣2∣+∣−3∣=5
So the prediction has a total absolute error of 5.

Що більша норма похибки, то гірший прогноз. Значення 5 саме собою ні добре, ні погане; його оцінюють порівняно з іншими прогнозами чи з базовим рівнем.

На практиці норми трапляються у трьох місцях:

  • Регуляризація (L1 і L2) бореться з перенавчанням, штрафуючи у функції втрат великі ваги.
  • Функції втрат використовують їх: середня абсолютна похибка побудована на нормі L1, а середньоквадратична похибка — на квадраті норми L2.
  • Відсікання градієнтів використовує норму L2, щоб тримати вибухові градієнти під контролем під час навчання глибоких мереж.

6. Множення матриць об'єднує інформацію

Матриця не просто зберігає числа. Застосована до вхідного вектора, вона дає вихідний вектор, масштабуючи, повертаючи, віддзеркалюючи чи інакше перетворюючи його. Множення матриць змішує числа з обох, створюючи нові. Припустімо, три будинки описано трьома масштабованими ознаками:

Houses =
    [ 0.50 0.50 0.50 ]
    [ 0.75 1.00 1.00 ]
    [ 0.25 0.00 0.00 ]

Тепер припустімо, що модель вивчила різну важливість ознак: ціна — 0,5, площа — 0,3, спальні — 0,2:

Weights =
  [ 0.5 ]
  [ 0.3 ]
  [ 0.2 ]

Помножимо дані про будинки на ваги:

Houses × Weights → Scores

Результат:

House 1 → 0.500
House 2 → 0.875
House 3 → 0.125

Що вищий бал, то вища зважена цінність за заданої вами важливості. Множення матриць усюди в машинному навчанні, нейромережах, обробці даних і комп'ютерній графіці, бо воно ефективно об'єднує й перетворює дані.

7. SVD спрощує матриці

Багато матриць не квадратні, а неквадратні матриці не мають власних векторів. Сингулярний розклад (SVD) працює з будь-якою матрицею будь-якої форми, розкладаючи її на три простіші:

A=UΣVᵀ

Читати це можна так: U повертає вихід, Sigma масштабує важливі напрямки, а V транспонована повертає вхід. SVD дає змогу зменшувати великі матриці, зберігаючи їхній найважливіший вміст. Його використовують для зниження розмірності, стиснення, рекомендаційних систем і низькорангових методів на кшталт LoRA. Залиште лише найсильніші компоненти — і дані та моделі стануть меншими, швидшими й дешевшими.

8. Ранг пояснює низькорангові трюки

Ранг показує, скільки унікальної інформації несе матриця. Матриця може мати багато рядків і стовпців, але водночас повторюватися, і тоді ранг у неї низький. Погляньте на цю:

[1 2]
[2 4]

Другий рядок — просто подвоєний перший, тож незалежний лише один рядок, і ранг дорівнює 1.

Ось чому низькорангові методи такі популярні. Замість того щоб зберігати кожне число, ви подаєте суть меншою кількістю чисел, скорочуючи пам'ять і обчислення й зберігаючи більшу частину важливого.

Як це все складається

Разом ці вісім ідей дають змогу кодувати дані, змінювати їхню форму, оцінювати їхній розмір, перевіряти, наскільки схожі дві речі, і зводити дані до чогось меншого. Не намагайтеся завчати формули. Прагніть розуміти, що робить кожне поняття, чим воно корисне й де трапляється в реальних системах. Ця інтуїція робить інструменти, бібліотеки й моделі, якими ви користуєтеся, значно менш непрозорими. А яке дев'яте поняття ви додали б до списку?