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

Якщо раніше нейромережі вважалися чимось дивовижним, то зараз доступ до таких інструментів має багато. Причому ця галузь розвивається неймовірними темпами: зовсім недавно нейромережі вчилися малювати картини, і вже зараз (і навіть здатні!). Тому цілком логічно, що людина вирішила використати штучний інтелект не лише для нових відкриттів, а й також для спрощення повсякденних завдань.

Ілон Маск після того, як колонізував Марс

Джеффрі Хінтон - один із творців концепції глибокого навчання, призер премії Тьюринга 2019 року та інженер. Минулого тижня, під час конференції розробників I/O, Wired узяв у нього інтерв'ю та обговорив його захоплення мозком та можливістю змоделювати комп'ютер на основі нейронної структури мозку. Довгий час ці ідеї вважалися безглуздими. Цікава та захоплююча розмова про свідомість, майбутні плани Хінтона і про те, чи можна навчити комп'ютери бачити сни.

Відповідно, нейронна мережа бере на вхід два числа і має на виході дати інше число – відповідь. Тепер про самі нейронні мережі.

Що таке нейронна мережа?


Нейронна мережа – це послідовність нейронів, з'єднаних між собою синапсами. Структура нейронної мережі прийшла у світ програмування прямо з біології. Завдяки такій структурі машина знаходить здатність аналізувати і навіть запам'ятовувати різну інформацію. Нейронні мережі також здатні як аналізувати вхідну інформацію, а й відтворювати її з власної пам'яті. Зацікавленим обов'язково до перегляду 2 відео з TED Talks: Відео 1 , Відео 2). Іншими словами, нейромережа це машинна інтерпретація мозку людини, в якому знаходяться мільйони нейронів, що передають інформацію у вигляді електричних імпульсів.

Які бувають нейронні мережі?

Поки що ми розглядатимемо приклади на самому базовому типі нейронних мереж - це мережа прямого поширення (далі СПР). Також у наступних статтях я введу більше понять і розповім вам про рекурентні нейронні мережі. СПР як випливає з назви це мережа з послідовним з'єднанням нейронних шарів, у ній інформація завжди йде лише в одному напрямку.

Навіщо потрібні нейронні мережі?

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

Класифікація- Розподіл даних за параметрами. Наприклад, на вхід надається набір людей і потрібно вирішити, кому з них давати кредит, а кому ні. Цю роботу може зробити нейронна мережа, аналізуючи таку інформацію як: вік, платоспроможність, кредитна історія тощо.

Пророцтво- Можливість передбачати наступний крок. Наприклад, зростання чи падіння акцій, ґрунтуючись на ситуації на фондовому ринку.

Розпізнавання- В даний час, найширше застосування нейронних мереж. Використовується в Google, коли ви шукаєте фото або в камерах телефонів, коли воно визначає положення вашої особи та виділяє її та багато іншого.

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

Що таке нейрон?


Нейрон - це обчислювальна одиниця, яка отримує інформацію, здійснює над нею прості обчислення та передає її далі. Вони поділяються на три основні типи: вхідний (синій), прихований (червоний) та вихідний (зелений). Також є нейрон зміщення та контекстний нейрон про які ми поговоримо у наступній статті. У разі, коли нейромережа складається з великої кількості нейронів, вводять термін шару. Відповідно є вхідний шар, який отримує інформацію, n прихованих шарів (зазвичай їх не більше 3), які її обробляють і вихідний шар, який виводить результат. У кожного з нейронів є 2 основні параметри: вхідні дані (input data) та вихідні дані (output data). Що стосується вхідного нейрона: input=output. В інших, в поле input потрапляє сумарна інформація всіх нейронів з попереднього шару, після чого вона нормалізується за допомогою функції активації (поки що просто представимо її f(x)) і потрапляє в поле output.


Важливо пам'ятати, Що нейрони оперують числами в діапазоні або [-1,1]. А як же ви запитаєте, тоді обробляти числа, які виходять з даного діапазону? На даному етапі найпростіша відповідь - це розділити 1 на це число. Цей процес називається нормалізацією, і він часто використовується в нейронних мережах. Докладніше про це трохи пізніше.

Що таке синапс?


Синапс це зв'язок між двома нейронами. У синапсів є 1 параметр – вага. Завдяки йому вхідна інформація змінюється, коли передається від одного нейрона до іншого. Припустимо, є 3 нейрони, які передають інформацію наступному. Тоді у нас є 3 ваги, які відповідають кожному з цих нейронів. У того нейрона, у якого вага буде більшою, та інформація і буде домінуючою в наступному нейроні (приклад - змішання кольорів). Насправді, сукупність терезів нейронної мережі або матриця терезів - це своєрідний мозок всієї системи. Саме завдяки цим вагам, вхідна інформація обробляється та перетворюється на результат.

Важливо пам'ятати, Що під час ініціалізації нейронної мережі, ваги розставляються у випадковому порядку.

Як працює нейронна мережа?


У цьому прикладі зображено частину нейронної мережі, де літерами I позначені вхідні нейрони, літерою H - прихований нейрон, а літерою w - ваги. З формули видно, що вхідна інформація - це сума всіх вхідних даних, помножених на ваги, що їм відповідають. Тоді дамо на вхід 1 і 0. Нехай w1 = 0.4 та w2 = 0.7 Вхідні дані нейрона Н1 будуть наступними: 1 * 0.4 + 0 * 0.7 = 0.4. Тепер коли ми маємо вхідні дані, ми можемо отримати вихідні дані, підставивши вхідне значення у функцію активації (докладніше про неї далі). Тепер, коли ми маємо вихідні дані, ми передаємо їх далі. І так ми повторюємо для всіх шарів, поки не дійдемо до вихідного нейрона. Запустивши таку мережу вперше ми побачимо, що відповідь далека від правильно, тому що мережа не натренована. Щоб покращити результати, ми її тренуватимемо. Але перш ніж дізнатися, як це робити, давайте введемо кілька термінів і властивостей нейронної мережі.

Функція активації

p align="justify"> Функція активації - це спосіб нормалізації вхідних даних (ми вже говорили про це раніше). Тобто, якщо на вході у вас буде велика кількість, пропустивши його через функцію активації, ви отримаєте вихід у потрібному діапазоні. Функцій активації досить багато тому ми розглянемо найголовніші: Лінійна, Сігмоїд (Логістична) та Гіперболічний тангенс. Головні їхні відмінності – це діапазон значень.

Лінійна функція


Ця функція майже ніколи не використовується, за винятком випадків, коли потрібно протестувати нейронну мережу або передати значення без перетворень.

Сігмоїд


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

Гіперболічний тангенс


Має сенс використовувати гіперболічний тангенс тільки тоді, коли ваші значення можуть бути і негативними, і позитивними, так як діапазон функції [-1,1]. Використовувати цю функцію лише з позитивними значеннями недоцільно, оскільки це значно погіршить результати вашої нейромережі.

Тренувальний сет

Тренувальний сет – це послідовність даних, якими оперує нейронна мережа. У нашому випадку виключає або (xor) у нас всього 4 різних результатів, тобто у нас буде 4 тренувальні сети: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

Ітерація

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

Епоха

При ініціалізації нейронної мережі ця величина встановлюється в 0 і має стелю, що задається вручну. Чим більша епоха, тим краще натренована мережа і, відповідно, її результат. Епоха збільшується щоразу, коли ми проходимо весь набір тренувальних сетів, у нашому випадку, 4 сети або 4 ітерації.


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

Помилка

Помилка - це відсоткова величина, що відображає розбіжність між очікуваною та отриманою відповідями. Помилка формується кожну епоху і має йти на спад. Якщо цього не відбувається, то ви щось робите не так. Помилки можна обчислити різними шляхами, але ми розглянемо лише три основні способи: Mean Squared Error (далі MSE), Root MSE та Arctan. Тут немає будь-якого обмеження на використання, як функції активації, і ви вільні вибрати будь-який метод, який буде приносити вам найкращий результат. Варто лише враховувати, що кожен метод вважає помилки по-різному. У Arctan, помилка, майже завжди, буде більше, тому що він працює за принципом: чим більша різниця, тим більша помилка. У Root MSE буде найменша помилка, тому найчастіше використовують MSE, яка зберігає баланс у обчисленні помилки.

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

Штучна нейронна мережа – це подоба мозку. Спочатку програмувалася з метою спростити деякі складні обчислювальні процеси. Сьогодні у нейромереж набагато більше можливостей. Частина з них у вас у смартфоні. Ще частина вже записала собі в основу, що ви відкрили цю статтю. Як все це відбувається і навіщо, читайте далі.

З чого все почалося

Людям дуже хотілося зрозуміти, звідки у людини розум і як мозок працює. У середині минулого століття канадський нейропсихолог Дональд Хебб це зрозумів. Хебб вивчив взаємодію нейронів один з одним, досліджував, за яким принципом вони об'єднуються в групи (по-науковому - ансамблі) і запропонував перший у науці алгоритм навчання нейронних мереж.

Через кілька років група американських вчених змоделювала штучну нейромережу, яка могла відрізняти фігури квадратів від інших фігур.

Як працює нейромережа?

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

Якими бувають нейронні мережі та що вони вміють

Вчені розвинули нейронні мережі так, що ті навчилися розрізняти складні зображення, відео, тексти та мовлення. Типів нейронних мереж сьогодні дуже багато. Вони класифікуються залежно від архітектури - наборів параметрів даних і ваги цих параметрів певної пріоритетності. Нижче деякі з них.

Згорткові нейромережі

Нейрони діляться групи, кожна група обчислює задану їй характеристику. У 1993 році французький учений Ян Лекун показав світові LeNet 1 - першу згорткову нейронну мережу, яка швидко і точно могла розпізнавати цифри, написані на папері від руки. Дивіться самі:

Сьогодні згорткові нейронні мережі використовуються переважно з мультимединими цілями: вони працюють з графікою, аудіо та відео.

Рекурентні нейромережі

Нейрони послідовно запам'ятовують інформацію та будують подальші дії на основі цих даних. 1997 року німецькі вчені модифікували найпростіші рекурентні мережі до мереж із довгою короткостроковою пам'яттю. На їх основі були розроблені мережі з керованими рекурентними нейронами.

Сьогодні за допомогою таких мереж пишуться та перекладаються тексти, програмуються боти, які ведуть осмислені діалоги з людиною, створюються коди сторінок та програм.

Використання такого роду нейромереж – це можливість аналізувати та генерувати дані, складати бази і навіть робити прогнози.

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

Комбіновані нейромережі (згорткові + рекурентні)

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

Нейросети постійно самонавчаються. Завдяки цьому процесу:

1. Skype впровадив можливість синхронного перекладу для 10 мов. Серед яких, на хвилиночку, є російська та японська - одні з найскладніших у світі. Звичайно, якість перекладу вимагає серйозного доопрацювання, але сам факт того, що вже зараз ви можете спілкуватися з колегами з Японії російською мовою і бути впевненими, що вас зрозуміють, надихає.

2. Яндекс на базі нейронних мереж створив два пошукові алгоритми: «Палех» та «Корольов». Перший допомагав знайти найрелевантніші сайти для низькочастотних запитів. «Палех» вивчав заголовки сторінок і зіставляв їх зміст із змістом запитів. На основі "Палеха" з'явився "Корольов". Цей алгоритм оцінює як заголовок, а й весь текстовий контент сторінки. Пошук стає все точнішим, а власники сайтів розумніше починають підходити до наповнення сторінок.

3. Колеги сеошників з Яндекса створили музичну нейромережу: вона складає вірші та пише музику. Нейрогрупа символічно називається Neurona, і вона вже має перший альбом:

4. У Google Inbox за допомогою нейромереж здійснюється відповідь на повідомлення. Розвиток технологій йде повним ходом, і сьогодні мережа вже вивчає листування та генерує можливі варіанти відповіді. Можна не витрачати час на друк і не боятися забути якусь важливу домовленість.

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

6. Facebook активно працює над DeepText AI – програмою для комунікацій, яка розуміє жаргон та чистить чатики від обсценної лексики.

7. Додатки типу Prisma і Fabby, створені на нейромережах, створюють зображення та відео:

Colorize відновлює кольори на чорно-білих фото (здивуйте бабусю!).

MakeUp Plus підбирає для дівчат ідеальну помаду із реального асортименту реальних брендів: Bobbi Brown, Clinique, Lancome та YSL вже у справі.


8.
Apple і Microsoft постійно апгрейдять свої нейронні Siri та Contana. Поки вони тільки виконують наші накази, але вже найближчим часом почнуть виявляти ініціативу: давати рекомендації та передбачати наші бажання.

А що ще на нас чекає в майбутньому?

Самонавчальні нейромережі можуть замінити людей: почнуть з копірайтерів та коректорів. Вже зараз роботи створюють тексти із змістом та без помилок. І роблять це значно швидше за людей. Продовжать із співробітниками кол-центрів, техпідтримки, модераторами та адміністраторами пабліків у соцмережах. Нейронні мережі вже можуть вчити скрипт і відтворювати його голосом. А що в інших галузях?

Аграрний сектор

Нейросітка впровадять у спецтехніку. Комбайни автопілотуватимуться, скануватимуть рослини та вивчатимуть ґрунт, передаючи дані нейромережі. Вона вирішуватиме - полити, удобрити чи обприскати від шкідників. Замість пари десятків робітників знадобляться від сили два спеціалісти: контролюючий та технічний.

Медицина

У Microsoft зараз активно працюють над створенням ліків від раку. Вчені займаються біопрограмуванням - намагаються оцифрувати процес виникнення та розвитку пухлин. Коли все вийде, програмісти зможуть знайти спосіб заблокувати такий процес, за аналогією буде створено ліки.

Маркетинг

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

Ecommerce

Ecommerce буде запроваджено повсюдно. Вже не потрібно переходити в інтернет-магазин за посиланням: ви зможете купити все там, де бачите, в один клік. Наприклад, читаєте ви цю статтю за кілька років. Дуже вам подобається помада на скрині з MakeUp Plus (див. вище). Ви кликаєте на неї і потрапляєте одразу в кошик. Або дивіться відео про останню модель Hololens (окуляри змішаної реальності) і відразу оформляєте замовлення прямо з YouTube.

Чи не в кожній області цінуватимуться фахівці зі знанням або хоча б розумінням пристрою нейромереж, машинного навчання та систем штучного інтелекту. Ми будемо існувати з роботами пліч-о-пліч. І чим більше ми про них знаємо, тим спокійніше буде жити.

PS.Зінаїда Фолс - нейронна мережа Яндекса, яка пише вірші. Оцініть твір, який машина написала, навчившись на Маяковському (орфографія та пунктуація збережено):

« Це»

це
всього-навсього
щось
в майбутньому
і міць
у тієї людини
є на світі все чи ні
це кров навколо
по руках
жиріє
слава у
землі
з тріском у дзьобі

Вражає, правда?

Вступ

1. Штучні нейронні мережі

1.1 Паралелі з біології

1.2 Визначення ІНС

1.3 Архітектура нейронної мережі

1.4 Збір даних для нейронної мережі

2 Навчання

2.1 Алгоритм зворотного розповсюдження

2.2 Перенавчання та узагальнення

2.3 Моделі теорії адаптивного резонансу

3 Багатошаровий персептрон (MLP)

3.1 Навчання багатошарового персептрону

4. Імовірнісна нейронна мережа

5. Узагальнено-регресійна нейронна мережа

6. Лінійна мережа

7. Мережа Кохонена

8. Кластеризація

8.1 Оцінка якості кластеризації

8.2 Процес кластеризації

8.3 Застосування кластерного аналізу

1. Штучні нейронні мережі

Штучні нейронні мережі (ІНС) - математичні моделі, а також їх програмні або апаратні реалізації, побудовані за принципом організації та функціонування біологічних нейронних мереж - мереж нервових клітин живого організму. Це поняття виникло щодо процесів, які у мозку, і за спробі змоделювати ці процеси. Першою такою спробою були нейронні мережі Маккалока та Піттса. Згодом, після розробки алгоритмів навчання, одержувані моделі стали використовувати в практичних цілях: завдання прогнозування, для розпізнавання образів, завдання управління і ін.

ІНС є системою з'єднаних і взаємодіючих між собою простих процесорів (штучних нейронів). Такі процесори зазвичай досить прості, особливо у порівнянні з процесорами, які використовуються в персональних комп'ютерах. Кожен процесор подібної мережі має справу лише з сигналами, які він періодично отримує, та сигналами, які він періодично надсилає іншим процесорам. Проте, будучи з'єднаними в досить велику мережу з керованою взаємодією, такі локально прості процесори разом здатні виконувати досить складні завдання.

З точки зору машинного навчання, нейронна мережа є окремим випадком методів розпізнавання образів, дискримінантного аналізу, методів кластеризації і т. п. З математичної точки зору, навчання нейронних мереж - це багатопараметричне завдання нелінійної оптимізації. З погляду кібернетики, нейронна мережа використовується у завданнях адаптивного управління та як алгоритми для робототехніки. З погляду розвитку обчислювальної техніки та програмування, нейронна мережа - спосіб вирішення проблеми ефективного паралелізму. А з погляду штучного інтелекту, ІНС є основою філософської течії коннективізму та основним напрямом у структурному підході щодо вивчення можливості побудови (моделювання) природного інтелекту за допомогою комп'ютерних алгоритмів.

Нейронні мережі не програмуються у звичному значенні цього слова, вони навчаються. Можливість навчання – одна з головних переваг нейронних мереж перед традиційними алгоритмами. Технічно навчання полягає у знаходженні коефіцієнтів зв'язків між нейронами. У процесі навчання нейронна мережа здатна виявляти складні залежності між вхідними даними та вихідними, а також виконувати узагальнення. Це означає, що, у разі успішного навчання, мережа зможе повернути правильний результат на підставі даних, які були відсутні у навчальній вибірці, а також неповних та/або «зашумлених», частково спотворених даних.

1.1 Паралелі з біології

Нейронні мережі виникли з досліджень у галузі штучного інтелекту, а саме, зі спроб відтворити здатність біологічних нервових систем навчатися та виправляти помилки, моделюючи низькорівневу структуру мозку (Patterson, 1996). Основною областю досліджень із штучного інтелекту у 60-ті – 80-ті роки були експертні системи. Такі системи ґрунтувалися на високорівневому моделюванні процесу мислення (зокрема, уявленні, що процес нашого мислення побудований на маніпуляціях із символами). Незабаром стало ясно, що подібні системи, хоч і можуть принести користь у деяких галузях, не схоплюють деякі ключові аспекти людського інтелекту. Згідно з однією з точок зору, причина цього полягає в тому, що вони не в змозі відтворити структуру мозку. Щоб створити штучний інтелект, необхідно побудувати систему зі схожою архітектурою.

Мозок складається з дуже великої кількості (приблизно 10,000,000,000) нейронів, з'єднаних численними зв'язками (загалом кілька тисяч зв'язків однією нейрон, проте це може сильно коливатися). Нейрони – це спеціальна клітина, здатна поширювати електрохімічні сигнали. Нейрон має розгалужену структуру введення інформації (дендрити), ядро ​​і вихід, що розгалужується (аксон). Аксони клітини поєднуються з дендритами інших клітин за допомогою синапсів. При активації нейрон посилає електрохімічний сигнал свого аксону. Через синапс цей сигнал досягає інших нейронів, які можуть у свою чергу активуватися. Нейрон активується тоді, коли сумарний рівень сигналів, що у його ядро ​​з дендритів, перевищить певний рівень (поріг активації).

Інтенсивність сигналу, одержуваного нейроном (а отже, і можливість його активації), сильно залежить від активності синапсів. Кожен синапс має протяжність і спеціальні хімічні речовини передають сигнал уздовж нього. Один із найавторитетніших дослідників нейросистем, Дональд Хебб, висловив постулат, що навчання полягає насамперед у змінах "сили" синаптичних зв'язків. Наприклад, у класичному досвіді Павлова, щоразу перед годуванням собаки дзвонив дзвіночок, і собака швидко навчився пов'язувати дзвінок дзвіночка з їжею. Синаптичні зв'язки між ділянками кори головного мозку, відповідальними за слух, і слинними залозами посилилися, і при збудженні кори звуком дзвіночка у собаки починалося слиновиділення.

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

Мал. 1 Нейрон

1.2 Визначення ІНС

Штучна нейронна мережа (ІНС, нейронна мережа) – це набір нейронів, з'єднаних між собою. Як правило, передавальні функції всіх нейронів у нейронній мережі фіксовані, а ваги є параметрами нейронної мережі та можуть змінюватися. Деякі входи нейронів позначені як зовнішні входи нейронної мережі, а деякі виходи – як зовнішні виходи нейронної мережі. Подаючи будь-які числа на входи нейронної мережі, ми отримуємо якийсь набір чисел на виходах нейронної мережі. Таким чином, робота нейронної мережі полягає у перетворенні вхідного вектора у вихідний вектор, причому це перетворення задається вагами нейронної мережі.

Штучна нейронна мережа – це сукупність нейронних елементів та зв'язків між ними.

Основу кожної штучної нейронної мережі складають відносно прості, в більшості випадків - однотипні, елементи (комірки), що імітують роботу нейронів мозку (далі під нейроном ми маємо на увазі штучний нейрон, комірку штучної нейронної мережі).


Мал. 2 - Штучний нейрон

· Нейрон має групу синапсів - односпрямованих вхідних зв'язків, з'єднаних із виходами інших нейронів. Кожен синапс характеризується величиною синоптичного зв'язку або його вагою w i.

· Кожен нейрон має поточний стан, який зазвичай визначається, як зважена сума його входів:

· Нейрон має аксон - вихідний зв'язок даного нейрона, з яким сигнал (збудження або гальмування) надходить на синапс наступних нейронів. Вихід нейрона є функцією його стану:

Функція f називається функцією активації.



Мал. 3 - Функція активації

Функція активації може мати різний вигляд:

· Пороговий (рис. 3.a),

· кусково-лінійний (рис. 3.б),

· Сигмоїд (рис. 3.в, 3.г).

Безліч всіх нейронів штучної нейронної мережі можна розділити на підмножини - т.зв. шари. Взаємодія нейронів відбувається пошарово.

Шар штучної нейронної мережі - це безліч нейронів, на які в кожен такт часу паралельно надходять сигнали від інших нейронів даної мережі.

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

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

1.3 Архітектура нейронної мережі

ІНС може розглядатися як спрямований граф із зваженими зв'язками, у якому штучні нейрони є вузлами. По архітектурі зв'язків ІНС можуть бути згруповані у два класи (рис. 4): мережі прямого поширення, в яких графи не мають петель, та рекурентні мережі, або мережі зі зворотними зв'язками.

Вперше про успіхи глибокого навчання (deep learning) стало чути у 2012 році, а за три роки вже всі тільки про нього і говорять. Так само було з інтернетом в епоху надування інвестиційного міхура. А оскільки в нейронні мережі робляться зараз чималі вкладення, то сміливо можна говорити про новий міхур.

Інтернет було легко демонструвати: спочатку швидка (порівняно з паперовою) електронна пошта, потім барвисті вебсайти, доступні на будь-якому підключеному до Мережі комп'ютері. У глибокому навчанні все негаразд: увага до нього є, а продемонструвати щось конкретне не можна. Чи справді пов'язує програми розпізнавання мови та програми автоматичного перекладу, програми визначення несправностей нафтогазового обладнання та програми синтезу тексту, що описує фотознімки?



Ця різноманітність не випадкова: якщо інтернет – це просто вид зв'язку, то глибокі нейронні мережі (deep neural networks, DNN) – по суті новий тип програм, настільки ж універсальний, як і традиційні комп'ютерні програми. Ця універсальність доведена теоретично: нейронна мережа теоретично може нескінченно точно апроксимувати будь-яку функцію багатьох змінних - а також проводити обчислення, еквівалентні обчисленням машини Тьюринга.

Мережі, які потрібно вивчати

Передавати інформацію по інтернету можна одноманітно, уніфікованими пакетами, на цій ідеї він і побудований. А ось генерувати інформацію та споживати її можна по-різному. Комп'ютерні програми, які цим займаються дуже різні. Нейронні мережі такі самі, вони забезпечують таку саму різноманітність обробки.

Описувати сьогодні, що таке нейронні мережі - це описувати наприкінці п'ятдесятих років, що таке традиційні комп'ютерні програми (а мова Фортран був випущений у 1957 році) - якби ви почали розповідати, що комп'ютери керуватимуть запалюванням у кожному автомобілі, а також показувати порнофільми на екранах телефонів, вас підняли б на сміх.

Якщо зараз вам розповісти, що ви розмовлятимете з нейронною комп'ютерною мережею у вашому планшеті, і нейронна мережа керуватиме автомобілем без водія, ви теж не повірите - а дарма.

До речі, «порнокартинки» у соціальних мережах вже виявляють не люди, а самі мережі. Адже цим у світі займалися 100 тис. осіб, які переглядали терабайти та терабайти фото та відео. Світ обробки даних з появою глибокого навчання раптом почав змінюватися і стрімко.

На відміну від традиційних комп'ютерних програм, нейронні мережі не потрібно писати, їх потрібно вивчати. І їх можна навчити з того що нескінченно важко (якщо взагалі можливо) втілити традиційною програмною інженерією. Наприклад, нейронні мережі вже навчилися розпізнавати аудіо та відео на рівні людей – і навіть краще за них. Або навпаки, створювати аудіо та відео – якщо у вас є втілене в навченій глибокій нейронній мережі розуміння зображень якихось об'єктів, це розуміння можна використовувати і для створення зображень цих об'єктів. Синтез голосу, тексту та зображень ще не з'явився на ринку, але експерименти вже показують успіхи, що раніше в цій галузі недосяжні. Більше того, нейронні сітки можуть не лише аналізувати дані, а й видавати команди. Так, вони навчилися грати в ігри Atari 2600, причому в багатьох навіть краще за людину, і їх не довелося спеціально для цього програмувати.

Як це стало можливим лише сьогодні? Чому таких результатів не досягли давно, ще до появи того ж Інтернету? Адже міркування про можливості нейронних мереж ведуться з 50-х років минулого століття!

По-перше, зрозуміло, як навчити глибокі нейронні мережі – яка там працює математика. Глибока нейронна мережа – отже, із глибиною більше двох шарів. Якщо шарів менше, то йдеться про дрібне (shallow) навчання. Якщо кількість шарів більше десяти, то говорять про дуже глибоке навчання, але поки що таке трапляється рідко. Раніше нейронні мережі намагалися вчити методом спроб і помилок (він же – метод «наукового тику»), і так виходило навчати лише дрібні мережі. Згодом з'явилося розуміння математики багатошарових нейронних мереж, їх стало можливо проектувати, прийшло розуміння, як створювати нові види мереж та забезпечити їхню обучаемость.

По-друге, працює нейронна мережа швидко, але навчається дуже повільно, і для цього потрібні величезні обсяги даних. big data. І що більше шарів у нейронної мережі, то більше в такій мережі запити до обчислювальної потужності під час навчання. За фактом, ще зовсім недавно нейронні мережі можна було навчити чогось тільки на суперкомп'ютері.



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

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

« Нейросетьмайстра»

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

Професія тих, хто займається нейронними мережами, навіть поки що не має назви. Якщо на зорі інтернету з'явилося поняття «вебмайстер» (і проіснувало цілих п'ять чи шість років), то аналогічної «нейросетьмайстер»-професії поки що немає. У області big data такі фахівці називають себе «вченими даних» (data scientists), але їх робота має таку ж інженерну природу, як і робота програмістів. Інженери вимірюють, аналізують, проектують, будують цільові системи та інструменти для інженерії. Програмна інженерія (software engineering) відрізняється від комп'ютерної науки (computer science). З нейронними мережами те саме: назви професії поки немає, але вже є інженери, які вам допоможуть їх створити, навчити та використовувати. На щастя, за останній рік з'явилася розвинена інфраструктура для нової професії: університетські навчальні курси, десятки тьюторіалів, книги, змагальні та тренувальні майданчики, величезна кількість вільних програм. Тільки в російськомовному співтоваристві глибокого навчання ВКонтакте сьогодні