Машинне навчання · Блок 7 · Тема 30

Нейрон і перцептрон

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

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

Приклад той самий, що й у трьох попередніх темах, — дошка оголошень про вживані телефони з теми 08. Цього разу нас цікавить конкретний різновид шахрайства: приманка із заниженою ціною. Продавець ставить за телефон помітно менше, ніж він коштує, збирає передоплати й зникає. Тому з дошки ми беремо ті оголошення, де ціна не перевищує довідкову, — таких 569, і серед них 104 приманки. Ознак буде рівно дві, щоб межу було видно на площині: ціна оголошення й довідкова ціна — скільки такий апарат такої моделі, року, стану й памʼяті коштує за каталогом. Обидві в тисячах гривень.

01 / ІдеяЗвідки взявся нейрон

У 1943 році Воррен Мак-Каллок і Волтер Піттс описали живу нервову клітину як логічний елемент: на вхід приходять сигнали від інших клітин, вони підсумовуються, і якщо сума перевищила поріг — клітина спрацьовує. У 1958-му Френк Розенблат додав до цієї схеми головне: ваги, які можна налаштувати даними. Його перцептрон (perceptron) був не програмою, а машиною Mark I Perceptron із фотоелементами на вході й моторизованими змінними резисторами замість ваг. Мотор крутив резистор — модель училась.

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

Навіщо це знати. Біологічна назва — історична випадковість, а не пояснення. Щойно ти ловиш себе на думці «мережа думає» або «нейрон розпізнає образ», згадай, що в цьому місці стоїть w·x + b і одна функція від результату. Усі подальші висновки в цій темі випливають саме з формули, а не з аналогії.

02 / КлітинаЗважена сума й поріг

Штучний нейрон робить дві дії, і жодної більше. Перша — зважена сума входів:

z = w1x1 + w2x2 + … + wnxn + b

Розберімо кожен символ окремо. x1…xn — ознаки одного обʼєкта, у нас це два числа: ціна й довідкова ціна в тисячах гривень. w1…wnваги, по одній на ознаку: наскільки сильно й у який бік ця ознака штовхає рішення. Знак ваги важливіший за її величину: додатна вага означає «більше цієї ознаки — більше підстав сказати так», відʼємна — навпаки. bзсув (bias), одне число, яке додається завжди; воно задає, наскільки охоче нейрон каже «так», коли всі ознаки нульові. z — результат, який ще не є відповіддю: це просто число на прямій, від великого відʼємного до великого додатного.

Друга дія — активація: число z пропускають крізь функцію, яка перетворює його на відповідь. У перцептрона Розенблата це порогова функція, вона ж сходинка:

ŷ = 1, якщо z ≥ 0   ·   ŷ = 0, якщо z < 0

Підставмо справжні числа. Візьмімо ваги w1 = −1.00 для ціни, w2 = +0.50 для довідкової й b = 0. Словами це правило звучить так: «оголошення підозріле, якщо ціна нижча за половину довідкової». Оголошення № 527 з нашої вибірки — Beta 12 Pro 2023 року, стан «задовільне», 512 гігабайтів, ціна 3 100 грн, довідкова 10 990 грн:

z = (−1.00)·3.10 + 0.50·10.99 + 0 = −3.100 + 5.495 = +2.395 → z ≥ 0 → приманка

І контрольний приклад, оголошення № 554 — Beta 12 Pro 2022 року, стан «добре», 128 гігабайтів, ціна 8 780 грн при довідковій 8 830 грн:

z = (−1.00)·8.78 + 0.50·8.83 + 0 = −8.780 + 4.415 = −4.365 → z < 0 → чесне

Схема 1 · Один нейрон на одному оголошенні

Ті самі числа, що в розрахунку вище: два входи, дві ваги, зсув, сума й поріг. Нижче — той самий нейрон на чесному оголошенні.

Уся клітина — це чотири стрілки, одне додавання й одне порівняння з нулем. Зверни увагу, що ваги в обох рядках однакові: нейрон не змінюється від оголошення до оголошення, змінюються лише входи. Навчання — це підбір саме цих трьох чисел: w₁, w₂, b.

Геометрія тут проста й варта того, щоб її запамʼятати. Рівність w1x1 + w2x2 + b = 0 — це рівняння прямої на площині. По один її бік z додатне, по інший — відʼємне. Отже, один нейрон із порогом ділить площину ознак навпіл прямою й каже «так» усьому, що з одного боку. У трьох ознаках це буде площина, у багатьох — гіперплощина, але суть та сама: пряма межа й два боки.

03 / ВпізнаванняЦе вже знайома модель

Тепер найважливіший абзац теми. Замінімо сходинку на сигмоїду — функцію σ(z) = 1 / (1 + e−z), яка плавно переводить будь-яке число в проміжок від нуля до одиниці. Що вийде?

ŷ = σ(w1x1 + w2x2 + b)

Це дослівно формула логістичної регресії з теми 17. Не «схожа на неї», не «окремий випадок» — та сама формула, символ у символ, з іншими іменами літер. Там ми називали w коефіцієнтами, а b вільним членом; тут ті самі числа звуться вагами й зсувом. Підставмо наше шахрайське оголошення: z = +2.395, а σ(2.395) = 0.916 — модель каже «з імовірністю 91.6 % це приманка». Для чесного: σ(−4.365) = 0.013, тобто 1.3 %. Порівняй із порогом 0.5 — і отримаєш точнісінько ту саму відповідь, що дала сходинка.

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

АктиваціяЩо виходить із одного нейронаДе ми це вже бачили
немає (тотожність)лінійна регресія: ŷ = w·x + bтема 15
сигмоїдалогістична регресія: ймовірність класутема 17
сходинкаперцептрон Розенблата: жорстке «так» або «ні»ця тема

Різниця між сходинкою й сигмоїдою здається косметичною, а насправді вона вирішальна, і ми до неї повернемось у розділі 9. Поки що досить помітити: сигмоїда має похідну, сходинка — ні. Саме тому логістичну регресію можна навчати градієнтним спуском, а перцептрон доводилось навчати чимось іншим.

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

Інтерактив 1 · Ваги, зсув і межа рішень

569 оголошень дошки: по горизонталі ціна, по вертикалі довідкова ціна, обидві в тисячах гривень. Рожеві — приманки, бірюзові — чесні. Пряма — межа z = 0, рожевим залито півплощину, де нейрон каже «приманка».

правильно
помилок
пропущено приманок
хибних тривог
Нуль помилок на всіх 569 оголошеннях досяжний — саме тому ця дошка й підходить для перцептрона. Дві ваги задають нахил прямої: важить лише їхнє відношення, бо помноживши обидві на десять, ти отримаєш ту саму межу. Зсув b рухає пряму паралельно самій собі. Модель, яка каже «усе чесне», помиляється 104 рази — це та планка, яку треба побити.

04 / ПравилоПравило навчання Розенблата

Ваги ми щойно крутили руками. Розенблат запропонував правило, яке робить це саме, — і воно на диво просте. Ніякої функції втрат, ніяких похідних, ніякого градієнта. Одне речення:

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

Формально зручно позначити класи як y = +1 (приманка) і y = −1 (чесне), а відповідь нейрона — знаком z. Тоді помилка — це випадок, коли знаки y і z різні, а виправлення таке:

w := w + η·y·x   ·   b := b + η·y

Тут η (ета) — швидкість навчання: маленьке додатне число, яке задає, наскільки різко ми виправляємось. Логіка виправлення прозора. Якщо правильна відповідь +1, а нейрон дав −1, значить z замале — додаємо до ваг сам вхід, і наступного разу z на цьому прикладі буде більшим рівно на η·(x·x + 1), тобто гарантовано зросте. Якщо навпаки — віднімаємо. Правило не питає «наскільки погано», воно питає лише «у який бік».

Чотири кроки руками

Візьмімо 14 оголошень із дошки, крок η = 0.08 і навмисно невдалий старт: w₁ = 0.80, w₂ = 0.20, b = −6.00. Таке правило означає «підозрілими є дорогі оголошення» — гіпотеза, протилежна до правильної. Подивімось, як воно виправляється.

Крок 1 · приманка, яку нейрон не побачив

Оголошення: ціна 1.45, довідкова 5.49, правильна відповідь y = +1.

z = 0.80·1.45 + 0.20·5.49 − 6.00 = 1.160 + 1.098 − 6.000 = −3.742 → нейрон каже «чесне» → ПОМИЛКА

Виправляємо: до кожної ваги додаємо η·y·x, до зсуву — η·y.

w₁ = 0.80 + 0.08·1.45 = 0.9160 w₂ = 0.20 + 0.08·5.49 = 0.6392 b = −6.00 + 0.08 = −5.9200
Крок 2 · та сама помилка, ще один поштовх

Наступне оголошення: ціна 1.54, довідкова 5.38, y = +1.

z = 0.9160·1.54 + 0.6392·5.38 − 5.9200 = 1.4106 + 3.4389 − 5.9200 = −1.0705 → ПОМИЛКА
w₁ = 0.9160 + 0.08·1.54 = 1.0392 w₂ = 0.6392 + 0.08·5.38 = 1.0696 b = −5.9200 + 0.08 = −5.8400

Помилка та сама, але z уже не −3.742, а −1.071. Межа повзе в потрібний бік.

Крок 3 · вгадав — і нічого не сталося

Оголошення: ціна 1.92, довідкова 2.06, y = −1 (чесне).

z = 1.0392·1.92 + 1.0696·2.06 − 5.8400 = 1.9953 + 2.2034 − 5.8400 = −1.6414 → нейрон каже «чесне» → ВГАДАВ

Ваги не змінюються. Жодного оновлення, жодного «трохи підправимо про всяк випадок». Це принципова риса правила: правильна відповідь не дає сигналу взагалі.

Крок 4 · хибна тривога, поштовх у другий бік

Оголошення: ціна 5.46, довідкова 5.65, y = −1.

z = 1.0392·5.46 + 1.0696·5.65 − 5.8400 = 5.6740 + 6.0432 − 5.8400 = +5.8773 → нейрон каже «приманка» → ПОМИЛКА
w₁ = 1.0392 − 0.08·5.46 = 0.6024 w₂ = 1.0696 − 0.08·5.65 = 0.6176 b = −5.8400 − 0.08 = −5.9200

Тут y = −1, тому вхід не додається, а віднімається. Вага ціни вперше пішла вниз — до відʼємних значень, куди їй і треба.

Чим це відрізняється від градієнтного спуску. У темі 16 ми мали функцію втрат, рахували її похідну по кожному параметру й робили крок проти градієнта. Тут немає функції втрат узагалі: немає числа, яке б спадало від кроку до кроку, немає поверхні, якою ми спускаємось. Є правило виправлення, яке спрацьовує лише на помилках. Формально воно збігається зі стохастичним градієнтним спуском для однієї конкретної втрати — max(0, −y·z), — але Розенблат вивів його за десять років до того, як цей звʼязок помітили, і виводив із зовсім інших міркувань.

Схема 2 · Як межа повертається за чотири епохи

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

Ваги не «сходяться плавно» — вони стрибають. Кожен стрибок дорівнює одному невдалому оголошенню, помноженому на крок. Між стрибками нічого не відбувається взагалі. Кількість виправлень за епоху спадає нерівно: 6 → 4 → 2 → 2 → 0, і саме нуль виправлень означає, що навчання скінчилось.

Один прохід по всіх прикладах називають епохою. Правило проганяють епоху за епохою, доки в черговій епосі не станеться жодного виправлення. Це і є критерій зупинки, і він точний: якщо ваги не змінились за цілу епоху, вони вже не зміняться ніколи. Прожени це сам, приклад за прикладом:

Інтерактив 2 · Правило Розенблата, приклад за прикладом

Ті самі 14 оголошень, крок η = 0.08. Поточне оголошення обведене; підсвічений рядок праворуч показує, що саме зараз виконується.

z = w1*x1 + w2*x2 + b
if sign(z) == y:
pass # вгадав
else:
w1 += 0.08*y*x1
w2 += 0.08*y*x2
b += 0.08*y
епоха1
приклад0 / 14
виправлень у цій епосі0
у минулій епосі
ваги зараз
Тисни «наступний приклад» і стеж за прямою. На правильних відповідях вона стоїть нерухомо — це видно найкраще. На помилках вона підстрибує, і чим далі оголошення від межі, тим більший стрибок: поштовх пропорційний самому входу. Після пʼятої епохи без жодного виправлення кнопки гаснуть: правило зупинилось само.

05 / ЗбіжністьТеорема збіжності

У 1962 році Розенблат опублікував — а незалежно від нього й у чіткішій формі довів Альберт Новіков — твердження, яке зробило перцептрон сенсацією. Формулюється воно так:

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

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

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

Друга халепа теореми. Вона обіцяє якусь розділювальну пряму, а не найкращу. Правило зупиняється на першій-ліпшій межі, яка не помиляється на навчальних даних, — а така пряма може проходити впритул до точок і на нових даних сипатись. Метод опорних векторів, який зʼявився пізніше, відрізняється від перцептрона рівно тим, що серед усіх розділювальних прямих шукає ту, у якої запас γ найбільший.

06 / РоздільністьЛінійна роздільність: І та АБО

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

Найкоротший спосіб відчути межу можливого — логічні функції на чотирьох точках. Входи x₁ і x₂ приймають значення 0 або 1, тож усіх різних прикладів рівно чотири. Функція І має видати одиницю лише на (1, 1), функція АБО — усюди, крім (0, 0). Обидві реалізуються одним нейроном, і ваги для них можна написати руками:

x₁, x₂І: z = x₁ + x₂ − 1.5ŷАБО: z = x₁ + x₂ − 0.5ŷ
0, 0−1.50−0.50
0, 1−0.50+0.51
1, 0−0.50+0.51
1, 1+0.51+1.51

Обидві функції мають ваги w₁ = w₂ = 1, і відрізняються лише зсувом: −1.5 проти −0.5. Це рівно те, що ми бачили в інтерактиві 1: ваги задають нахил межі, зсув її пересуває. Нахил тут однаковий — діагональ під 45 градусів до осей; вона просто стоїть у різних місцях квадрата.

Схема 3 · І та АБО — одна пряма, два положення

Чотири можливі входи як точки квадрата. Заповнена точка — відповідь 1, порожня — 0. Рожева зона — половина площини, де z ≥ 0.

Дві функції — дві прямі з однаковим нахилом. Для І пряма відрізає найдальший кут із єдиною точкою (1, 1); для АБО вона зсунута до початку координат і відрізає найближчий кут із єдиною точкою (0, 0). Заміна знака обох ваг перевертає відповідь: z = −x₁ − x₂ + 1.5 дає НЕ-І.

07 / XORXOR і зима напрямку

Тепер третя функція, і саме на ній історія зламалась. Виключне АБО (XOR, «або те, або те, але не обидва») має видавати одиницю на (0, 1) і (1, 0) та нуль на (0, 0) і (1, 1). Одиниці стоять по одній діагоналі квадрата, нулі — по іншій. Спробуй знайти пряму, яка їх розділить:

Інтерактив 3 · Пряма, якої не існує

Чотири точки й одна пряма, яку ти повертаєш і зсуваєш як завгодно. Перемкни функцію — і порівняй, що досяжно на І, на АБО і на XOR.

функція
правильно зараз
найкраще з перебору
«Найкраще з перебору» — не оцінка й не здогад. Сторінка щоразу проганяє 360 напрямків × 501 положення прямої, тобто 180 360 різних прямих, і показує найкращий результат серед них. Для І та АБО він дорівнює 4 із 4, для XOR — 3 із 4. Три з чотирьох — це рівно те, що дає модель «завжди відповідай одиниця»: інформації нуль.

Перебір переконує, але не доводить. Доведення поміщається у три рядки. Нехай пряма w₁x₁ + w₂x₂ + b справді реалізує XOR:

Крок 1 · записуємо чотири вимоги
(0, 0) → 0: b < 0 (0, 1) → 1: w₂ + b ≥ 0 (1, 0) → 1: w₁ + b ≥ 0 (1, 1) → 0: w₁ + w₂ + b < 0
Крок 2 · додаємо другу вимогу до третьої
(w₂ + b) + (w₁ + b) ≥ 0 → w₁ + w₂ + 2b ≥ 0 → w₁ + w₂ + b ≥ −b
Крок 3 · протиріччя

З першої вимоги b < 0, отже −b > 0. Разом із кроком 2 це дає w₁ + w₂ + b > 0. А четверта вимога каже, що ця сама величина менша за нуль. Обидва бути не можуть.

таких w₁, w₂, b не існує ∎

Це не «перцептрон погано вчиться на XOR» і не «потрібно більше даних». Потрібної прямої немає в природі, і жодний алгоритм навчання її не знайде. Причина суто геометрична: відрізок між точками (0, 0) і (1, 1) перетинає відрізок між (0, 1) і (1, 0). Опуклі оболонки класів мають спільну точку — центр квадрата, — а такі класи прямою не розділити ніколи.

Що з цього зробила історія. У 1969 році Марвін Мінський і Сеймур Пейперт випустили книжку «Перцептрони», де ретельно описали, чого одношарова конструкція не вміє, — і XOR був найнаочнішим прикладом. Книжка була математично бездоганною, але прочитали її ширше, ніж вона твердила: як вирок усьому напрямку, а не одному шарові. Наслідком стала перша «зима» штучного інтелекту — фінансування досліджень нейромереж різко скоротилось і не відновлювалось приблизно до середини 1980-х, поки не поширився алгоритм зворотного поширення помилки, який дозволив навчати кілька шарів одразу.

08 / Два шариДва нейрони й третій над ними

Найцікавіше, що вихід був відомий одразу, і Мінський із Пейпертом його теж описували. XOR не розділити однією прямою — але двома можна. Побудуймо розвʼязок руками з тих функцій, які ми вже реалізували в розділі 6.

Придивись до XOR ще раз: одиницю треба видати там, де хоча б один вхід одиничний і не обидва одразу. Це дослівний опис конструкції з трьох нейронів:

Перші два нейрони утворюють прихований шар: вони дивляться на ті самі вхідні дані, але кожен проводить свою пряму. Третій дивиться вже не на ознаки, а на відповіді перших двох — і проводить пряму в новому просторі, де координатами є h₁ і h₂. Підставмо всі чотири входи:

x₁, x₂h₁ = АБОh₂ = НЕ-Іz = h₁ + h₂ − 1.5yXOR
0, 001−0.500
0, 111+0.511
1, 011+0.511
1, 110−0.500

Схема 4 · Два нейрони плюс третій дають XOR

Ліворуч — схема зʼєднань із конкретними вагами на ребрах. Праворуч — та сама конструкція на площині: дві прямі вирізають смугу, у якій лежать обидві одиниці.

Дві прямі замість однієї — і задача розвʼязана. Пряма нейрона h₁ відрізає (0, 0), пряма нейрона h₂ відрізає (1, 1), а вихідний нейрон вимагає, щоб точка була з правильного боку обох. Смуга між прямими — це вже не півплощина, і саме тому вона не підпадає під доведення з розділу 7.

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

Чого це коштує. Ваги ми виписали руками, бо знали відповідь. Автоматично їх підібрати правило Розенблата не вміє: воно спирається на те, що для кожного прикладу відома правильна відповідь нейрона, а для прихованих нейронів її ніхто не знає — ніхто не казав, що h₁ має бути саме АБО. Ця задача — «розподілити провину між шарами» — і є той барʼєр, який тримав напрямок на місці до 1980-х. Розвʼязує її зворотне поширення помилки, і про нього — окрема тема 32, а тема 31 показує мережу цілком.

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

Він не дає ймовірностей. Сходинка видає нуль або одиницю, і все. Немає числа, яке можна порівняти з порогом, немає ROC-кривої, немає можливості сказати «покажи модератору двадцять найпідозріліших». Логістична регресія з теми 17 — той самий нейрон з іншою активацією — дає все це задарма.

Він чутливий до порядку прикладів і не має «найкращої» відповіді. Перемішай навчальну вибірку — отримаєш іншу пряму, бо правило зупиняється на першій, яка не помиляється. Жодного критерію якості серед розділювальних прямих у нього немає.

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

Де перцептрон усе-таки живий. Правило Розенблата — це онлайн-алгоритм: він оновлює ваги по одному прикладу й не тримає вибірку в памʼяті. Тому його ідея дожила у вигляді сучасних онлайн-методів для потокових даних, а його прямий нащадок — averaged perceptron, який усереднює ваги по всіх кроках, — довго був робочим інструментом для розмітки текстів. Але як модель для табличної задачі його місце — в історії й у підручнику.

10 / ДаліЩо далі

Підсумок теми в пʼятьох рядках. Штучний нейрон — це зважена сума входів плюс зсув, пропущена крізь одну функцію; біологічна аналогія поверхнева й нічого не пояснює. Зі сигмоїдою один нейрон дослівно дорівнює логістичній регресії, зі сходинкою — перцептронові Розенблата. Правило Розенблата виправляє ваги лише на помилках і не має ані функції втрат, ані градієнта. Воно гарантовано сходиться, якщо дані лінійно роздільні, — і не сходиться взагалі, якщо ні. А лінійна роздільність ламається на чотирьох точках XOR, і це не недолік навчання, а межа самої форми «одна пряма».

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

Далі в практиці. У practice.ipynb ми пишемо перцептрон з нуля десятком рядків, навчаємо його на тих самих оголошеннях і дивимось, як спадає кількість виправлень; звіряємо результат зі sklearn.linear_model.Perceptron; повертаємо на дошку завищені приманки й бачимо, як лічильник помилок стрибає вічно; порівнюємо з LogisticRegression на тих самих даних і збираємо XOR із трьох нейронів ручними вагами.

Далі в темі

Теорію прочитано. Тепер закріпи її на практиці.