У кого больше рецептивное поле: две подряд свертки 3x3 или одна свертка 5x5?
Что проверяют
Умеете ли вы посчитать рецептивное поле, а не вспомнить вывод из статьи. Вопрос с подвохом: оба варианта дают одно и то же поле, и интересен не ответ, а то, как вы к нему пришли и какие условия равенства назовёте.
Как отвечать
При шаге 1 и без разрежения рецептивное поле одинаковое, 5 на 5. Складываются не размеры ядер, а их приращения: каждое ядро k добавляет k - 1, поэтому две тройки дают 1 плюс 2 плюс 2, то есть 5.
Общая формула по слоям:
r_l = r_(l-1) + (k_l - 1) * j_(l-1)
j_l = j_(l-1) * s_lгде j это накопленный шаг, произведение страйдов всех предыдущих слоёв.
Дальше сами объясните, зачем тогда разбивать свёртку. При одинаковом числе каналов на входе и выходе две свёртки 3 на 3 требуют 18 весов на пару каналов против 25 у одной 5 на 5, то есть больше чем на четверть меньше. Между ними появляется дополнительная нелинейность, и блок становится выразительнее при меньшем числе параметров. Отсюда и пошли стеки из троек.
Честно добавьте обратную сторону: два слоя дают два промежуточных тензора активаций и два запуска ядра, поэтому по памяти и иногда по времени разбиение не выигрывает.
Где спотыкаются
Складывают размеры ядер и получают 6, либо перемножают и получают 9. Ошибка всегда одна: забывают, что соседние окна перекрываются, и приращение равно k - 1, а не k.
Вторая: отвечают «одинаково» без оговорок. Равенство держится только при шаге 1 и обычной свёртке. Появился страйд у первого слоя, и второе ядро двигается уже по прореженной сетке, поле растёт быстрее. Разреженная свёртка ломает равенство так же.
Третья: путают теоретическое рецептивное поле с эффективным. Вклад пикселей внутри поля неравномерен, к краям он затухает, и реально работающая область заметно меньше расчётной. Поэтому на практике поле набирают с запасом, а не ровно по формуле.