Принцип роботи нейронної мережі. Алгоритми, навчання, функції активації та втрати

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

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

Для досягнення цих цілей необхідний навчальний набір (набір даних). В ідеалі цей набір складається з прикладів із реальними значеннями: теги, класи, міри.

Наприклад, якщо навчальне речення аналізує тональність тексту, то потрібен список речень із відповідними емоційними оцінками. Позначимо речення як X і теги як Y. Функція визначає взаємозв'язок між ними. У разі аналізу тональності тексту це такі особливості, як слова, фрази, структура речень, які роблять речення негативним чи позитивним.

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

роботи

Три найважливіші компоненти штучної нейронної мережі:

  • Вхідний шар;
  • Приховані (обчислювальні) шари;
  • Вихідний рівень.

Навчання нейронних мереж відбувається у два етапи:

  • Безпосереднє розмноження
  • Зворотне розмноження

При прямому розповсюдженні передбачається відповідь. Особливістю зворотного перенесення є мінімізація помилки між фактичною відповіддю та передбачуваною.

Безпосереднє розмноження

Давайте випадково дамо початкові ваги:

  • w1
  • w2

Давайте помножимо вхідні дані на ваги, щоб створити прихований шар:

  • h1 = (x1 * w1) + (x2 * w1)
  • h2 = (x1 * w2) + (x2 * w2)
  • h3 = (x1 * w3) + (x2 * w3)

Нелінійна функція (функція активації) передає вихідні дані із прихованого рівня, щоб отримати вихід мережі:

  • y_ = fn (h1, h2, h3)

Зворотне розмноження

  • Загальна помилка (total_error) - це різниця між очікуваним значенням «y» (з навчального набору) та отриманим значенням «y_» (тобто воно обчислюється на фазі прямого розповсюдження), через яке проходить функція втрат (функція витрат).
  • Часткова похідна похибки обчислюється для кожної ваги. Вважається, що ці часткові диференціали відображають внесок кожної ваги у загальну похибку (total_loss).
  • На наступному етапі ці диференціали множаться на число, яке називається швидкістю навчання або швидкістю навчання (η).

Нарешті, результат віднімається з відповідних зважувань.

Результатом є такі оновлені ваги:

  • w1 = w1 - (η * ∂ (помилка)/∂ (w1))
  • w2 = w2 - (η * ∂ (помилка)/∂ (w2))
  • w3 = w3 - (η * ∂ (помилка)/∂ (w3))

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

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

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

Часткові похідні

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

Кілька прикладів розглядаються для аналізу необхідності часткових похідних.

Наприклад, дітям дається завдання кинути стрілу в ціль, націлившись в центр. Ось результати:

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

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

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

Гіперпараметри

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

Швидкість навчання

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

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

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

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

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

Функція збитків

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

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

Функція втрат є одновимірною, а не векторною, оскільки вона вимірює, наскільки нейронна мережа функціонує в цілому.

Деякі відомі функції втрат:

  • Квадратичний (середнє квадратне відхилення)
  • Хрестова ентропія
  • Експоненціальні показники (AdaBoost/Adaptive Boosting)
  • Розбіжність Куллбека-Лейблера або отримання інформації.

Середньоквадратичне відхилення є найпростішою та найбільш часто використовуваною функцією втрат. Встановлюється так:

Є дві умови, яким повинна відповідати функція втрат у нейронній мережі:

  • Функція збитків відображається як середнє значення.
  • Функція втрат не залежить від будь-яких значень активації нейронної мережі. Виняток становлять значення, які виводяться на виході.

Глибокі нейронні мережі

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

Деякі подробиці про глибоке навчання:

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

приклад

Нижче подано одношарову нейронну мережу:

Слід зазначити, що в цьому випадку тренується лише перший шар (зелені нейрони) і просто передається до виходу.

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

Відповідно, можна зробити наступний висновок: чим більша кількість прихованих шарів, тим більші навчальні можливості мережі.

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

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

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

Найголовніше - це рівновага

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

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

Прокляття розмірності

Прокляття розмірності - це термін, що використовується для позначення різних явищ при аналізі та впорядкуванні даних у багатовимірних просторах (часто із сотнями або тисячами вимірів). Це не відбувається в ситуаціях з низькими розмірами.

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

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

Компроміс

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

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

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

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

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