Системи штучного інтелекту

Розподіл балів

  • І половина семестру (09.02.26 - 21.03.26)
    • Лабораторні 1(3), 2(3), 3(4), 4(4) - 14 балів
    • Презентація - 5 балів
    • Контрольна робота - 20 балів
  • ІІ половина семестру (23.03-23.05.2026)
    • Лабораторні 5(4), 6(4), 7(4), 8(4) - 16 балів
    • Презентація 2 - 5 балів
    • Контрольна робота - 20 балів
  • Протягом семестру
    • Самостійна робота - 10 балів
  • Екзаменаційна сесія
    • Поточні бали - 40 балів
    • Екзаменаційні тести - 50 балів
    • Усна компонента - 10 балів

Диски для звітності

Корисні посилання
Follow Us
Лабораторна робота №5

Інструменти для роботи з ШІ

Мета роботи. Ознайомитися з основними фреймворками глибокого навчання для реалізації моделей машинного навчання, побудови та розгортанні моделей. Встановити та дослідити можливості TensorFlow, PyTorch та Keras, що засновані Google, Facebook та Python відповідно. Сервіси досить широко використовуються серед дослідників та практиків..

TensorFlow, PyTorch і Keras є основними інструментами сучасного глибокого навчання. Вони реалізують ефективну роботу з тензорами, автоматичне диференціювання та оптимізацію моделей. Незважаючи на спільні математичні принципи, підходи до програмування та сфери переважного використання в них відрізняються, що й становить практичний інтерес у межах даної лабораторної роботи.

Загальні принципи глибокого навчання

Глибоке навчання є підрозділом машинного навчання, що базується на використанні багатошарових нейронних мереж для автоматичного виділення ознак із даних. Основною обчислювальною структурою є тензор — багатовимірний масив чисел, який узагальнює поняття скаляра (0D), вектора (1D), матриці (2D) та багатовимірних структур (3D і більше).

Навчання нейронної мережі полягає в мінімізації функції втрат (loss function), яка вимірює різницю між прогнозом моделі та правильними значеннями. Для мінімізації використовується метод зворотного поширення помилки (backpropagation) разом із алгоритмами оптимізації (SGD, Adam тощо).

Ключові поняття:

  • Епоха (epoch) — один повний прохід по всьому навчальному набору даних.
  • Батч (batch) — підмножина даних, яка використовується для одного кроку оновлення ваг.
  • Ітерація — одне оновлення параметрів моделі.
  • Гіперпараметри — параметри, що задаються до навчання (швидкість навчання, розмір батча тощо).

Обчислювальні графи

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

Існують два підходи:

  • Статичний граф — граф будується до початку виконання (традиційно використовувався у ранніх версіях TensorFlow).
  • Динамічний граф — граф будується під час виконання програми (характерний для PyTorch).

Динамічні графи забезпечують більшу гнучкість і простоту налагодження, тоді як статичні можуть бути більш оптимізованими для продуктивності.

TensorFlow

TensorFlow — це потужна бібліотека з відкритим кодом для машинного та глибокого навчання, розроблена компанією Google. Вона підтримує:

  • виконання на CPU, GPU та TPU;
  • автоматичне диференціювання;
  • розподілене навчання;
  • інструменти для продакшену (TensorFlow Serving, TensorFlow Lite).

TensorFlow активно використовується в промислових застосуваннях завдяки масштабованості та інтеграції з хмарними сервісами. Починаючи з версії 2.x, він орієнтований на більш інтуїтивний, Python-подібний стиль програмування.

Keras

Keras — це високорівневий API для створення нейронних мереж, який працює поверх TensorFlow. Головна мета — спрощення розробки моделей.

Особливості:

  • інтуїтивний інтерфейс;
  • модульність (шари, функції активації, оптимізатори);
  • швидке прототипування;
  • модель типу Sequential та функціональний API.

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

PyTorch

PyTorch — фреймворк глибокого навчання, розроблений Meta (Facebook). Його основні переваги:

  • динамічний обчислювальний граф;
  • природна інтеграція з Python;
  • простота налагодження;
  • гнучкість у створенні нестандартних моделей.

PyTorch широко використовується у наукових дослідженнях і швидкому прототипуванні нових архітектур. Завдяки бібліотеці torchvision він має зручні інструменти для роботи з комп’ютерним зором.

Автоматичне диференціювання

Всі сучасні фреймворки реалізують механізм automatic differentiation — автоматичного обчислення похідних функції втрат за параметрами моделі. Це дозволяє ефективно реалізувати алгоритм backpropagation без ручного обчислення градієнтів.

Апаратне прискорення

TensorFlow і PyTorch підтримують використання GPU для прискорення обчислень. Паралельні обчислення особливо важливі при роботі з великими нейронними мережами та великими наборами даних.

GPU значно пришвидшує:

  • множення матриць;
  • операції згортки;
  • обчислення градієнтів.

Сфери застосування

Розглянуті фреймворки використовуються для:

  • комп’ютерного зору;
  • обробки природної мови (NLP);
  • розпізнавання мовлення;
  • генеративних моделей;
  • рекомендаційних систем;
  • медичної діагностики.

Лабораторне завдання

Ознайомитися з теоретичними матеріалами щодо глибокого навчання.

Частина 1. Підготовка середовища

  1. Встановити Python (останню версію).
  2. Створити віртуальне середовище.
  3. Встановити бібліотеки: pip install tensorflow torch torchvision keras matplotlib scikit-learn
  4. Перевірити коректність встановлення (імпорт бібліотек).

Частина 2. Реалізація простої моделі класифікації.

Завдання: Побудувати нейронну мережу для класифікації зображень (наприклад, MNIST або Fashion-MNIST).

2.1 Реалізація в TensorFlow/Keras

  1. Завантажити набір даних MNIST.
  2. Нормалізувати дані.
  3. Побудувати модель типу Sequential:
    • Flatten
    • Dense (128, ReLU)
    • Dense (10, Softmax)
  4. Навчити модель (5–10 епох).
  5. Оцінити точність (accuracy).
  6. Побудувати графік функції втрат.

2.2 Реалізація в PyTorch

  1. Завантажити MNIST через torchvision.
  2. Створити DataLoader.
  3. Описати клас нейронної мережі (nn.Module).
  4. Визначити:
    • функцію втрат (CrossEntropyLoss)
    • оптимізатор (Adam або SGD)
  5. Реалізувати цикл навчання.
  6. Обчислити точність моделі.

Частина 3. Порівняння

Студент повинен:

  • Порівняти кількість коду.
  • Оцінити складність реалізації.
  • Зробити висновки щодо зручності кожного фреймворку.
  • Порівняти швидкість навчання (за можливості).

Зміст звіту

  1. Назва та мета виконання лабораторної роботи.
  2. Короткі теоретичні відомості.
  3. Лістинг коду з коротким описом.
  4. Результати навчання (accuracy, loss)
  5. Графіки
  6. Аналітичні висновки щодо отриманих результатів, можливого застосування бібліотек для виконання певних завдань.

Контрольні запитання

  1. Що таке тензор і чим він відрізняється від матриці?
  2. У чому різниця між статичним і динамічним обчислювальним графом?
  3. Які переваги має TensorFlow?
  4. Які переваги має PyTorch?
  5. Що таке Keras і яку роль він виконує?
  6. Що таке функція втрат? Наведіть приклади.
  7. Для чого використовується оптимізатор?
  8. Що таке епоха та батч?
  9. Чим відрізняється SGD від Adam?
  10. Що таке overfitting і як його уникнути?
  11. Які типи шарів найчастіше використовуються у згорткових нейронних мережах?
  12. Як реалізується GPU-прискорення в цих фреймворках?