Быстрый старт MXBoard: инструмент визуализации данных MXNet

искусственный интеллект алгоритм Нейронные сети визуализация данных
Автор | У Цзюнь
Переводчик | Невежество
Монтаж | Натали, Винсент
Руководство по передовой ИИ:В этой статье вы узнаете, как начать работу с популярным инструментом визуализации данных MXNet — MXBoard.

Для получения дополнительных галантерейных товаров, пожалуйста, обратите внимание на публичный аккаунт WeChat «AI Frontline» (ID: ai-front)

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

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

Распределение обновления градиента с течением времени

Кроме того, визуализация векторов встраивания слов ясно показывает, что слова сходятся в разные многообразия в низкоразмерном пространстве, сохраняя контекстуальную близость. Другим примером является кластеризация данных: использование алгоритма T-SNE для отображения многомерных данных в низкоразмерное пространство. Визуализацию данных можно широко использовать во время глубокого обучения, чтобы лучше понять процесс обучения и сами данные.

Появление TensorBoard предоставляет пользователям TensorFlow мощные возможности визуализации. Мы получили отзывы от многих разных пользователей, включая корпоративных пользователей, о том, что многие люди используют TensorFlow из-за богатого набора функций, предоставляемых TensorBoard. Можно ли использовать этот мощный инструмент в других средах глубокого обучения? Благодаря усилиям TeamHG-Memex и их tensorboard_logger теперь мы можем использовать прозрачный интерфейс для записи пользовательских данных в файлы событий, которые затем считываются TensorBoard.

Он основан на нашей разработке MXboard, пакета Python для записи кадров данных MXNet и их отображения в TensorBoard. MXBoard можно установить, следуя этим простым инструкциям (https://github.com/awslabs/mxboard).

Примечание. Чтобы использовать все функции MXBoard, необходимо установить MXNet 1.2.0. Перед официальным выпуском MXNet 1.2.0 установите ночную версию MXNet: pip install --pre mxnet

Краткое руководство по MXBoard

MXBoard поддерживает большинство типов данных TensorBoard:

При разработке API MXBoard мы ссылались на API tensorboard-pytorch. Все API ведения журналов определены в классе SummaryWriter. Этот класс содержит такую ​​информацию, как путь к файлу, частота записи, размер очереди и т. д. файла записи. Чтобы зарегистрировать новые данные определенного типа, такие как скаляр или изображение, просто вызовите соответствующий API для объекта SummaryWriter.

Например, предположим, что мы хотим построить распределение данных с нормальным распределением с уменьшающимся стандартным отклонением. Сначала определите объект SummaryWriter следующим образом:

Затем в каждом цикле создайте NDArray со значениями из нормального распределения. Затем мы передаем NDArray в функцию add_histogram(), указав количество бинов и индекс цикла i, который будет индексом точек данных. Наконец, как и с любым дескриптором файла, используемым в Python, вызовите .close(), чтобы закрыть дескриптор файла, используемый SummaryWriter.

Для того, чтобы визуализировать график, вам нужно войти в рабочий каталог на терминале и запустить TensorBoard, введя следующую команду:

Затем введите 127.0.0.1:8888 в адресную строку браузера. Нажмите на ГИСТОГРАММУ, и вы увидите следующую визуализацию:

Визуализируйте все более и более узкие нормальные распределения

MXBoard в реальном мире

Используя то, что мы узнали выше, мы пытаемся выполнить следующие две задачи:

  1. Мониторинг контролируемого обучения

  2. Понимать внутреннюю работу сверточных нейронных сетей

Обучите модель MNIST

Мы будем использовать набор данных MNIST из API Gluon vision и использовать MXBoard для записи в реальном времени:

  • перекрестная потеря энтропии

  • Проверка и точность обучения

  • Распределение данных градиента

Все это можно использовать в качестве показателей для измерения прогресса обучения.

Во-первых, мы определяем объект SummaryWriter:

Мы указали flush_secs=5, потому что хотим, чтобы записи записывались в файл журнала каждые пять секунд, чтобы в браузере можно было отслеживать ход обучения в режиме реального времени.

Затем мы записываем кросс-энтропийную потерю в конце каждой партии:

В конце каждой партии мы записываем градиенты как тип данных HISTOGRAM, а обучаем и тестируем точность как тип SCALAR.

Затем мы одновременно запускаем сценарий обучения Python и TensorBoard, чтобы визуализировать ход обучения в реальном времени в браузере.

Чтобы воспроизвести этот эксперимент, полный код можно найти на Github.

Распространение обновлений градиента

Показатели обучения: потеря перекрестной энтропии, точность обучения, точность проверки.

Визуализация сверточных фильтров и карт признаков

Визуализация сверточных фильтров и карт объектов в виде изображений имеет смысл по двум причинам:

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

  2. Глядя на RGB-изображения фильтров и карт функций, мы можем понять изученные и значимые для сети функции, как правило, обнаружение границ и цвета.

Здесь мы используем три предварительно обученные модели CNN из MXNet Model Zoo, Inception-BN, Resnet-152 и VGG16. Фильтры первого сверточного слоя отображаются непосредственно в TensorBoard вместе с картами признаков, полученными при наложении изображения черного лебедя. Мы можем заметить, что сеть может иметь разные размеры ядра.


  • Inception-BN

Начало-БН: 7х7 ядер

  • RESNET-152

RESNET-152: 7x7 ядер

  • VGG16

VGG-16: 3x3 ядра

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

Последний пример не менее интересен. Встраивания являются ключевой концепцией в области машинного обучения, включая компьютерное зрение и обработку естественного языка (NLP). Это отображение представления данных высокой размерности в пространство низкой размерности. В традиционной классификации изображений выход предпоследнего слоя сверточной нейронной сети обычно подключается к полносвязному слою с активацией Softmax для предсказания класса или класса, к которому принадлежит изображение. Если вы удалите сеть для этого слоя классификации, у вас останется одна сеть, которая выводит вектор признаков для каждой выборки, обычно 512 или 1024 функции на выборку. Это называется встраиванием изображения. Мы можем вызвать API-интерфейс add_embedding() MXBoard, чтобы наблюдать за распределением вложений для наборов данных, спроецированных в 2D- или 3D-пространстве. Изображения с похожими визуальными характеристиками будут сгруппированы вместе.

Здесь мы случайным образом выбираем 2304 изображения из проверки и вычисляем их вложения с помощью Resnet-152, добавляем вложения в файл журнала MXBoard и визуализируем их:

Resnet-152 Внедрение 3D-проекции с использованием алгоритма PCA

По умолчанию мы используем алгоритм PCA для проецирования встраивания изображения 2304 в трехмерное пространство. Но эффект кластеризации не очевиден. Это связано с тем, что алгоритм PCA не может сохранить пространственные отношения между исходными точками данных. Поэтому мы используем алгоритм t-SNE, предоставляемый интерфейсом TensorBoard, для лучшей визуализации вложений. Построение оптимальной проекции — это динамический процесс:

Resnet-152 Внедрение 3D-проекции с использованием алгоритма T-SNE

После сходимости алгоритма t-SNE отчетливо видно, что набор данных разбит на несколько кластеров.

Наконец, мы можем использовать пользовательский интерфейс TensorBoard для проверки правильности классификации изображений. Мы вводим «dog» в правом верхнем углу графического интерфейса TensorBoard. Все изображения набора данных проверки, классифицированные как метка «собака», выделены. Мы также можем видеть, что кластеры, полученные из проекции T-SNE, находятся рядом с границами классификации.

Выделите изображение собаки

Весь соответствующий код и инструкции можно найти здесь (https://github.com/reminisce/mxboard-demo).

в заключении

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

Оригинальная английская ссылка:

https://medium.com/apache-mxnet/mxboard-mxnet-data-visualization-2eed6ae31d2c