Топ питань
Часова шкала
Чат
Перспективи
Штучна нейронна мережа
математична модель, побудована за принципом організації та функціонування біологічних нейронних мереж З Вікіпедії, вільної енциклопедії
Remove ads
Шту́чні нейро́нні мере́жі (ШНМ, англ. artificial neural network), які зазвичай просто називають нейронними мережами (НМ, англ. neural networks, NN) або нейромережами (англ. neural nets),[1] це обчислювальні системи, натхнені біологічними нейронними мережами, які складають мозок тварин.[2]

ШНМ ґрунтується на сукупності з'єднаних вузлів (англ. units, nodes), які називають штучними нейронами, які приблизно моделюють нейрони біологічного мозку. Кожне з'єднання, як і синапси в біологічному мозку, може передавати сигнал до інших нейронів. Штучний нейрон отримує сигнали, потім обробляє їх і може сигналізувати нейронам, з якими його з'єднано. «Сигнал» у з'єднанні це дійсне число, а вихід кожного нейрона обчислюється деякою нелінійною функцією суми його входів. З'єднання називають ребрами (англ. edges). Нейрони та ребра зазвичай мають вагу[en] (англ. weight), яка підлаштовується в процесі навчання. Вага збільшує або зменшує силу сигналу на з'єднанні. Нейрони можуть мати такий поріг, що сигнал надсилається лише тоді, коли сукупний сигнал перевищує цей поріг.
Як правило, нейрони зібрано в шари (англ. layers). Різні шари можуть виконувати різні перетворення даних свого входу. Сигнали проходять від першого шару (шару входу) до останнього (шару виходу), можливо, після проходження шарами декілька разів.
Remove ads
Тренування
Узагальнити
Перспектива
Нейронні мережі навчаються (або, їх тренують) шляхом обробки прикладів, кожен з яких містить відомий «вхід» та «результат», утворюючи ймовірнісно зважені асоціації між ними, які зберігаються в структурі даних самої мережі. Тренування нейронної мережі заданим прикладом зазвичай здійснюють шляхом визначення різниці між обробленим виходом мережі (часто, передбаченням) і цільовим виходом. Ця різниця є похибкою. Потім мережа підлаштовує свої зважені асоціації відповідно до правила навчання і з використанням цього значення похибки. Послідовні підлаштовування призведуть до виробляння нейронною мережею результатів, усе більше схожих на цільові. Після достатньої кількості цих підлаштовувань, тренування можливо припинити на основі певного критерію. Це форма керованого навчання.
Такі системи «навчаються» виконувати завдання, розглядаючи приклади, як правило, без програмування правил для конкретних завдань. Наприклад, у розпізнаванні зображень вони можуть навчитися встановлювати зображення, на яких зображені коти, аналізуючи приклади зображень, мічені[en] вручну як «кіт» та «не кіт», і використовуючи результати для ідентифікування котів на інших зображеннях. Вони роблять це без будь-якого апріорного знання про котів, наприклад, що вони мають хутро, хвости, вуса та котоподібні писки. Натомість вони автоматично породжують ідентифікаційні характеристики з прикладів, які оброблюють.
Remove ads
Історія
Узагальнити
Перспектива
Найпростіший тип нейронної мережі прямого поширення (НМПП, англ. feedforward neural network, FNN) це лінійна мережа, яка складається з єдиного шару вузлів виходу; входи подаються безпосередньо на виходи через низку ваг. В кожному вузлі обчислюється сума добутків ваг та даних входів. Середньоквадратичні похибки між цими обчисленими виходами та заданими цільовими значеннями мінімізують шляхом підлаштовування ваг. Цей метод відомий понад два століття як метод найменших квадратів або лінійна регресія. Лежандр (1805) та Гаусс (1795) використовували його як засіб для знаходження доброго грубого лінійного допасування до набору точок для передбачування руху планет.[3][4][5][6][7]
Вільгельм Ленц[en] та Ернст Ізінг[en] створили та проаналізували модель Ізінга (1925),[8] яка, по суті, є штучною рекурентною нейронною мережею (РНМ, англ. recurrent neural network, RNN) без навчання, що складається з нейроноподібних порогових елементів.[6] 1972 року Сун'їті Амарі[en] зробив цю архітектуру адаптивною.[9][6] Його навчання РНМ популяризував Джон Гопфілд 1982 року.[10]
Воррен Маккалох та Волтер Піттс[en][11] (1943) також розглядали ненавчану обчислювальну модель для нейронних мереж.[12] Наприкінці 1940-х років Д. О. Гебб[13] створив гіпотезу навчання, засновану на механізмі нейропластичності, що стала відомою як геббове навчання (англ. Hebbian learning). Фарлі та Веслі А. Кларк[en][14] (1954) вперше використали обчислювальні машини, звані тоді «калькуляторами», для моделювання геббової мережі. 1958 року психолог Френк Розенблат винайшов перцептрон (англ. perceptron), першу втілену штучну нейронну мережу,[15][16][17][18] фінансовану Управлінням військово-морських досліджень[en] США.[19]
Дехто каже, що дослідження зазнали застою після того, як Мінскі та Пейперт (1969)[20] виявили, що базові перцептрони не здатні обробляти схему виключного «або», і що комп'ютерам бракує достатньої потужності для обробки придатних нейронних мереж. Проте на момент виходу цієї книги вже були відомі методи тренування багатошарових перцептронів (БШП, англ. multilayer perceptron, MLP).
Перший БШП глибокого навчання опублікували Олексій Григорович Івахненко та Валентин Лапа 1965 року під назвою метод групового урахування аргументів (англ. Group Method of Data Handling).[21][22][23] Перший БШП глибокого навчання, навчений стохастичним градієнтним спуском,[24] опублікував 1967 року Сун'їті Амарі[en].[25] У комп'ютерних експериментах, проведених учнем Амарі Сайто, п'ятишаровий БШП із двома змінюваними шарами навчився корисних внутрішніх подань для класифікування нелінійно роздільних класів образів.[6]
Самоорганізаційні карти (англ. self-organizing maps, SOM) описав Теуво Кохонен 1982 року.[26][27] Самоорганізаційні карти — це нейрофізіологічно натхнені[28] нейронні мережі, які навчаються низьковимірного подання високовимірних даних, зберігаючи при цьому топологічну структуру цих даних. Вони тренуються за допомогою конкурентного навчання.[26]
Архітектуру згорткової нейронної мережі (ЗНМ, англ. convolutional neural network, CNN) зі згортковими шарами та шарами пониження дискретизації запропонував Куніхіко Фукусіма[en] 1980 року.[29] Він назвав її неокогнітроном (англ. neocognitron). 1969 року він також запропонував передавальну функцію ReLU (англ. rectified linear unit, випрямлений лінійний вузол).[30] Цей випрямляч став найпопулярнішою передавальною функцією для ЗНМ та глибоких нейронних мереж загалом.[31] ЗНМ стали важливим інструментом комп'ютерного бачення.
Алгоритм зворотного поширення (англ. backpropagation) це ефективне застосування ланцюгового правила Лейбніца (1673)[32] до мереж диференційовних вузлів. Він також відомий як зворотний режим автоматичного диференціювання або зворотне накопичення[en], завдяки Сеппо Ліннаінмаа[en] (1970).[33][34][35][36][6] Термін «похибки зворотного поширення» (англ. "back-propagating errors") запровадив 1962 року Френк Розенблат,[37][6] але він не мав втілення цієї процедури, хоча Генрі Келлі[en][38] та Брайсон[en][39] мали безперервні попередники зворотного поширення на основі динамічного програмування.[21][40][41][42] вже в 1960—61 роках у контексті теорії керування.[6] 1973 року Дрейфус використав зворотне поширення для пристосовування параметрів контролерів пропорційно градієнтам похибок.[43] 1982 року Пол Вербос[en] застосував зворотне поширення до БШП у спосіб, який став стандартним.[44][40] 1986 року Румельхарт, Гінтон та Вільямс показали, що зворотне поширення навчається цікавих внутрішніх подань слів як векторів ознак, коли тренується передбачувати наступне слово в послідовності.[45]
Нейронна мережа з часовою затримкою (англ. time delay neural network, TDNN) Алекса Вайбеля[en] (1987) поєднала згортки, спільні ваги та зворотне поширення.[46][47] 1988 року Вей Чжан зі співавт. застосовували зворотне поширення до ЗНМ (спрощеного неокогнітрона зі згортковими взаємозв'язками між шарами ознак зображення та останнім повнозв'язним шаром) для абеткового розпізнавання.[48][49] 1989 року Ян Лекун зі співавт. навчили ЗНМ розпізнавати рукописні поштові індекси на пошті.[50] 1992 року Джуан Венг зі співавт. запропонували максимізувальне агрегування (англ. max-pooling) для ЗНМ, щоби допомогти з інваріантністю щодо найменшого зсуву та толерантністю до деформування для сприяння розпізнаванню тривимірних об'єктів[en].[51][52][53] LeNet-5 (1998), 7-рівневу ЗНМ від Яна Лекуна зі співавт.,[54] яка класифікує цифри, було застосовано кількома банками для розпізнавання рукописних чисел на чеках, оцифрованих у зображення 32×32 пікселів.
Починаючи з 1988 року[55][56] використання нейронних мереж перетворило галузь передбачування структур білків, зокрема, коли перші каскадні мережі тренувалися на профілях (матрицях), створених численними вирівнюваннями послідовностей.[57]
У 1980-х роках зворотне поширення не працювало добре для глибоких НМПП та РНМ. Щоби подолати цю проблему, Юрген Шмідхубер (1992) запропонував ієрархію РНМ, попередньо тренованих по одному рівню самокерованим навчанням.[58][59] Вона використовує передбачувальне кодування[en] для навчання внутрішніх подань у кількох самоорганізованих масштабах часу. Це може істотно полегшувати подальше глибоке навчання. Цю ієрархію РНМ можливо згорнути (англ. collapse) в єдину РНМ шляхом дистилювання[en] фрагментувальної (англ. chunker) мережі вищого рівня в автоматизувальну (англ. automatizer) мережу нижчого рівня.[58][6] 1993 року фрагментувальник розв'язав завдання глибокого навчання, глибина якого перевищувала 1000.[60]
1992 року Юрген Шмідхубер також опублікував альтернативу РНМ (англ. alternative to RNNs),[61] яку зараз називають лінійним трансформером (англ. linear Transformer) або трансформером з лінеаризованою самоувагою[62][63][6] (за винятком оператора нормування). Він навчається внутрішніх центрів уваги (англ. internal spotlights of attention):[64] повільна нейронна мережа прямого поширення вчиться за допомогою градієнтного спуску керувати швидкими вагами іншої нейронної мережі через тензорні добутки самопороджуваних шаблонів збудження FROM і TO (званих тепер ключем, англ. key, та значенням, англ. value, самоуваги).[62] Це відображення уваги (англ. attention mapping) швидких ваг застосовують до шаблону запиту.
Сучасний трансформер (англ. Transformer) запропонували Ашиш Васвані зі співавт. у своїй праці 2017 року «Увага — це все, що вам треба».[65] Він поєднує це з оператором softmax та проєкційною матрицею.[6] Трансформери все частіше обирають за модель для обробки природної мови.[66] Багато сучасних великих мовних моделей, таких як ChatGPT, GPT-4 та BERT, використовують саме його. Трансформери також все частіше використовують у комп'ютернім баченні.[67]
1991 року Юрген Шмідхубер також опублікував змагальні нейронні мережі (англ. adversarial neural networks), які змагаються між собою у формі антагоністичної гри, де виграш однієї мережі є програшем іншої.[68][69][70] Перша мережа є породжувальною моделлю, яка моделює розподіл імовірності над образами на виході. Друга мережа навчається градієнтним спуском передбачувати реакцію середовища на ці образи. Це було названо «штучною цікавістю» (англ. "artificial curiosity").
2014 року Ян Ґудфелоу зі співавт. використали цей принцип у породжувальній змагальній мережі (англ. generative adversarial network, GAN).[71] Тут реакція навколишнього середовища дорівнює 1 або 0 залежно від того, чи належить вихід першої мережі до заданого набору. Це можливо використовувати для створення реалістичних дипфейків.[72] Відмінної якості зображення досягла StyleGAN[en] Nvidia (2018)[73] на основі прогресивної породжувальної змагальної мережі (англ. Progressive GAN) Теро Карраса, Тімо Айли, Самулі Лайне та Яакко Лехтінена.[74] Тут породжувач вирощується від малого до великого пірамідним чином.
Дипломну працю Зеппа Хохрайтера[en] (1991)[75] його керівник Юрген Шмідхубер назвав «одним із найважливіших документів в історії машинного навчання».[6] Хохрайтер визначив і проаналізував проблему зникання градієнту[75][76] й запропонував для її розв'язання рекурентні залишкові з'єднання. Це призвело до появи методу глибокого навчання, званого довгою короткочасною пам'яттю (ДКЧП, англ. long short-term memory, LSTM), опублікованого в Neural Computation (1997).[77] Рекурентні нейронні мережі ДКЧП можуть навчатися задач «дуже глибокого навчання» (англ. "very deep learning")[78] з довгими шляхами розподілу внеску, які вимагають спогадів про події, що відбулися за тисячі дискретних часових кроків до цього. «Стандартну ДКЧП» (англ. "vanilla LSTM") із забувальним вентилем запропонували 1999 року Фелікс Ґерс[en], Шмідхубер та Фред Каммінс.[79] ДКЧП стала найцитованішою нейронною мережею XX століття.[6] 2015 року Рупеш Кумар Шрівастава, Клаус Ґрефф і Шмідхубер використали принцип ДКЧП для створення магістралевої мережі (англ. Highway network), нейронної мережі прямого поширення з сотнями шарів, набагато глибшої за попередні.[80][81] 7 місяців потому, Каймін Хе, Сян'ю Чжан; Шаоцін Рен та Цзянь Сунь виграли змагання ImageNet[en] 2015 року з відкритовентильним або безвентильним варіантом магістралевої мережі, названим залишковою нейронною мережею (англ. Residual neural network).[82] Вона стала найцитованішою нейронною мережею XXI століття.[6]
Розвиток метал-оксид-напівпровідникових (МОН) схем надвисокого рівня інтеграції (НВІС) у формі технології комплементарних МОН (КМОН) дозволив збільшити кількість[en] МОН-транзисторів у цифровій електроніці. Це забезпечило більшу потужність обробки для розробки практичних штучних нейронних мереж у 1980-х роках.[83]
До ранніх успіхів нейронних мереж належали прогнозування фондового ринку, а 1995 року (переважно) безпілотний автомобіль.[a][84]
Джефрі Гінтон зі співавт. (2006) запропонували навчання високорівневих подань з використанням послідовних шарів двійкових або дійснозначних латентних змінних з обмеженою машиною Больцмана[85] для моделювання кожного шару. 2012 року Ин та Дін створили мережу, яка навчилася розпізнавати поняття вищого рівня, такі як коти, лише переглядаючи немічені зображення.[86] Попереднє некероване тренування та збільшення обчислювальної потужності ГП та розподілених обчислень дозволили використовувати більші мережі, зокрема в задачах розпізнавання зображень і бачення, які стали відомі як «глибоке навчання».[87]
Чирешан із колегами (2010)[88] показали, що, попри проблему зникання градієнта, ГП роблять зворотне поширення придатним для багатошарових нейронних мереж прямого поширення.[89] У період між 2009 та 2012 роками ШНМ почали вигравати нагороди в конкурсах із розпізнавання зображень, наближаючись до людського рівня виконання різних завдань, спочатку в розпізнаванні образів та розпізнаванні рукописного тексту.[90][91] Наприклад, двоспрямована та багатовимірна довга короткочасна пам'ять (ДКЧП)[92][93] Ґрейвса[en] зі співавт. виграла три змагання з розпізнавання зв'язаного рукописного тексту 2009 року без будь-яких попередніх знань про три мови, яких потрібно було навчитися.[92][93]
Чирешан із колегами створили перші розпізнавачі образів, які досягли людської/надлюдської продуктивності[94] на таких перевірках як розпізнавання дорожніх знаків (IJCNN 2012).
Remove ads
Моделі
Узагальнити
Перспектива
![]() |

ШНМ почалися як спроба використати архітектуру людського мозку для виконання завдань, у яких звичайні алгоритми мали невеликий успіх. Незабаром вони переорієнтувалися на покращення емпіричних результатів, відмовившись від спроб залишатися вірними своїм біологічним попередникам. ШНМ мають здатність навчатися нелінійностей та складних зв'язків та моделювати їх. Це досягається тим, що нейрони з'єднуються за різними схемами, що дозволяє виходам одних нейронів стати входом інших. Ця мережа утворює орієнтований зважений граф.[95]
Штучна нейронна мережа складається з імітацій нейронів. Кожен нейрон з'єднано з іншими вузлами (англ. nodes) ланками (англ. links), як біологічне з'єднання аксон—синапс—дендрит. Усі вузли, з'єднані ланками, отримують деякі дані й використовують їх для виконання певних операцій і завдань з даними. Кожна ланка має вагу (англ. weight), що визначає силу впливу одного вузла на інший,[96] дозволяючи вагам обирати сигнал між нейронами.
Штучні нейрони
ШНМ складаються зі штучних нейронів, які концептуально походять від біологічних. Кожен штучний нейрон має входи та видає єдиний вихід, який можливо надсилати багатьом іншим нейронам.[97] Входи (англ. inputs) можуть бути значеннями ознак зразка зовнішніх даних, таких як зображення чи документи, або вони можуть бути виходами інших нейронів. Виходи кінцевих нейронів виходу (англ. output neurons) нейронної мережі завершують завдання, наприклад, розпізнавання об'єкта на зображенні.
Щоби знайти вихід нейрона, ми беремо зважену суму всіх входів, зважених за вагами з'єднань (англ. connection weights) від входів до нейрона. Ми додаємо до цієї суми зміщення (англ. bias).[98] Цю зважену суму іноді називають збудженням (англ. activation). Цю зважену суму потім пропускають крізь (зазвичай нелінійну) передавальну функцію (англ. activation function) для отримання виходу. Первинними входами є зовнішні дані, наприклад зображення та документи. Кінцеві виходи завершують завдання, наприклад, розпізнавання об'єкта на зображенні.[99]
Будова
Нейрони зазвичай впорядковано в кілька шарів (англ. layers), особливо в глибокому навчанні. Нейрони одного шару з'єднуються лише з нейронами безпосередньо попереднього й наступного шарів. Шар, який отримує зовнішні дані, це шар входу (англ. input layer). Шар, який видає кінцевий результат, це шар виходу (англ. output layer). Між ними є нуль або більше прихованих шарів (англ. hidden layers). Використовують також одношарові (англ. single layer) та безшарові (англ. unlayered) мережі. Між двома шарами можливі кілька схем з'єднання. Вони можуть бути «повноз'єднаними» (англ. 'fully connected'), коли кожен нейрон одного шару з'єднується з кожним нейроном наступного шару. Вони можуть бути агрегувальними (англ. pooling), коли група нейронів одного шару з'єднується з одним нейроном наступного шару, знижуючи таким чином кількість нейронів у цьому шарі.[100] Нейрони лише з такими зв'язками утворюють орієнтований ациклічний граф і відомі як мережі прямого поширення (англ. feedforward networks).[101] Крім того, мережі, які дозволяють з'єднання до нейронів у тому же або попередніх шарах, відомі як рекурентні мережі (англ. recurrent networks).[102]
Гіперпараметр
Гіперпараметр (англ. hyperparameter) — це сталий параметр, чиє значення встановлюють перед початком процесу навчання. Значення ж параметрів (англ. parameters) виводять шляхом навчання. До прикладів гіперпараметрів належать темп навчання (англ. learning rate), кількість прихованих шарів і розмір пакета.[103] Значення деяких гіперпараметрів можуть залежати від значень інших гіперпараметрів. Наприклад, розмір деяких шарів може залежати від загальної кількості шарів.
Навчання
![]() | Цей розділ містить перелік джерел, але походження окремих тверджень у ньому залишається незрозумілим через практично повну відсутність виносок. (липень 2023) |
Навчання (англ. learning) — це пристосовування мережі для кращого виконання завдання шляхом розгляду вибіркових спостережень. Навчання включає підлаштовування ваг (і, можливо, порогів) мережі для підвищення точності результатів. Це здійснюється шляхом мінімізування спостережуваних похибок. Навчання завершено, якщо розгляд додаткових спостережень не знижує рівня похибки. Навіть після навчання рівень похибки зазвичай не досягає 0. Якщо навіть після навчання рівень похибки занадто високий, зазвичай потрібно змінити будову мережі. Практично це здійснюють шляхом визначення функції витрат (англ. cost function), яку періодично оцінюють протягом навчання. Поки її результат знижується, навчання триває. Витрати часто визначають як статистику, значення якої можливо лише наближувати. Виходи насправді є числами, тож коли похибка низька, різниця між результатом (майже напевно кіт) і правильною відповіддю (кіт) невелика. Навчання намагається знизити загальну відмінність над спостереженнями. Більшість моделей навчання можливо розглядати як пряме застосування теорії оптимізації та статистичного оцінювання.[95][104]
Темп навчання
Темп навчання (англ. learning rate) визначає розмір коригувальних кроків, які здійснює модель для підлаштовування під похибку в кожному спостереженні.[105] Високий темп навчання скорочує тривалість тренування, але з меншою кінцевою точністю, тоді як нижчий темп навчання займає більше часу, але з потенціалом до більшої точності. Такі оптимізації, як Quickprop[en] (укр. «швидпошир»), переважно спрямовані на прискорення мінімізування похибки, тоді як інші вдосконалення переважно намагаються підвищити надійність. Щоби запобігти циклічним коливанням усередині мережі, таким як чергування ваг з'єднань, і покращити швидкість збігання, удосконалення використовують адаптивний темп навчання, який підвищується або знижується належним чином.[106] Концепція імпульсу (англ. momentum) дозволяє зважувати баланс між градієнтом і попередньою зміною так, щоби підлаштовування ваги певною мірою залежало від попередньої зміни. Імпульс, близький до 0, додає ваги градієнтові, тоді як значення, близьке до 1, додає ваги крайній зміні.
Функція витрат
Хоча й можливо визначати функцію витрат ad hoc, вибір часто визначається бажаними властивостями цієї функції (такими як опуклість) або тим, що вона постає з моделі (наприклад, у ймовірнісній моделі апостеріорну ймовірність моделі можливо використовувати як обернені витрати).
Зворотне поширення
Зворотне поширення (англ. backpropagation) — це метод, який використовують для підлаштовування ваг з'єднань для компенсування кожної помилки, виявленої під час навчання. Величина помилки фактично розподіляється між з'єднаннями. Технічно зворотне поширення обчислює градієнт (похідну) функції витрат, пов'язаний із заданим станом, відносно ваг. Уточнювання ваг можливо здійснювати за допомогою стохастичного градієнтного спуску (англ. stochastic gradient descent) або інших методів, таких як машини екстремального навчання,[107] «безпоширні» (англ. "no-prop") мережі,[108] тренування без вертання,[109] «безвагові» (англ. "weightless") мережі,[110][111] та не-конективістські нейронні мережі[en].[джерело?]
Парадигми навчання
![]() | Цей розділ містить перелік джерел, але походження окремих тверджень у ньому залишається незрозумілим через практично повну відсутність виносок. (липень 2023) |
Машинне навчання зазвичай поділяють на три основні парадигми: кероване навчання,[112][113][114][115] некероване навчання[116][113][114][117][115] та навчання з підкріпленням.[118][119] Кожна відповідає певному навчальному завданню.
Кероване навчання
Кероване навчання[113][114][115] (англ. supervised learning) використовує набір пар входів і бажаних виходів. Завдання навчання полягає в тому, щоби для кожного входу видавати бажаний вихід. У цьому випадку функція витрат пов'язана з усуненням неправильного висновування.[120] Витрати, які використовують зазвичай, це середньоквадратична похибка, яка намагається мінімізувати середню квадратичну похибку виходу мережі відносно бажаного виходу. Для керованого навчання підходять завдання на розпізнавання образів (також відоме як класифікування) та регресію (також відоме як наближення функції). Кероване навчання також застосовне до послідовних даних (наприклад, для розпізнавання рукописного тексту, мовлення та жестів[en]). Його можливо розглядати як навчання з «учителем» у вигляді функції, яка забезпечує безперервний зворотний зв'язок щодо якості отриманих на цей момент рішень.
Некероване навчання
У некерованім навчанні[113][114][117][115] (англ. unsupervised learning) дані входу надаються разом із функцією витрат, деякою функцією від даних та виходу мережі. Функція витрат залежить від завдання (області моделі) та будь-яких апріорних припущень (неявних властивостей моделі, її параметрів та спостережуваних змінних). Як тривіальний приклад розгляньмо модель , де стала, а витрати . Мінімізація цих витрат дає значення , що дорівнює середньому значенню даних. Функція витрат може бути набагато складнішою. Її вигляд залежить від застосування: наприклад, у стисненні вона може бути пов'язаною із взаємною інформацією між та , тоді як у статистичному моделюванні вона може бути пов'язаною з апостеріорною ймовірністю моделі за заданих даних (зверніть увагу, що в обох цих прикладах ці величини підлягають максимізуванню, а не мінімізуванню). Завдання, які підпадають під парадигму некерованого навчання, це зазвичай задачі оцінювання; до цих застосувань належать кластерування, оцінювання статистичних розподілів, стискання та фільтрування.
Навчання з підкріпленням
У таких застосуваннях як гра у відеоігри, діяч (англ. actor) виконує низку дій (англ. actions), отримуючи загалом непередбачуваний відгук від середовища після кожної з них. Мета полягає в тому, щоби виграти гру, тобто породити найбільшу кількість позитивних (з найменшими витратами) відгуків. У навчанні з підкріпленням (англ. reinforcement learning) мета полягає в тому, щоби зважити мережу (розробити стратегію, англ. policy) для виконання дій, яка мінімізує довгострокові (очікувані сукупні) витрати. У кожен момент часу діяч виконує дію, а середовище породжує спостереження та миттєві витрати відповідно до деяких (зазвичай невідомих) правил. Зазвичай правила й довгострокові витрати можливо лише оцінювати. У будь-який момент діяч вирішує, чи дослідити нові дії, щоб розкрити свої витрати, а чи скористатися попереднім знанням для швидшого виконання.
Формально середовище моделюють як марковський процес вирішування (МПВ) зі станами та діями . Оскільки переходи станів невідомі, замість них використовують розподіли ймовірності: розподіл миттєвих витрат , розподіл спостережень та розподіл переходів , тоді як стратегію визначають як умовний розподіл дій за даних спостережень. Взяті разом, вони визначають марковський ланцюг (МЛ). Мета полягає у виявленні МЛ із найменшими витратами.
ШНМ у таких застосуваннях слугують складовою, яка забезпечує навчання.[121][122] Динамічне програмування у поєднанні з ШНМ (що дає нейродинамічне програмування)[123] було застосовано до таких задач як ті, що стосуються маршрутизуваня транспорту[en],[124] відеоігор, природокористування[125][126] та медицини,[127] через здатність ШНМ пом'якшувати втрати точності навіть при зменшенні щільності ґратки дискретування[en] для чисельного наближення розв'язків задач керування. Завдання, які підпадають під парадигму навчання з підкріпленням, це завдання керування, ігри та інші послідовні завдання ухвалювання рішень.
Самонавчання
Самонавчання (англ. self-learning) в нейронних мережах було запропоновано 1982 року разом із нейронною мережею, здатною до самонавчання, названою поперечинним адаптивним масивом (ПАМ, англ. crossbar adaptive array, CAA).[128] Це система лише з одним входом, ситуацією s, й лише одним виходом, дією (або поведінкою) a. Вона не має ані входу зовнішніх порад, ані входу зовнішнього підкріплення з боку середовища. ПАМ обчислює поперечним чином як рішення щодо дій, так і емоції (почуття) щодо виниклих ситуацій. Ця система керується взаємодією між пізнанням та емоціями.[129] За заданої матриці пам'яті, W =||w(a, s)||, поперечинний алгоритм самонавчання на кожній ітерації виконує наступне обчислення:
У ситуації s виконати дію a; Отримати наслідкову ситуацію s'; Обчислити емоцію перебування в наслідковій ситуації v(s'); Уточнити поперечинну пам'ять w'(a,s) = w(a,s) + v(s').
Поширюване зворотно значення (вторинне підкріплення, англ. secondary reinforcement) — це емоція щодо наслідків ситуації. ПАМ існує у двох середовищах: одне — поведінкове середовище, де вона поводиться, а інше — генетичне середовище, де вона спочатку й лише один раз отримує початкові емоції щодо ситуацій, з якими можливо зіткнутися в поведінковому середовищі. Отримавши геномний вектор (видовий вектор, англ. genome vector, species vector) із генетичного середовища, ПАМ навчатиметься цілеспрямованої поведінки в поведінковому середовищі, що містить як бажані, так і небажані ситуації.[130]
Нейроеволюція
Нейроеволюція (англ. neuroevolution) може створювати топології та ваги нейронної мережі за допомогою еволюційного обчислення. Завдяки сучасним вдосконаленням нейроеволюція конкурує зі складними підходами градієнтного спуску.[131] Одна з переваг нейроеволюції полягає в тому, що вона може бути менш схильною потрапляти в «глухий кут».[132]
Стохастична нейронна мережа
Стохастичні нейронні мережі (англ. stochastic neural networks), що походять від моделей Шеррінгтона — Кіркпатріка , це один з типів штучних нейронних мереж, побудований шляхом введення випадкових варіацій у мережу, або надаванням штучним нейронам мережі стохастичних передавальних функцій, або надаванням їм стохастичних ваг. Це робить їх корисними інструментами для розв'язування задач оптимізації, оскільки випадкові флуктуації допомагають мережі уникати локальних мінімумів.[133] Стохастичні нейронні мережі, треновані за допомогою баєсового підходу, відомі як баєсові нейронні мережі (англ. Bayesian neural network).[134]
Інші
У баєсовій системі обирають розподіл над набором дозволених моделей таким чином, щоби мінімізувати витрати. Іншими алгоритмами навчання є еволюційні методи,[135] генно-експресійне програмування[en],[136] імітування відпалювання,[137] очікування-максимізація, непараметричні методи[en] та метод рою частинок.[138] Збіжна рекурсія (англ. convergent recursion) — це алгоритм навчання для нейронних мереж артикуляційних контролерів мозочкової моделі[en] (АКММ, англ. cerebellar model articulation controller, CMAC).[139][140]
Режими
![]() | Цей розділ містить перелік джерел, але походження окремих тверджень у ньому залишається незрозумілим через практично повну відсутність виносок. (липень 2023) |
Є два режими навчання: стохастичний (англ. stochastic) та пакетний (англ. batch). У стохастичному навчанні кожен вхід створює підлаштовування ваг. У пакетному навчанні ваги підлаштовують на основі пакету входів, накопичуючи похибки в пакеті. Стохастичне навчання вносить «шум» до процесу, використовуючи локальний градієнт, розрахований з однієї точки даних; це знижує шанс застрягання мережі в локальних мінімумах. Проте пакетне навчання зазвичай дає швидший і стабільніший спуск до локального мінімуму, оскільки кожне уточнення виконується в напрямку усередненої похибки пакета. Поширеним компромісом є використання «мініпакетів» (англ. "mini-batches"), невеликих пакетів зі зразками в кожному пакеті, обраними стохастично з усього набору даних.
Remove ads
Типи
Узагальнити
Перспектива
ШНМ еволюціювали у широке сімейство методик, які вдосконалили рівень останніх досягнень у багатьох областях. Найпростіші типи мають один або кілька статичних складових, включно з кількістю вузлів, кількістю шарів, вагами вузлів і топологією. Динамічні типи дозволяють одному або декільком із них еволюціювати шляхом навчання. Останнє набагато складніше, але може скорочувати періоди навчання й давати кращі результати. Деякі типи дозволяють/вимагають навчання «під керуванням» оператора, тоді як інші працюють незалежно. Деякі типи працюють виключно апаратно, тоді як інші є суто програмними й працюють на комп'ютерах загального призначення.
До деяких з основних проривів належать: згорткові нейронні мережі, які виявилися особливо успішними в обробці візуальних та інших двовимірних даних;[141][142] довга короткочасна пам'ять, що дозволяє уникати проблеми зникання градієнта[143] й може обробляти сигнали, які містять суміш низько- та високочастотних складових, що допомагає в розпізнаванні мовлення з великим словниковим запасом,[144][145] синтезуванні мовлення з тексту[146][40][147] та фотореалістичних головах, що розмовляють;[148] конкурентні мережі (англ. competitive networks), такі як породжувальні змагальні мережі,[149] в яких численні мережі (різної структури) змагаються одна з одною в таких завданнях як перемога в грі, або введення опонента в оману щодо автентичності входу.[71]
Remove ads
Побудова мереж
Пошук нейронної архітектури (ПНА, англ. neural architecture search, NAS) використовує машинне навчання для автоматизування побудови ШНМ. Різні підходи до ПНА побудували мережі, добре порівнянні з системами, розробленими вручну. Основним алгоритмом цього пошуку є пропонувати модель-кандидатку, оцінювати її за набором даних, і використовувати результати як зворотний зв'язок для навчання мережі ПНА.[150] Серед доступних систем — АвтоМН та AutoKeras.[151]
До проблем побудови належать визначення кількості, типу та з'єднаності рівнів мережі, а також розміру кожного, та типу з'єднання (повне, агрегувальне, …).
Гіперпараметри також слід визначати як частину побудови (їх не навчаються), керуючи такими питаннями як кількість нейронів у кожному шарі, темп навчання, крок, крок фільтрів (англ. stride), глибина, рецептивне поле та доповнення (для ЗНМ) тощо.[152]
Remove ads
Використання
Цей розділ не містить посилань на джерела. (липень 2023) |
Використання штучних нейронних мереж вимагає розуміння їхніх характеристик.
- Вибір моделі: Це залежить від подання даних та застосування. Надмірно складні моделі навчаються повільно.
- Алгоритм навчання: Існують численні компроміси між алгоритмами навчання. Майже кожен алгоритм працюватиме добре з правильними гіперпараметрами[153] для тренування на певному наборі даних. Проте обрання та налаштування алгоритму для навчання на небачених даних вимагає значного експериментування.
- Робастність: Якщо модель, функцію витрат та алгоритм навчання обрано належним чином, то отримана ШНМ може стати робастною.
Можливості ШНМ підпадають під наступні широкі категорії:[154]
- Наближування функцій[en],[155] або регресійний аналіз,[156] включно з передбачуванням часових рядів, наближуванням допасованості[en][157] та моделюванням.
- Класифікування, включно з розпізнаванням образів та послідовностей, виявлянням новизни[en] та послідовним ухвалюванням рішень.[158]
- Обробка даних,[159] включно з фільтруванням, кластеруванням, сліпим виокремлюванням сигналу[en][160] та стисканням.
- Робототехніка, включно зі скеровуванням маніпуляторів та протезів.
Remove ads
Застосування
Узагальнити
Перспектива
Завдяки своїй здатності відтворювати та моделювати нелінійні процеси штучні нейронні мережі знайшли застосування в багатьох дисциплінах. До сфер застосування належать ідентифікування систем[en] та керування ними (керування транспортними засобами, передбачування траєкторії,[161] керування процесами, природокористування), квантова хімія,[162] універсальна гра в ігри[en],[163] розпізнавання образів (радарні системи, встановлювання облич, класифікування сигналів,[164] тривимірна відбудова,[165] розпізнавання об'єктів тощо), аналіз даних давачів,[166] розпізнавання послідовностей (розпізнавання жестів, мовлення, рукописного та друкованого тексту[167]), медична діагностика, фінанси[168] (наприклад, передподійні[en] моделі для окремих фінансових довготривалих прогнозів та штучні фінансові ринки[en]), добування даних, унаочнювання, машинний переклад, соціальномережне фільтрування[169] та фільтрування спаму електронної пошти[en]. ШНМ використовували для діагностування кількох типів раку[170][171] та для відрізнювання високоінвазивних ліній ракових клітин від менш інвазивних з використанням лише інформації про форму клітин.[172][173]
ШНМ використовували для прискорювання аналізу надійності інфраструктури, що піддається стихійним лихам,[174][175] і для прогнозування просідання фундаментів.[176] Також може бути корисним пом'якшувати повені шляхом використання ШНМ для моделювання дощового стоку.[177] ШНМ також використовували для побудови чорноскринькових моделей в геонауках: гідрології,[178][179] моделюванні океану та прибережній інженерії[en],[180][181] та геоморфології.[182] ШНМ використовують у кібербезпеці з метою розмежовування законної діяльності від зловмисної. Наприклад, машинне навчання використовували для класифікування зловмисного програмного забезпечення під Android,[183] для визначання доменів, що належать суб'єктам загрози, і для виявляння URL-адрес, які становлять загрозу безпеці.[184] Ведуться дослідження систем ШНМ, призначених для випробування на проникнення, для виявляння бот-мереж,[185] шахрайства з кредитними картками[186] та мережних вторгнень.
ШНМ пропонували як інструмент для розв'язування частинних диференціальних рівнянь у фізиці[187][188][189] та моделювання властивостей багаточастинкових відкритих квантових систем[en].[190][191][192][193] У дослідженні мозку ШНМ вивчали короткочасну поведінку окремих нейронів,[194] динаміку нейронних ланцюгів, що виникає через взаємодію між окремими нейронами, та те, як поведінка може виникати з абстрактних нейронних модулів, які подають цілі підсистеми. Дослідження розглядали довгострокову та короткочасну пластичність нейронних систем та їхній зв'язок із навчанням і пам'яттю від окремого нейрона до системного рівня.
Remove ads
Теоретичні властивості
Узагальнити
Перспектива
Обчислювальна потужність
Як доведено теоремою Цибенка, багатошаровий перцептрон це універсальний[en] наближувач функцій. Проте це доведення не конструктивне щодо кількості необхідних нейронів, топології мережі, ваг, та параметрів навчання.
Особлива рекурентна архітектура з раціональнозначними вагами (на противагу до повноточнісних дійснозначних ваг) має потужність універсальної машини Тюрінга,[195] використовуючи скінченну кількість нейронів та стандартні лінійні з'єднання. Крім того, використання ірраціональних значень для ваг дає в результаті машину з надтюрінговою потужністю.[196][197][відсутнє в джерелі]
Ємність
Властивість «ємності»[198][199] (англ. "capacity") моделі відповідає її здатності моделювати будь-яку задану функцію. Вона пов'язана з обсягом інформації, який можливо зберегти в мережі, та з поняттям складності. Серед спільноти відомі два поняття ємності: інформаційна ємність та ВЧ-розмірність. Інформаційну ємність (англ. information capacity) перцептрона ретельно обговорено в книзі сера Девіда Маккея,[200] яка підсумовує роботу Томаса Ковера.[201] Ємність мережі стандартних нейронів (не згорткових) можливо отримувати за чотирма правилами,[202] які випливають із розуміння нейрона як електричного елемента. Інформаційна ємність охоплює функції, які можливо змоделювати мережею, за довільних даних входу. Друге поняття — ВЧ-розмірність (англ. VC Dimension). ВЧ-розмірність використовує принципи теорії міри та знаходить максимальну ємність за найкращих можливих обставин. Це за даних входу певного вигляду. Як зазначено у [200], ВЧ-розмірність для довільних входів становить половину інформаційної ємності перцептрона. ВЧ-розмірність для довільних точок іноді називають ємністю пам'яті (англ. Memory Capacity).[203]
Збіжність
Моделі можуть не збігатися послідовно на єдиному розв'язку, по-перше, через можливість існування локальних мінімумів, залежно від функції витрат та моделі. По-друге, вживаний метод оптимізації може не гарантувати збіжності, якщо він починається далеко від будь-якого локального мінімуму. По-третє, для досить великих даних або параметрів деякі методи стають непрактичними.
Інша варта згадки проблема полягає в тому, що навчання може проходити крізь деяку сідлову точку, що може призводити до збігання в неправильному напрямку.
Поведінка збіжності певних типів архітектур ШНМ зрозуміліша, ніж інших. Коли ширина мережі наближається до нескінченності, ШНМ добре описується своїм розвиненням у ряд Тейлора першого порядку протягом навчання, і тому успадковує поведінку збіжності афінних моделей.[204][205] Інший приклад: коли параметри малі, спостерігається, що ШНМ часто допасовуються до цільових функцій від низьких до високих частот. Таку поведінку називають спектральним зміщенням (англ. spectral bias) або частотним принципом (англ. frequency principle) нейронних мереж.[206][207][208][209] Це явище протилежне поведінці деяких добре вивчених ітераційних числових схем, таких як метод Якобі. Було виявлено, що глибші нейронні мережі схильніші до низькочастотних функцій.[210]
Узагальнювальність та статистика
![]() | Цей розділ містить перелік джерел, але походження окремих тверджень у ньому залишається незрозумілим через практично повну відсутність виносок. (липень 2023) |
Застосування, метою яких є створення системи, що добре узагальнюється до невідомих зразків, стикаються з можливістю перетренування. Воно виникає в заплутаних або надмірно визначених системах, коли ємність мережі значно перевищує потребу у вільних параметрах. Існує два підходи, як впоруватися з перетренуванням. Перший полягає у використанні перехресного затверджування та подібних методів для перевірки наявності перенавчання, та обиранні гіперпараметрів для зведення похибки узагальнення до мінімуму.
Другий полягає у використанні якогось із видів регуляризації. Це поняття виникає в імовірнісній (баєсовій) системі, де регуляризацію можливо виконувати шляхом обирання більшої апріорної ймовірності над простішими моделями, але також і в теорії статистичного навчання, де метою є зводити до мінімуму дві величини: «емпіричний ризик» та «структурний ризик», що грубо відповідають похибці над тренувальним набором та передбачуваній похибці в небачених даних через перенавчання.

Нейронні мережі керованого навчання, які використовують як функцію витрат середньоквадратичну похибку (СКП), для визначення довіри до тренованої моделі можуть використовувати формальні статистичні методи. СКП на затверджувальному наборі можливо використовувати як оцінку дисперсії. Це значення потім можливо використовувати для обчислення довірчого інтервалу виходу мережі, виходячи з нормального розподілу. Здійснений таким чином аналіз довіри статистично чинний, поки розподіл імовірності виходу залишається незмінним, і не вноситься змін до мережі.
Призначення нормованої експоненційної функції, узагальнення логістичної функції, як передавальної функції шару виходу нейронної мережі (або нормованої експоненційної складової в нейронній мережі на основі складових) для категорійних цільових змінних, дає можливість інтерпретувати виходи як апостеріорні ймовірності. Це корисно для класифікування, оскільки дає міру впевненості в класифікаціях.
Нормована експоненційна функція (англ. softmax) це
Remove ads
Критика
Узагальнити
Перспектива
Тренування
Поширена критика нейронних мереж, особливо в робототехніці, полягає в тому, що для роботи в реальному світі вони вимагають забагато тренування.[211] До потенційних розв'язань належить випадкове переставляння тренувальних зразків, застосування алгоритму чисельної оптимізації, який не вимагає завеликих кроків при зміні з'єднань мережі слідом за зразком, групування зразків до так званих міні-пакетів (англ. mini-batches) та/або запровадження алгоритму рекурсивних найменших квадратів для АКММ[en].[139]
Теорія
Головна претензія[джерело?] ШНМ полягає в тому, що вони втілюють нові потужні загальні принципи обробки інформації. Ці принципи погано визначені. Часто стверджують,[хто?] що вони виникають із самої мережі. Це дозволяє описувати просту статистичну асоціацію (основну функцію штучних нейронних мереж) як навчання або розпізнавання. 1997 року Олександр Дьюдні[en] зауважив, що, в результаті, штучні нейронні мережі мають «риси чогось дармового, чогось наділеного особливою аурою ледарства та виразної відсутності зацікавлення хоч би тим, наскільки добрими ці комп'ютерні системи є. Жодного втручання людської руки (та розуму), розв'язки знаходяться мов чарівною силою, і ніхто, схоже, так нічого й не навчився».[212] Однією з відповідей Дьюдні є те, що нейронні мережі розв'язують багато складних і різноманітних завдань, починаючи від автономного літального апарата[213] до виявляння шахрайства з кредитними картками, й завершуючи опануванням гри в Ґо.
Письменник у галузі технологій Роджер Бріджмен прокоментував це так:
Нейронні мережі, наприклад, знаходяться на лаві підсудних не лише через те, що їх розрекламували до небес (хіба ні?), а й через те, що ви можете створити успішну мережу, не розуміючи, як вона працює: купа чисел, які фіксують її поведінку, ймовірно, буде «непрозорою, нечитабельною таблицею... нічого не вартою як науковий ресурс».
Попри свою експресивну заяву про те, що наука — це не технологія, Дьюдні, здається, ганьбить нейронні мережі як погану науку, тоді як більшість із тих, хто їх розробляє, просто намагаються бути добрими інженерами. Нечитабельна таблиця, яку може читати корисна машина, все одно буде вельми варта того, щоби її мати.[214]
Оригінальний текст (англ.)[Neural networks, for instance, are in the dock not only because they have been hyped to high heaven, (what hasn't?) but also because you could create a successful net without understanding how it worked: the bunch of numbers that captures its behaviour would in all probability be "an opaque, unreadable table...valueless as a scientific resource".
In spite of his emphatic declaration that science is not technology, Dewdney seems here to pillory neural nets as bad science when most of those devising them are just trying to be good engineers. An unreadable table that a useful machine could read would still be well worth having.] Помилка: {{Lang}}: не вказано код мови (допомога)
Біологічний мозок використовує як неглибокі, так і глибокі схеми, як повідомляє анатомія мозку,[215] демонструючи широкий спектр інваріантності. Венг[216] стверджував, що мозок самостійно встановлює зв'язки переважно відповідно до статистики сигналів, і тому послідовний каскад не може вловити всі основні статистичні залежності.
Апаратне забезпечення
Великі й ефективні нейронні мережі вимагають значних обчислювальних ресурсів.[217] Тоді як мозок має апаратне забезпечення, ідеально пристосоване для задачі обробки сигналів графом нейронів, імітація навіть спрощеного нейрона на архітектурі фон Неймана може споживати величезну кількість пам'яті та дискового простору. Крім того, розробникові часто потрібно передавати сигнали багатьма цими з'єднаннями та пов'язаними з ними нейронами, що вимагає величезної обчислювальної потужності та часу ЦП.
Шмідхубер зазначив, що відродження нейронних мереж у двадцять першому сторіччі значною мірою обумовлено досягненнями в апаратному забезпеченні: з 1991 до 2015 року обчислювальна потужність, особливо забезпечувана ГПЗП (на ГП), зросла приблизно в мільйон разів, зробивши стандартний алгоритм зворотного поширення придатним для навчання мереж, на кілька рівнів глибших, ніж раніше.[21] Використання прискорювачів, таких як ПКВМ та ГП, може скорочувати тривалість тренування з місяців до днів. [217]
Нейроморфна інженерія або фізична нейронна мережа[en] розв'язує проблему апаратного забезпечення безпосередньо, створюючи мікросхеми, відмінні від фон нейманових, для безпосереднього втілення нейронних мереж у схемах. Ще одна мікросхема, оптимізована для обробки нейронних мереж, зветься тензорним процесором або ТП (англ. Tensor Processing Unit, TPU).[218]
Практичні контрприклади
Аналізувати те, чого навчилася ШНМ, набагато легше, ніж аналізувати те, чого навчилася біологічна нейронна мережа. Крім того, дослідники, які беруть участь у пошуку алгоритмів навчання для нейронних мереж, поступово розкривають загальні принципи, що дозволяють машині, що вчиться, бути успішною. Наприклад, локальне й нелокальне навчання, та неглибока й глибока архітектура.[219]
Гібридні підходи
Прибічники гібридних[en] моделей (що поєднують нейронні мережі та символьні підходи) стверджують, що така суміш може краще вловлювати механізми людського розуму.[220]
Remove ads
Галерея
- Одношарова штучна нейронна мережа прямого поширення. Стрілки, що виходять з , для наочності опущено. Є p входів до цієї мережі, й q виходів. У цій системі значення q-того виходу обчислюватиметься як .
- Двошарова штучна нейронна мережа прямого поширення.
- Штучна нейронна мережа.
- Граф залежностей ШНМ.
- Одношарова штучна нейронна мережа прямого поширення з 4 входами, 6 прихованими вузлами, та 2 виходами. Для заданого стану положення та напряму виводить значення керування для коліс.
- Двошарова штучна нейронна мережа прямого поширення з 8 входами, 2×8 прихованими вузлами, та 2 виходами. Для заданого стану положення, напряму та інших змінних середовища, видає значення керування для маневрових двигунів.
- Паралельно-конвеєрна структура нейронної мережі АКММ[en]. Цей алгоритм навчання здатен збігатися за один крок.
Remove ads
Див. також
- Автокодувальник
- ADALINE
- Біологічно натхнені обчислення[en]
- Гіпервимірні обчислення[en]
- Границі великої ширини нейронних мереж[en]
- Катастрофічна інтерференція[en]
- Квантова нейронна мережа
- Когнітивна архітектура[en]
- Конективістська експертна система[en]
- Конектоміка[en]
- Нейронний газ
- Оптична нейронна мережа
- Паралельно розподілена обробка
- Поняття машинного навчання[en]
- Проєкт Blue Brain
- Програмне забезпечення нейронних мереж[en]
- Рекурентні нейронні мережі
- Спайкова нейронна мережа[en]
- Стохастичний папуга[en]
- Тензорно-добуткова мережа[en]
- Філософія штучного інтелекту
Remove ads
Виноски
- Для керування «Без рук через Америку[en]» 1995-го року знадобилося «лише кілька випадків людської допомоги».
Примітки
Література
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads