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

7 хвилин читання

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

Згорткові нейромережі стали ключовою технологією у сфері комп’ютерного зору. Розповідаємо як це працює простими словами. 

Що таке згортка та як вона працює?

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

Читайте також: Скандал у геймдев: чеська студія Warhorse Studios, відома серією Kingdom Come, опинилася в центрі обговорення через заміну живих співробітників штучним інтелектом.

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

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

Як нейромережа «бачить» зображення?

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

  • Чорно-біла картинка 32×32 пікселів представлена як матриця 32×32 чисел.
  • Кольорове зображення зберігається у вигляді трьох таких матриць (RGB: червоний, зелений, синій).

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

Візуалізація пошуку контура згортковим шаром 

Підписуйтеся на наші соцмережі

Уявімо, що нейромережа навчається розпізнавати котів:

  • 1
    Перший згортковий шар визначає основні риси: контури, текстури шерсті.
  • 2
    Другий шар починає групувати ці ознаки у знайомі форми: лапи, вуха, очі.
  • 3
    Останні шари розпізнають повноцінний образ кота і класифікують його.

Що таке пулінг і навіщо він потрібен?

Після згортки дані все ще дуже детальні, а отже, займають багато пам'яті. Щоб зменшити обсяг інформації та зробити її більш абстрактною, застосовують пулінг. Найпоширеніший варіант — максимальний пулінг (max pooling), який розбиває зображення на маленькі блоки (наприклад, 2×2 пікселі) і залишає лише найбільше значення з кожного.

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

Повнозв’язний шар: останній етап

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

  • 90% ймовірності — це кіт,
  • 5% — собака,
  • 5% — інший об'єкт.

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

Навчання CNN відбувається через процес зворотного поширення помилки (backpropagation). Алгоритм такий:

  • 1
    Нейромережа отримує тренувальне зображення та робить прогноз.
  • 2
    Якщо відповідь неправильна, обчислюється функція втрат, яка показує, наскільки прогноз відрізняється від правильного.
  • 3
    Алгоритм коригує ваги нейронів так, щоб наступного разу прогноз був точнішим.
  • 4
    Процес повторюється тисячі разів, поки модель не навчиться добре класифікувати об'єкти, навіть ті, які не входять у тренувальний набір.

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

Де використовують згорткові нейромережі та які вони мають обмеження.

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

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

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

CNN vs Vision Transformers: що краще

Останніми роками в комп’ютерному зорі з’явився новий підхід – Vision Transformer (ViT). Це інший тип нейромереж, адаптація архітектури трансформерів (успішних в обробці мовлення) для роботи із зображеннями. Головна різниця в тому, що трансформер не використовує згорток, а натомість розбиває зображення на патчі (наприклад, квадрати 16×16 пікселів), перетворює кожен патч на ембеддинг (вектор чисел) і опрацьовує послідовність цих ембеддингів механізмом самоуваги (self-attention). Механізм самоуваги дозволяє моделі звернути увагу на будь-які взаємозв’язки між елементами зображення, порівнюючи всі патчі між собою. Це означає, що трансформер з самого початку бачить глобальну картину зображення, на відміну від CNN, яка спочатку має дуже вузьке «поле зору» (лише невелике вікно фільтра) і поступово його розширює в глибших шарах​.

Трансформери добре вловлюють довгострокові залежності в зображенні (наприклад, кореляцію віддалених частин зображення). Вони не мають вбудованого припущення про локальність ознак, як згорткові нейромережі, тому є більш гнучкими в теорії – можуть навчитися будь-яких залежностей​. Дослідження показали, що за достатньо великого обсягу даних для навчання Vision Transformer здатний перевершити CNN за точністю​. Крім того, трансформери легше масштабуються.

Але недоліки теж присутні. По-перше, відсутність індуктивного упередження (локальних фільтрів) означає, що ViT потребує набагато більше даних для навчання, аби вивчити ті самі закономірності, які CNN «знає» з самого початку​. Інакше кажучи, на малих датасетах згорткові мережі часто перевершують трансформери, якщо останні не були попередньо навчені на великій кількості зображень. По-друге, трансформери ресурсоємні: обчислювальна складність самоуваги зростає квадратично зі збільшенням розміру вхідної послідовності (кількості патчів), тому для високороздільних зображень модель може бути дуже великою. Раннім Vision Transformer для досягнення конкурентної точності потрібні були масивні моделі (понад 100 млн параметрів) і потужні процесори для тренування.

Іноді замість вибору “CNN або трансформер” сучасні дослідження пробують комбінувати найкраще з обох світів. Один зі шляхів – це гібридні моделі, де початкові шари створені за принципом згортки (щоб швидко виділити базові локальні ознаки), а наступні блоки – трансформерні (щоб знайти глобальні взаємозв’язки між вже виділеними ознаками). Це дозволило покращити якість на менших датасетах