Convolutional Neural Network
Оновлено: 31.07.2023
Що таке згорткова нейронна мережа?
Згорткова нейронна мережа (CNN) - це різновид мережі глибокого навчання, яка використовує послідовність згорткових та об'єднувальних шарів для вилучення інформації із зображення. Потім ці характеристики подаються в один або кілька повністю пов'язаних шарів, де робиться прогноз або класифікація.
- CNN - популярний вибір для задач комп'ютерного зору та обробки зображень.
У CNN згорнуті шари зображення використовуються для вилучення таких елементів, як краї, текстури і частини об'єктів, шляхом застосування операції згортки до вхідного зображення за допомогою набору фільтрів, що навчаються (іноді їх називають ядрами або вагами). Фільтри накладаються на вхідне зображення, і генерується карта особливостей шляхом обчислення точкового добутку фільтра та області зображення під ним у кожній точці. Далі карти ознак подаються в шари об'єднання, які виконують операцію максимізації, щоб зменшити просторову розмірність карт ознак і зробити глибинне навчання CNN більш стійким до крихітних перетворень вхідного зображення.
Після вилучення ознак, ознаки інтегруються в один або кілька повністю пов'язаних шарів перед тим, як створити прогноз або класифікацію.
Архітектура CNN
Архітектура CNN може змінюватися залежно від проблеми або завдання, яке вона покликана вирішувати. Однак стандартний макет моделі CNN включає наступні компоненти:
- Перший шар, який називається вхідним, ШНМ отримує вхідне зображення. Як правило, вхідне зображення проходить певну попередню обробку, щоб краще відповідати потребам мережі.
- Згорткові шари - це мозок ШНМ, де ознаки виділяються з вхідного зображення шляхом застосування операції згортки з використанням фільтрів, що навчаються (також званих ядрами або вагами). Ці фільтри, які навчаються під час тренування, зазвичай мають крихітну квадратну форму і використовуються для створення карти ознак шляхом ковзання по всьому вхідному зображенню. Складніші характеристики можуть бути вилучені з зображення шляхом накладання багатьох згорточних шарів, кожен з яких генерує власну карту ознак.
- Щоб зробити ШНМ більш стійким до незначних перетворень вхідного зображення, використовуються об'єднання шарів для зменшення просторової розмірності карт ознак. Середнє об'єднання, максимальне об'єднання або Lp-об'єднання - це лише деякі з найбільш типових операцій об'єднання.
- Шар нормалізації приводить значення карт ознак до заздалегідь визначеного діапазону шляхом групової нормалізації або локальної нормалізації відгуку.
- Повністю зв'язані шари беруть характеристики з попередніх шарів і використовують їх для створення прогнозу або класифікації.
- Прогнози і класифікації створюються в останньому шарі CNN, вихідному шарі. Залежно від поставленого завдання, він може бути оснащений функцією активації, наприклад, softmax для задач багатокласової класифікації, або сигмоїдом для задач бінарної класифікації.
Надмірного припасування можна уникнути, використовуючи методи регуляризації, такі як відсівання, L1, L2, ваговий розпад та інші на декількох шарах.
Майте на увазі, що це лише базова архітектура, і існує безліч варіацій залежно від завдання та проблеми:
- RNN, LSTM: архітектури, що явно моделюють послідовності,
- ResNet: архітектури із залишковими зв'язками,
- Transformer: архітектури з механізмами уваги (Transformer),
- YOLO, Faster R-CNN: архітектури для специфічних задач, таких як виявлення об'єктів, та
- BERT: архітектури для мовних моделей.
Параметри та CNN
Наступна інформація необхідна для визначення розміру набору параметрів машинного навчання CNN:
- Чи використовує кожен шар згортки однакову кількість фільтрів.
- Кожен шар згортки має власний набір фільтрів, розмір якого визначається розміром ядра.
- Крок, що використовується в кожному шарі згортки.
- Кількість нейронів у найбільш щільно пов'язаних шарах мережі.
Ви можете навчитися обчислювати параметри згорткової нейронної мережі, використовуючи ці дані.
У випадку одного шару згортки:
- Параметри = (розмір фільтра * розмір фільтра * кількість вхідних каналів + 1) * кількість фільтрів
І для самотнього, добре пов'язаного шару:
- Кількість параметрів = (кількість входів + 1) * кількість виходів.
Загальну кількість параметрів у CNN можна обчислити шляхом додавання підрахунків з кожного шару. Для визначення кількості параметрів моделі також можна використовувати такі бібліотеки, як Pytorch та TensorFlow.