Глава 7. Визуализация данных и моделей
303
Рис. 7.7.
Пример диаграммы рассеяния из демонстрации Jena-weather. График
отражает зависимость между плотностью воздуха (rho, вертикальная ось координат)
и температурой (T, горизонтальная ось координат) за десять дней с заметной
отрицательной корреляцией
Наверное, вы слышали, как глубокие нейронные сети называют «черными
ящиками». Но не стоит торопиться считать сложным извлечение информации
изнутри нейронной сети во время обучения или выполнения вывода. Напротив,
заглянуть внутрь происходящего в каждом из слоев написанной на TensorFlow.js
модели совсем несложно
1
. Более того, если говорить о сверточных сетях, то усваи
ваемые ими внутренние представления чрезвычайно удобны для визуализации
в основном потому, что отражают визуальные концепты. С 2013 года разработано
1
На самом деле это высказывание говорит только о сложности описания в простых словах
происходящего в глубоких нейронных сетях большого количества математических опе
раций, по сравнению с некоторыми другими типами алгоритмов машинного обучения,
например деревьями принятия решений и логистической регрессией. В частности, в случае
дерева принятия решений можно обходить точки ветвления по очереди и объяснять при
чину выбора конкретной ветки простой фразой наподобие «поскольку коэффициент X
превышает 0,35». Эта задача не относится к теме данного раздела и называется интерпре
тируемостью модели (model interpretability).
304
Часть III • Продвинутые возможности глубокого обучения с TensorFlow.js
множество подходов визуализации и интерпретации этих представлений. Поскольку
рассматривать здесь все их не имеет смысла, мы охватим лишь три основных и наи
более полезных.
z
z
Визуализация выходных сигналов промежуточных слоев (промежуточных функ-
ций активации) сверточной сети.
Этот подход удобен для выяснения того, как
последовательные слои сверточной сети преобразуют свои входные сигналы,
и для получения первого представления о визуальных признаках, усвоенных
отдельными фильтрами сверточной сети.
z
z
Визуализация фильтров сверточной сети путем поиска наиболее активирующих
их входных изображений
. Подход удобен для выяснения того, к каким визуальным
паттернам или концептам чувствителен каждый из фильтров.
z
z
Визуализация карт интенсивности активаций классов во входном изображении
.
С помощью этой методики можно понять, какие части входного изображения
играют наиболее важную роль в генерации сверточной сетью итогового резуль
тата классификации, благодаря чему можно также выяснить, как сверточная сеть
получает выходной сигнал, и произвести «отладку» неправильных выходных
результатов.
Код демонстрации этих методик вы можете найти в примере visualizeconvnet из
репозитория tfjsexamples. Для его запуска выполните следующие команды:
git clone https://github.com/tensorflow/tfjs-examples.git
cd tfjs-examples/visualize-convnet
yarn && yarn visualize
Команда
yarn
visualize
отличается от уже знакомой вам по предыдущим при
мерам команды
yarn
watch
. Помимо сборки и запуска вебстраницы, она выполняет
еще некоторые действия вне браузера. Вопервых, устанавливает необходимые
библиотеки Python, а затем скачивает модель VGG16 (широко известная и часто
используемая глубокая сверточная сеть) и преобразует ее в формат TensorFlow.js.
Модель VGG16 предобучена на масштабном наборе данных ImageNet и доступна
в виде приложения Keras. По завершении преобразования модели
yarn
visualize
выполняет в tfjsnode набор исследований преобразованной модели. Почему в tfjs
node, а не в браузере? Потому что VGG16 — относительно большая сверточная сеть
1
.
В результате некоторые из этих шагов требуют значительных вычислительных
ресурсов и выполняются намного быстрее в менее стесненной в смысле ресурсов
среде Node.js. Еще больше ускорить эти вычисления можно, воспользовавшись
модулем tfjsnodegpu вместо применяемого по умолчанию tfjsnode (для этого вам
потребуется GPU с поддержкой CUDA с установленными нужными драйверами
и библиотеками; см. приложение A):
yarn visualize --gpu
1
Чтобы ощутить размеры VGG16, просто задумайтесь — общий размер ее весовых коэффи
циентов составляет более 528 Мбайт, по сравнению с размером весовых коэффициентов
MobileNet, составляющих менее 10 Мбайт.
Do'stlaringiz bilan baham: |