No history yet

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

Анатомія згортки

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

На кожній позиції фільтр виконує поелементне множення з частиною зображення, яку він покриває, а потім підсумовує результати в одне число. Це число стає пікселем у новій, «згорнутій» карті ознак. По суті, фільтр шукає певні патерни — наприклад, вертикальні лінії, краї або конкретні текстури. Різні фільтри шукають різні патерни.

Математично, для зображення II та ядра KK, згортка в точці (i,j)(i, j) обчислюється як сума добутків елементів ядра на відповідні елементи зображення.

S(i,j)=(IK)(i,j)=mnI(im,jn)K(m,n)S(i, j) = (I * K)(i, j) = \sum_{m}\sum_{n} I(i-m, j-n) K(m, n)

Керування розміром

Під час згортки розмір карти ознак зменшується. Щоб керувати цим процесом, використовують два ключових гіперпараметри: крок (stride) та доповнення (padding).

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

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

ВхідФільтрStridePaddingВихід
32x323x310 (None)30x30
32x323x311 (Same)32x32
32x323x321 (Same)16x16

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

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

Будівництво вглиб

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

Цю проблему вирішує архітектура (Residual Network). Її ключова ідея — залишкові зв'язки, або skip connections. Вони створюють «короткий шлях» для градієнта, пропускаючи його через один або кілька шарів. Це дозволяє вхідному сигналу напряму потрапляти на глибші шари.

Lesson image

Замість того, щоб шар намагався вивчити безпосереднє відображення H(x)H(x), він вчиться апроксимувати залишкову функцію F(x)=H(x)xF(x) = H(x) - x. Тоді оригінальне відображення стає H(x)=F(x)+xH(x) = F(x) + x. Якщо оптимальним є просто передати вхід без змін, мережі достатньо обнулити ваги в шарах, що вивчають F(x)F(x), що значно легше, ніж навчитися ідеальної тотожної функції.

Розширюючи поле зору

У задачах, де важливий контекст, наприклад, у семантичній сегментації, стандартна згортка має обмежене «поле огляду» (receptive field). Щоб його збільшити без втрати роздільної здатності через пулінг, використовують розширені згортки (dilated convolutions).

Вони працюють, додаючи «дірки» у фільтр. Параметр розширення (dilation rate) контролює відстань між точками ядра. Розширення 2 означає, що ядро охоплює область 5x5, але використовує ті самі 9 параметрів, що й ядро 3x3.

Нарешті, для завдань, де потрібно збільшити розмірність карти ознак (upsampling), як у генеративних моделях або сегментації, використовують транспоновані згортки (transposed convolutions). Їх іноді не зовсім коректно називають «деконволюціями».

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

Quiz Questions 1/6

Яку основну функцію виконує фільтр (або ядро) в операції згортки?

Quiz Questions 2/6

Як гіперпараметри stride (крок) та padding (доповнення) впливають на розмір карти ознак після згортки?

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