Глава 7. Визуализация данных и моделей
313
Мы вызываем эту функцию градиента в цикле. На каждой итерации цикла обнов
ляем входное изображение на основе возвращаемого ею значения градиента. Важ
ный неочевидный нюанс: необходимо нормализовать значения градиента, прежде
чем прибавлять их к входному изображению, гарантируя тем самым сопоставимые
величины обновлений на всех итерациях:
const norm = tf.sqrt(tf.mean(tf.square(grads))).add(EPSILON);
return grads.div(norm);
В итоге выполнения этого итеративного обновления входного изображения
80 раз получаем приведенные на рис. 7.10 результаты.
Листинг 7.9.
Градиентный подъем в пространстве входных данных
(в Node.js, из файла visualize-convnet/main.js)
314
Часть III • Продвинутые возможности глубокого обучения с TensorFlow.js
7.2.3. Визуальная интерпретация результата
классификации изображения сверточной сетью
Последняя из методик визуализации после обучения сверточной сети, с которой мы
вас познакомим: алгоритм
карты активации классов
(class activation map, CAM).
CAM стремится ответить на вопрос: «Какие элементы входного изображения играют
главную роль в выводимом сверточной сетью наиболее вероятном варианте класси
фикации?» Например, при передаче сети VGG16 изображения
cat.jpg
она выдает
в качестве наиболее вероятного класса Egyptian cat («Египетский мау») — с веро
ятностью 0,89. Но по самому входному изображению и результатам классификации
сложно сказать, какие части изображения оказались более важными для принятия
сетью этого решения. Безусловно, определенные части изображения (например,
голова кошки) сыграли более важную роль, чем прочие (например, белый фон).
Но существует ли объективный способ выразить это количественно для любого
входного изображения?
Ответ: да! Существует несколько способов, один из которых — использовать
CAM
1
. На основе входного изображения и результата классификации сверточной
сети CAM позволяет получить карту оценок важности различных частей этого
изображения. На рис. 7.11 приведены подобные сгенерированные CAM карты ин
тенсивности, наложенные поверх трех входных изображений: кошки, совы и двух
слонов. Как видим из результата для кошки, наиболее высокие значения в карте
интенсивности — у очертаний головы кошки. Постфактум можно сделать вывод:
дело в том, что эти очертания демонстрируют форму головы животного — харак
терный отличительный признак для кошки. Карт интенсивности для совы также
1
Алгоритм CAM впервые был описан в статье:
Zhou B. et al.
Learning Deep Features for
Discriminative Localization. 2016. http://cnnlocalization.csail.mit.edu/. Еще один широко
известный метод: локально интерпретируемые объяснения, не зависящие от устройства
модели (Local Interpretable ModelAgnostic Explanations, LIME). См. http://mng.bz/yzpq.
Рис. 7.11.
Карты активаций классов (CAM) для трех входных изображений глубокой нейронной
сети VGG16. Карты интенсивности CAM наложены на исходные входные изображения
Do'stlaringiz bilan baham: |