Каждый инженер-программист использовал отладчик для отладки своего кода. Тем не менее, отладчик нейронной сети… Это новость! В этой статье [1] предлагается отладчик для отладки и визуализации внимания в сверточных нейронных сетях (CNN).

Прежде чем описывать отладчик CNN, я хочу выделить несколько атрибутов программных отладчиков (например, gdb): (I)Отладчики не зависят от программы, т.е. мы используем один и тот же отладчик для отладки многих программ; (II) Мы используем отладчик для отладки нескольких строк в нашем коде, т. е. не каждой строки; (III) Прежде чем использовать отладчик, мы осознанно решаем, какую часть программы мы хотим отлаживать (например, какую функцию); здесь мы устанавливаем наши точки останова; (IV)Отладчик помогает нам понять программу, приостанавливая ее выполнение в точке останова (например, S1), а затем выполняя несколько инструкций до другой точки (например, , S2). Проверяя ключевые изменения между S1 и S2, мы понимаем наш код. На рис. 1 показано, как отладчик помогает нам выполнить несколько инструкций между двумя точками нашей программы: S1 и S2.

Мы склонны рассматривать нейронные сети как черные ящики. Разве мы не можем разработать нейронную сеть отладчика для интерпретации этих черных ящиков?! Я считаю, что это возможно. L2-CAF [1] — это крошечная нейронная сеть размером 7x7, которая может визуализировать внимание в нейронных сетях. L2-CAF (I) поддерживает широкий спектр архитектур; (II)визуализирует внимание как на последнем, так и на промежуточном сверточных уровнях, т. е. может отлаживать различные части внутри заданной сети; (III)Перед использованием L2-CAF мы сознательно решаем, какую часть сети мы хотим отлаживать (например, какой уровень); (IV)L2-CAF помогает нам понять сеть, отслеживая ее выполнение между двумя точками (S1 и S2), а затем определяя ключевые функции между этими двумя точками. Рисунок 2 иллюстрирует, как L2-CAF отлаживает CNN.

Имея обученную CNN, как показано на рисунке 2, L2-CAF подает входное изображение x через обычный канал прямой связи (зеленый сплошной путь) для создания выходных данных сети NT(x). Затем L2-CAF снова передает x, но умножает последнюю карту сверточных признаков на фильтр f (оранжевый пунктир path) для создания нового отфильтрованного вывода FT(x,f). L2-CAF оптимизирует f с помощью градиентного спуска, чтобы свести к минимуму разницу между NT(x) и FT(x, f)при ограничении нормы L2 фильтра f.

Формально говоря, L2-CAF рассматривает визуализацию внимания как задачу оптимизации с ограничениями. Он использует ограничения L2-Norm C в качестве фильтра Aвнимания , отсюда и название L2-CAF. . L2-CAF решает следующую задачу оптимизации ограничений, используя градиентный спуск. Тем, кто знаком с задачами оптимизации, должно быть знакомо следующее уравнение

На рис. 4 показано умножение Адамара (по элементам) между сверточными картами признаков и L2-CAF. В стандартных архитектурах последние сверточные карты объектов A имеют Kканалов и 7x7 пространственные размеры. Соответственно, L2-CAF — это фильтр размером 7х7. Если L2-CAF состоит из единиц, целевая функция ||NT(x)-FT(x,f)|| равен нулю, но ограничение L2-Norm нарушается — ||f||_2 =sqrt(49) = 7. Напротив, если L2-CAF идентифицирует ключевые функции в A,соблюдается ограничение L2-Norm (||f| |_2=1) и ||NT(x)-FT(x,f)|| является минимальным.

Для отладки CNN L2-CAF использует градиентный спуск для определения ключевых функций внутри карт функций. Градиентный спуск помогает L2-CAF найти оптимальный фильтр f, который минимизирует функцию потерь ||NT(x)-FT(x,f)|| при соблюдении ограничения L2-Norm. Ограничение L2-Norm имеет два преимущества. Первое преимущество заключается в том, что он позволяет избежать тривиального решения, когда L2-CAF сходится ко всем единицам и делает вывод, что все функции одинаково важны, как показано на рис. 4 (вверху).

Второе преимущество ограничения L2-Norm заключается в том, что оно поддерживает несколько режимов. Соответственно, L2-CAF может обслуживать несколько местоположений одновременно. Это важно, когда изображение содержит несколько объектов в разных местах, как показано на рисунке 5.

Сеть L2-CAF бывает двух видов: классозависимая и классоспецифичная. L2-CAF без учета класса лучше всего подходит для сетей с встраиванием функций (например, сетей обучения поиску и представлению). Эти сети выводят встроенные функции с размерностью d , где каждое измерение представляет собой аспект входных данных сети. В отличие от этого, специфичный для класса L2-CAF лучше всего подходит для сетей классификации. L2-CAF для конкретного класса может генерировать тепловую карту для каждого выходного логита (разные классы), что делает его идеальным для изображений с несколькими отдельными объектами, как показано на рис. 6.

При отладке нашего кода мы можем установить точки останова в любой момент. Точно так же L2-CAF может устанавливать свои точки останова в разных частях сети. Соответственно, L2-CAF визуализирует внимание как в последнем, так и в промежуточном сверточных слоях. На рис. 7 показано, как L2-CAF может визуализировать два объекта одновременно на заданном изображении. L2-CAF обеспечивает крупнозернистое внимание при применении к последнему конверсионному слою и мелкозернистое внимание при применении к промежуточному конверсионному слою.

Наконец, я надеюсь, что эта статья донесла до нас следующий ключевой момент: мы можем понять нейронную сеть, отлаживая ее, подобно тому, как мы отлаживаем исходный код. L2-CAF — это первый отладчик нейронной сети, но требуются дальнейшие расширения.

Ссылки

[1] Таха, А., Ян, X., Шривастава, А. и Дэвис, Л. Общий подход к визуализации для сверточных нейронных сетей. ECCV 2020.

Реализация тензорного потока

Реализация PyTorch