Перейти до вмісту
coden

Дані, модель, тренування, інференс: основні поняття на одному прикладі

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

9 хвилин Matěj Žalmánek 2026-10-16

Серія Основи ШІ Частина 3 з 52
  1. Мапа штучного інтелекту: що є що і як усе це пов’язано
  2. Коротка історія штучного інтелекту: від Тюрінга до мовних моделей
  3. Дані, модель, тренування, інференс: основні поняття на одному прикладі
  4. Як читати математичний запис: символи, індекси, суми та квантори
  5. Множини й відношення: конструктор, з якого складаються означення в ШІ
  6. Функції й відображення: чому кожна модель у ШІ — це функція
  7. Логіка й доведення: правила, за якими міркують у ШІ
  8. Графи й дерева: структура, на якій тримаються пошук і нейронні мережі
  9. Лінійна алгебра для машинного навчання: вектори, матриці й чому ШІ передусім множить
  10. Похідні, градієнт і правило ланцюжка: як модель дізнається, у якому напрямку вчитися
  11. Градієнтний спуск: як навчається модель
  12. Що таке ймовірність: від кидка кубика до аксіом Колмогорова
  13. Умовна ймовірність і теорема Баєса: як змінити оцінку, коли дізнаєтеся щось нове
  14. Випадкова величина і функція розподілу: одна функція, яка каже про розподіл усе
  15. Функція щільності та функція маси ймовірності: чому неперервна величина має в точці ймовірність нуль
  16. Математичне сподівання, дисперсія і коваріація: де лежить розподіл, наскільки він широкий і що з чим пов’язано
  17. Огляд розподілів ймовірностей: Бернуллі, біноміальний, Пуассона, рівномірний, нормальний і експоненційний
  18. Закон великих чисел і центральна гранична теорема: чому середні поводяться так передбачувано
  19. Статистика й оцінювання параметрів: максимальна правдоподібність, MAP і довірчі інтервали
  20. Теорія інформації: ентропія, перехресна ентропія і KL-дивергенція — звідки беруться функції втрат
  21. Пошук у просторі станів: BFS, DFS, UCS і A* з анімаціями
  22. Ігри та суперник: мінімакс, альфа-бета відсікання і Monte Carlo tree search
  23. Задоволення обмежень: бектрекінг, поширення обмежень і AC-3 на судоку та мапі чеських країв
  24. Логіка й системи, засновані на знаннях: пряме і зворотне виведення, резолюція та експертні системи
  25. Планування: STRIPS, світ кубиків, евристики з релаксації та планування в AI-агентах
  26. Локальний пошук та імітація відпалу: комівояжер через обласні центри Чехії
  27. Генетичні алгоритми: популяція, схрещування, мутація і добір на рюкзаку для походу
  28. Еволюційні стратегії і генетичне програмування: від правила однієї п’ятої до закону Кеплера
  29. Оптимізація мурашиною колонією: як феромоновий слід знаходить короткий шлях
  30. Оптимізація роєм частинок: інерція, власний досвід і досвід рою
  31. Нейроеволюція: еволюція ваг і форми нейронних мереж та алгоритм NEAT
  32. Нечіткі множини й функції належності: як записати «трохи тепло»
  33. Нечітка логіка та ймовірність: чому «трохи тепло» не означає «імовірно тепло»
  34. Нечітка логіка: t-норми, імплікації та правила ЯКЩО–ТО
  35. Нечітке керування: Мамдані та Суґено від вентилятора до маятника на візку
  36. Нечітка кластеризація: алгоритм fuzzy c-means і точки між кластерами
  37. Нейро-нечіткі системи (ANFIS): нечіткі правила, які навчаються з даних
  38. Марковські ланцюги: матриця переходів, стаціонарний розподіл і PageRank
  39. Приховані марковські моделі: алгоритм Вітербі й нечесне казино
  40. Байєсівські мережі: чому трава мокра і що з цього випливає для дощувача
  41. Фільтр Калмана: як за неточними вимірюваннями оцінити, де авто і як швидко воно їде
  42. Види машинного навчання: з учителем, без учителя, з частковим залученням учителя та інші
  43. Промпти, контекст і RAG: як дати моделі правильну інформацію
  44. Варіаційні автокодувальники (VAE): нові зображення з неперервного латентного простору
  45. Генеративні змагальні мережі (GAN): фальшувальник проти детектива
  46. Дифузійні моделі: як із чистого шуму постає зображення
  47. Марковські процеси ухвалення рішень: стани, дії, винагороди й рівняння Беллмана
  48. Q-навчання і DQN: як навчитися цінності дій — від таблиці до нейронної мережі
  49. Policy gradient і PPO: навчання безпосередньо політики
  50. Як працює ШІ-агент: мовна модель у циклі з інструментами
  51. Програмування з AI-агентами: завдання, тести й перевірка
  52. Оцінювання і безпека систем ШІ: як вимірювати і як стежити

Повна програма серії Готово: 52 з 83 тем

Що ви винесете
  • Що означають дані, модель, тренування та інференс і як вони пов’язані між собою.
  • Різницю між параметрами та гіперпараметрами і чому важлива швидкість навчання.
  • Чому тренування дороге один раз, а інференс дешевий, але частий.

Що варто знати заздалегідь: Мапа штучного інтелекту: що є що і як усе це пов’язано

У всій серії повторюються чотири слова: дані, модель, тренування та інференс. Чи йдеться про розпізнавання цифр, спам-фільтр чи велику мовну модель, шлях завжди той самий: з прикладів навчається функція, яка потім відповідає на нові запитання. У цій частині ми пройдемо цей шлях повністю на найменшому можливому прикладі — оцінці ціни квартири за площею — і на кожному кроці скажемо, як він виглядає у великих моделях. Наприкінці є словничок понять із посиланнями на частини, де ви дізнаєтеся про них більше.

Продовжує частини Мапа штучного інтелекту та Коротка історія ШІ.

ТРЕНУВАННЯ — один раз, довго ІНФЕРЕНС — щоразу, швидко навчальні данінавчанняпараметриновий вхідмодельпередбачення
Тренування та інференс

1. Дані: приклади з правильними відповідями

Означення — дані, ознаки та мітки

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

Простими словами

Підручник із задачами та відповідями в кінці. На тренувальних задачах ви вчитеся, пробна контрольна покаже, чи ви це вмієте, а справжня контрольна (якої ви раніше не бачили) покаже, як воно насправді.

Наші дані вигадані: 60 квартир, для кожної площа (ознака) та ціна в мільйонах чеських крон (мітка). Ціна зростає з площею, але не точно — дві однаково великі квартири відрізняються розташуванням, станом, поверхом. Ділимо їх на 40 навчальних, 10 валідаційних і 10 тестових.

Означення — набір даних формально

Набір даних — це скінченна послідовність пар D = ((x(1), y(1)), …, (x(n), y(n))), де x(i) ∈ ℝd — вектор d ознак i-го прикладу, а y(i) — його мітка: дійсне число в регресії, елемент скінченної множини класів у класифікації. Припускають, що приклади взаємно незалежні й походять із того самого (невідомого) розподілу, що й майбутні запити.

Розбиття даних — це три неперетинні частини Dtr, Dval, Dtest, які разом дають D; кожен приклад належить рівно до однієї з них. У нас d = 1 (площа), n = 60, а частини мають 40, 10 і 10 прикладів.

Простими словами

Таблиця, де кожен рядок — одна квартира: стовпці з ознаками та останній стовпець із ціною. Неперетинні означає, що жодна квартира не потрапляє у дві частини водночас — інакше «справжня контрольна» містила б приклади, які модель уже бачила. А припущення про той самий розподіл каже, що тестові квартири походять із того самого ринку, що й ті, про які ми потім питатимемо; без нього помилка на тесті нічого не говорила б про майбутнє.

У великих мовних моделях даними є трильйони токенів тексту з інтернету, книжок і коду; ознакою є попередній текст, а міткою — наступний токен (частина про попереднє навчання). Принцип той самий.

2. Модель: функція з параметрами

Означення — модель і параметри

Модель — це функція, яка зі входу обчислює вихід і містить налаштовувані числа — параметри (у нейронних мережах — ваги). Форму функції обираємо ми; значення параметрів знаходить навчання. Наша модель — пряма: ціна = w · площа + b, із двома параметрами w (на скільки зростає ціна з кожним метром) і b (де пряма починається).

Простими словами

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

ŷ = w · x + b

ŷ
передбачена ціна; дашок відрізняє її від справжньої ціни y, з якою ми її потім порівнюємо
w
нахил — скільки мільйонів додає кожен додатковий метр; без нього ціна взагалі не залежала б від площі
x
площа в м², єдина ознака; єдине, що модель знає про квартиру
b
зсув — «ціна квартири нульової площі»; без нього пряма мусила б проходити через початок координат, а ціни квартир до нуля не прямують
Загалом пишуть ŷ = fθ(x): функція f з параметрами θ = (w, b). У мовній моделі f — це трансформер, а θ — мільярди ваг.

3. Тренування: налаштування параметрів

Означення — функція втрат і тренування

Функція втрат — це число, яке показує, наскільки модель помиляється на навчальних даних, — у нас середнє квадратів помилок (MSE). Тренування шукає параметри з якомога меншою втратою, найчастіше градієнтним спуском: обчислює, у якому напрямку втрата зростає, і зсуває параметри малим кроком у протилежний бік. Один прохід усіма навчальними даними — це епоха.

Простими словами

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

Наша функція втрат, середньоквадратична помилка (MSE), записана повністю:

J(w, b) = (1/n) ∑i=1n ( w xi + b − yi )2

J(w, b)
втрата як функція параметрів — дані фіксовані, змінювати можна лише w і b, тому в дужках тільки вони
(1/n) ∑
середнє за всіма n = 40 навчальними квартирами — щоб втрату можна було порівнювати для даних різного розміру і жодна квартира не мала переваги
w xi + b − yi
помилка на i-й квартирі: передбачення ŷi мінус справжня ціна; додатна, коли модель завищує, від’ємна, коли занижує
2
квадрат — щоб додатні й від’ємні помилки не взаємознищувалися, великі помилки важили більше за малі, а втрату можна було гладко диференціювати
Втрата нульова лише тоді, коли пряма проходить точно через усі точки; інакше вона додатна.
Теорема — градієнт MSE для прямої

Для J, як вище, і ŷi = w xi + b маємо

∂J/∂w = (2/n) ∑i (ŷi − yi) · xi,   ∂J/∂b = (2/n) ∑i (ŷi − yi).

Доведення. Похідна суми дорівнює сумі похідних. Для одного доданка за правилом диференціювання складеної функції: ∂/∂w (w xi + b − yi)2 = 2 (w xi + b − yi) · xi, бо вираз у дужках має за w похідну xi; за b його похідна дорівнює 1. ∎

Простими словами

Кожна квартира «тягне» параметри пропорційно до того, наскільки модель на ній помилилася. Для w ця сила ще множиться на площу: помилка на великій квартирі каже про нахил більше, ніж помилка на квартирі-студії.

Один крок градієнтного спуску потім зсуває обидва параметри проти градієнта:

w ← w − η · ∂J/∂w

w
параметр до кроку і після нього — стрілка ← означає «перезаписати новим значенням», а не рівність
−
ідемо проти градієнта, тобто вниз: втрату ми хочемо зменшити, а не збільшити
η
швидкість навчання — наскільки довгий крок ми робимо; градієнт справджується лише поблизу точки, тож крок мусить бути малим (див. наступний розділ)
∂J/∂w
градієнт — у якому напрямку і як круто зростає втрата, коли ми збільшуємо w
Для b так само, тільки з ∂J/∂b. Обидва параметри змінюються одночасно, за градієнтом, обчисленим у старій точці.

Усе тренування як алгоритм (саме так його обчислює малюнок нижче):

w, b = 0, 0                                  # початкові параметри
for epocha in range(200):                    # гіперпараметр: кількість епох
    gw = gb = 0
    for plocha, cena in trenovaci_data:      # одна епоха = усі дані
        x = plocha / 100                     # площа в сотнях м²
        chyba = (w * x + b) - cena           # ŷ − y
        gw += 2 * chyba * x / n              # ∂J/∂w
        gb += 2 * chyba / n                  # ∂J/∂b
    w, b = w - eta * gw, b - eta * gb        # крок униз, eta = швидкість навчання

Площу підставляємо в сотнях м² (52 м² → 0,52). У метрах градієнт за w виходив би в десятки разів більшим, ніж за b, і одна швидкість навчання не підійшла б обом параметрам водночас. Таке масштабування ознак на практиці звичне. Тому w нижче виходить у мільйонах на 100 м².

Приклад — перший крок спуску

У точці w = b = 0 модель усюди передбачає 0, тож помилка на кожній квартирі дорівнює −yi. Отже, градієнт

∂J/∂w = −2 · (1/n) ∑ xi yi = −2 · 5,678 = −11,36,   ∂J/∂b = −2 · ȳ = −2 · 6,88 = −13,76,

де 5,678 — середнє добутків площі (у сотнях м²) і ціни, а ȳ = 6,88 — середня ціна в мільйонах. Зі швидкістю навчання η = 0,5:

w ← 0 − 0,5 · (−11,36) = 5,68,   b ← 0 − 0,5 · (−13,76) = 6,88.

(w тут у мільйонах на 100 м².) Втрата падає з 54,2 до 17,7. Обидва градієнти були від’ємні (модель усюди занижувала), тому обидва параметри зросли.

Починаємо з w = 0 і b = 0 (модель каже «усе коштує нуль», втрата 54,2) і робимо 200 епох градієнтного спуску. Результат: w = 0,0910 мільйона за м², тобто приблизно 91 000 CZK за кожен додатковий метр, і b = 0,35 мільйона. Точний розв’язок методом найменших квадратів (для прямої його можна обчислити за формулою, див. частину про лінійну регресію) відрізняється лише в четвертому знаку після коми. Спуск дійшов туди, куди мав.

04812 нова квартира 65 м² → 6,27 млн 255075100125 площа (м²) ціна (млн CZK)
Квартири за площею та ціною, навчена пряма і передбачення для нової квартири навчальні валідаційні тестові модель

4. Гіперпараметри: що налаштовуємо ми

Означення — гіперпараметри

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

Простими словами

Параметри — це те, чого навчиться учень. Гіперпараметри — це те, як ми його вчимо: як швидко, як довго, скільки прикладів за раз.

0,11101001000 050100150200 епоха (проходи навчальними даними) втрата MSE ((млн CZK)², лог. шкала)
Втрата на навчальних даних під час навчання для трьох швидкостей навчання швидкість навчання 0,05швидкість навчання 0,5швидкість навчання 1,6

Зі швидкістю 0,05 модель навчається повільно — після 200 епох її втрата 0,48 і вона ще не дійшла до мети. З 0,5 вона за кілька десятків епох доходить до 0,165. З 1,6 кроки такі великі, що модель перестрибує долину дедалі далі, а втрата вибухає — після п’яти епох вона дорівнює 46 310 590. Правильна швидкість навчання — одне з найчастіших налаштувань у всьому машинному навчанні.

Для прямої та MSE можна точно обчислити, де пролягає межа між «повільно» і «вибухає». Втрата є квадратичною функцією параметрів, тож її кривина всюди однакова, і її описують два числа — кривина в крутому та в пологому напрямку долини (власні значення λ матриці Гессе, таблиці других похідних).

et+1 = (1 − η λ) · et

et+1
відстань параметрів від найкращих значень після наступної епохи (в одному з двох напрямків) — її ми хочемо звести до нуля
1
без кроку відстань лишилася б такою, як була; крок забирає з неї частку η λ. Якщо |1 − η λ| < 1, відстань зменшується, якщо більше за 1, зростає як геометрична прогресія
η
швидкість навчання — єдине, що тут обираємо ми
λ
кривина втрати в даному напрямку — задана даними, а не нами; у крутому напрямку градієнт великий, а отже, і крок довгий
et
відстань перед епохою; формула повторюється, тож після t епох et = (1 − η λ)t e0
Теорема — коли градієнтний спуск збігається

Якщо втрата квадратична з матрицею Гессе H, власні значення якої 0 < λmin ≤ λmax, то градієнтний спуск зі сталою швидкістю навчання η збігається до мінімуму з будь-якої початкової точки тоді й лише тоді, коли 0 < η < 2 / λmax.

Доведення. Відхилення від мінімуму в координатах власних векторів H змінюється покомпонентно як et+1 = (1 − η λ) et. Усі компоненти прямують до нуля тоді й лише тоді, коли |1 − η λ| < 1 для обох λ, тобто 0 < η λ < 2; найсуворіша умова — для λmax. ∎

Приклад — межа для наших квартир

Для MSE прямої H = (2/n) · [[∑xi2, ∑xi], [∑xi, n]] = [[1,193, 1,435], [1,435, 2]] (площа в сотнях м²). Власні значення виходять λmax = 3,087 і λmin = 0,106, тож спуск збігається для η < 2 / 3,087 = 0,648.

η = 0,05: множник у пологому напрямку 1 − 0,05 · 0,106 = 0,9947; після 200 епох залишається 0,9947200 ≈ 35 % початкового відхилення — тому модель і не дійшла до мети.

η = 0,5: множники 0,544 і 0,947; після 200 епох залишається 0,947200 ≈ 2 · 10−5 відхилення — практично нічого.

η = 1,6 > 0,648: у крутому напрямку |1 − 1,6 · 3,087| = 3,94. Відхилення щоепохи приблизно збільшується вчетверо, а втрата, яка зростає з його квадратом, — у 15,5 раза: на графіку з 801 до 12 395.

Простими словами

Долина — це вузький жолоб: упоперек крутий, уздовж майже рівний. Швидкість навчання мусить бути досить малою для крутих стінок, інакше ви перестрибнете на протилежний схил вище, ніж були. Але тоді вздовж жолоба ви просуваєтеся ледь-ледь. Цей конфлікт між крутим і пологим напрямком — причина, чому у великих моделях використовують розумніші варіанти спуску.

5. Наскільки добра модель

Помилку на довільній частині даних D′ з m прикладами вимірюємо коренем із середньоквадратичної помилки (RMSE):

RMSE = √(1/m) ∑(x, y) ∈ D′ (ŷ(x) − y)2

√
корінь повертає результат із (млн CZK)² назад у мільйони крон — число можна читати як «типову помилку»
(1/m) ∑D′
середнє за вибраною частиною — навчальною, валідаційною чи тестовою; кожна відповідає на інше запитання
(ŷ(x) − y)2
квадрат помилки на одній квартирі, так само як у втраті — міряємо тим, що мінімізували
На тестовій частині: RMSE = √0,256 = 0,51 мільйона.

Середня помилка (корінь із MSE) на навчальних даних становить 0,41 мільйона, на валідаційних 0,60, а на тестових 0,51 мільйона, тобто приблизно пів мільйона крон. Краще з однією ознакою бути не може: шум, який ми додали до цін (розташування, стан), має саме такий розмір, і з площі його не вгадати. Хто хоче точнішої оцінки, потребує більше ознак — а не розумнішої прямої. Якби ж ми, навпаки, зробили модель надто гнучкою, вона вивчила б шум навчальних даних напам’ять (перенавчання) і на нових квартирах помилялася б більше.

6. Інференс: модель у роботі

Означення — інференс

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

Простими словами

Тренування — це навчання, інференс — це іспит, або робота. Вчаться один раз і довго, а працюють потім щодня і швидко. Коли ви листуєтеся з чат-ботом, ви його не навчаєте (це відбувається в інший час і по-іншому), а лише ним користуєтеся.

Наша модель для квартири площею 65 м² оцінює ціну в 6,27 мільйона. Це коштує 3 арифметичні операції. Тренування коштувало приблизно 72 000 операцій. У великих моделях співвідношення схоже, лише в іншому масштабі: тренування триває місяці на тисячах відеокарт, одна відповідь — секунди. Але відповідей мільярди, тож у найпопулярніших моделей інференс разом може коштувати більше обчислень, ніж їхнє тренування, — і тому стільки зусиль іде на те, щоб моделі зменшити й пришвидшити.

Приклад — інференс і кількість операцій

Підставимо навчені параметри w = 9,0957 мільйона на 100 м² (тобто 0,0910 на м²) і b = 0,3538; площу в сотнях м², x = 0,65:

ŷ = 9,0957 · 0,65 + 0,3538 = 5,9122 + 0,3538 = 6,2660 ≈ 6,27 мільйона.

Це 3 операції: перетворення одиниць (ділення на сто), множення і додавання. Одна епоха тренування для кожної з 40 квартир робить передбачення, помилку та обидва внески до градієнта — рахуємо приблизно 9 операцій на квартиру (точна кількість залежить від того, що вважати однією операцією), тобто 40 · 9 · 200 = 72 000 операцій за все тренування. Співвідношення тренування : одне передбачення становить 24 000 : 1.

7. Словничок

Поняття з цієї частини і де в серії про них можна дізнатися більше:

дані
приклади, на яких модель навчається, — у нас 60 квартир із площею та ціною — докладно
ознака
вхідне значення, що описує приклад (площа); зображення має тисячі ознак — пікселі — докладно
мітка
правильна відповідь, яку ми хочемо передбачати (ціна) — докладно
навчальні, валідаційні та тестові дані
на перших модель навчається, на других налаштовують параметри навчання, треті використовують один раз наприкінці — докладно
модель
функція з налаштовуваними параметрами, яка зі входу обчислює вихід — докладно
параметр (вага)
число всередині моделі, яке підбирається навчанням; мовні моделі мають їх мільярди — докладно
функція втрат
число, яке вимірює, наскільки модель помиляється; навчання його зменшує — докладно
тренування (навчання)
пошук параметрів, за яких втрата на навчальних даних мала — докладно
градієнт
напрямок, у якому втрата зростає найшвидше; тренування йде у протилежний бік — докладно
епоха
один прохід усіма навчальними даними — докладно
пакет (batch)
скільки прикладів використовується на один крок навчання — докладно
гіперпараметр
налаштування, яке обираємо ми самі і якого модель не навчається (швидкість навчання, кількість епох, розмір моделі) — докладно
перенавчання
модель вивчає навчальні дані напам’ять і помиляється на нових даних — докладно
інференс (виведення)
використання навченої моделі для нового входу — те, що відбувається, коли ви питаєте чат-бота — докладно
токен
шматок тексту, з яким працює мовна модель — докладно
ембединг
вектор чисел, який представляє слово, зображення чи інший об’єкт — докладно
контекст і промпт
увесь текст, який модель отримує під час інференсу — докладно

8. Підсумок

  • Дані = приклади з ознаками та мітками, розділені на навчальну, валідаційну і тестову частини.
  • Модель = функція з параметрами; тренування шукає параметри з найменшою втратою, зазвичай градієнтним спуском.
  • Наша модель навчилася 91 000 CZK за м² — так само, як точний розрахунок.
  • Гіперпараметри обираємо ми: з малою швидкістю навчання тренування повільне, з великою воно розвалюється.
  • Помилка на тесті (0,51 млн) відповідає шуму в даних; кращій моделі потрібно більше ознак.
  • Інференс = використання навченої моделі; на один запит він дешевий, але запитів величезна кількість.

Хочете спробувати самі? Попросіть AI-агента завантажити справжні дані про ціни квартир у вашому місті, розділити їх на три частини і натренувати ту саму пряму — а потім додати другу ознаку (скажімо, відстань від центру) і порівняти помилку на тесті.

Маєте іншу думку? Напишіть на support@coden-app.com.

Агент на вашому комп’ютері, керований з телефона