Есть ли что-нибудь, что гарантирует, что сверточные фильтры не останутся такими же?
Я обучил простую модель распознаванию рукописных чисел из набора данных mnist. Вот:
model = Sequential([
Conv2D(filters=1, kernel_size=(3,1), padding='valid', strides=1, input_shape=(28, 28, 1)),
Flatten(),
Dense(10, activation='softmax')])
Я экспериментировал с изменением количества фильтров для сверточного слоя, сохраняя при этом другие параметры постоянными (скорость обучения = 0,0001, количество эпизодов = 2000, размер пакета обучения = 512). Я использовал 1, 2, 4, 8 и 16 фильтров, и точность модели составила 92-93% для каждого из них.
Насколько я понимаю, во время обучения фильтры могут научиться распознавать различные типы краев изображения (например, вертикальные, горизонтальные, круглые). Этот эксперимент заставил меня задуматься, не дублируются ли какие-либо фильтры - с одинаковым или схожим весом. Что им этому мешает?
Ответы
Нет, ничто особо не мешает весу отличаться. На практике, хотя они почти всегда оказываются разными, потому что это делает модель более выразительной (то есть более мощной), поэтому градиентный спуск учится этому. Если у модели есть$n$ функции, но 2 из них одинаковы, тогда модель фактически имеет $n-1$ особенности, что является менее выразительной моделью, чем у $n$ функции, и поэтому обычно имеет большую функцию потерь.
Но даже если веса разные, некоторые из них могут быть очень похожими. Если вы визуализируете первый слой ваших фильтров свертки, и у вас их большое количество (например, 100), вы увидите, что некоторые из них учатся обнаруживать примерно одинаковые края (одинаковая ориентация и расположение). Эти функции настолько похожи, что они фактически дублируют в модели и не добавляют ей предсказательной силы.
На самом деле существует целая область исследований по выявлению избыточных функций и их устранению. Ле Кун показывает в « Оптимальном повреждении мозга», что удаление избыточных функций не только делает модель меньше и быстрее для вывода, но также может даже повысить ее точность.
Вот сообщение в блоге с подробным обзором одного из методов обрезки для получения дополнительной информации.