У першому семестрі ми довго й ретельно проводили пряму крізь хмару точок. Пряма має рівно два параметри, замкнену формулу розвʼязку й повну прозорість: подивився на коефіцієнт — зрозумів, що модель думає. Нейронна мережа має мільйони параметрів, не має замкненої формули і не пояснює нічого. Здавалося б, між ними прірва.
Прірви немає. Є один і той самий обчислювальний граф, у якому змінюється рівно одна річ — функція у вузлі. Ця тема показує мережу цілком: як з цієї єдиної зміни виростає все — і здатність описати будь-яку криву, і зворотне поширення помилки, і затухання градієнта, і перенавчання. Кожен із цих сюжетів має власну тему далі в блоці, тому тут ми проходимо їх швидко, а на розвилках ставимо вказівник, куди йти по деталі.
МістокВід одного нейрона до мережі
У темі 32 ми розібрали окремий нейрон до
гвинтика. Він робить рівно дві дії: рахує зважену суму
z = w·x + b, а потім пропускає її крізь активацію
a = f(z). Там же ми побачили, що
той самий граф стає лінійною регресією,
логістичною регресією або перцептроном залежно від того, яку функцію поставити у вузол:
ваги на ребрах не змінюються, змінюється лише табличка на вузлі. Геометрія теж звідти:
рівність w·x + b = 0 задає межу, вектор w до неї перпендикулярний,
а зсув b відсуває її від початку координат на −b/‖w‖.
Одну деталь варто дістати окремо, бо далі вона знадобиться. Довжина вектора ваг
‖w‖ керує не напрямком межі, а різкістю переходу через неї.
Чим більша ‖w‖, тим швидше z набирає величину при віддаленні від
межі — і тим крутіше сигмоїда перемикається з нуля в одиницю. При малих вагах той самий
нейрон дає розмазаний схил на всю площину, при великих — майже сходинку. Навчання мережі
змінює обидві речі одразу: і куди дивиться кожна межа, і наскільки вона різка.
Ця тема починається там, де скінчилась тема 32: нейронів багато, вони складені в шари — і з цього виростає все інше.
КартаЩо поглиблює кожна тема блоку
Ця тема — оглядова. Вона проходить мережу від входу до кроку навчання один раз і цілком, щоб конструкція була видна як ціле. Кожна її частина далі отримує власну тему, де є те, на що тут немає місця: числа, виведення, вимірювання. Ось карта — тримай її під рукою до кінця блоку.
Карта блоку 8: мережа і теми, що її поглиблюють
Ліворуч — мережа та один крок її навчання. Праворуч — тема, що розбирає кожну частину детально.
ДоказЧому без нелінійності глибина безглузда
Ось найважливіше твердження всієї лекції, і воно доводиться в три рядки. Припустімо, ми
взяли два шари нейронів і забули поставити активацію — залишили f(z) = z.
Перший шар рахує:
Тут W₁ і W₂ — матриці ваг, b₁ і b₂ —
вектори зсувів, h — вектор виходів прихованого шару.
Добуток двох матриць — це знову матриця. Сума векторів — знову вектор. Отже,
два лінійні шари дали рівно те саме, що дав би один лінійний шар
з вагами W̃ = W₂W₁ і зсувом b̃ = W₂b₁ + b₂.
Те саме міркування застосовуємо до трьох шарів, чотирьох, ста. Скільки б лінійних шарів ми не склали, композиція згортається в один лінійний шар. ∎
Те саме на числах, щоб не вірити на слово
Символи легко пропустити повз очі, тож підставмо конкретну арифметику. Візьмімо вхід із двох ознак, прихований шар із трьох нейронів без активації і один вихід:
Читається запис так: у W₁ три рядки, по одному на прихований нейрон, і два стовпці, по одному на ознаку. Рахуємо чесно, шар за шаром:
Тепер згорнімо два шари в один за формулою з кроку 3 — і порахуймо ще раз:
Ті самі 5.5. Це не пощастило з числами: різниця тут не «мала», а відсутня. Ми перевірили це й на великому: три лінійні шари 64 → 128 → 128 → 10 проти згорнутого одного шару 64 → 10, тисяча випадкових входів (зерно 42) — найбільша розбіжність за всю тисячу прогонів склала 3.6·10−12, тобто рівно похибку округлення дробових чисел у памʼяті компʼютера, а не різницю моделей. Двадцять тисяч параметрів середніх шарів не додали нічого.
Наслідок жорсткий: мережа без нелінійності не має глибини. Сто шарів по
тисячі нейронів кожен, десятки мільйонів параметрів — і вся ця конструкція здатна рахувати
рівно те, що рахує одна пряма. Гірше того: множина досяжних матриць W̃ може бути
вужчою, ніж у чесного одного шару, бо ранг добутку не перевищує рангу найвужчого
співмножника. Вузький прихований шар працює як пляшкове горло і лише зменшує виразність.
ШариШари й пряме поширення
Спершу картинка, потім означення. Уяви відділ, який розглядає заявку. Перший ряд співробітників дивиться на ті самі папери, але кожен зі свого боку: один звіряє суму, другий — дати, третій — чи сходиться адреса. Ніхто з них не виносить рішення; кожен видає одну оцінку. Другий ряд дивиться вже не на папери, а на ці оцінки — і з них складає відповідь. Ось і вся конструкція мережі, слово в слово.
Тепер означення. Кладемо кілька нейронів поруч — вони приймають один і той самий вхід, але мають різні ваги, тому проводять різні межі й дивляться на дані під різними кутами. Це шар. Вихід шару подаємо на вхід наступному шару — і так далі. Мережу, у якій сигнал іде тільки вперед і жодне ребро не повертається назад, називають мережею прямого поширення.
Архітектура будь-якої такої мережі складається з трьох типів шарів:
- вхідний шар — просто самі ознаки, по вузлу на ознаку; ніяких обчислень тут не відбувається, це лише спосіб намалювати вхід;
- приховані шари — тут живуть нейрони з активаціями. Їх може бути скільки завгодно, і саме вони перетворюють вихідні ознаки на нові, зручніші — кожен нейрон видає число «наскільки цей обʼєкт схожий на те, що я навчився помічати»;
- вихідний шар — формує відповідь: один нейрон із сигмоїдою для
бінарної класифікації,
Kнейронів із softmax дляKкласів, один лінійний нейрон для регресії.
y. А для середніх шарів ніхто не сказав, чим має бути число на
кожному вузлі: у розмітці такої колонки не існує. Саме тому правило Розенблата з
теми 32 на ці шари й не поширювалось — воно
вимагало знати правильну відповідь того нейрона, який навчається. Розвʼязує це
зворотне поширення, і саме тому воно потрібне.Записувати обчислення по одному нейрону незручно, тому все записують матрицями.
Нехай a⁽⁰⁾ = x — вхід. Тоді для кожного шару l = 1…L:
Розберімо запис по символах, бо далі він трапляється всюди.
l — номер шару, від 1 до L; верхній індекс у дужках означає
саме номер шару, а не степінь. a⁽ˡ⁾ — вектор виходів шару
l: стільки чисел, скільки в шарі нейронів. W⁽ˡ⁾ — матриця
ваг цього шару розміру «нейронів шару × входів шару»: рядок на кожен нейрон, стовпець
на кожен вхід. b⁽ˡ⁾ — вектор зсувів, по одному числу на нейрон.
z⁽ˡ⁾ — зважені суми до активації, f — сама активація.
z першого нейрона; потім те саме
з другим рядком; і так по всіх рядках. Тобто одне множення матриці — це просто
усі зважені суми шару, записані одним значком замість циклу. Активація
f застосовується поелементно: до кожного числа окремо,
сусіди на неї не впливають.Прогін даних цим ланцюжком від x до ŷ = a⁽ᴸ⁾ називають
прямим поширенням (forward pass) — це і є все, що робить навчена
мережа, коли ти просиш у неї прогноз.
Прямий прохід на живих числах
Пройдімо крихітну мережу 2 → 3 → 1 руками, від входу до відповіді. У прихованому
шарі поставимо ReLU — найпростішу нелінійність
max(0, z), тобто «лишити число, якщо воно додатне, і поставити нуль, якщо
відʼємне» (докладніше про вибір функції — наступний розділ). На виході — знайома
сигмоїда, бо відповідь має бути ймовірністю. Ваги такі:
Три нейрони — три різні погляди на той самий вхід: перший дивиться лише на першу ознаку, другий лише на другу, третій — на їхню суму.
Другий нейрон видав нуль: на цьому конкретному прикладі він мовчить і на відповідь не впливає взагалі. Це нормальна робота ReLU — і водночас натяк на її власну ваду, про яку в розділі 06.
Мережа каже: «клас 1 із імовірністю 57.44 %». Усе пряме поширення — це чотири такі рядки, скільки б шарів не було.
Прямий прохід: числа й розміри на кожному кроці
Та сама мережа 2 → 3 → 1 і той самий вхід x = (0.9, 0.2). Під кожною стрілкою — розмір того, що нею тече.
Порахуймо, скільки в такій мережі параметрів. Перший шар: 3·2 = 6 ваг
плюс 3 зсуви. Другий: 1·3 = 3 ваги плюс 1 зсув. Разом 13 чисел —
саме їх і треба підібрати навчанням. Загальне правило просте: шар із
n нейронів, що приймає m входів, має
n·m + n параметрів. Для мережі 2 → 8 → 1 це
8·2 + 8 = 24 плюс 1·8 + 1 = 9, разом 33; для
2 → 24 → 1 — уже 97. Для порівняння: у GPT-класі моделей таких чисел сотні
мільярдів, але формула та сама.
А тепер найцікавіше — перевірмо доказ із попереднього розділу експериментально. Нижче жива мережа: два входи, один прихований шар, один вихід із сигмоїдою. Вона справді навчається у твоєму браузері градієнтним спуском, а фон показує її межу рішень. Постав активацію «лінійна» і покрути кількість нейронів від 1 до 24.
Межа рішень: ширина, активація, дані
Мережа 2 → H → 1 навчається просто зараз, повним градієнтним спуском, 500 епох.
НелінійністьЯку функцію ставити у вузол — і що вона дає
Нелінійність потрібна — це щойно доведено. Яка саме? Робочих варіантів три, і всі три ти вже бачив або майже бачив.
- Сигмоїда
σ(z) = 1 / (1 + e⁻ᶻ)стискає будь-яке число у відрізок (0, 1): дуже відʼємне переходить майже в нуль, дуже додатне — майже в одиницю, нуль — рівно в 0.5. Тому її вихід читається як імовірність, і саме тому вона природно живе на виході бінарної класифікації. - tanh — та сама сигмоїда, розтягнута вдвічі й посунута так, щоб
діапазон став (−1, 1), а нуль переходив у нуль:
tanh(z) = 2σ(2z) − 1. Симетричність відносно нуля тут не косметика: виходи шару в середньому не зміщені вбік, і наступному шарові з ними зручніше. - ReLU, тобто
max(0, z), — найпростіша можлива нелінійність: усе відʼємне обнуляється, усе додатне лишається як є. Одне порівняння замість експоненти, тому вона й найдешевша.
Четверта функція, сходинка перцептрона, для градієнтного навчання непридатна взагалі: її похідна дорівнює нулю в кожній точці, де вона визначена, тож спуск не отримує жодного сигналу про те, куди рухатись — саме тому перцептрони й навчали окремим правилом.
Вибір між трьома робочими вирішує не форма кривої, а похідна: саме на неї множиться градієнт, коли тече назад крізь нейрон. Ось усі три разом зі своїми похідними на пʼятьох точках — цю таблицю варто прочитати не по рядках, а по стовпцях похідних:
| z | σ(z) | σ′(z) | tanh(z) | tanh′(z) | ReLU(z) | ReLU′(z) |
|---|---|---|---|---|---|---|
| −2 | 0.1192 | 0.1050 | −0.9640 | 0.0707 | 0 | 0 |
| −1 | 0.2689 | 0.1966 | −0.7616 | 0.4200 | 0 | 0 |
| 0 | 0.5000 | 0.2500 | 0.0000 | 1.0000 | 0 | злам |
| +1 | 0.7311 | 0.1966 | 0.7616 | 0.4200 | 1 | 1 |
| +2 | 0.8808 | 0.1050 | 0.9640 | 0.0707 | 2 | 1 |
Три спостереження, і кожне знадобиться вже в наступному розділі. Перше: похідна сигмоїди ніде не більша за 0.25, а на краях швидко падає до сотих — тобто градієнт, проходячи крізь такий нейрон, завжди зменшується щонайменше вчетверо. Друге: у tanh максимум похідної дорівнює 1, тобто вона хоча б не гарантує ослаблення. Третє: у ReLU похідна дорівнює рівно одиниці на всій додатній півосі й рівно нулю на відʼємній — градієнт або проходить недоторканим, або не проходить зовсім. У самому нулі похідної в неї немає (там злам), і на практиці там просто беруть нуль: одна точка з нескінченності нічого не важить.
Повна таблиця з шістьма функціями, родина Leaky ReLU / ELU / GELU і питання, що ставити на вихід під конкретну задачу, — у темі 35; там же розібрано, як масштабувати стартові ваги під обрану активацію.
Звідки береться крива межа
Тепер найголовніше питання цього розділу, на яке легко не помітити, що відповіді ще не було. Ми бачимо в інтерактиві 1, що з ReLU межа стає кривою. Але ж кожен окремий нейрон і далі проводить пряму — це ми знаємо ще з теми 32 і нічого в ньому не міняли. Звідки ж береться крива?
Відповідь коротка: крива тут не намальована, а складена зі шматків прямих. Розберімо, як саме, на ReLU — з нею це видно найчистіше.
Один прихований нейрон рахує a = max(0, w·x + b). Його пряма
w·x + b = 0 ділить площину надвоє, як і раніше. Але тепер по один бік нейрон
видає рівно нуль — і не впливає на відповідь взагалі, — а по другий росте тим
швидше, чим далі точка від прямої. Тобто нейрон із ReLU — це не «межа», а
злам: рівна нульова підлога з одного боку й нахилена площина з другого,
зшиті вздовж його прямої.
Вихідний нейрон бере зважену суму цих зламів: z = v₁a₁ + v₂a₂ + … + b.
Сума зламаних площин — це знову площина, але кусково: усередині кожної області,
де набір «мовчазних» нейронів не змінюється, вона рівна, а на кожній прямій прихованого
нейрона змінює нахил. Межа рішень — це лінія рівня z = 0 такої поверхні,
і вона, отже, ламана: пряма всередині кожної області, з переломом на
кожному перетині.
Три прямі складаються в замкнену межу
Ліворуч — три приховані нейрони з ReLU: кожен мовчить по один бік своєї прямої й росте по другий. Праворуч — межа, яку дає їхня зважена сума.
З сигмоїдою й tanh картина та сама з точністю до згладжування: замість різкого зламу кожен нейрон дає плавний схил, тож і межа виходить одразу гладкою, без видимих кутів. Механізм не змінюється — змінюється лише те, наскільки гострі стики. І ось тепер видно, чому розділ 03 такий важливий: без активації кожен «злам» став би звичайною площиною без перелому, сума площин — знову площиною, а лінія її рівня — знову однією прямою. Уся гнучкість мережі живе рівно в тому місці, де функція перестає бути прямою.
ЗатуханняЗатухання градієнта
З цієї похідної випливає головна біда глибоких мереж. Щоб градієнт дійшов від функції
втрат до першого шару, він мусить пройти крізь усі проміжні шари, і на кожному
множиться на похідну активації. Похідна сигмоїди ніде не перевищує 0.25, тож груба
оцінка дає множник близько 0.25L на
L шарів — на десяти це вже приблизно мільйонна частка. Оцінка саме груба:
вона припускає, що множення на матрицю ваг довжину вектора не змінює, а реальна матриця то
трохи стискає її, то трохи розтягує, тому виміряний множник гуляє навколо 0.25 в обидва боки
й нерідко її перевищує. Порядок величини оцінка все ж угадує, і саме цей порядок тримав
напрямок на місці до 2010-х: верхні шари вчились, нижні стояли з майже випадковими вагами.
Дзеркальна біда теж можлива — якщо ваги великі, добуток вибухає, і оновлення відкидає модель
у нескінченність (вибух градієнта, з ним борються обрізанням норми). ReLU
знімає затухання тим, що на додатній півосі її похідна дорівнює рівно одиниці, але купує це
власною вадою: нейрон, у якого z < 0 на всіх прикладах, більше не отримує
градієнта й помирає назавжди. Виміряні числа, справжній зворотний прохід і
ціна затухання в добах навчання — у
темі 35, мертвий ReLU — там же,
розділ 05 теми 35.
ВтратиФункція втрат: крос-ентропія
Щоб мережа могла вчитись, потрібне число, яке каже, наскільки погано вона зараз працює.
Для регресії це знайома MSE. Для класифікації беруть крос-ентропію
(log loss). Для двох класів, де y ∈ {0, 1}, а ŷ ∈ (0, 1) — видана
мережею ймовірність класу 1:
Формула виглядає хитро, але в ній лише два випадки. Якщо y = 1, другий
доданок зникає й лишається −log ŷ: угадав упевнено (ŷ = 0.99) — втрата 0.01,
угадав невпевнено (ŷ = 0.5) — втрата 0.69, помилився впевнено (ŷ = 0.01) — втрата 4.6.
Якщо y = 0, усе дзеркально. Крос-ентропія карає впевнену помилку
необмежено: при ŷ → 0 і y = 1 втрата прямує до нескінченності.
Але справжня причина, чому беруть саме її, ховається в похідній. Порахуймо градієнт
по z — входу останнього нейрона, де ŷ = σ(z):
Знаменник і чисельник скорочуються повністю. Градієнт дорівнює звичайній різниці «прогноз мінус правильна відповідь» — жодних експонент, жодних насичень.
Порівняймо це з MSE на тому самому виході. Там ∂L/∂z = (ŷ − y)·ŷ(1 − ŷ),
і множник ŷ(1 − ŷ) все псує: якщо модель упевнено помилилась (ŷ = 0.999 при
y = 0), цей множник дорівнює 0.001, тобто градієнт майже нульовий. Модель груба помилилась —
і саме тому не хоче виправлятись. Крос-ентропія знімає цю проблему точним скороченням.
L = −Σ yₖ log ŷₖ. Скорочення
працює так само: ∂L/∂zₖ = ŷₖ − yₖ. Це не збіг, а властивість пари
«експоненційне сімейство + правдоподібність».BackpropЗворотне поширення: анонс
Мережа є, число втрати є. Тепер треба похідна втрати по кожній вазі, а їх можуть
бути мільйони. Наївний спосіб — поворухнути кожну вагу окремо й подивитись, як зміниться
втрата — вимагав би мільйона прямих проходів на один крок навчання.
Зворотне поширення дає всі похідні одразу, за час одного додаткового
проходу. Фокус у ланцюговому правилі: похідна композиції — це добуток похідних, а кожен
множник у цьому добутку локальний, тобто залежить лише від того, що відбувається
в одному вузлі. Тому обчислення складається у прохід назад по графу, де кожен вузол отримує
від свого нащадка число «наскільки я впливаю на втрату» і передає предкам своє. Це число має
власне імʼя — дельта: похідна втрати по передактиваційному значенню
z нейрона. Дельту останнього шару ми щойно порахували в розділі 07,
вона дорівнює ŷ − y.
Далі — уся тема 34, і там це розібрано повільніше, ніж має сенс робити тут: прямий і зворотний прохід із числами на конкретній мережі, три формули backprop із покроковим виведенням, чому рахувати треба саме назад, а не вперед, і перевірка градієнта чисельним диференціюванням. Для нашої карти важливо запамʼятати одне: уперед графом течуть значення, назад — похідні, обидва потоки йдуть тими самими ребрами. Тому повний градієнт по всіх параметрах коштує приблизно стільки ж, скільки один прогноз, — незалежно від того, скільки цих параметрів, тисяча чи трильйон.
СпускСпуск по неопуклій поверхні
Градієнт порахований — далі все просто, і точнісінько так само, як у лінійній регресії:
Крок η (learning rate) — найважливіший гіперпараметр нейромереж. Замалий:
навчання триватиме вічність, і ти зупиниш його на півдорозі, вирішивши, що модель погана.
Завеликий: оновлення перестрибує мінімум, втрати починають стрибати або вибухають у
нескінченність. Робочий діапазон зазвичай ширший, ніж здається, але його межі різкі.
Навчання в динаміці: епохи й крок
Ліворуч — межа рішень на обраній епосі. Праворуч — крива втрат від початку навчання.
Але є принципова різниця з лінійною регресією, і вона велика. Там поверхня втрат була опуклою — гладкою чашею з єдиним дном. Куди б ти не поставив початкову точку, спуск приходив у те саме місце, і це місце було глобальним мінімумом.
Поверхня втрат нейромережі опуклою не є навіть близько. Вона має:
- локальні мінімуми — ями, з яких градієнт не виводить, хоча десь поруч є глибша;
- сідлові точки — місця, де градієнт нульовий, але це не мінімум: в одних напрямках угору, в інших униз. У просторі великої розмірності їх набагато більше, ніж мінімумів, і саме вони, а не локальні ями, гальмують навчання найчастіше. Наскільки саме — виміряно в темі 36: на одному й тому самому сідлі чистому спуску треба 485 кроків, адаптивному оптимізатору — 5;
- плато — величезні плоскі області, де градієнт майже нульовий і модель тижнями «нічого не вчить»;
- симетрії — переставивши місцями два нейрони одного шару разом із їхніми вагами, отримаєш іншу точку простору параметрів із точно такою самою втратою. Мінімумів не один, їх експоненційно багато.
Практичний наслідок відчутний одразу: результат навчання залежить від початкових ваг. Той самий код, ті самі дані, той самий крок — інший seed генератора випадкових чисел, і точність інша. Перевір сам:
Ті самі дані, різні початкові ваги
Мережа 2 → 6 → 1 на спіралі, 500 епох. Змінюється лише зерно ініціалізації.
ТеоремаУніверсальна апроксимація і три застереження
Ми бачили в інтерактиві 1, що з ростом ширини межа стає гнучкішою. Наскільки далеко це заходить? Відповідає теорема про універсальну апроксимацію (Цибенко, 1989; Горнік, 1991):
g — неперервна функція на замкненій
обмеженій множині, а f — неполіноміальна неперервна активація. Тоді для
будь-якого ε > 0 існує мережа з одним прихованим шаром
скінченної ширини, яка наближає g усюди на цій множині з похибкою, меншою
за ε.Звучить як вирок усій подальшій науці: одного шару досить, решта — деталі. На практиці з теореми не випливає майже нічого корисного, і важливо розуміти чому. Три застереження:
Застереження 1: існування не означає можливість знайти
Теорема стверджує, що потрібний набір ваг існує десь у просторі параметрів. Вона не дає жодного алгоритму, як його знайти, і не обіцяє, що градієнтний спуск туди дійде. А ми щойно бачили в інтерактиві 3, що спуск на неопуклій поверхні регулярно застрягає далеко від найкращого розвʼязку. Між «розвʼязок існує» і «ми його отримали» лежить уся практика глибокого навчання.
Застереження 2: ширина може знадобитись астрономічна
Теорема каже «скінченна ширина», але не каже яка. Для деяких функцій потрібна кількість
нейронів росте експоненційно з розмірністю входу. Класичний результат про глибину:
існують функції, які мережа глибини k представляє поліноміальною кількістю
нейронів, а мережа глибини k−1 — лише експоненційною. Глибина — це спосіб
перевикористовувати ознаки: другий шар будує комбінації з того, що вже знайшов
перший, замість того щоб будувати все з нуля. Саме тому глибокі мережі виграли, а не широкі.
Застереження 3: теорема нічого не каже про узагальнення
Наближення гарантується на тій множині, де ми міряємо. Здатність точно відтворити залежність не означає здатності правильно відповісти на нових даних. Більше того: та сама гнучкість, яка дозволяє наблизити будь-яку функцію, дозволяє наблизити й будь-який шум. Мережу можна навчити ідеально запамʼятати вибірку з випадковими мітками — і це доведено експериментально. Теорема — про виразність, а машинне навчання — про узагальнення. Це різні речі, і друга не випливає з першої.
МежаПеренавчання й регуляризація
Отже, перейдімо до узагальнення. Нейромережа з достатньою кількістю параметрів здатна провести межу так, щоб кожна навчальна точка опинилась із правильного боку — включно з випадковими викидами й помилково розміченими прикладами. Візуально це впізнається миттєво: межа перестає бути плавною й починає обростати острівцями навколо окремих точок.
У наборі нижче лише 30 навчальних точок, шість із них навмисне розмічені неправильно (обведені бурштиновим). Тестова вибірка — 600 чистих точок із того самого розподілу, модель їх ніколи не бачить:
Перенавчання на малій вибірці
30 навчальних точок, 6 із них із перевернутою міткою. Праворуч — точність train проти test.
Проти цього є чотири прийоми, і в реальному проєкті зазвичай працюють усі разом.
Спад ваг (weight decay, він же L2) додає до втрати штраф
L + λ·Σw²: кожен крок трохи стягує кожну вагу до нуля, а менші ваги означають
менш різкі перепади виходу — тобто менше острівців. Це рівно та сама ідея, що й Ridge
у лінійній регресії, і саме її вмикає прапорець в інтерактиві вище.
Dropout на кожному кроці навчання тимчасово вимикає випадкові нейрони, тож
жоден із них не може розраховувати на конкретного сусіда, і мережа змушена будувати
надлишкові представлення. Рання зупинка — найдешевший прийом: стежимо за
втратою на валідаційній вибірці й зупиняємось у момент, коли вона почала зростати, тоді як
навчальна ще спадає. Більше даних (а якщо їх не додати — аугментація:
повороти, відображення, заміна синонімів) — найнадійніша регуляризація з усіх. Як ці
чотири поводяться поодинці й у парах, чому спад ваг не завжди дорівнює L2, що робить із
перенавчанням пакетна нормалізація і що з чим варто поєднувати — розбирає
тема 37.
ДаліКуди рухатись далі
Усе, що ми розібрали, — це мережа прямого поширення (feed-forward, вона ж багатошаровий перцептрон). Вона нічого не знає про структуру даних: для неї вхід — просто вектор чисел. Якщо подати їй зображення, вона однаково поставиться до сусідніх пікселів і до пікселів із протилежних кутів.
Наступні архітектури виникли з ідеї вбудувати знання про структуру прямо в мережу:
| архітектура | яку структуру враховує | де застосовують |
|---|---|---|
| CNN | локальність і трансляційна симетрія: та сама ознака шукається в кожній точці зображення | зір, сегментація, детекція |
| RNN / LSTM | послідовність: стан переноситься з кроку на крок | часові ряди, мова (історично) |
| Transformer | увага: кожен елемент сам вирішує, на які інші дивитись | мова, зір, звук, майже все |
| GNN | граф: вузли й ребра з довільною топологією | молекули, соцмережі, рекомендації |
| GAN / дифузійні | породження нових даних із розподілу | генерація зображень і звуку |
Але всередині кожної з них — те саме, що ми щойно розібрали. Трансформер складається
з шарів уваги та звичайних повнозвʼязних шарів; він навчається крос-ентропією,
градієнтом, порахованим зворотним поширенням, і кроком η. Змінюється спосіб
зʼєднати нейрони — не спосіб їх навчати.
Тому підсумок лекції короткий і його варто запамʼятати саме в такому вигляді:
- нейрон = зважена сума + нелінійність; без другої частини глибина математично не існує;
- прямий прохід = ланцюжок множень на матриці з поелементною функцією між ними;
- втрата = число, яке міряє поганість; крос-ентропія дає найчистіший
градієнт
ŷ − y; - backprop = ланцюгове правило, застосоване назад по графу; коштує один додатковий прохід;
- навчання = багато маленьких кроків по неопуклій поверхні, де результат залежить від початкових ваг;
- узагальнення = окрема проблема, яку виразність мережі не розвʼязує, а погіршує.