Як працює згорткова нейронна мережа | robot_dreams
Для відстеження статусу замовлення - авторизуйтесь
Введіть код, який був надісланий на пошту Введіть код із SMS, який був надісланий на номер
 
Код дійсний протягом 2 хвилин Код з SMS дійсний протягом 2 хвилин
Ви впевнені, що хочете вийти?
Сеанс завершено
На головну
Як працює згорткова нейронна мережа

Як працює згорткова нейронна мережа

Історія, архітектура та основи навчання

Ідея згорткових нейромереж з’явилася в 1950-х, а інтерес до них поновився після 2012 року, коли математики з Університету Торонто Алек Крижевські та Джефф Хінтон перемогли на змаганнях ImageNet з розпізнавання образів. Їхня нейромережа знизила кількість помилок кваліфікації образів із 26% до 15%, що було рекордом. Наразі точність алгоритмів у розпізнаванні облич у натовпі — 99,8% (вища, ніж у людини).

Розповідаємо, що допомагає комп’ютеру розуміти дані та як навчити нейромережу.

Навіщо застосовують згорткові нейромережі та як вони з’явилися

Згорткові нейромережі — це модель глибокого навчання, один із видів штучних нейромереж. В її основі — математична операція згортки — з’єднання двох функцій. Це дає змогу створити третю функцію, яка відтворить перетини двох попередніх. Згортку можна використовувати для пошуку меж у зображеннях. Тому згорткові нейронні мережі часто застосовують у Computer Vision — вони допомагають пристроям обробляти графічну інформацію, виявляти, сегментувати й класифікувати об’єкти. 

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

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

Перцептрон і перша нейромережа

1957 року нейрофізіолог Френк Розенблат створив математичну модель «перцептрон», у якій спробував повторити кібернетичну модель мозку. Наступного року він розробив систему, яка могла аналізувати зображення розміром 20х20 пікселів і розпізнавати прості геометричні фігури. Розенблат не намагався побудувати систему класифікації зображень, він хотів набути знань про те, як працює мозок. Але його дослідження вплинули на створення нейромереж. 

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

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

Принцип роботи нейромережі

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

Людське око натреноване знаходити відмінності в об’єктах. А комп’ютер, коли обробляє картинку, приймає на вхід набір пікселів. Наприклад, якщо картинка складається з 32х32 пікселів, то алгоритм створить масив розміром 32х32 (що складається з 1024 елементів), коли зображення чорно-біле. 

Якщо обробляються кольорові картинки, то масив матиме вигляд 32х32х3, оскільки повнокольорове зображення зазвичай представлено RGB-моделлю (red, green, blue). Кожен колірний компонент оброблятиметься окремо.

Усі відтінки в моделі RGB створені з червоного, зеленого і синього кольорів. Кожен піксель має шкалу насиченості кольору, де 0 — чорний, а 255 — максимально насичений зелений, синій або червоний колір. Вхідний сигнал зображення (значення пікселів) подається на вхід нейрона тільки в межах невеликої зони — наприклад, 5х5 пікселів. Її називають рецептивним полем або полем сприйняття. 

Нейрон (ядро) — це фільтр, тобто матриця певних коефіцієнтів (ваг). Їхнє оптимальне значення встановлюється в процесі навчання нейромережі.

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

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

Створення згортки допомагає знайти властивості зображення (лінії, кола, криві). Наприклад, у зображенні кімнати один із фільтрів шукає горизонтальні лінії, другий — вертикальні, а третій — похилі. Коли ми пропустимо картинку крізь фільтри, то в першому випадку на виході отримаємо зображення з виразним виділенням горизонтальних ліній, у другому — вертикальних і так далі.

Візуалізація роботи фільтрів та визначення властивостей зображення / Proproprogs

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

Розмноження значень фільтра на значення пікселів у рецептивному полі / Neural Networks та Deep Learning, Michael Nielsen

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

Візуалізація зображення та фільтра / Neural Networks та Deep Learning, Michael Nielsen

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

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

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

Що таке пулінг

Щоб аналізувати обчислені ознаки на більшому масштабі, розмірність карт ознак скорочують за допомогою пулінгу

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

Операція пулінгу. Тут використовується функція максимуму (max pooling) / SpringerOpen

З чого складається повнозв’язний шар

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

У повнозв’язному шарі багато нейронів із різними вагами, тому для виведення результатів застосовують вектор нейронів. Наприклад, нейромережа створена для визначення типів транспорту. Її завдання — встановити, до якого з 20 класів належить об’єкт. Алгоритм видав результат вектора [0; 0; ... 0,1; 0; 0; 0,9]. Клас, який набрав значення 0,1, позначає велосипеди, а клас зі значенням 0,9 — мотоцикл. Тоді ймовірність, що на картинці мотоцикл, — 90%, і нейромережа зробить такий прогноз.   

Як навчають нейромережу

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

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

Тут можна оцінити функцію втрат — наскільки відрізняється фактичний вихід алгоритму від прогнозованого.

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

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

Ще статті