Гиперсеть
Обычно нейросети используются, чтобы предсказывать значение, отвечающее какой-либо характеристике реального мира. Однако можно настроить нейросеть, называемой гиперсетью (hypernetwork, [1]) таким образом, чтобы она предсказывала веса другой целевой нейросети (target network).
Первый и второй подходы показаны на левой и правой стороне схемы [1]:
Во время обучения настраиваются не веса целевой сети, генерирующей итоговые прогнозы, а веса гиперсети, потому что именно гиперсеть генерирует веса основной сети и ответственна за её ошибки.
Использование гиперсети даёт следующие преимущества:
-
Если на вход гиперсети подавать объект для прогноза, то она может подстроить основную сеть таким образом, чтобы она лучше всего обработала именно такой объект. Например, при распознавании лиц человек может быть сфотографирован в фас или в профиль. Соответственно, гиперсеть оценит положение головы и сгенерирует обработчик именно для нужного ракурса.
-
Основная сеть, генерируемая гиперсетью, может ожержать разное число слоёв. Это даёт возможность по-простому обрабатывать легкие объекты и более детально - сложные объекты, где сложность обработки контролируется числом слоёв основной сети. Таким образом, гиперсеть позволяет более эффективно распоряжаться вычислительными ресурсами.
-
Если решается несколько похожих по смыслу задач, например детекция машин, грузовиков и мотоциклов, то вместо того, чтобы настраивать под каждый вид транспортного средства свою сеть можно настроить гиперсеть, которой дополнительно будем передавать тип задачи (что именно хотим распознать). Получим более экономичную архитектуру (всего одна сеть), которая, скорее всего, окажется и более точной, поскольку будет настраиваться по данным не одной отдельно взятой задачи, а по всем сразу. Поскольку задачи семантически связаны, то они будут переиспользовать схожие признаки, которые и сгенерирует гиперсеть. Гиперсеть реализует принцип мягкой общности весов (soft weight sharing), связывая их параметры гиперсети.
-
Если целевая сеть содержит много слоёв, то хранить все параметры для них может быть очень расточительным, особенно на слабых вычислителях, таких как мобильный телефон. Поэтому эффективнее хранить более компактную гиперсеть, которая уже будет генерировать веса для большой целевой сети только тогда, когда это необходимо. По сути, гиперсеть реализует алгоритм сжатия весов (weights compression).
-
Гиперсеть можно настроить таким образом, чтобы она выдавала рандомизированный выход, т.е. выход с элементами случайности). Этого можно добиться, если добавлять случайный шум к промежуточному слою гиперсети. Перезапуская гиперсеть несколько раз будем получать различные основные сетей, решающих одну и ту же задачу. С помощью этого набора сетей мы сможем сгенерировать набор прогнозов, в результате чего сможем оценить не только значение окончательного прогноза (среднее от всех прогнозов), но и неопределённость прогноза (стандартное отклонение прогнозов). Это важно, чтобы понимать, насколько прогнозу можно доверять по тому, согласуются ли прогнозы отдельных целевых сетей между собой или нет.