Как обеспечить равномерную разреженность/разреженное кодирование в модели машинного обучения?

У меня есть модель машинного обучения (а именно, автоэнкодер), которая пытается изучить разреженное представление входного сигнала с помощью простого штрафного члена l1, добавленного к целевой функции. Это действительно работает для продвижения разреженного векторного представления в том смысле, что большинство элементов в изученном векторном представлении являются нулями. Однако мне нужно, чтобы разреженность была структурирована таким образом, чтобы ненулевые элементы были «разбросаны»/распределены/однородны по вектору. Конкретно, для данного входного сигнала моя модель создает разреженное представление, которое выглядит следующим образом:

Текущий разреженный код: [...,0,0,0,0,0,0,0,0,0,0,0,0.2,0.3,0.5,0.9,0.3,0.2,0.1,0,0,0,0,0,0,0,0,0,0,0,0,...]

Вы можете оценить, что большинство элементов нулевые, с небольшими кластерами ненулевых элементов. Вместо этого я хочу, чтобы разреженность была такой, чтобы ненулевые элементы «отталкивались» друг от друга, и, следовательно, сделать так, чтобы все ненулевые элементы были окружены по крайней мере 1 или более нулями и несколькими или отсутствовали ненулевыми элементами. являются соседними по вектору; конкретно, это должно выглядеть примерно так:

Желаемый разреженный код: [...,0,0,0,0,0,0,2,0,0,0,0,0,9,0,0,0,0,0,5,0,0,0,0,0,0,0,7,0,0,0,0,4,0,0, 0,6,...]

В последнем разреженном коде количество ненулевых элементов может быть таким же, как и в первом, но каждый ненулевой элемент отделен друг от друга некоторым количеством нулей.

Есть ли прямой штраф за целевую функцию, который я могу использовать, чтобы вызвать эту форму разреженности?


person Brandon Brown    schedule 03.04.2018    source источник


Ответы (1)


Дивергенция Кульбака-Лейблера измеряет расстояние между целевым распределением и выборочным распределением и является стандартной практикой для моделей скрытого пространства/вариационных автоэнкодеров. Многие реализации для него существуют в нескольких библиотеках. Это позволит вам обеспечить равномерное распределение на выходе, что (в некоторой степени) приведет к более равномерному распределению значений. Здесь также могут помочь дополнительные жестко запрограммированные ограничения; то есть наложение штрафа на среднеквадратичную разницу между суммами срезов вашего выходного вектора будет наказывать неравномерно распределенные значения.

person KonstantinosKokos    schedule 03.04.2018