Кожна тема курсу закінчувалась числом: точністю, mIoU, CER, похибкою глибини в метрах. Ця ставить питання, яке стоїть під усіма ними: що саме означає це число і чого воно не показує. Питання не філософське, а вимірне — на кожну відповідь нижче стоїть замір.
РозділМодель вчить не те, що ти думаєш
Мережа не «розуміє» задачу — вона мінімізує похибку й бере для цього найдешевшу ознаку, яка працює на навчальних даних. Таку ознаку називають ярликом (shortcut): вона не є частиною задачі, але надійно на неї вказує саме в цій вибірці.
Класична історія про це — класифікатор «вовк чи собака», який насправді навчився впізнавати сніг, бо вовків фотографували взимку. Переказують її часто, а числа під нею наводять рідко. Порахуймо самі.
Дані — ті самі шість фігур 28×28 із теми 16. Ми фарбуємо тло в яскравість, що залежить від класу: шість класів — шість рівнів від 0.10 до 0.60. Тло не є частиною задачі, зате його видно по шести сотнях пікселів, а форму — по кільканадцятьох. Читати тло набагато дешевше.
Ярлик не мусить бути ідеальним. Число, яке ми звемо узгодженістю, — це частка навчальних прикладів, у яких тло відповідає своєму класу; решті дістається чуже. Узгодженість 1.00 означає «жодного винятку», 0.80 — «кожен пʼятий приклад ярлик обманює».
Перевіряємо на двох наборах одразу: у тому самому світі, де тло так само підказує клас, і там, де звʼязок розірвано — тло випадкове й не каже про клас нічого. Різниця між цими двома числами і є ціною ярлика: якщо модель вивчила форму, різниці не буде.
РозділЯрлик спрацьовує лише без винятків
Замір: 600 навчальних прикладів, три зерна, два бюджети навчання — 12 і 32 епохи. Рівень вгадування на шести класах — 0.1667.
| узгодженість | той самий світ | звʼязок розірвано | падіння |
|---|---|---|---|
| 0.50 | 0.9444 | 0.9311 | +0.0133 |
| 0.80 | 0.9167 | 0.6378 | +0.2789 |
| 0.95 | 0.9644 | 0.3478 | +0.6167 |
| 1.00 | 0.9978 | 0.1822 | +0.8156 |
Головне тут — не те, що падіння велике, а як воно росте. Половина узгоджених прикладів не коштує нічого (0.0133 при розкиді по зернах 0.0110 — це нуль). Девʼяносто пʼять відсотків коштують уже 0.6167. А сто — 0.8156, тобто 0.1822 при рівні вгадування 0.1667: модель, яка на своїх даних дає 0.9978, поза ними не відрізняє коло від хреста взагалі.
Чи це лікується довшим навчанням
Може, річ у тому, що ми мало вчили? Прогнали той самий замір на двох бюджетах — 12 і 32 епохи:
| узгодженість | 12 епох | 32 епохи | що дали 20 епох |
|---|---|---|---|
| 0.50 | 0.5578 | 0.9311 | +0.3733 |
| 0.80 | 0.3000 | 0.6378 | +0.3378 |
| 0.95 | 0.2356 | 0.3478 | +0.1122 |
| 1.00 | 0.1822 | 0.1822 | +0.0000 |
Нуль в останньому рядку — не округлення: три зерна дали ті самі числа [0.170, 0.207, 0.170] і на 12-й, і на 32-й епосі.
Причина проста. Мережа рухається туди, куди її штовхає похибка на навчальних прикладах. При узгодженості 1.00 модель, яка читає саме тло, помиляється на своїх даних майже ніколи (0.9978) — отже, штовхати її більше нічому. При 0.95 пʼять відсотків прикладів лишаються помилковими назавжди, поки мережа не почне дивитись на форму, і саме вони роблять роботу.
Практичний висновок неочевидний: небезпечна не «перекошена вибірка» взагалі, а вибірка без жодного винятку — принаймні на цих даних і на цій моделі. І шукати такі дефекти оглядом статистики марно: перекіс 0.95 і перекіс 1.00 у зведеній таблиці виглядають майже однаково, а поводяться протилежно. Знаходить їх перевірка на даних, де підозрюваний звʼязок розірвано — рівно те, що робить друга колонка нашої таблиці.
Ярлик, якого в задачі немає
Ліворуч — навчальні приклади: тло пофарбоване за класом, частина дістає чуже. Праворуч — дві точності: там, де тло підказує, і там, де звʼязок розірвано.
РозділОдне число ховає нуль
Другий спосіб не побачити проблему — усереднити її. Прибираємо ярлики й робимо один клас із шести рідкісним: від 16.7 % (порівну з іншими) до 1.5 %. Перевірка завжди збалансована, по сто прикладів кожного класу. Задача навмисне важка: шум 0.45 замість звичних 0.06, лише 500 навчальних прикладів — навіщо саме така, стане видно в наступному розділі.
Який клас робити рідкісним? Якщо взяти найважчий, ми не відрізнимо «рідкісний» від «важкий». Збалансоване навчання впорядковує класи так: кільце 0.9200, трикутник 0.7567, хрест 0.5967, квадрат 0.4833, коло 0.4167, ромб 0.3700 при загальній 0.5906. Беремо квадрат — третій із шести, тобто не край.
| частка квадрата | штук у навчанні | на всьому | на квадраті | розрив |
|---|---|---|---|---|
| 16.7 % | 83 | 0.5906 | 0.4833 ±0.1156 | +0.1073 |
| 10.0 % | 50 | 0.6317 | 0.3500 ±0.2061 | +0.2817 |
| 3.0 % | 15 | 0.5861 | 0.0467 ±0.0205 | +0.5394 |
| 1.5 % | 8 | 0.5767 | 0.0467 ±0.0591 | +0.5300 |
Прочитай останній рядок двічі. Загальна точність 0.5767 — це «так собі, але працює»: утричі краще за вгадування, звичайне число у звіті про важку задачу. Точність на квадраті — 0.0467, а по зернах це [0.0000, 0.1300, 0.0100]: на одному зерні з трьох модель не назвала квадрат жодного разу за всю перевірку.
Перший рядок теж важливий. При рівномірній частці розрив уже +0.1073, але це не несправедливість, а власна складність квадрата. Ціна рідкісності — падіння з 0.4833 до 0.0467, і починається воно там, де частка опускається нижче за рівномірну 16.7 %.
Середнє і рідкісний клас
Ліворуч — склад навчальної вибірки, праворуч — два числа, які з неї виходять. Перемикач міняє складність задачі, не міняючи нічого іншого.
РозділЛегка задача ховає несправедливість
Перша версія цього заміру провалилась, і провал вартий окремого розділу. Ми робили те саме на звичайних фігурах курсу — шум 0.06 — і розриву не побачили. Висновок напрошувався зручний і хибний: «дисбаланс на цих даних нічого не псує».
Насправді псує. Просто задача була надто легка, щоб це показати. Ось повна таблиця на легкій задачі — усе решта незмінне: ті самі 500 прикладів, ті самі 30 епох, ті самі три зерна.
| частка квадрата | штук | легка: на всьому | легка: на квадраті | важка: на квадраті |
|---|---|---|---|---|
| 16.7 % | 83 | 0.9928 | 0.9900 | 0.4833 |
| 10.0 % | 50 | 0.9811 | 0.9700 | 0.3500 |
| 3.0 % | 15 | 0.9378 | 0.6833 | 0.0467 |
| 1.5 % | 8 | 0.8972 | 0.4767 | 0.0467 |
Розрив на легкій задачі є — просто він зʼявляється пізніше й лишається мʼяким. При 3 % легка задача дає 0.6833, важка — 0.0467, різниця в чотирнадцять разів при абсолютно однакових пʼятнадцятьох прикладах. При 1.5 % — 0.4767 проти 0.0467.
Тобто однакова вибірка дає різну несправедливість залежно від складності задачі. Це властивість не даних і не моделі, а пари «дані + задача», і жодну з половин не можна назвати винною окремо.
РозділЛіки: зважування і його доза
Найпростіші ліки — сказати функції втрат, що помилка на рідкісному класі коштує дорожче. Звичайна крос-ентропія карає за кожен приклад однаково, зважена множить кару на вагу класу:
Розберімо запис по знаках. Σ — це «сума по всіх шести класах». p[c] — імовірність, яку модель дала класу c. Квадратні дужки дорівнюють одиниці для справжнього класу й нулю для решти, тож із усієї суми лишається один доданок. log — логарифм: він великий за модулем, коли ймовірність правильної відповіді мала, і майже нульовий, коли вона близька до одиниці. Нове тут одне — w[c], вага класу; при всіх одиничних вагах це звичайна крос-ентропія.
Найпоширеніший вибір ваг — обернена частота: клас, якого впʼятеро менше, дістає впʼятеро більшу вагу. У нашій вибірці з 15 квадратами проти 97 прикладів кожного іншого класу це дає квадрату вагу приблизно ×6.5. Для порівняння беремо ще й навмисне завелику ×20.
І міряємо не одне число, а чотири: точність на всьому (те, що зазвичай друкують), повноту — яку частку справжніх квадратів модель знайшла, точність влучань — яка частка названих квадратами справді ними є, і IoU рідкісного класу, що карає і за пропуски, і за хибні спрацювання одразу. Частка квадрата — 3 %, зерен пʼять замість трьох, бо розкид тут великий.
| ліки | на всьому | повнота | влучань | IoU |
|---|---|---|---|---|
| без ваг | 0.6063 ±0.0384 | 0.0940 ±0.0850 | 0.6479 | 0.0876 |
| 1/частота ×6.5 | 0.6243 ±0.0657 | 0.2920 ±0.0889 | 0.6162 | 0.2440 |
| вага ×20 | 0.5300 ±0.1058 | 0.4120 ±0.1532 | 0.5169 | 0.2873 |
Три речі, і всі три варто назвати чесно. Перше: зважування працює — повнота рідкісного класу зросла з 0.0940 до 0.2920, утричі. Друге: за це не довелося платити загальною точністю (0.6063 проти 0.6243), але й виграшу доводити не можна: різниця 0.0180 менша за розкид ±0.0384 і ±0.0657. Чесне формулювання — «не постраждала», а не «покращилась». Третє: ×20 — це вже інша угода: повнота росте далі (0.4120) і IoU теж (0.2873), зате загальна точність падає до 0.5300, а точність влучань — із 0.6479 до 0.5169. Модель почала бачити квадрати там, де їх немає.
Отже, зважування — не «увімкнув і став справедливим», а обмін: повнота росте, точність влучань падає. І в цього обміну є доза, за якою він перестає бути вигідним, — що підводить нас до найнезручнішого місця всього курсу.
РозділСуперечність із темою 29
Тема 29 міряла те саме зважування на семантичній сегментації й дістала протилежний результат: mIoU 0.4181 проти 0.6151 без ваг. Обидва заміри чесні, обидва стоять у цьому курсі, і вони суперечать один одному.
Найгірше, що тут можна зробити, — вигадати пояснення й записати його як висновок. Спробуймо натомість відтворити обидві відповіді на тих самих даних. Робимо з наших фігур задачу сегментації: кожен піксель треба назвати предметом або тлом. Фігури беремо дрібні — предмет займає 6.28 % полотна, отже обернена частота дає вагу ×14.92.
| вага предмета | mIoU | IoU предмета | повнота | влучань | хибних пікселів на кадр |
|---|---|---|---|---|---|
| без ваг | 0.7851 ±0.2238 | 0.5961 | 0.6277 | 0.6311 | 2 |
| ×2 | 0.9402 ±0.0030 | 0.8885 | 0.9615 | 0.9214 | 4 |
| ×5 | 0.9240 ±0.0077 | 0.8587 | 0.9755 | 0.8778 | 7 |
| 1/частота ×14.9 | 0.8885 ±0.0106 | 0.7941 | 0.9870 | 0.8026 | 12 |
| ×20 | 0.8787 ±0.0098 | 0.7766 | 0.9889 | 0.7835 | 13 |
Ось воно. У ваги є оптимум, і формула 1/частота стоїть далеко за ним. Найкраще mIoU дає скромна вага ×2 — 0.9402. Обернена частота (×14.9) дає 0.8885, гірше на 0.0517 при розкиді 0.0106. Це та сама поразка, що в темі 29, тільки з видимим сусідом, який показує: причина не в самій ідеї зважувати, а в дозі.
Механізм теж вимірний. Від ×2 до ×14.9 кількість хибно зафарбованих пікселів росте втричі, з 4 до 12 на кадр — і майже всі вони лягають на контур: частка хибних пікселів, що сидять за один піксель від справжнього предмета, дорівнює 0.9327 при вазі ×2, 0.8243 при ×14.9 і 0.8095 при ×20. Зважування не розкидає помилки по кадру — воно роздуває предмет по контуру. Для дрібного предмета контур завтовшки в піксель — відчутна частка площі, і IoU падає швидше, ніж повнота встигає його підняти.
Чому в класифікації те саме не болить
У класифікації межі немає: хибне спрацювання коштує рівно один приклад, а не кільце навколо предмета, і перевірка збалансована, тож рідкісний клас важить стільки ж, скільки будь-який інший. Тому та сама формула ×6.5 опиняється перед оптимумом і виглядає як чистий виграш. Наш ×20 із попереднього розділу — це вже вихід за оптимум, і поводиться він так само, як ×14.9 у сегментації.
Доза ліків
Одна ідея — підняти вагу рідкісного — у двох задачах. Крива праворуч показує, де метрика має максимум і де на ній стоїть формула 1/частота.
РозділМодель памʼятає своїх
Досі ми питали, чи справедлива модель. Тепер — що вона видає про людей, чиї дані пішли на її навчання.
Здається, що навчена мережа — просто набір чисел, з яких вихідних даних не дістати. Це не так, і перевіряє це найпростіша з атак — атака на належність (membership inference). Питання: «чи був цей конкретний знімок серед навчальних?» Нападник не має доступу ні до даних, ні до ваг — лише до відповідей моделі. Ідея в одному реченні: на своїх модель упевненіша, бо бачила їх десятки разів і підганяла ваги саме під них.
Якість атаки міряємо числом AUC. Візьми навмання одну картинку з навчальної
вибірки й одну нову; AUC — це частка таких пар, де модель упевненіша саме в
навчальній. 0.5 означає «монетка», 1.0 — «відрізняється завжди». Іншої
математики за цим числом немає — його можна порахувати вручну, перебравши всі пари
«свій, чужий», і воно збігається з тим, що дає roc_auc_score.
| прикладів у навчанні | епох | AUC атаки | упевненість на своїх | на нових | точність моделі |
|---|---|---|---|---|---|
| 200 | 10 | 0.5321 ±0.0134 | 0.1704 | 0.1686 | 0.1867 |
| 200 | 30 | 0.5968 ±0.0424 | 0.4301 | 0.3512 | 0.4380 |
| 200 | 60 | 0.7041 ±0.0712 | 0.7622 | 0.4933 | 0.5473 |
| 500 | 10 | 0.5093 ±0.0061 | 0.2542 | 0.2502 | 0.3240 |
| 500 | 30 | 0.5838 ±0.0125 | 0.5406 | 0.4690 | 0.5613 |
| 500 | 60 | 0.6645 ±0.0489 | 0.9294 | 0.6716 | 0.7027 |
На десятій епосі атака не працює: 0.5321 і 0.5093 — це монетка. Далі памʼять накопичується разом із навчанням: на шістдесятій епосі в семи парах із десяти модель упевненіша саме в тому прикладі, який бачила на навчанні. Це не означає, що сторонній вгадає «був чи не був» для окремого знімка в семи випадках із десяти: AUC міряє пари, а не окремі відповіді. Дивись на дві сусідні колонки останнього рядка: середня впевненість у правильній відповіді — 0.9294 на своїх і 0.6716 на нових.
Найважливіше тут — що памʼять росте разом із якістю. Не можна сказати «навчімо гірше, зате приватніше»: модель на 60 епохах і найкраща (0.7027), і найбалакучіша. Це не побічний ефект, який можна вимкнути, а той самий процес, побачений з іншого боку.
У справжніх моделях це гостріше за нашу лабораторну атаку. Цитоване: з відкритої дифузійної моделі Stable Diffusion витягли близько сотні зображень, що майже точно збігаються з навчальними, — просто підбираючи запити (Carlini та ін., 2023). Модель, яку роздають як файл ваг, несе в собі шматки того, з чого її зробили.
Чи був цей знімок у навчанні
Угорі — середня впевненість моделі на своїх і на нових прикладах, унизу — наскільки надійно за цією різницею вгадується належність.
РозділСкільки треба, щоб зламати
Наступна межа стосується не даних, а самої моделі: візьмімо класифікатор, що дає на легкій задачі 0.9956, і спробуймо його обманути.
Спосіб зветься FGSM (fast gradient sign method) і виглядає так:
Словами: беремо картинку x, дивимось, у який бік треба посунути кожен піксель, щоб похибка L зросла (це і є похідна ∂L/∂x — швидкість зміни похибки при зміні пікселя), і робимо крок рівно на ε в цей бік. sign лишає від похідної тільки знак, тож кожен піксель змінюється на однакову величину й різняться лише напрямки.
Ключове — що змінюються всі пікселі, але кожен ледь-ледь. Щоб було видно, наскільки ледь, рахуємо ще одне число: скільки пікселів яскравості додано загалом — суму модулів обурення, поділену на яскравість одного цілком білого пікселя. У картинці їх 784.
| ε | після атаки | випадковий шум тієї ж сили | пікселів яскравості з 784 | частка |
|---|---|---|---|---|
| 0.00 | 0.9956 | 0.9956 | 0.0 | 0.0 % |
| 0.01 | 0.9778 | 0.9956 | 5.7 | 0.7 % |
| 0.02 | 0.9400 | 0.9933 | 11.2 | 1.4 % |
| 0.03 | 0.8822 | 0.9922 | 16.4 | 2.1 % |
| 0.05 | 0.6578 | 0.9878 | 26.3 | 3.3 % |
| 0.10 | 0.3511 | 0.9256 | 48.2 | 6.1 % |
| 0.15 | 0.2022 | 0.6867 | 68.4 | 8.7 % |
Третя колонка — те, заради чого таблиця й потрібна. При ε = 0.05 випадковий шум тієї самої сили не робить майже нічого (0.9878), а спрямований збиває модель до 0.6578: справа не в кількості доданого, а в напрямку. При ε = 0.15 атака доводить її до 0.2022 — майже рівень вгадування 0.1667 — тоді як випадковий шум лишає 0.6867.
І про масштаб: 26.3 пікселя яскравості з 784 — це 3.3 % загальної «фарби» зображення, розмазаної по всьому кадру так, що жоден окремий піксель не змінився більш ніж на 0.05. Око такої різниці не бачить.
Це не лабораторний курйоз. Цитоване: наклейки, наліплені на справжній дорожній знак «стоп», давали 100 % помилок класифікатора в стаціонарному тесті (Eykholt та ін., 2018). Модель, яка «бачить» дорожні знаки, і модель, яка їх розпізнає надійно, — не те саме.
Розмір обурення
Ліворуч — картинка до й після, посередині — саме обурення: біле плюс, чорне мінус, насиченість пропорційна силі. Праворуч — атака проти випадкового шуму тієї ж сили.
РозділФейк ловлять не за фейковість
Теми 37, 38 і 39 вчили породжувати зображення. Питання, якого вони не ставлять: чи можна потім відрізнити породжене від справжнього.
Здається, що так: досить навчити класифікатор «справжнє чи ні». Перевірмо, чого він насправді навчиться. Робимо два «генератори», кожен зі своїм слідом:
- A — мʼякий край. Контур розмитий, ніби після згладжування. Такий слід лишає будь-яка модель, що відновлює зображення через усереднення.
- B — шахова сітка. Заливка промодульована через піксель. Це знайомий артефакт транспонованої згортки з теми 29.
Детектор навчається на справжніх проти фейків генератора A, а перевіряється і на A, і на B — по 400 зображень, три зерна. Рівень вгадування — 0.5000.
| сила артефакту | свій генератор A | чужий генератор B |
|---|---|---|
| 0.60 | 0.9992 ±0.0012 | 0.5017 ±0.0024 |
| 0.30 | 0.9642 ±0.0507 | 0.8558 ±0.1242 |
| 0.15 | 0.9467 ±0.0684 | 0.9458 ±0.0678 |
Перший рядок і є висновком розділу. Детектор, який на своєму генераторі майже непогрішний — 0.9992, — на чужому дає 0.5017, тобто рівно монетку, і то з мізерним розкидом 0.0024. Він не навчився ловити «фейковість». Він навчився ловити розмитий край. Генератор, який лишає інший слід, проходить повз нього так, ніби детектора немає.
Другий і третій рядки ламають зручну лінійність: при слабших артефактах перенос раптом працює (0.8558 і 0.9458). При силі 0.60 генератор A відрізняється передусім розмиттям, і детектору вигідно дивитись лише на нього; при 0.15 розмиття майже немає, і детектор змушений чіплятися за загальніше «відхилення від правила, за яким малюються справжні фігури», а воно є в обох. Тобто сильний і очевидний артефакт шкідливіший для узагальнення, ніж слабкий: детектор ліниво хапається за найпростішу ознаку — рівно як мережа з розділу 2 хапалася за тло.
У справжніх змаганнях це виглядає так само. Цитоване, зі статті про набір DFDC: переможець змагання 2020 року дав логарифмічну втрату 0.1983 на відео самого DFDC — тобто на розподілі, на якому вчився, — і 0.6605 на справжніх відео, знятих поза набором. Друге число варто порівняти не з першим, а з 0.6931: саме стільки дає модель, яка на кожне відео відповідає «ймовірність 0.5». Тобто на незнайомому матеріалі переможець опинився ближче до монетки, ніж до себе самого. Найкращі моделі змагання на самих лише справжніх відео мали середню точність 0.753 і ROC-AUC 0.734.
Детектор ловить генератор, а не фейк
Три картинки — справжня фігура й два фейки з різними слідами. Перемикач каже, на якому генераторі перевіряють детектор, навчений на A.
РозділЧого не вміє цей курс
Тепер найнезручніше. Усі числа, які ти прочитав за сорок тем, здобуто на синтетичних даних, згенерованих формулами: фігури 28×28, сцени 64×64, стереопара з відомої глибини, рядок тексту, надрукований шрифтом. Вибір був свідомий: генератор дає точну істину — маска до пікселя, рамка без розмітника, глибина в метрах — і дає тобі рівно ті самі числа, що в лекції.
Але за це заплачено, і рахунок треба назвати.
Ми жодного разу не бачили брудної розмітки. Тема 28 псувала розмітку навмисне й поміряла ціну (0.1749 mAP за зсув рамок на 4 px). Але зіпсована навмисне розмітка рівномірна й випадкова, а справжня — ні: розмітники помиляються систематично й саме на важких прикладах.
Ми жодного разу не бачили зсуву домену. Наші вибірки походять з одного генератора, і різниця між ними — лише зерно; у реальності модель навчають на знімках однієї камери, а вмикають на іншій. Найближче ми підійшли до цього в розділі 9, де детектор фейків сів на чужому генераторі до 0.5017 — по суті, це єдиний зсув домену в усьому курсі.
Ми жодного разу не мали справи з даними, яких не можна публікувати. Наш генератор нікому не належить і ні від кого не потребує згоди. Тому курс не показав того, що займає більшу частину реальної роботи: згоди, знеособлення, терміну придатності даних, права людини вилучити своє зображення з набору, який уже пішов на навчання. Останнє особливо незручне: як показав розділ 7, дані частково лишаються всередині ваг, і видалення файлу з диска не є видаленням із моделі.
Історія галузі тут коротка й повчальна. Цитовані приклади: 2019 року Microsoft припинила роздавати MS-Celeb-1M — 10 мільйонів зображень 100 тисяч людей, зібраних без їхньої згоди; того самого року творці ImageNet після аудиту прибрали більш ніж половину категорій, що стосувалися людей; 2020 року MIT відкликав 80 Million Tiny Images через образливі підписи. Це були не маргінальні набори, а ті, на яких навчали моделі з підручників.
І ми жодного разу не міряли якість на людях. Цитоване й найвідоміше число в цій розмові: аудит комерційних систем визначення статі за обличчям показав похибку 0.8 % для світлошкірих чоловіків і до 34.7 % для темношкірих жінок (Buolamwini і Gebru, 2018). Це рівно та несправедливість, яку ми моделювали на квадраті. І знайшли її не загальною точністю, а розбивкою по групах — тим самим прийомом, що в розділі 3.
РозділЩо вже стало законом
Частина того, про що ця тема говорить як про інженерну обережність, уже стала юридичним обовʼязком. Усе нижче — цитоване.
Європейський AI Act набув чинності 1 серпня 2024 року; заборони запрацювали з 2 лютого 2025 року, вимоги до моделей загального призначення — з 2 серпня 2025 року, більшість вимог до систем високого ризику — з 2 серпня 2026 року. Прямо заборонено, зокрема: ненацільовий збір зображень облич з інтернету чи камер спостереження для баз розпізнавання; розпізнавання емоцій на робочому місці й у навчальних закладах; біометричне визначення особи в реальному часі в публічних місцях для правоохоронних цілей — із вузькими винятками. Максимальний штраф — 35 мільйонів євро або 7 % світового обороту, залежно від того, що більше.
Кожен із цих пунктів — задача, яку в курсі описано технічно. «Ненацільовий збір» — це рівно те, як зібрано набори з попереднього розділу; «розпізнавання емоцій» — звичайна класифікація зображень із теми 09. Різниця між дозволеним і забороненим — не в архітектурі й не в метриці.
GDPR відносить біометричні дані, що дозволяють однозначно ідентифікувати людину, до особливої категорії: обробляти їх за замовчуванням не можна. Штраф — до 20 мільйонів євро або 4 % обороту. Illinois BIPA 2008 року вимагає письмової згоди на збір біометрії й — на відміну від більшості норм — дозволяє позиватися самій людині, а не лише регулятору; саме тому він дав найбільші суми: Facebook 2021 року погодився виплатити 650 мільйонів доларів за розпізнавання облич на фотографіях без згоди.
РозділСорок тем: пʼять наскрізних ліній
Курс закінчено. Переказувати сорок тем немає сенсу — зберімо те, що повторювалося в них незалежно від предмета. Кожна лінія спирається щонайменше на три теми й тримається на числах.
1 · Метрика вирішує, що ти побачиш
Найсильніша лінія курсу. Один результат, поміряний двома чесними метриками, дає два різні вироки — і часто протилежне впорядкування моделей.
| тема | дві метрики, що розходяться |
|---|---|
| 29 · сегментація | точність по пікселях 0.9001 при mIoU 0.0000 |
| 32 · panoptic | mIoU рівно 1.0000 при PQ 0.5292 |
| 33 · OCR | посимвольна похибка 0.02 при «рядку цілком» 0.6230 |
| 35 · дії у відео | середнє по часу 0.4000 при розгортці 1.0000 на тих самих ознаках |
| 40 · ця тема | 0.5767 на всьому при 0.0467 на рідкісному класі |
Тема 40 доводить лінію до кінця: коли розходяться mIoU і PQ, страждає порівняння моделей; коли «на всьому» і «на рідкісному» — страждають люди, яких у вибірці мало.
2 · Розмітка переважує архітектуру
Тема 28 поставила це найточніше: зсув усіх рамок на чотири пікселі коштує 0.1749 mAP, а focal loss (+0.1061) і anchor-free (+0.0577) разом дають +0.1638 — одна помилка розмітки зʼїдає обидва здобутки блоку про одноетапні детектори. Ця тема додає поверх: справа не лише в точності розмітки, а й у тому, кого в ній скільки.
3 · Рецепт важить більше за архітектуру
Тема 18: ResNet50 із сучасним рецептом дає 80.86 проти 76.13 зі старим і обходить глибшу ResNet101 зі старим рецептом (77.37). Різниця від того, як навчати, більша за різницю від подвоєння глибини. Тут — зворотний бік тієї самої монети: у розділі 2 бюджет навчання вирішував, чи мережа взагалі вивчить форму (+0.3378 при узгодженості 0.80).
4 · Ефекти порогові, а не плавні
Тема 30: скіп на одному рівні дає +0.0191, на чотирьох — +0.2535. Тема 33: те саме розмиття при висоті літери 20 px дає похибку 0.8813, а при 48 px — 0.0670. Ця тема: узгодженість 0.95 лікується довшим навчанням (+0.1122), а 1.00 на обох заміряних бюджетах не лікується зовсім (+0.0000 між 12 і 32 епохами). Наслідок: лінійна інтуїція тут не працює — не можна подивитись на два сусідні значення параметра й дописати третє олівцем.
5 · Різниця, менша за розкид, не є різницею
Лінію задала тема 26: різниця середніх 0.1061 була менша за розкид γ=0 (0.1420), і виграш довели інакше — усі три зерна γ=2 (найгірше 0.8361) виявились кращими за всі три зерна γ=0 (найкраще 0.8067). Ця тема вжила той самий критерій в обидва боки: у розділі 2 він підтвердив пороговість ярлика, а в розділі 7 заборонив висновок про памʼять моделі, хоч середні його й просили.
filter2D
рахує не згортку, а кореляцію; Canny не згладжує; перший шар навченої
мережі гірше збігається з Собелем, ніж випадкові ядра; дропаут у згортках зашкодив;
зважена крос-ентропія допомогла в одній задачі й зашкодила в іншій. Жодне з цих
спростувань не було здогадом — усі вони вийшли з того, що хтось узяв і поміряв.
Це, мабуть, і є головне, чого курс навчає.Сорок тем і пʼять ліній
Кожна клітинка — тема курсу. Перемикач обирає наскрізну лінію й підсвічує теми, які її тримають, разом із числами, якими вони її довели.
РозділКуди йти далі
Курс дав каркас: як зображення влаштоване як дані, як згортка й увага дістають із нього ознаки, як із ознак роблять рамки, маски, текст, рух і глибину, як породжують нові зображення й де все це ламається. Каркас стійкіший, ніж здається: архітектури змінюються щороку, а згортка, увага, IoU і звичка вибирати метрику свідомо — ні.
Що читати
Три книжки, які не замінюють одна одну. Szeliski, Computer Vision: Algorithms and Applications — довідник по геометричній частині, від камери до 3D, у відкритому доступі. Prince, Understanding Deep Learning — акуратне пояснення того, чому навчання взагалі працює. Goodfellow, Bengio, Courville, Deep Learning — класика, з якої зручно добирати математику. Повний перелік джерел курсу — на окремій сторінці.
Далі — першоджерела: читати статті страшно рівно доти, доки не прочитаєш першу. Починай із тих, чиї ідеї тут розібрано: ResNet, U-Net, DETR, ViT, CLIP, SAM.
Найкорисніше після курсу — повторити будь-який його замір на справжніх даних: чи є в наборі ярлик, який ламається при розриві звʼязку; що дає розбивка метрики по групах; наскільки модель упевненіша на своїх. Усі три перевірки коштують кілька десятків рядків.
Куди рухається галузь
Одна модель на багато задач. Лінія, що почалася з CLIP і SAM: замість моделі під задачу — модель, яка приймає задачу як підказку. Тема 32 поміряла головне, що з цього випливає: зміна постановки виявилась сильнішою за зміну архітектури.
Оцінювання стає окремим ремеслом. Коли моделі схожі за якістю, вирішує не архітектура, а те, як саме їх порівняли: на яких даних, якою метрикою, з якою розбивкою по групах, зі скількох зерен. Блок 8 показав це з іншого боку: згенерувати зображення й оцінити згенероване виявились задачами різної складності. Курс закінчується там, де починається ця робота.
І остання думка. Ця тема називалась «Межі й етика», але жодного разу не сказала тобі, що правильно, а що ні. Вона показувала інше: речі, які прийнято обговорювати словами — упередженість, приватність, надійність, чесність порівняння, — вимірні. Різниця між «модель може бути несправедливою» і «на рідкісному класі вона дає 0.0467 при загальних 0.5767» — це різниця між розмовою й роботою. Курс був про роботу.