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

Лабораторна робота 15. Чи можна довіряти опуклості моделі

Коротко про роботу

Ви перевірите три квадратичні моделі з різною кривизною. За матрицями Гессе та власними значеннями потрібно визначити, яка модель строго опукла, яка має плоский напрям, а яка взагалі не є опуклою.

Ця робота виконується після лекцій 21–22. Вона спирається лише на матеріал, який уже пройдено до цього заняття.

▶ Відкрити робочий зошит у браузері

1. Ситуація

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

Головне питання роботи: Яка модель строго опукла, яка лише опукла, а яка неопукла, і що це означає для мінімізатора?

2. Що вже потрібно знати

Перед початком достатньо розуміти такі речі з попередніх лекцій:

  • опукла і строго опукла функція;
  • PSD і PD матриці;
  • власні значення;
  • зв’язок кривизни з унікальністю мінімуму;

Якщо якийсь пункт забувся, поверніться до відповідної лекції. У цій роботі нова теорія не вводиться без пояснення.

3. Як перейти від ситуації до математики

Для квадратичної функції знак власних значень матриці кривизни дає глобальний висновок. Тому ця робота вчить перевіряти модель до запуску optimizer-а.

Спочатку сформулюйте зміст задачі словами. Лише після цього записуйте формули й код. Це зменшує ризик правильно порахувати не ту задачу.

4. Ваш варіант

У notebook змініть тільки один рядок:

STUDENT_X = 1  # поставте свій номер 1..30

Номер варіанта змінює числа, але не дає готового способу розв’язання. Основна частина роботи однакова для всіх: побудувати правильну модель, зробити потрібний вибір і перевірити результат.

Після запуску комірки «Дані вашого варіанта» notebook покаже всі числа, потрібні для роботи. Вручну підставляти STUDENT_X у формули не потрібно. Спочатку подивіться на отримані дані та підпишіть, що означає кожен масив або параметр.

5. Де тут треба подумати

Не робіть висновок з кількох красивих точок на графіку. Для квадратичної моделі вирішальною є матриця кривизни. Випадкові Jensen-перевірки можна використати як ілюстрацію, але не як доказ.

Перед тим як писати код, дайте собі відповідь на два питання:

  1. Чим практично відрізняються PD і PSD моделі для мінімізації?
  2. Що означає напрям, у якому v.T@Q@v<0?

Відповідь не треба робити довгою. Достатньо 1–2 речень на кожне питання. Це допомагає перевірити, що ви розумієте задачу до запуску обчислень.

6. Послідовність роботи

Крок 1. Отримати три матриці

Перевірте симетричність і розміри.

Крок 2. Знайти спектр

Для кожної матриці порахуйте власні значення.

Крок 3. Класифікувати

Розділіть моделі на PD, PSD з нульовим напрямом та неозначеною за знаком.

Крок 4. Знайти наслідок для оптимізації

Поясніть, де очікується єдиний мінімум, де можлива неунікальність, а де глобальна опуклість відсутня.

Крок 5. Показати плоский або негативний напрям

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

Крок 6. Зробити кілька перевірок нерівності Єнсена

Покажіть, що чисельні перевірки корисні як додаткову перевірку, але не замінюють спектральний критерій.

7. Python

Використовуйте: NumPy.

Не намагайтеся вмістити всю роботу в одну велику комірку. Зручніше мати окремі невеликі блоки: дані → модель → обчислення → перевірка → висновок. Назви змінних повинні показувати їхній зміст.

8. Локальна самоперевірка

У робочому notebook наперед створені назви змінних, які читає автоматична перевірка. Не перейменовуйте їх. Ви самі пишете спосіб розв’язання, але фінальний результат записуєте у визначені змінні.

Змінна Що записати
eigenvalues словник A/B/C -> власні значення
classification словник A/B/C -> "PD", "PSD", "indefinite"
flat_direction ненульовий напрям для моделі B з Qv≈0
negative_direction напрям для моделі C з v.T@Q@v<0
jensen_checks True або список True для додаткових перевірок

Після виконання всіх кроків запустіть комірку «Локальна самоперевірка». Для вашого STUDENT_X вона читає наперед обчислені контрольні значення та порівнює з ними всі результатні змінні з таблиці вище. Числові значення порівнюються з указаним допуском; логічні, текстові та дискретні результати — точно. Для множин індексів порядок елементів не має значення, а для напрямів власних векторів враховується еквівалентність v та -v.

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

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

9. Що має бути у звіті

Звіт не повинен бути переписаним notebook. Покажіть вихідні дані, ключові проміжні результати, перевірки та короткий висновок своїми словами. У звіті обов’язково мають бути:

  1. номер вашого варіанта;
  2. вихідні дані, які реально використовувалися;
  3. ключовий проміжний результат, на якому ґрунтується рішення;
  4. фінальний результат;
  5. незалежна числова перевірка;
  6. коротке пояснення, що цей результат означає в початковій прикладній ситуації.

Наприкінці дайте відповідь на головне питання лабораторної одним коротким абзацом.

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

  1. Чим строга опуклість відрізняється від звичайної опуклості в цій роботі?
Показати відповідь За строгої опуклості квадратична кривизна додатна в усіх ненульових напрямах, що дає унікальний мінімізатор. За PSD може бути плоский напрям.
  1. Чому кілька випадкових перевірок нерівності Єнсена не є доказом?
Показати відповідь Вони перевіряють лише вибрані точки. Спектральний критерій для квадратичної моделі охоплює всі напрями одразу.