Перейти к основному содержимому

Ограничение архитектуры

Самым простым способом сузить пространство поиска моделей является упрощение этого пространства:

  1. использовать меньше слоёв

  2. использовать меньше нейронов

  3. использовать меньше входных признаков

  4. уменьшить число связей

  5. наложить ограничения на веса

Уменьшение числа слоёв противоречит идеологии глубокого обучения по автоматической настройке информативных признаков за счёт увеличения числа слоёв нейросети. Однако в случае, когда реальная зависимость проста (например, линейна), а обучающих данных мало, это даёт эффект.

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

Уменьшение числа признаков - частный случай этого подхода, когда уменьшается число нейронов входного (нулевого) слоя. Если просто сокращать объём известной информации, то качество может сильно ухудшиться. Поэтому, если хотим использовать мало признаков, то имеет смысл сгенерировать вручную максимально информативную "выжимку" из всех исходных признаков (feature engineering). Например, если стоит задача определения времени суток по фотографии, то вместо всего изображения можно подавать интеллектуальные признаки, имеющие связь с ответом, такие как положение солнца на фото и средняя яркость пикселей. Стоить отметить, что добавление нестандартных признаков, сгенерированных вручную, способны повысить качество и сложной модели тоже.

Поскольку сложность модели зависит от числа настраиваемых параметров, отвечающих связям между нейронами, то можно упросить модель не за счёт сокращения числа нейронов, а за счёт сокращения числа связей между ними, сделав эти связи более разреженными (sparse connections).

Рассмотрим следующий многослойный персептрон, где, для простоты, опущены единичные нейроны.

Сделав предположение, что каждый нейрон на первом и втором скрытом слое зависит только от двух своих соседей, получим существенное уменьшение числа связей (и настраиваемых весов):

Можно пойти дальше, и наложить ограничения на значения весов, например предполагать их неотрицательность или связать веса друг с другом (weight sharing), чтобы они принимали одинаковые значения. Пример такого ограничения приведён на рисунке ниже, где на первом и втором слое, связи с одинаковыми весами помечены одинаковым цветом - красным, синим, зелёным и фиолетовым:

Подобное прореживание связей и привязка весов друг к другу используется в популярной операции свёртки (convolution) для обработки изображений.

::: Мягкая связка весов

Ручная разбивка на группы

Если точное приравнивание весов друг к другу слишком сильно снижает выразительную способность модели, то веса можно привязать друг к другу мягко (soft weight sharing) за счёт того, что мы позволим им принимать разные значения, но не сильно отличающиеся друг от друга. Это достигается ручной разбивкой весов на группы G1,G2,...GKG_1,G_2,...G_K и добавлением регуляризатора

λk=1KiGkjGk,j>iwiwj2\lambda \sum_{k=1}^K \sum_{i\in G_k}\sum_{j\in G_k, j>i}||w_i-w_j||^2

в функцию потерь, по которым будем настраивать модель. Чем выше гиперпараметр λ>0\lambda>0, тем более похожие значения будут принимать веса, находящиеся в одной группе.

:::

Автоматическое разбиение на группы

В работе [1] предлагается автоматически распределить веса на группы, предположив, что априорно веса распределены как смесь из KK нормальных распределений (Гауссиан):

p(w)=i{j=1KπjN(wiμj,σj2)}p(w)=\prod_i \left\{ \sum_{j=1}^K \pi_j \mathcal{N}(w_i|\mu_j,\sigma_j^2) \right\}

Взяв логарифм со знаком минус, получим регуляризатор:

R(w)=iln(j=1KπjN(wiμj,σj2))R(w) = -\sum_i\ln \left(\sum_{j=1}^K \pi_j \mathcal{N}(w_i|\mu_j,\sigma_j^2) \right)

Для настройки модели с автоматическим разбиением весов на группы (и сближением весов в рамках каждой группы) достаточно включить этот регуляризатор в целевую функцию потерь:

L(w)L(w)+λR(w)L(w) \to L(w)+\lambda R(w)

Литература

  1. Nowlan S. J., Hinton G. E. Simplifying neural networks by soft weight sharing //The mathematics of generalization. – CRC Press, 2018. – С. 373-394.