Свёртка была эквивариантна: сдвинь картинку — сдвинется и карта откликов. Но классификатору нужно другое — узнавать кошку, где бы она ни была. Пулинг делает первый шаг к такой независимости от места: он сжимает карту, намеренно огрубляя положение, и покупает устойчивость к сдвигу ценой точных координат.

Огрубить положение

В прошлом уроке мы выяснили: свёртка эквивариантна к сдвигу — признак и его отклик путешествуют по карте вместе. Для поиска признака это отлично, но для ответа «на снимке есть цифра три» вредно: нам всё равно, в каком углу она написана. Нужна не эквивариантность, а инвариантность — ответ, не зависящий от точного места.

Пулинг — простой шаг в эту сторону. Он делит карту признаков на маленькие окна и заменяет каждое окно одним числом. Карта становится меньше, детали положения стираются, а вместе с ними уходит и лишняя чувствительность к сдвигу на пиксель-другой.

У этого сжатия сразу три пользы. Во-первых, устойчивость: небольшой сдвиг признака внутри окна не меняет ответа. Во-вторых, экономия: карта вдвое меньше по каждой оси — вчетверо меньше клеток, а значит, вчетверо меньше работы у следующих слоёв. В-третьих, рост охвата: после нескольких пулингов одна клетка карты «видит» уже большой кусок исходного изображения, и сеть переходит от мелких примет к крупным формам. За все три мы платим одним — забытым точным положением.

Одно число из окна

Возьмём окно и заменим его числа одним. Два способа встречаются чаще всего:

ymax=max(i,j)окноxij,yavg=1окно(i,j)окноxij.y_{\max}=\max_{(i,j)\in\text{окно}} x_{ij}, \qquad y_{\text{avg}}=\frac{1}{|\text{окно}|}\sum_{(i,j)\in\text{окно}} x_{ij}.

Максимальный пулинг берёт наибольшее — «есть ли в этом окне сильный отклик». Средний берёт среднее — «сколько отклика в окне в среднем». Окна обычно не пересекаются и идут с шагом, равным их размеру, так что каждая клетка входа попадает ровно в одно окно. Проверим оба на настоящей рукописной цифре из набора рукописных цифр, знакомого нам по картам признаков.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Реальная рукописная цифра три в сетке 8 на 8 с зелёными окнами 2 на 2, рядом её max-пулинг 4 на 4 (ярче, взяты сильнейшие значения) и average-пулинг 4 на 4 (мягче, усреднённый)
Рис. 29.1. Пулинг сжимает карту

Слева настоящая цифра 8×88\times8, разбитая на окна 2×22\times2. Max-пулинг (в центре) берёт из каждого окна сильнейшее значение и выходит ярким; average-пулинг (справа) усредняет и выходит мягче. Оба ужали карту вчетверо по числу клеток.

Max или average

Выбор между ними — это выбор вопроса. Max спрашивает «есть ли здесь признак хоть где-то в окне» и потому хорош для острых, локальных примет: край, уголок, штрих. Average спрашивает «насколько признак выражен в среднем» и мягче реагирует на шум. На практике в свёрточных сетях победил max: для распознавания важнее факт наличия признака, чем его усреднённая яркость. Есть и промежуточные варианты, но именно контраст max против average лучше всего показывает суть выбора.

Устойчивость к сдвигу

Проверим главное обещание пулинга на настоящем изображении. Возьмём карту краёв фотографии, сдвинем вход на один пиксель и посмотрим, насколько изменилась карта — до пулинга и после.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Четыре панели: карта признаков и она же при сдвиге входа на 1 пиксель — изменение 57 процентов; ниже те же карты после max-пулинга 2 на 2 — изменение всего 38 процентов
Рис. 29.2. Пулинг устойчивее к сдвигу

Сдвиг входа на один пиксель меняет сырую карту признаков на 57%57\%. После max-пулинга 2×22\times2 тот же сдвиг меняет карту всего на 38%38\% — почти в полтора раза меньше. Пулинг не делает признак полностью неподвижным, но заметно гасит его дрожь при малых сдвигах.

Пулинг или свёртка со stride

Есть и другой способ уменьшить карту — свёртка с шагом 22 из прошлого урока. В чём разница? Пулинг фиксирован: он всегда берёт max или среднее, у него нет весов и нечему учиться. Свёртка со stride — обучаемая: сеть сама решает, какую комбинацию окна взять при уменьшении.

Не сжимай слишком грубо

У сжатия есть подвох, о котором предупреждала теорема отсчётов. Уменьшая карту, мы берём отсчёты реже. Если сделать это слишком грубо, не убрав сперва мелкие детали, тонкий узор превратится в ложный — возникнет наложение спектров, алиасинг. Оттого честнее сперва чуть сгладить карту, а уже потом прореживать.

Градиент через max

Как учится сеть с пулингом? Средний пулинг гладок: производная делит входящий градиент поровну между клетками окна. А max — операция с изломом, как и знакомый нам ReLU. На прямом ходе он берёт одну клетку, победителя окна; на обратном градиент течёт только в неё:

ymaxxij={1,(i,j)=argmax0,иначе.\frac{\partial y_{\max}}{\partial x_{ij}}= \begin{cases}1,&(i,j)=\arg\max\\[2pt]0,&\text{иначе.}\end{cases}

Средний же пулинг раздаёт каждой клетке по 1/окно1/|\text{окно}|.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева окно 2 на 2 со значениями 0,2 0,9 0,4 0,3, максимум 0,9 выделен красным; справа обратный ход: градиент равен 1 только в клетке максимума, в остальных ноль
Рис. 29.3. Градиент через max

Слева окно 2×22\times2: максимум 0,90{,}9 выделен красным. Справа обратный ход: входящий градиент попадает целиком в клетку-победителя, остальным — ноль. Max-пулинг маршрутизирует градиент к тому месту, что дало сильнейший отклик.

Что теряется при пулинге

За устойчивость приходится платить. Огрубляя положение, пулинг выбрасывает точные координаты: он говорит «в этой области есть глаз», но не «глаз ровно здесь». Для ответа «есть ли кошка» это не беда, но для задач, где важна точная геометрия — как части сложены друг относительно друга, — потеря положения вредна. Не все считают пулинг удачной идеей.

Хинтон предложил взамен архитектуры, хранящие взаимное расположение частей. Спор не решён, но сама критика полезна: она напоминает, что за всякую инвариантность мы платим выброшенной информацией, и платить стоит с умом.

Русская линия: узнавать вопреки изменчивости

Пулинг — частный приём против общей проблемы: как узнавать образ, который никогда не повторяется в точности? Эту задачу в начале 19601960-х поставила советская школа распознавания образов. Марк Айзерман, Эмануил Браверман и Лев Розоноэр создали метод потенциальных функций — строгую теорию того, как машина учится узнавать классы по примерам, несмотря на разброс внутри класса. Их работы стали одним из истоков всей теории обучения по примерам.

Пулинг решает крохотную часть этой большой задачи — устойчивость к сдвигу на пиксель. Но идея одна: полезное представление отбрасывает неважные различия и держится за важные. Айзерман и его коллеги искали такие представления математически; свёрточная сеть с пулингом находит их из данных. Между строгой теорией распознавания 19601960-х и инженерным приёмом пулинга — прямая линия: и там, и там инвариантность к неважному оказывается ключом к узнаванию. Разница лишь в том, что раньше нужную инвариантность закладывали руками, а теперь сеть выучивает её сама, и пулинг — одна из немногих инвариантностей, которую всё же встроили в архитектуру заранее.

Лаборатория пулинга

Сдвиньте цифру и посмотрите на пулинг

Загружается живая иллюстрация…

Порядок опытов. Слева — настоящая рукописная цифра, справа — её карта после пулинга. Двигайте цифру вбок по пикселю и следите за двумя числами на табло: изменение сырых пикселей и изменение после пулинга. Первое растёт быстро, второе — заметно медленнее, и табло показывает, во сколько раз пулинг устойчивее. Переключите max на average и сравните. Вы своими руками увидите ту частичную инвариантность к сдвигу, ради которой пулинг и придуман.

Сборка: устойчивость ценой координат

Пулинг заменяет окно карты одним числом — максимумом или средним — и этим делает два дела разом: уменьшает карту и гасит её чувствительность к сдвигу на пиксель. Мы измерили это на настоящем изображении: сдвиг входа менял сырую карту на 57%57\%, а после max-пулинга — всего на 38%38\%. Max ловит наличие признака и пропускает через себя градиент только к клетке-победителю; average усредняет и делит градиент поровну. Устойчивость дана не даром: пулинг выбрасывает точное положение, за что его и критикуют. Уменьшать карту можно и обучаемой свёрткой с шагом, а грубое прореживание без сглаживания грозит алиасингом — привет теореме отсчётов. За всеми этими приёмами стоит общая цель, которую ставила ещё советская школа распознавания: научиться узнавать образ вопреки его изменчивости. Теперь у нас есть все детали свёрточной сети — свёртка, нелинейность, пулинг, — и пора собрать их в работающую архитектуру. С этого начинается следующий урок.

Задачи