Как визуально выглядит результат декомпозиции CNN
Что проверяют
Представляете ли вы, что именно увидите, разложив работу свёрточной сети по слоям, и умеете ли это получить и прочитать. Формулировка размытая, поэтому стоит уточнить: речь об интерпретации или о тензорном разложении слоёв для сжатия. Следом просят показать, как достать активации конкретного слоя.
Как отвечать
Опишите картинки от простого к сложному:
- фильтры первого слоя: сетка маленьких цветных квадратов, у ResNet 64 ядра 7×7, у VGG 3×3. Похожи на детекторы границ под разными углами и цветовые пятна. Веса перед показом нормируют в [0, 1], иначе отрицательные значения дают чёрные квадраты;
- карты активаций: полутоновое изображение на каждый канал. На ранних слоях узнаётся исходная картинка с подсвеченными контурами, на глубоких остаются грубые пятна: у ResNet на входе 224×224 последний свёрточный блок даёт 7×7;
- максимизация активации: синтезированное изображение, которое сильнее всего возбуждает нейрон. Получаются текстуры, части объектов, повторяющиеся узоры;
- атрибуция: тепловая карта поверх исходного изображения. Grad-CAM даёт размытое пятно на области объекта, saliency и Integrated Gradients дают попиксельную карту, LRP раскладывает предсказание на положительный и отрицательный вклад пикселей.
В PyTorch активации снимают через register_forward_hook или create_feature_extractor из torchvision.models.feature_extraction, атрибуцию считают в Captum (LayerGradCam, IntegratedGradients). В Keras собирают модель с выходами нужных слоёв. Если имелось в виду тензорное разложение, результат не картинка, а цепочка из нескольких узких свёрток (CP или Tucker) с меньшим числом параметров.
Где спотыкаются
Показывают как картинки фильтры глубоких слоёв. Ядро 3×3 на 256 каналов глазом не читается, там смотрят активации или максимизацию.
Забывают model.eval() и ту же нормализацию входа, что при обучении. Карты получаются, но описывают не то поведение сети.
Принимают тепловую карту за объяснение решения. Разрешение Grad-CAM ограничено последним свёрточным слоем, а часть методов, как показала работа «Sanity Checks for Saliency Maps», почти не меняется даже при случайных весах.