Вектори - фундамет ШІ
Кафедра ШІзики
Автор
15 хвилин
Час читання
23.07.2025
Дата публікації
Лекція 1: Вектори – Мова, якою говорить Штучний Інтелект 🤖
Уявіть, що нам потрібно “пояснити” комп’ютеру, чим схожі поняття “сонячний день” і “тепла погода”, або як відрізнити чай і каву. Саме вектори слугують універсальною мовою чисел, що описує характеристики об’єктів для їх подальшої математичної обробки та розуміння машиною.
Поняття вектора та його інтерпретації
- Що таке вектор?
- Найпростіше визначення: Вектор – це впорядкований набір чисел. Ці числа називаються його компонентами або координатами.
- Записується зазвичай у квадратних дужках, наприклад:
- v = [3, -1, 5] — це тривимірний вектор з компонентами 3, -1 та 5
- u = [u₁, u₂, …, uₙ] — це n-вимірний вектор
- Геометрична інтерпретація (для 2D і 3D):
-
У випадку площини чи простору (іншими словами 2D і 3D) вектор можна уявити як напрямлений відрізок – тобто стрілку.
-
Ця стрілка має дві ключові характеристики:
- Напрямок: Куди вона вказує.
- Величина (Довжина): Наскільки вона довга.
-
Приклад: Вектор a = [4, 2] на площині можна зобразити як стрілку, що починається в точці (0,0) і закінчується в точці (4,2). Він показує рух на 4 одиниці по осі X і на 2 одиниці по осі Y.
-
Важливо: Вектор визначається саме напрямком і довжиною, а не початковою точкою. Стрілка від (1,1) до (5,3) представляє той самий вектор a = [4, 2], бо зміщення по X – це 5-1=4, а по Y – це 3-1=2.
-
- Інтерпретація в ШІ (Чому це важливо для нас):
- В ШІ вектори використовуються для представлення ознак (features) об’єктів у числовій формі. Розмірність вектора (кількість компонент) відповідає кількості ознак, які ми розглядаємо.
Уявіть собі точку на карті. Щоб визначити її положення, вам потрібні дві координати: широта і довгота. Наприклад, [49.83, 24.02] — це координати Львова. Це і є двовимірний вектор.
Тепер уявіть, що ми хочемо описати не точку на карті, а якийсь об’єкт, наприклад, кота. Які його характеристики?
- Маса (кг): 4.5
- Довжина (см): 46
- Рівень пухнастості (від 0 до 1): 0.9
- Рівень небезпеки (від 0 до 1): 0.2
Зібравши ці числа в один впорядкований список, ми отримаємо вектор, що описує цього кота:
Вектор_Кота = [4.5, 46, 0.9, 0.2]
Підсумуємо, вектор — це впорядкований список чисел, що описує якийсь об’єкт або точку в просторі. Кожне число в ньому — це компонента або координата вздовж певного “виміру” (маси, довжини, пухнастості тощо). Кількість чисел у векторі називається його розмірністю.
Операції над векторами
Ось де починається магія. Виконуючи прості математичні операції над векторами, ШІ може знаходити складні залежності в даних.
Множення на скаляр
Скаляр — це просто одне число (не вектор). Множення вектора на скаляр означає помножити кожну компоненту вектора на це число. Це дозволяє “масштабувати” вектор — зробити його “сильнішим” або “слабшим”, “більшим” або “меншим”.
Приклад 1: Регулювання яскравості зображення 🎨
Кожен піксель на кольоровому екрані можна представити як вектор з трьох компонент: [R, G, B] (червоний, зелений, синій), де значення зазвичай лежать в діапазоні від 0 до 255. Нехай у нас є темно-фіолетовий колір з вектором:
V = [60, 0, 80]
Щоб зробити колір вдвічі яскравішим, ми множимо вектор на скаляр c = 2:
Новий_V = 2 × [60, 0, 80] = [120, 0, 160]
Ми отримали значно яскравіший фіолетовий. Так само, помноживши на скаляр 0.5, ми б зробили зображення темнішим. Саме так працюють повзунки яскравості у фоторедакторах.
Приклад 2: Зміна кількості порцій у рецепті 🍰
Уявіть, що рецепт торта на 4 порції представлений вектором інгредієнтів:
Рецепт_4_порції = [500, 200, 4, 150]
(борошно (г), цукор (г), яйця (шт), молоко (мл))
Ви хочете приготувати торт для 6 людей. Вам потрібно масштабувати рецепт:
Коефіцієнт (скаляр) = 6/4 = 1.5
Рецепт_6_порцій = 1.5 × [500, 200, 4, 150] = [750, 300, 6, 225]
Тепер у вас є точні пропорції для шести порцій.
Додавання та віднімання векторів
Ці операції можливі тільки для векторів однакової розмірності й виконуються покомпонентно.
- Додавання векторів:
- Правило: Щоб додати два вектори однакової розмірності, потрібно просто додати їхні відповідні компоненти.
- Формула: Для векторів a = [a₁, a₂, …, aₙ] та b = [b₁, b₂, …, bₙ]:
a + b = [a₁ + b₁, a₂ + b₂, ..., aₙ + bₙ]
- Приклад (2D): Нехай a = [1, 3] (1 крок праворуч, 3 вгору) і b = [4, -1] (4 кроки праворуч, 1 вниз). Тоді:
a + b = [1+4, 3+(-1)] = [5, 2]
- Геометрично: Це як виконати два переміщення послідовно. Якщо прикласти початок вектора
b
до кінця вектораa
, то вектор сумиa+b
з’єднає початокa
з кінцемb
. Або можна використати “правило паралелограма”. - В ШІ: Додавання може означати комбінування ознак. Наприклад, якщо вектор представляє набір навичок, то сума векторів двох людей може (умовно) представляти їхні об’єднані навички.
- Віднімання векторів:
- Правило: Аналогічно до додавання, віднімаємо відповідні компоненти.
- Формула:
a - b = [a₁ - b₁, a₂ - b₂, ..., aₙ - bₙ]
- Приклад (2D): Для тих самих a = [1, 3] і b = [4, -1]:
a - b = [1-4, 3-(-1)] = [-3, 4]
- Геометрично: Вектор
a - b
– це вектор, який потрібно додати доb
, щоб отриматиa
. Він напрямлений від кінця вектораb
до кінця вектораa
(якщо вони починаються з однієї точки). - В ШІ: Віднімання часто використовується для знаходження різниці або напрямку змін між двома станами чи об’єктами.
Приклад “Король - Чоловік + Жінка = Королева” 👑
Це класичний приклад з обробки мови, що демонструє, як векторні операції захоплюють семантичні зв’язки.
-
Крок 1: Побудова векторів. Модель ШІ аналізує величезні тексти (скажімо Вікіпедія) і створює вектори для слів на основі їх контексту. Слова, що вживаються у схожих контекстах, отримують схожі вектори. Для наочності, уявимо спрощений 3-вимірний “простір сенсів”:
[Королівська влада, Чоловіча стать, Жіноча стать]
. -
Крок 2: Приблизні вектори.
Вектор("Король") ≈ [0.95, 0.85, 0.0] (висока королівська влада, сильна асоціація з чоловічою статтю) Вектор("Чоловік") ≈ [0.10, 0.90, 0.0] (низька королівська влада, дуже сильна асоціація з чоловічою статтю) Вектор("Жінка") ≈ [0.10, 0.00, 0.9] (низька королівська влада, сильна асоціація з жіночою статтю)
-
Крок 3: Операція.
Результат = Вектор("Король") - Вектор("Чоловік") + Вектор("Жінка") = [0.95, 0.85, 0.0] - [0.10, 0.90, 0.0] + [0.10, 0.00, 0.9] = [0.95, -0.05, 0.9]
-
Крок 4: Пошук найближчого слова. ШІ шукає у своїй “бібліотеці” слово, вектор якого найближчий до отриманого результату: [0.95, -0.05, 0.9]. Цей вектор має високу “королівську владу”, майже нульову “чоловічу стать” і високу “жіночу стать”. Найкращим кандидатом виявляється “Королева”.
Схожість Векторів: Скалярний Добуток та Косинусна Схожість
Це, мабуть, найважливіша концепція для ШІ. Як визначити, наскільки два об’єкти (два вектори) схожі? Наприклад, наскільки текст вашого пошукового запиту схожий на зміст веб-сторінки?
Тут нам на допомогу приходить скалярний добуток, але не сам по собі, а як частина косинусної схожості (cosine similarity).
🎯 Ідея: Схожість векторів — це не про їх довжину, а про їх напрямок. Якщо два вектори вказують в одному напрямку, вони дуже схожі. Якщо вони перпендикулярні — вони зовсім не схожі.
Косинусна схожість вимірює косинус кута між двома векторами і завжди дає результат від -1 до 1:
- 1: Вектори вказують в одному напрямку (максимальна схожість).
- 0: Вектори перпендикулярні (немає схожості).
- -1: Вектори вказують у протилежних напрямках (максимальна протилежність).
Формула виглядає так:
Схожість(A,B) = cos(θ) = (A·B) / (||A|| × ||B||)
Де:
- A·B — це скалярний добуток векторів A і B (сума попарних добутків їх компонент).
- ||A|| та ||B|| — це довжини (норми) векторів A і B.
Довжина вектора [x, y, z] обчислюється як:
||V|| = √(x² + y² + z²)
Реальний приклад: Система рекомендації фільмів 🎬
Уявіть, що Netflix хоче порекомендувати вам фільм. Він представляє ваші вподобання та вподобання інших користувачів у вигляді векторів. Для простоти, візьмемо лише 3 фільми: “Дюна”, “Барбі”, “Оппенгеймер”. Ваші оцінки (від 1 до 5) — це ваш вектор.
Вектор_Ваш = [5, 1, 4] # Ви любите "Дюну" і "Оппенгеймера", але не "Барбі"
Вектор_Анна = [4, 2, 5] # Подобається "Дюна", любить "Опенгеймер", але не дуже в захваті від "Барбі"
Вектор_Петро = [2, 5, 1] # Любить "Барбі", не любить "Дюну" та "Оппенгеймера"
Знайдемо, хто вам “ближчий” — Анна чи Петро?
1. Схожість між вами та Анною:
Скалярний добуток:
A·B = (5 × 4) + (1 × 2) + (4 × 5) = 20 + 2 + 20 = 42
Довжини векторів:
||Ваш|| = √(5² + 1² + 4²) = √(25 + 1 + 16) = √42 ≈ 6.48
||Анна|| = √(4² + 2² + 5²) = √(16 + 4 + 25) = √45 ≈ 6.71
Косинусна схожість:
cos(θ) = 42 / (6.48 × 6.71) ≈ 42 / 43.48 ≈ 0.97
✨ Це число дуже близьке до 1. Ваші смаки дуже схожі!
2. Схожість між вами та Петром:
Скалярний добуток:
A·B = (5 × 2) + (1 × 5) + (4 × 1) = 10 + 5 + 4 = 19
Довжини векторів:
||Ваш|| ≈ 6.48 (вже обчислено)
||Петро|| = √(2² + 5² + 1²) = √(4 + 25 + 1) = √30 ≈ 5.48
Косинусна схожість:
cos(θ) = 19 / (6.48 × 5.48) ≈ 19 / 35.51 ≈ 0.53
⚠ Це число значно менше. Ваші смаки не дуже схожі.
Висновок: Оскільки ваша схожість з Анною (0.97) набагато вища, ніж з Петром (0.53), система, ймовірно, порекомендує вам фільм, який сподобався Анні, але який ви ще не бачили.
Нормалізація Векторів: Приведення до спільного знаменника
Ми вже бачили, що для обчислення косинусної схожості ми ділимо на довжину векторів. Цей процес “видалення” довжини має свою назву — нормалізація.
Що таке нормалізація?
Нормалізація — це процес перетворення вектора таким чином, щоб його довжина (норма) дорівнювала 1, але його напрямок залишався незмінним. Результатом є так званий одиничний вектор.
Формула:
Нормалізований V = V / ||V||
Тобто, ми просто ділимо кожну компоненту вектора на його довжину.
Для чого це використовується?
Нормалізація дозволяє порівнювати вектори, ігноруючи їхню величину (масштаб). Це критично важливо, коли величина може вводити в оману.
Приклад: Аналіз текстів різної довжини 📄
Уявіть, що ми хочемо визначити, наскільки два документи схожі за тематикою, рахуючи в них ключові слова “ШІ” та “дані”.
-
Документ А (коротка новина): містить “ШІ” 10 разів, “дані” 5 разів.
Вектор А = [10, 5]
-
Документ Б (довга наукова стаття): містить “ШІ” 100 разів, “дані” 50 razів.
Вектор Б = [100, 50]
Без нормалізації Вектор_Б має набагато більшу довжину, і пряме порівняння буде некоректним. Але інтуїтивно ми розуміємо, що обидва документи мають однакове співвідношення ключових слів (2:1) і, ймовірно, розповідають про одне й те саме. Давайте перевіримо це за допомогою нормалізації.
1. Нормалізуємо Вектор_А:
Довжина:
||A|| = √(10² + 5²) = √(100 + 25) = √125 ≈ 11.18
Нормалізований вектор:
Норм А = [10/11.18, 5/11.18] ≈ [0.894, 0.447]
2. Нормалізуємо Вектор_Б:
Довжина:
||Б|| = √(100² + 50²) = √(10000 + 2500) = √12500 ≈ 111.8
Нормалізований вектор:
Норм Б = [100/111.8, 50/111.8] ≈ [0.894, 0.447]
📊 Висновок: Після нормалізації ми отримали ідентичні вектори!
Норм А = Норм Б = [0.894, 0.447]
Це доводить, що обидва документи мають однаковий “напрямок” (тематику), незважаючи на величезну різницю в довжині. Косинусна схожість = 1.0 ✨
Або ж розглянемо більш комплексний варіант.
Уявімо, що ми хочемо порівняти три товари (А, Б, В) за двома ознаками:
- Ціна (в гривнях)
- Рейтинг (від 1 до 10)
Наші товари:
- Товар А: Ціна = 10 000 грн, Рейтинг = 8
- Товар Б: Ціна = 10 500 грн, Рейтинг = 2
- Товар В: Ціна = 9 000 грн, Рейтинг = 7
Представимо їх у вигляді векторів ознак:
- Вектор A: [10000, 8]
- Вектор Б: [10500, 2]
- Вектор В: [9000, 7]
Проблема: Розрахунок відстаней без нормалізації
Щоб оцінити, наскільки товари схожі чи відмінні один від одного, ми можемо обчислити Евклідову відстань між їхніми векторами. Формула Евклідової відстані між двома точками (x_1, y_1) та (x_2, y_2) у двовимірному просторі: d = √((x_2 - x_1)² + (y_2 - y_1)²).
Обчислимо відстані між усіма парами товарів:
-
Відстань між А і Б (d(A, B)):
d(A, B) = √((10500 - 10000)² + (2 - 8)²) d(A, B) = √(500² + (-6)²) d(A, B) = √(250000 + 36) d(A, B) = √250036 ≈ 500.04
(Аналіз: Внесок ціни (500² = 250000) значно переважає внесок рейтингу ((-6)² = 36))
-
Відстань між А і В (d(A, C)):
d(A, C) = √((9000 - 10000)² + (7 - 8)²) d(A, C) = √((-1000)² + (-1)²) d(A, C) = √(1000000 + 1) d(A, C) = √1000001 ≈ 1000.00
(Аналіз: Внесок ціни ((-1000)² = 1000000) майже повністю визначає відстань порівняно з внеском рейтингу ((-1)² = 1))
-
Відстань між Б і В (d(B, C)):
d(B, C) = √((9000 - 10500)² + (7 - 2)²) d(B, C) = √((-1500)² + 5²) d(B, C) = √(2250000 + 25) d(B, C) = √2250025 ≈ 1500.01
(Аналіз: Внесок ціни ((-1500)² = 2250000) абсолютно домінує над внеском рейтингу (5² = 25))
Спостереження без нормалізації: Відстані майже повністю визначаються різницею в цінах:
- d(A, B) ≈ 500.04
- d(A, C) ≈ 1000.00
- d(B, C) ≈ 1500.01
Виходячи з цих розрахунків, найближчими є товари А і Б, а найвіддаленішими – Б і В. Вплив рейтингу, навіть значної різниці (як між А і Б), практично нівелюється через значно більший масштаб цін.
Рішення: Нормалізація за допомогою Min-Max Scaling
Застосуємо один із найпоширеніших методів нормалізації – Min-Max Scaling. Він масштабує значення кожної ознаки таким чином, щоб вони потрапляли у визначений діапазон, зазвичай [0, 1].
Формула:
X_norm = (X - X_min) / (X_max - X_min)
де X – поточне значення ознаки, X_min – мінімальне значення цієї ознаки у всьому наборі даних, X_max – максимальне значення.
Для нашого прикладу припустимо, що ми проаналізували більший набір даних і визначили такі мінімуми та максимуми:
- Для ціни: X_min = 1000 грн, X_max = 15000 грн. Діапазон (X_max - X_min) = 14000 грн.
- Для рейтингу: X_min = 1, X_max = 10. Діапазон (X_max - X_min) = 9.
Тепер нормалізуємо вектори A, Б і В:
-
Нормалізація вектора А ([10000, 8]):
- Норм. ціна А:
(10000 - 1000) / 14000 = 9000 / 14000 ≈ 0.643
- Норм. рейтинг А:
(8 - 1) / 9 = 7 / 9 ≈ 0.778
- Нормалізований Вектор А’: [0.643, 0.778]
- Норм. ціна А:
-
Нормалізація вектора Б ([10500, 2]):
- Норм. ціна Б:
(10500 - 1000) / 14000 = 9500 / 14000 ≈ 0.679
- Норм. рейтинг Б:
(2 - 1) / 9 = 1 / 9 ≈ 0.111
- Нормалізований Вектор Б’: [0.679, 0.111]
- Норм. ціна Б:
-
Нормалізація вектора В ([9000, 7]):
- Норм. ціна В:
(9000 - 1000) / 14000 = 8000 / 14000 ≈ 0.571
- Норм. рейтинг В:
(7 - 1) / 9 = 6 / 9 ≈ 0.667
- Нормалізований Вектор В’: [0.571, 0.667]
- Норм. ціна В:
Розрахунок відстаней з нормалізованими даними
Тепер, коли всі ознаки знаходяться в одному масштабі [0, 1], обчислимо Евклідову відстань між нормалізованими векторами А’, Б’ і В’.
-
Відстань між А’ і Б’ (d(A’, B’)):
d(A', B') = √((0.679 - 0.643)² + (0.111 - 0.778)²) d(A', B') = √(0.036² + (-0.667)²) d(A', B') ≈ √(0.0013 + 0.4449) d(A', B') = √0.4462 ≈ 0.668
(Аналіз: Тепер внесок рейтингу ((-0.667)² ≈ 0.4449) значно більший за внесок ціни (0.036² ≈ 0.0013))
-
Відстань між А’ і В’ (d(A’, C’)):
d(A', C') = √((0.571 - 0.643)² + (0.667 - 0.778)²) d(A', C') = √((-0.072)² + (-0.111)²) d(A', C') ≈ √(0.0052 + 0.0123) d(A', C') = √0.0175 ≈ 0.132
(Аналіз: Внески ціни ((-0.072)² ≈ 0.0052) та рейтингу ((-0.111)² ≈ 0.0123) тепер порівнянні, рейтинг має трохи більший вплив.)
-
Відстань між Б’ і В’ (d(B’, C’)):
d(B', C') = √((0.571 - 0.679)² + (0.667 - 0.111)²) d(B', C') = √((-0.108)² + (0.556)²) d(B', C') ≈ √(0.0117 + 0.3091) d(B', C') = √0.3208 ≈ 0.566
(Аналіз: Внесок рейтингу (0.556² ≈ 0.3091) значно переважає внесок ціни ((-0.108)² ≈ 0.0117))
Порівняння результатів та висновок
Давайте порівняємо відстані до і після нормалізації:
Пара товарів | Відстань БЕЗ нормалізації | Відстань ПІСЛЯ нормалізації (Min-Max) | Найближчі? (Після) |
---|---|---|---|
А і Б | ≈ 500.04 | ≈ 0.668 | Ні |
А і В | ≈ 1000.00 | ≈ 0.132 | Так |
Б і В | ≈ 1500.01 | ≈ 0.566 | Ні |
Як бачимо, результати кардинально змінилися:
- Без нормалізації: Відстані майже повністю визначалися ціною. Найближчими були А і Б (мала різниця в ціні), найдальшими Б і В (велика різниця в ціні).
- Після нормалізації: Відстані враховують відносні зміни в обох ознаках. Найближчими стали А і В (мала різниця в нормалізованих цінах і рейтингах). Найвіддаленішими стали А і Б (мала різниця в нормалізованій ціні, але дуже велика різниця в нормалізованому рейтингу).
Висновок: Нормалізація даних є критично важливим кроком попередньої обробки для багатьох алгоритмів машинного навчання. Вона дозволяє уникнути ситуації, коли ознаки з великими значеннями домінують над ознаками з малими значеннями виключно через їх масштаб. Завдяки нормалізації, кожна ознака робить справедливий внесок у результат, що призводить до більш точних і змістовних висновків та кращої роботи моделей.
Саме так, за допомогою простої геометрії та арифметики, працюють пошукові системи, системи рекомендацій та багато інших інструментів ШІ. Вони перетворюють дані у вектори й шукають схожість між ними.