Ограничение архитектуры
Сложные нейросети, содержащие большое число параметров, переобучаются на недостаточно больших обучающих выборках, поэтому их нужно упрощать. Для этого можно
-
использовать меньш е слоёв;
-
использовать меньше нейронов;
-
использовать меньше входных признаков;
-
уменьшить число связей;
-
наложить ограничения на веса.
Уменьшение числа слоёв противоречит идеологии глубокого обучения по автоматической настройке информативных признаков за счёт увеличения числа слоёв нейросети. Однако в случае, когда реальная зависимость проста (например, линейна), а обучающих данных мало, это улучшает качество.
Уменьшение числа нейронов способно сильно упростить модель, особенно для многослойных персептронов, где связи между нейронами соседних слоёв устанавливаются по принципу каждый-с-каждым.
Уменьшение числа признаков - частный случай предыдущего подхода, когда уменьшается число нейронов входного слоя. Если просто сокращать объём известной информации, то качество может сильно ухудшиться. Поэтому, если хотим использовать мало признаков, то имеет смысл сгенерировать максимально информативную "выжимку" из исходных признаков путём их линейных и нелинейных преобразований (dimensionality reduction, feature engineering).
Например, если решается задача определения времени суток по фотографии, то вместо всего изображения можно подавать интеллектуальные признаки, имеющие связь с ответом, такие как положение солнца на фото и средняя яркость пикселей.
Уменьшение числа связей. Поскольку сложность модели зависит от числа настраиваемых параметров, отвечающих связям между нейронами, то можно упросить модель за счёт сокращения не числа нейронов, а числа связей между ними, сделав эти связи более разреженными (sparse connections).
Рассмотрим следующий многослойный персептрон, где для простоты опущены единичные нейроны.
Сделав предположение, что каждый нейрон на первом и втором скрытом слое зависит только от двух своих соседей, получим существенное уменьшение числа связей (и, соответственно, настраиваемых весов):
Можно пойти дальше, и наложить ограничения на значения весов, например, предполагать их неотрицательность или связать веса друг с другом (weight sharing), чтобы они принимали одинаковые значения. Пример такого ограничения приведён на рисунке ниже, где на первом и втором слое связи с одинаковыми весами помечены одинаковым цветом:
Подобное прореживание связей и привязка весов друг к другу используется в операции свёртки (convolution) для обработки последовательностей и изображений.
Мягкая связка весов (soft weight sharing)
Если точное приравнивание весов друг к другу слишком сильно снижает выразительную способность модели, то веса можно привязать друг к другу мягко (soft weight sharing) за счёт того, что мы позволим им принимать разные значения, но не сильно отличающиеся друг от друга. Это достигается ручной разбивкой весов на группы и добавлением в функцию потерь следующего регуляризатора
Чем выше гиперпараметр , тем более похожие значения будут принимать веса, находящиеся в одной группе.
В работе [1] предлагается автоматически распределить веса на группы, предположив, что априорно веса распределены как смесь из нормальных распределений (Гауссиан):
Взяв логарифм со знаком минус, получим регуляризатор:
Для настройки модели с автоматическим разбиением весов на группы (и сближением весов в рамках каждой группы) достаточно включить этот регуляризатор в целевую функцию потерь:
При этом настройка будет вестись не только по весам модели, но и по параметрам регуляризатора, подстраивая степень сближения весов по данным.