Машина, що обертає ручки: граємо з ADALINE, першим нейроном, який можна навчити
У 1960 році професор Стенфордського університету на ім’я Бернард Уідроу і його аспірант Тед Хофф побудували машину, яка могла навчатися. Це не був код. Це була шафа з проводів, перемикачів і електрохімічних комірок — фізичний пристрій, у якому кожна вага в моделі була справжнім регульованим компонентом, і де «навчання» означало невеликі електричні струми, які переміщували атоми міді всередині крихітних скляних трубок. Вони назвали це ADALINE, скорочення від Adaptive Linear Neuron.
ADALINE є прямим предком кожної нейронної мережі, що працює сьогодні. З’єднання підсумовування, правило навчання, ідея про те, що машина може регулювати власні параметри на основі своєї помилки — усе це починається тут. І оскільки оригінал мав лише шістнадцять входів і один вихід, він досить малий, щоб ми могли перебудувати його на одній веб-сторінці та спостерігати, як він навчається перед нами.
Що може робити один нейрон?
Перш ніж відкрити кабінет, варто запитати, чого від нього очікувати. ADALINE — це єдиний нейрон — одна зважена сума, один поріг, нічого прихованого. Звучить майже нічого. Скільки насправді може зробити один нейрон?
Більше, ніж можна було б здогадатися, але з жорстким обмеженням — і варто знати обидві половини, перш ніж почати обертати ручки.
Стеля є реальною та низькою. Один нейрон обчислює одну зважену суму та перевіряє її знак, який геометрично являє собою один плоский розріз у просторі вхідних даних — одна лінія у 2D, одна площина у 3D, одна гіперплощина у 16D. Будь-які дві групи візерунків, які ви можете розділити одним прямим розрізом, можна навчитися розрізняти. Якщо ви не можете, це доведено ніколи: чотирьох пунктів XOR достатньо, щоб перемогти його назавжди, і саме ця помилка зупинила всю сферу на десятиліття та змусила винайти багаторівневі мережі. (Ми вженемо машину прямо в цю стіну у вправі 5.)
І все ж під цією стелею він виконує реальну роботу. Один нейрон може навчитися відрізняти намальоване T від J, перетворивши свої ваги на шаблон того самого, що він шукає. Той самий нейрон, те саме правило навчання, без зміни лише назв його входів і виходів, стає адаптивним фільтром — і в цьому маскуванні він скасовує відлуння під час трансконтинентальних телефонних дзвінків, вирівнює модеми та заглушає шум у навушниках, працюючи на робочому обладнанні протягом десятиліть. І правило, за яким він навчається — виміряти похибку, взяти похідну, підштовхнути кожну вагу до градієнта — це те, що працює в кожній нейронній мережі сьогодні, рядок за рядком.
Тож один нейрон водночас є найменшою річчю, яка може навчатися, і корисним інструментом сам по собі. Але це також атом усього, що з’явилося після нього — тож перш ніж почати крутити його ручки, варто запитати, що відбувається, коли у вас більше одного.
Що може зробити їх шар?
Якщо один нейрон малює один розріз, очевидним наступним кроком буде вишикувати кілька пліч-о-пліч — кожен зчитує однакові вхідні дані, кожен має свої ручки, кожен малює свій розріз. Це шар, і він дає вам лише одну річ: більше рядків одночасно. Там, де один нейрон може відповідати лише на «Т чи ні-Т», шар із двадцяти шести може відповісти «яка це літера» — по одному нейрону на клас, кожен запускає для себе. Багатокласове розпізнавання, робоча конячка кожного класифікатора з того часу, — це лише рядок ADALINE, які паралельно оцінюють вхідні дані.
Те, що шар не купує, так це спосіб обійти стелю. Кожен розріз, який він малює, залишається прямим. Прочитайте його виходи напряму, і XOR все ще неможливий — багато плоских ліній не те саме, що одна зігнута. І ви також не можете обманювати шляхом стекування: шар лінійних нейронів, що живить інший шар лінійних нейронів, згортається, алгебраїчно, назад у єдиний шар. Складені два плоских надрізи залишаються одним плоским надрізом.
Те, що нарешті згинає межу, — це шар, який живить інший шар із нелінійним кроком, вклиненим між ними — тож другий шар починає працювати над деформованою версією вхідних даних, яку перший не міг відокремити. Цей єдиний інгредієнт — це стрибок від ADALINE до MADALINE, а пізніше до backprop; ми досягаємо його ближче до кінця. Наразі пам’ятайте про сходи: один нейрон, один розріз; один шар, багато надрізів; укладені шари з нелінійністю, вигнуті зрізи. Усе в цій статті знаходиться на нижній сходинці — тож з цього ми й почнемо.
Але шістнадцять ручок - це багато, щоб дивитися відразу. Почніть з найменшої версії, яка все ще має всі важливі частини: два входи, дві ручки, один вихід. Кожна ручка встановлює одну вагу; лічильник показує зважену суму ; світлодіод повідомляє про свій знак. Більше нічого немає.
Візьміть будь-яку ручку та поверніть її. Стрілка відстежує вашу руку в режимі реального часу, а живе рівняння під нею точно показує, чому: ви змінюєте одне число в двочленній сумі, і ця сума є результатом. Поверніть ручку досить далеко, і стрілка перетне нуль — індикатор передбачення перемикається з на . Це вся ідея ваги: пряме, фізичне керування відповіддю.
Отже, ось як змусити машину говорити те, що ви хочете. Встановіть два перемикачі на потрібний шаблон введення, виберіть ціль за допомогою кнопок (синя пунктирна лінія на лічильнику позначає це), потім набирайте ручки на око, доки стрілка не впаде на неї. Правила навчання не потрібні — ви просто побудували потрібний результат, обертаючи ручки. Тепер натисніть Train step і спостерігайте, як машина обертає ті самі дві ручки за вас, потроху штовхаючи до цілі. Автоматичне обертання ручки є правилом LMS, яке ми виведемо нижче — воно не робить нічого, що ви не могли б зробити вручну; він просто вибирає напрямок і кількість. Єдине, що змінюється, коли ми збільшуємо масштаб, це кількість ручок.
Ось повна машина.
Як грати: перемикайте перемикачі праворуч, щоб намалювати візерунок, виберіть цільову мітку (+1 або −1) і натисніть Крок тренування. Кожне натискання виконує один прохід за правилом найменшого середнього квадрата — того самого правила, яке Відроу і Хофф вивели в 1960 році — і ви побачите, як обертаються шістнадцять шкал ваг. Зробіть це достатньо разів із кількома різними шаблонами, і машина навчиться їх розрізняти.
Решта цієї статті розповідає про те, на що ви насправді дивитеся — звідки взялася машина, що насправді представляли циферблати в оригінальному обладнанні, чому працює правило навчання та що збереглося від ADALINE у сучасному трансформаторі.
Звідки це взялося
Бернард Уідроу прибув до Стенфорда з Массачусетського технологічного інституту в 1959 році, йому було двадцять дев’ять років, і його нещодавно взяли на посаду асистента професора електротехніки. Френк Розенблат щойно опублікував персептрон за рік до цього — одношарову навчальну машину, яка привернула величезну увагу преси, включно з відомою статтею в New York Times, яка передбачала машини, які незабаром будуть «ходити, говорити, бачити, писати, відтворювати себе і усвідомлювати своє існування». Уідроу хотів побудувати щось подібне, але з правилом навчання він міг вивести з перших принципів, а не аргументувати евристично.
Його перший аспірант, Марсіан «Тед» Гофф, який пізніше винайшов мікропроцесор Intel 4004, взявся за апаратне забезпечення. Вони двоє опублікували “Адаптивні комутаційні схеми” на конференції WESCON 1960 року, представивши як машину, так і правило LMS в одній статті. ADALINE означає Адаптивний лінійний нейрон.
Мемістор. В оригінальному ADALINE кожна гиря була мемістором — пристроєм, винайдений Уідроу спеціально для цього проекту. Мемістор являв собою маленьку скляну трубку з графітовим стрижнем, зваженим у розчині мідного купоросу. Пропускання струму в одному напрямку через трубку з мідним покриттям на стрижень, потовщення його та зниження його опору. Струм, що біжить в іншу сторону, знеструмлював мідь, підвищуючи опір. Опір стрижня був вагою. Без стану програмного забезпечення, без реєстру в пам’яті — кожна вага була фізичною кількістю міді на металевому стрижні, що регулювалася електролізом.
Навчання було електрохімія. Ви встановили вхідні перемикачі, дозволили сумуючому з’єднанню обчислити , виміряли помилку і пропустили невеликий струм через кожен мемістор, пропорційний — точне оновлення LMS. Кілька мілісекунд струму на шаблон, кілька тисяч шаблонів, і мідь перерозподілилася на ваги, які розпізнають T і відхиляють J.
“Knobby ADALINE” — машина на фотографії, яка використовується в кожному підручнику — була дещо пізнішим демонстратором, орієнтованим на навчання. Мемістори були замінені фізичними потенціометрами, стрижні яких можна було схопити та повернути, щоб учні могли спостерігати за правилом навчання під час роботи та навіть вручну встановлювати ваги, щоб побачити, як змінюються прогнози. Наша симуляція імітує цю версію, оскільки вона більш зрозуміла.
MADALINE. У 1962 році Уідроу та його колеги з’єднали кілька ADALINE разом у Multiple ADALINE — MADALINE. Ця машина вирішила свою першу справжню промислову проблему незабаром після: адаптивного придушення відлуння на міжміських телефонних лініях, яке AT&T запустило у виробництво та працювало десятиліттями. Якщо ви коли-небудь мали чіткий телефонний дзвінок через океан, прямий нащадок ADALINE був десь у колі.
Перейменування. У 1969 році Марвін Мінскі та Сеймур Пейперт опублікували Perceptrons, книгу-доказ того, що однорівневі мережі, такі як ADALINE, не можуть вивчати прості функції, такі як XOR. Фінансування нейронних мереж згорнулося. Коли Уідроу писав про свої машини в 1970-х і 80-х роках, він почав називати абревіатуру Адаптивний лінійний елемент — ті самі літери, але без слова «нейрон». Бренд став пасивом. До середини 1980-х і повторного відкриття зворотного розповсюдження (Румельхарт, Хінтон і Вільямс, 1986), щоб багатошарові мережі пройшли межу XOR; “нейронний” знову став безпечним словом лише в 1990-х роках.
Уідроу, якому зараз за дев’яносто, залишається почесним професором електротехніки в Стенфорді. Канонічна ретроспектива, яку він написав — “30 років адаптивних нейронних мереж: персептрон, Мадалін і зворотне поширення” (Widrow & Lehr, Proceedings of the IEEE, 1990) — це єдина стаття, яку варто прочитати, якщо ви хочете отримати історію від джерела, з кожною діаграмою та кожною кривою конвергенції.
Що таке циферблати
Машина складається з трьох видів частин, і разом вони реалізують одне рівняння.
Перемикачі — шістнадцять перемикачів, розташованих у вигляді сітки 4×4 праворуч. Кожен перемикач зберігає одне вхідне значення , (вгору, горить) або (вниз, тьмяний). Ви встановлюєте їх вручну; це те, як ви малюєте візерунок, на який бажаєте дивитися машина. У оригінальному обладнанні Уідроу це були справжні електричні тумблери, підключені до решти схеми.
Ручки — шістнадцять кремових циферблатів, розташованих у вигляді сітки 4×4 зліва. Кожна ручка зберігає один ваговий коефіцієнт у діапазоні , фізично представлений як кут повороту її покажчика. Вказівка прямо вгору означає ; повний правий – ; повністю ліворуч – . Ви можете перетягнути будь-який регулятор за допомогою миші, щоб установити його вагу вручну. Разом із прихованим упередженням , ці сімнадцять чисел є цілою моделлю — кожною частиною інформації про світ, яку має машина. (Така сама ідея, що й у розділі “нейронна мережа - це лише параметри” попередньої статті: ваги є мережа.)
Підсумковий вузол — кремовий метр із чорною голкою. Це єдиний елемент електроніки, який дійсно щось обчислює. Він бере кожен перемикач, множить його на свою парну ручку, додає всі шістнадцять продуктів і коливає голкою, щоб показати результат:
Коли стрілка знаходиться в мертвій точці, . Коли він коливається праворуч, сума додатна. Ліворуч, негатив. Це рівняння зваженої суми плюс зміщення є тим самим рівнянням, яке обговорювалося в анотації в Що насправді роблять лінійні моделі — воно використовується для підгонки рядків до безперервних даних, тут використовується для визначення відповідності шаблону вивченому шаблону.
Передбачення. Машина не повідомляє безпосередньо — вона повідомляє його знак. Якщо , він вирішує "" і запалює зелений світлодіод. Якщо , він визначає "" і загоряється помаранчевим. Цей останній крок ознаки є порогом або «рішенням» класифікатора:
Ось і весь прохід вперед: перемикаємо ручку часу, підсумовуємо все, перевіряємо знак. Ні множення матриці, ні softmax, ні прихованих шарів. Просто зважена сума, за якою йде порогове значення — і все ж це будівельний блок, з якого складається кожна сучасна мережа.
Просторовий трюк
Ручки та перемикачі спеціально розташовані в однаковій формі 4×4. Ручка в положенні множиться на перемикач у положенні . Це не принципово для математики — ваги можна пронумерувати як завгодно — але це робить вивчену структуру видимою. Коли машина розучила букву T, ручки самі вимовляють T: усюди, де T має «увімкнений» піксель, відповідна ручка повертається вправо (позитивна вага → цей піксель сприяє ); там, де T вимкнено, ручку повертають ліворуч. Сітка ваг стає зображенням того, що шукає машина.
Як воно вчиться
Передача вперед була легкою: помножити та підсумувати. Важка частина полягає в навчанні — з’ясувати, як підштовхувати кожне з сімнадцяти чисел, щоб прогнози ставали кращими.
Відповіддю Уідроу та Гоффа в 1960 році було правило найменших середніх квадратів (також зване правилом дельти або правилом Уідроу–Гоффа). Це одне рівняння на вагу:
і один для упередженості:
Тут — цільова мітка ( або ), — поточний вихід сумарного з’єднання, а — невелике число, яке називається швидкість навчання — у цій машині . Величина — це помилка: наскільки машина помиляється прямо зараз, виміряна за аналоговою сумою, а не за пороговим прогнозом.
Натисніть Train step, і машина зробить саме це: вона зчитує , віднімає його від , множить на і на кожен вхід по черзі та додає результат до кожної ваги. Кожен покажчик трохи обертається, стрілка коливається, світлодіод може перевертатися. Якщо натиснути достатньо разів на той самий візерунок, голка закріпиться на цільовому значенні, і помилка зменшиться майже до нуля — машина розучила цей один шаблон. Натисніть його на другий візерунок з протилежною міткою, і ручки переставте таким чином, щоб підходити до обох одночасно.
Чому саме це правило
Коротка відповідь - обчислення. Визначте квадрат помилки одного передбачення — той самий Втрата MSE, який використовувався в попередній статті:
Диференціюйте відносно , просуваючи правило ланцюга через :
Крок у напрямку негативного градієнт, масштабованого :
Це правило LMS. Це градієнтний спад квадратичної помилки, застосований до одного нейрона. Єдина справжня різниця між цим оновленням і SGD, який ви запустили б у PyTorch сьогодні, — це розмір мережі та форма втрати. Переміщення — помилка обчислення, взяття похідної, штовхання в протилежному напрямку — ідентичний.
Чому помилка використовує суму, а не рішення
Ви могли очікувати, що помилка буде — «наскільки неправильним є остаточне рішення» — а не , «наскільки неправильною є аналогова сума». Є дві причини: одна технічна, а друга практична.
Технічна інформація: поріг є ступінчастою функцією. Його похідна скрізь дорівнює нулю, крім , де він не визначений. Ви не можете виконати градієнтний спуск через щось, нахил якого дорівнює нулю — кожне оновлення буде нульовим, навчання не буде. LMS обходить це, виконуючи градієнтний спуск на плавній сумі перед порогом. На час передбачення поріг все ще існує; це просто не в циклі навчання.
Практично: безперервна помилка дає градуйований сигнал. Навіть якщо рішення вже правильне — скажімо, і — виникає значуща помилка , і LMS продовжує змінювати далі від нуля, роблячи прогноз більш впевненим. Післяпорогова помилка повідомить тут і припинить навчання, залишивши машину на відстані одного шуму від неправильної класифікації.
Ця хитрість — навчання на помилці перед активацією — досі працює в кожній сучасній мережі. Перехресна втрата ентропії, MSE, усе; усі вони працюють на безперервній величині перед прийняттям рішення, а не на дискретному передбаченні.
Геометричний вид
Є чисте геометричне читання всього, що ви щойно бачили — передача вперед і правило навчання разом. Як тільки ви побачите це, сімнадцять чисел перестануть бути списком і стануть однією стрілкою в просторі з однією плоскою межею, перпендикулярною до неї.
Ми збираємося розглянути ту саму величину у трьох представленнях, кожне з яких відкриває іншу інтуїцію: скалярну суму, яку ми вже маємо (), векторний скалярний добуток () і геометричне читання ( = відстань зі знаком від вхідного шаблону до гіперплощини). Усі троє обчислюють одне й те саме число; що зміни, це те, що ви можете побачити про машину.
Вагові коефіцієнти є стрілкою. Шістнадцять є компонентами одного вектора у 16-вимірному просторі — по одній осі на вхід. Кожен вхідний шаблон також є вектором у тому самому просторі: кожен перемикач вносить одну координату, або . Уся робота підсумовувального з’єднання — це одна операція над цими двома векторами:
Це скалярний добуток плюс зміщення. Геометрично скалярний добуток — це проекція зі знаком на напрямок — міра того, наскільки далеко вздовж цього напрямку лежить візерунок.
Порогове значення є гіперплощиною. Набір вхідних даних, де — межа між зеленим і помаранчевим світлодіодами — це плоска плита, перпендикулярна до , зміщена від початку координат на . У двох вимірах ця межа є лінією; у трьох — літак; у шістнадцяти це п’ятнадцятимірний гіперплан. Така сама форма, лише на один вимір менше, ніж простір, у якому він живе. Будь-який візерунок на стороні, на яку вказує , дає , а світлодіод горить зеленим; будь-який візерунок на протилежному боці дає і світиться оранжевим. Загальна думка машини щодо будь-якого введення полягає в тому, з якого боку однієї плоскої межі він потрапляє та як далеко.
Це також говорить вам, що означає величина : це (пропорційно) відстань зі знаком від до цієї площини. Візерунок далеко від межі на стороні дає великий позитивний — впевнений , голка спрямована праворуч. Шаблон, який лежить точно на межі, дає — мертву точку голки, світлодіод може рухатися в будь-яку сторону.
Тренування полягає в обертанні та ковзанні площини. Кожне оновлення LMS налаштовує компоненти ваги, а налаштування повертає площину, яка до неї перпендикулярна. Кожне оновлення ковзає літаком, не обертаючи його. Уся процедура навчання — це одна плоска межа, яку просувають у 16-D просторі, доки шаблони не опиняться на боці , а шаблони — на іншому. Ручки, голка, світлодіод — кожен видимий елемент машини є зчитуванням поверхні цієї єдиної площини обертання та ковзання.
Це дає найчіткіший однорядковий опис того, що насправді робить ADALINE: пошук правильних і це знаходження правильної гіперплощини. Сімнадцять ручок і межа — це не дві окремі речі, якими жонглює машина — це один і той самий об’єкт, виражений двома способами. Відрегулюйте ручки, і ви відрегулювали межу; виберіть межу, і ви вибрали ручки.
Багато площин підійде — тому «найкраща» — окреме питання. Якщо візерунки взагалі лінійно роздільні, їх розділяє нескінченна кількість площин. LMS гарантує лише те, що знайде один, а не той, у якого найбільший розрив між кластерами чи найсильніше узагальнення невидимих вхідних даних. Вибрати, яку розділювальну площину — ту, яка максимізує запас між класами — це інша проблема, і відповідь на неї (машини опорних векторів Володимира Вапника, 1995) не прийде протягом тридцяти п’яти років.
Ви не можете побачити це у віджеті з 16 кнопками. Ви не можете намалювати 16-D стрілку або 15-D гіперплощину. Два виміри — це найбільший випадок, коли геометрія чітко розміщується на сторінці — один вхідний сигнал на осі x, інший — на осі y, намальовано буквальною стрілкою, а межа рішення — буквальною лінією. Віджет у вправі 5 є саме таким: ADALINE із двома входами зі стрілкою та лінією, намальованою для вас. Лінія, за якою ви спостерігатимете, як стає на місце, — це той самий літак, який безшумно обертається всередині 16-D машини вгорі — лише той, який ви нарешті можете побачити.
За межами однієї площини. Одна плоска межа може відокремлювати лише шаблони, які вже є лінійно роздільними у вхідному просторі, а більшість цікавих наборів даних — ні. Шлях втечі не є розумнішим літаком; це укладання шарів, щоб мережа могла згинати сам вхідний простір, деформуючи нероздільні кластери в нову геометрію, де достатньо однієї плоскої площини. Нейронні мережі, різновиди та топологія Кріса Ола — це канонічна візуальна демонстрація — аркуші вхідного простору розтягуються, згинаються та роз’єднуються послідовними шарами, доки єдина гіперплощина нарешті не зможе зробити розріз. ADALINE – це те, що відбувається, коли у вас є лише один такий розріз і жодної деформації. MADALINE, у наступному розділі, є першою спробою додати деформацію.
Що спробувати
Кілька речей для гри. Кожна вправа вивчає інший фрагмент малюнка.
1. Навчіть одну букву
Натисніть RESET, щоб у випадковому порядку вибрати всі шістнадцять регуляторів. Навантаження T. Мета вже на . Натисніть Поїзд ×20.
Спостерігайте, як кремові ручки обертаються у вигляді візерунка. Наприкінці ви побачите щось вражаюче: ручки, які вирівнюються з пікселями «увімкнено» Т — верхній ряд і вертикальна смуга посередині — усі повернуті праворуч, у бік позитивних ваг. Ручки для пікселів, які T не використовує, повернуті ліворуч. Сітка ручок стала зображенням Т. Ваги — це шаблон, з яким машина зіставляється.
2. Навчіть його двом буквам одночасно
Відразу після кроку 1 Завантажте J і переверніть Ціль на . Знову натисніть Train ×20. Тепер машині було показано два шаблони з протилежними мітками.
Поверніться до Навантаження T (ціль ) без навчання. Де голка? Він має бути на стороні . Зробіть те саме для Load J — голка на . Один набір із шістнадцяти ручок навчився класифікувати два візерунки. Це пам’ять, фізична та регульована.
3. Керуйте виходом за допомогою однієї ручки
Забудьте на мить про правило навчання та візьміть керування самостійно. Після кроку 2 машина читає T як — завантажте T, і голка сидить на зеленій стороні. Тепер виберіть одну ручку та повільно перетягніть її. Слідкуйте рукою за рухом стрілки: кожен градус, на який ви повертаєте вказівник, додає або віднімає внесок цієї ручки від суми, і голка відстежує це в реальному часі. Продовжуйте обертати, поки стрілка не перетне мертву точку, а світлодіодний індикатор не зміниться із зеленого на оранжевий. Ви щойно змінили відповідь машини, налаштувавши одну вагу — без тренувань, без сигналу про помилку, лише одна ручка й результат, який ви хотіли.
Ось і вся суть мініатюри: вага — це пряма фізична ручка на виході. Положення стрілки є не що інше, як сума шістнадцяти таких ручок, і переміщення будь-якої з них змінює результат. Правило навчання з наступного розділу не робить нічого більш таємничого, ніж це — воно повертає ті самі ручки, просто вибираючи напрямок і кількість для вас, а не залишаючи це на ваш погляд. (Це саме те ручне налаштування, яке робили лабораторії персептронів наприкінці 1950-х років до того, як існувало правило навчання; вправа 4 таким чином створює цілий шаблон.)
Потім поверніть його: натисніть Train step кілька разів із завантаженим поточним шаблоном. Машина штовхає ту ручку назад до значення, яке відповідає всім відомим шаблонам. Інші злегка метушаться — з введенням кожна вага оновлюється кожного кроку — але вони вже були близькі до правого, тому швидко повертаються. Ви перемістили результат вручну; правило навмисно повертає його назад.
4. Тренуйте його вручну
Натисніть RESET, щоб кожна ручка була близько до нуля. Не натискаючи Train, перетягніть кожну ручку самостійно: поверніть ручки для «увімкнених» пікселів T до упору вправо, а решта до кінця вліво. Потім Завантажте T і перевірте голку. Ви щойно навчили машину за допомогою очного яблука — це буквально те, що відбувалося в лабораторіях перцептронів наприкінці 1950-х років, до того, як існувало правило Уідроу. Правило навчання не робить нічого, що ви не могли б зробити вручну; це просто автоматизує очне яблуко.
5. Знайдіть його стелю
Скинути, потім навчити T як , потім L як , потім J як (по двадцять кроків кожен). Тепер усі три мають бути правильно класифіковані — T стає додатним, L і J — від’ємними.
Тепер спробуйте складніший набір. Візьміть букву Т і вручну поверніть один перемикач — скажімо, верхній лівий кут — створіть «ламану Т». Тренуйте цю ламану T, щоб націлюватися на , водночас бажаючи, щоб чиста T залишалася на . Продовжуйте прокручувати всі чотири візерунки (чиста T, зламана T, L, J) і натискати Train ×20 на кожному.
Іноді це збігається; частіше помилка просто підстрибує й ніколи не усувається. Це фактична стеля ADALINE. Один шар ваг може розділяти візерунки лише однією прямою гіперплощиною через простір входів. Будь-який набір візерунків, який не можна розрізати однією плоскою площиною, недосяжний. Це саме те обмеження, опубліковане Мінським і Пепертом у 1969 році — обмеження, для подолання якого були винайдені багатошарові мережі і зворотне поширення.
Важко зрозуміти чому в 16 вимірах. У двовимірному режимі ви можете побачити це безпосередньо. Нижче наведено мініатюрний ADALINE лише з двома входами — кожен візерунок тепер є окремою точкою на площині, кожен вектор ваги — це стрілка, а «межа рішення» — це одна лінія, яка обертається, коли машина тренується. Натисніть TRAIN ×50 на наборі даних SEPARABLE: лінія переходить у проміжок між двома кластерами, і помилка зменшується майже до нуля. Тепер перейдіть на XOR: той самий алгоритм, що працює на чотирьох точках, які не можуть бути розділені жодною лінією, ніколи не завершується. Лінія нахиляється в одну сторону, потім в іншу, потім назад. Це нескінченне підстрибування — це саме те, що відбувається в 16 вимірах, коли ви просите ADALINE зробити щось лінійно неможливе — ви просто не бачите цього прямо.
6. Перегляньте помилку
Виконуючи кожну вправу вище, стежте за значенням err у нижній смузі. Відразу після завантаження нового шаблону зазвичай є до . Після кількох кроків Train він падає близько до нуля й залишається там. Якщо він відмовляється стискатися, або ви досягли ідеальної посадки (світиться світлодіод, закріплена голка — усе готово), або ви досягли межі лінійної роздільності з вправи 5, і немає єдиного налаштування з шістнадцяти ручок, яке могло б задовольнити всі візерунки, які ви просили одночасно.
Що було далі: MADALINE
Стеля XOR була справжньою проблемою, і Уідроу це знав. У 1962 році він і його наступний аспірант об’єднали декілька ADALINE разом у Кілька ADALINE — MADALINE — і запитали, чи може мережа ADALINE робити те, що не може один.
Наведена нижче архітектура є найпростішою, яка забезпечує: два входи, три блоки ADALINE у прихованому шарі та фіксовану більшість голосів як об’єднувальний шар. Кожен прихований блок є мініатюрним ADALINE, обчислюючи і випромінюючи . Остаточним прогнозом є більшість . Набір даних — це XOR — точне завдання, яке занурює одношарову машину.
Натисніть TRAIN ×20 EPOCHS і подивіться, як він працює. Слід звернути увагу на кілька речей.
Спалах повідомляє, який МРТ щойно вибрав. Щоразу, коли МРТ оновлює прихований блок, навколо нього протягом частки секунди блимає кільце кремового кольору. Це одиниця, яку правило визначило як «найлегшу для перекидання» — та, чий був ближче до нуля серед одиниць, які проголосували неправильно.
Тут немає градієнта. Приховані одиниці проходять через функцію перед голосуванням, і ви не можете відрізнити один крок. Саме цю проблему Уідроу та його студенти не змогли вирішити за допомогою обчислень у 1962 році. Правило MADALINE I (MRI) — навчальне правило, яке реалізує цей віджет — це хак 1962 року: якщо кінцевий результат неправильний, знайдіть один прихований ADALINE, який зараз голосує неправильно, і чия порогова сума найближча до точки перевороту, а потім виконайте один крок LMS на просто цю одиницю, щоб збільшити її суму до нуля. Повторюйте, доки результат не буде правильним або ви не здастеся. Повторіть візерунок. Прокрутіть усі чотири. Це евристичний, він потворний, він іноді застрягає в конфігураціях, від яких не допомагає жоден переворот — і все ж він працює досить часто, щоб бути корисним.
Іноді він вирішує XOR, іноді ні. Залежно від випадкової ініціалізації ви побачите один із трьох результатів: (a) помилка досягає 0/4 протягом кількох епох і залишається там — MADALINE навчилася XOR, чого, як доведено, ADALINE не може; (b) він коливається, коли помилка змінюється між 2/4 і 0/4, коли тренування бореться; (c) він осідає на іншій неправильній конфігурації. Натисніть RESET і повторіть спробу. Витонченість — це історія, а не помилка в симуляції.
Що MADALINE зробив у виробництві. Незважаючи на незграбність правила навчання, Уідроу використовував MADALINE (та його наступників MRII, MRIII) для вирішення реальних проблем у 1960-х і в 1980-х роках — адаптивне придушення відлуння на міжміських телефонних лініях (запущено у виробництво AT&T), адаптивне формування променя антени, модемний канал вирівнювання. Ці фільтри були нейронними мережами в комерційному розгортанні, які тихо працювали всередині інфраструктури, цілих два десятиліття до того, як «відродження нейронних мереж» наприкінці 1980-х років знову зробило це слово респектабельним.
Справжнє виправлення прийшло в 1986 році. Незручність МРТ є прямим наслідком того, що не має корисного градієнта. Замініть його згладженою нелінійністю (сигмоїда, пізніше tanh, пізніше ReLU), і правило ланцюга почне працювати на всьому шляху вниз через шари — це саме те, що зворотне поширення. Проблему прихованих одиниць МЕДАЛІН не розв’язує розумніша евристика; його розчиняється шляхом вибору іншої функції активації, так що «яку одиницю оновити» перестає бути пошуком і стає обчисленням.
Інше кадрування: ADALINE як адаптивний фільтр
Розповідь про MADALINE-on-AT&T, наведену вище, варто зупинитися, оскільки вона розкриває те, що фреймінг «першої нейронної мережі» має тенденцію затемнювати: правило LMS і адаптивний фільтр — це той самий алгоритм, а вбивче застосування статті Уідроу 1960 року було зовсім не розпізнаванням шаблонів, а обробкою сигналу.
Проблема. Міжміський телефонний дзвінок у 1960-х роках проходив через чотирипровідну магістраль між містами та двопровідною локальною петлею на кожному кінці, з’єднаною частиною аналогового обладнання, що називається гібридним з’єднувачем. Ідеальний гібрид направлятиме голос далекого динаміка у ваш навушник, а ваш голос – у багажник без витоку. Справжні гібриди не були досконалими. Невелика частина вашого голосу просочилася через з’єднувач на дальньому кінці, подолала всю країну й через кілька сотень мілісекунд потрапила у ваш динамік. Це відлуння — ваш власний голос, із затримкою достатньо довго, щоб бути безпомилковим, достатньо тихим, щоб звести з розуму. Розмова зруйнована.
Хитрість. Ви не можете зупинити витік. Але якщо ви знаєте, що ви щойно надіслали, і знаєте, як шлях луни спотворить його (затримка , ослаблення , можливо, деяке змазування), ви можете передбачити луну до того, як вона прийде назад, і відняти своє передбачення від зворотного сигналу. Залишилося те, що насправді сказав дальній спікер. Вся робота компенсатора полягає в тому, щоб вивчити імпульсну характеристику ехо-шляху достатньо добре, щоб скасувати її в реальному часі.
Зіставлення з ADALINE є точним. Перемістіть зображення машини з 16 ручками на телефонну лінію та перейменуйте кожну частину:
| частина ADALINE | Еквівалент адаптивного фільтра |
|---|---|
| Ручки | Відводи фільтра — імпульсна характеристика, що вивчається |
| Перемикачі | Ковзне вікно останніх зразків TX — те, що ви щойно надіслали |
| Сумуючий спай | Прогнозована луна на даний момент |
| Ціль | Зворотній сигнал (RX) — що насправді надходить |
| Помилка | Залишкова луна — те, що насправді чує слухач |
| Оновлення LMS | Таркніть оновлення — точно так само |
Ті самі рівняння, однакові гарантії збіжності. Єдине, що змінилося, це те, що означають входи та виходи.
Те, на що ви дивитеся. Верхня траса (TX) — це вихідний сигнал — синтетична суміш синусоїдальних хвиль, що замінюють мову. Середня траса (RX) — це те, що повертається: той самий сигнал із затримкою на вибірки і масштабований на , плюс невеликий шум навколишнього середовища. Нижня траса (RES) – це залишкова величина: RX мінус передбачення фільтра. Стовпчаста діаграма — це шістнадцять вагових коефіцієнтів — починайте з нуля, тому фільтр нічого не прогнозує, а залишок є відлунням. Натисніть НАВЧАННЯ, і правило LMS почне регулювати відводи, один зразок за раз, щоб привести залишкову до нуля. Протягом кількох секунд ви побачите, як один кран підніметься у високий сплеск з індексом , інші залишаться біля нуля, а залишкова рівна лінія. Фільтр виявив імпульсну характеристику луни, спостерігаючи за помилкою. Ось і вся хитрість.
Чому він має бути адаптивним. Фіксований фільтр, у принципі, підійде, якби ехо-шлях був фіксованим. Це не так. Зміни температури кабелю, перемикання мереж змінюють маршрути, гібриди старіють, клієнти беруть і кладуть трубку. Перемкніть DRIFT, і справжня затримка та затухання почнуть тремтіти; фільтр переслідує їх. Фільтр ніколи не завершується. Він працює постійно під час дзвінка, постійно переналаштовуючись. Ось що означає «адаптивний» у адаптивній фільтрації, і це саме те, що онлайн SGD робить у сучасних нейронних мережах: ніколи не зависає, завжди оновлюється.
Чому цей фреймінг був реалізований, а «нейронна мережа» — ні. Публікація Perceptrons Мінські та Пейперта в 1969 році зробила «нейронну мережу» токсичною для фінансування та респектабельності на ціле десятиліття. Але та сама математика, представлена як адаптивна фільтрація в журналах обробки сигналів IEEE, не викликала суперечок — вона вирішувала реальні проблеми, мала чисті докази конвергенції, не потребувала біологічної метафори. Тож Уідроу та його студенти продовжували публікувати під рамками фільтра, продовжували здійснювати реальне розгортання (приглушення відлуння AT&T, вирівнювання модемів, формування променя антени, ANC для шоломів пілотів) і підтримували правило LMS через те, що інакше було б десятиліттям мовчання. Відродження нейронних мереж наприкінці 1980-х років успадкувало робочий алгоритм, який весь час спокійно працював у телекомунікаційному обладнанні.
Де живе сьогодні. Список довгий. Активне шумопоглинання в навушниках (передбачення шуму із зовнішнього мікрофона, відтворення його в навушниках). Слухові апарати (відніміть свист зворотного зв’язку від входу мікрофона). Вирівнювання лінії модему та DSL (відміна частотної характеристики каналу). Бездротове формування променя MIMO. Навіть акустичне ехоподавлення раннього покоління в гучномовцях і Zoom є прямим інтелектуальним нащадком системи AT&T — те саме оновлення LMS, той же FIR із ковзним вікном, просто працює на ЦП замість мемісторів. ADALINE не зникла лише в глибокому навчанні. Він також скользнув боком у DSP і більше не виходив.
Що вціліло
Якщо ви дивитеся на правило оновлення ADALINE, кожна сучасна нейронна мережа вже є в ньому.
Форма оновлення ідентична. У PyTorch, з будь-якою архітектурою, яка вам подобається, навчання зводиться до:
Це саме те, що ADALINE робить, одну вагу за раз: візьміть градієнт втрати відносно параметра, помножте на швидкість навчання, відніміть. Єдина відмінність між статтею Уідроу 1960 року та методом .step() на сучасному оптимізаторі полягає в тому, що втрати є більш складними, а вектор параметрів у мільярд разів довший. Ход той самий.
Застосувався шаблон «плавна втрата, дискретне рішення». Кожен класифікатор, який ви тренуєте сьогодні, дотримується розділу, представленого ADALINE: безперервна втрата для навчання, дискретне передбачення під час висновку. Перехресна ентропія на ймовірностях softmax замінює квадрат помилки на знаковій функції, але структура ідентична — диференційована для циклу навчання, порогове значення в момент передбачення. LMS — це не просто правило навчання; це була демонстрація того, що це поділ потрібне, якщо ви взагалі хочете зробити градієнтний спуск.
Оновлення для прикладів розпочато тут. ADALINE оновив свої ваги після кожного шаблону — те, що ми тепер називаємо online SGD, або розмір партії . Більші міні-серії з’явилися пізніше як обчислювальна оптимізація; алгоритмічна суть полягає в тому самому одному прикладі оновлення, яке Уідроу записав у 1960 році.
Що потрібно було додати пізніше:
-
Приховані шари. ADALINE був одним шаром. Складання нейронів у стек і просування градієнтів назад через них вимагало зворотне поширення — правила ланцюга, яке неодноразово застосовувалося до стеку — яке Румельхарт, Хінтон і Вільямс формалізували в 1986 році. ADALINE може провести лише одну пряму лінію через простір введення; backprop — це те, що дозволяє малювати криві.
-
Нелінійні активації. ADALINE використав як своє рішення — ступінчасту функцію без градієнта. Заміна цього кроку плавною нелінійною активацією (sigmoid, tanh, пізніше ReLU) перетворює стек лінійних шарів на справжній апроксиматор нелінійної функції. Без нього десятишарова мережа математично згортається до одного шару.
-
Автоматична диференціація. Уідроу вивів LMS вручну — один папір, одне правило. Кожна сучасна структура автоматично отримує еквівалентне правило для будь-якої моделі, яку ви визначаєте. Математика ідентична; людська праця зовсім інша.
Також відсутні в ADALINE і додані пізніше: регулярізація, пакетна нормалізація, вилучення, принципова ініціалізація ваги, графіки швидкості навчання, адаптивні оптимізатори, такі як Adam, увага, згортка, трансформатори, графічні процесори. Усе це — розробки на основі ядра, яке вже було в ADALINE: параметрична модель, параметри якої коригуються, дотримуючись градієнта безперервних втрат до цілі.
Першою нейронною мережею, яку можна було навчити, були шістнадцять ручок, лічильник і правило для обертання ручок. Відтоді все є розробкою цих трьох частин.