tgoop.com/quant_prune_distill/315
Create:
Last Update:
Last Update:
Fun with sparsity in PyTorch via Hadamard product parametrization
[Блог]
Занятный бложек про то, как можно сделать sparsity-inducing regularization.
Увидев слово Hadamard я триггернулся на Адамаровы матрицы, но нет, это Адамарово произведение.
Идея в следующем:
L1-регуляризацию можно представить как L2, c добавлением вспомогательных параметров u, так что исходный вес w параметризуется как w = u ⊙ vдля пар тензоров u и v.
Коэффициент регуляризации определяет степень разреженности получившейся матрицы.
Подход валидируют на табличной задаче с 500 признаками и двумя классами.
Сначала рассматривают логистическую регрессию реализованную в cvxpy, затем в торче.
Потом рассматривают групповую регуляризацию применительно к нейронным сетям. Групповая регуляризация зануляет целые каналы и имеет меньше дополнительных параметров (для неструктурированной маски число параметров удваивается, что может быть накладно).
В эксперименте берется небольшая MLP обучается на california_housing (известном всем табличникам) с некоторым коэффициентом регуляризации. Исходно было ~4500 весов, в полученной сетке остается около 600 ненулевых коэффициентов. Большинство каналов можно взять и вырубить.
Вся кухня имеет довольно прикольную реализацию через модуль
torch.nn.utils.parametrize
(см туториал). После задания такой параметризации, сети можно обучать не задумываясь вашим любимым оптимизатором с weight decay. Разве что в данном случае логичнее было брать AdamW, а не Adam. В общем, прикольно. Но интересует масштабируемость.
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/315