Сборник визуализации значимых слоев 8 популярных моделей CNN.

Микроскоп систематически визуализирует каждый нейрон в нескольких обычно изучаемых моделях зрения и делает все эти нейроны связанными. может поддерживать следующие способы:

  • Визуализации можно получить с помощью библиотеки с открытым исходным кодом Lucid (объяснено с помощью кода ниже), созданной с поддержкой TensorFlow с помощью OpenAI.
  • Связывание моделей и нейронов позволяет немедленно изучить и изучить результаты исследований, в которых говорится об этих нейронах.
  • Может помочь исследователям, биологам, патологам и многим другим разными способами, если рассматривать их в нынешнем контексте пандемической ситуации.
  • В конечном итоге помогает лучше понять природу черного ящика CNN.

Это кому?

  • Всем, кому интересно узнать, как работают нейронные сети.
  • Общие артефакты для облегчения долгосрочного сравнительного изучения этих моделей.
  • Например, большее влияние на тех, кто является исследователями со смежными специальностями в области нейробиологии, будет полезно в возможности более легкого подхода к внутренней работе этих моделей зрения.

Как это использовать? Может ли кто-нибудь указать мне на что-нибудь интересное?

Микроскоп OpenAI основан на двух концепциях: месте в модели и технике. Образно говоря, место - это то место, куда вы наводите микроскоп, техника - это то, какую линзу вы прикрепляете к нему.

Модели состоят из графа «узлов» (слоев нейронной сети), которые связаны друг с другом «ребрами». Каждая операция содержит сотни «единиц», которые примерно аналогичны нейронам. Большинство используемых нами методов полезны только при определенном разрешении. Например, визуализация функции может быть указана только на «единицу», но не на ее родительский «узел».

Что делать, если нашли что-нибудь интересное?

Вы также можете присоединиться к каналу Distill Slack (ссылка для присоединения) #circuits для более подробного обсуждения функций и схем.

Могу ли я повторно использовать эти изображения? Что такое лицензия?

Визуализации, созданные Microscope в соответствии с лицензией Creative Commons Attribution 4.0 (CC-BY 4.0).

Давайте посмотрим на пример

Давайте возьмем мою любимую и популярную нейронную сеть ResNet, которая выиграла Image Net Challenge 2015, ResNet, которая была настолько сложной с точки зрения отсутствия слоев по сравнению с ее конкурентами. Он решил проблему классификации изображений, где входом является изображение одного из 1000 различных классов (например, книга, птицы, машина, чашка и т. Д.), А выходом является вектор вероятности из 1000 чисел.

С помощью OpenAI Microscope я могу увидеть образец набора данных и визуализировать базовую архитектуру ResNet v2 50 вместе с состоянием процесса классификации изображений на каждом используемом слое и образце набора данных.

OpenAI также надеется, что Microscope внесет свой вклад в работу по взаимодействию схем, выполняемую для обратного проектирования нейронных сетей посредством понимания связей между нейронами.

Более того, не только OpenAI имеет такую ​​библиотеку, но и многие другие библиотеки, такие как Keras's (https://keras.io/examples/conv_filter_visualization/), PyTorch's Captum. для интерпретации модели (https://github.com/pytorch/captum) Google вместе с OpenAi выпустили Атлас активации https://openai.com/blog/introduction-activation-atlases / ( Код Colab )

Другие визуализации AI Microscope, которые включены в программу, включают программное обеспечение для создания галлюцинаций 2015 года DeepDream и синтетические кривые настройки.

Библиотека Lucid:

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

Примечание.

  • Работает на Tensorflow 1.x
  • Требуется графический процессор.
  • Можно запустить в Колабе.
  • Поддержка Python 2.7 в соответствии с документами.

Давайте углубимся в код !!!

  1. Установить, импортировать, загрузить модель:

Теперь эта библиотека настроена и загружена модель InceptionV1.

2. Визуализируйте нейрон:

Визуализации можно выполнить в трех компонентах:

  • Цели. Что вы хотите, чтобы модель визуализировала?
  • Параметризация - как вы описываете изображение?
  • Преобразования. Перед какими преобразованиями вы хотите, чтобы ваша визуализация была устойчивой?

3 . Компонент "Цели":

4. Устойчивость к трансформации:

Пытается найти примеры, которые все еще сильно активируют цель оптимизации, даже если мы их немного трансформируем. Даже небольшое количество кажется очень эффективным в случае изображений, особенно в сочетании с более общим регуляризатором для высоких частот. Конкретно это означает, что мы стохастически дрожим, вращаем или масштабируем изображение перед применением шага оптимизации.

Он стохастически преобразует тензор тензорного потока, когда вы вводите начальное значение, см. #Jitter 2. чтобы понять логику, запустите это - ›?? transform.jitter

теперь играя с ним производит это

5. Параметризация:

Это изменяет, какое направление спуска будет наиболее крутым и насколько быстро оптимизация будет двигаться в каждом направлении, но не меняет минимальные значения. Если существует много локальных минимумов, это может растягивать и сужать их области притяжения, изменяя, в какие из них попадает процесс оптимизации.

понимаю это

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

Полный код:

Https://colab.research.google.com/github/tensorflow/lucid/blob/master/notebooks/tutorial.ipynb

Поскольку я довольно долго работал с компьютерным зрением, я могу понять, что он может прыгать над головой во время первоначального чтения, поэтому я прошу вас прочитать их для ознакомления:

Продолжайте читать _ / \ _ и оставайтесь в безопасности.

Ссылка:



Https://github.com/tensorflow/lucid