Receptive field: одна 5x5 свертка или две 3x3
Что такое receptive field в CNN? Какой receptive field у одной свертки 5x5 и у двух последовательных 3x3, и где меньше параметров?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
Receptive field - область входа, влияющая на output activation. При stride 1 две последовательные 3x3 свертки дают effective receptive field 5x5, но параметров меньше: 18C^2 против 25C^2 для одинаковых channels без учета bias.
Полный разбор
Receptive field показывает, какую область исходного входа “видит” конкретная activation после одного или нескольких слоев. У одной 5x5 convolution при stride 1 receptive field равен 5x5. У одной 3x3 - 3x3.
Если поставить две 3x3 свертки подряд со stride 1 и padding, effective receptive field становится 5x5: каждый output второго слоя зависит от 3x3 activation первого слоя, а каждая из них зависит от своего 3x3 окна во входе. Если stride больше 1 или есть dilation, формула меняется.
По параметрам две 3x3 часто легче одной 5x5 при одинаковом числе input/output channels: 2 * 3 * 3 * C * C = 18C^2 против 25C^2. Плюс между двумя слоями можно поставить nonlinearity, что повышает выразительность.
Теория
Stack маленьких convolution kernels может дать тот же receptive field дешевле и с дополнительной нелинейностью.
Типичные ошибки
- Считать receptive field только числом пикселей, забывая spatial shape.
- Игнорировать stride, dilation и padding.
- Сравнивать параметры без учета channels.
Как отвечать на собеседовании
- Сначала дайте интуицию receptive field, потом посчитайте 5x5 против 3x3+3x3.
- Уточните assumption: stride 1, одинаковые channels.