Использование HiPlot для создания параллельных графиков координат для визуализации обучения модели глубокого обучения.

Понимание и отладка производительности нейронной сети в наборе данных является важной главой в сквозном жизненном цикле модели машинного обучения (ML). Возможность понять, как обучается модель, может дать ценную информацию о том, где можно сделать улучшения. В этой статье мы рассмотрим создание простого, но эффективного метода визуализации процесса под названием обратное распространение во время обучения нейронной сети. Техника визуализации, которую мы будем использовать, называется параллельные координатные графики. Как правило, это метод, используемый для визуализации множества различных функций с различными единицами измерения или типами из нескольких точек данных. Ниже приведен план остальной части этой статьи:

  1. Понимание важности оценки моделей глубокого обучения
  2. Создание фундамента
  3. Создание визуализации

1. Понимание важности оценки моделей глубокого обучения

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

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

2. Создание фундамента

Теперь, когда мы понимаем преимущества, которые может дать визуализация обучения модели, давайте приступим к созданию! В этом примере будет использоваться Python версии 3.7.

Мы начнем с импорта наших зависимостей Python:

import tensorflow as tf
from keras import layers
from keras import models

Для этого примера модели мы будем использовать [1] набор данных Keras Boston Housing. Этот набор данных содержит 13 характеристик домов вокруг Бостона, при этом целевым значением является стоимость дома. Для загрузки и загрузки данных добавьте следующие строки:

# Download dataset
dataset = tf.keras.datasets.boston_housing
# Test train split
(x_train, y_train), (x_test, y_test) = dataset.load_data()
# Normalize data using training data
mean = train_data.mean(axis=0)
train_data -= mean
std = train_data.std(axis=0)
train_data /= std

test_data -= mean
test_data /= std

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

def build_model():
    model = models.Sequential()
    model.add(layers.Dense(64, activation='relu',
              input_shape=(x_train.shape[1],)))
    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dense(1))
    model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])

return model

Наконец, давайте обучим модель!

num_epochs = 18
model = build_model()
model_history = model.fit(x_train, y_train, epochs=num_epochs, batch_size=16, verbose=0)
test_mse_score, test_mae_score = model.evaluate(x_test, y_test)
print(test_mae_score)

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

3. Создание визуализации

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

Для этого мы будем использовать библиотеку Facebook HiPlot с открытым исходным кодом. HiPlot – это легкий инструмент, способный легко и быстро создать график с параллельными координатами на основе предоставленных данных. Это очень удобный способ одновременного отображения нескольких функций для визуального анализа того, как выглядят данные. В нашем случае мы можем использовать извлеченные метаданные об обучении нашей модели, чтобы очень быстро создать потрясающую и интерактивную визуализацию. Дополнительную информацию о HiPlot можно найти в HiPlot Github Repository.

Чтобы сгенерировать визуализацию, сначала вам нужно установить зависимость Python для HiPlot:

pip install -U hiplot

Далее вам нужно будет импортировать HiPlot и использовать функции для создания графика.

import hiplot as hip
data = [{'epoch': idx,
         'loss': model_history.history['loss'][idx], 
         'mae': model_history.history['mae'][idx]}
       for idx in range(num_epochs)]
hip.Experiment.from_iterable(data).display()

Приведенный выше код будет использовать возвращаемое значение метода Keras model.fit() для загрузки истории модели в HiPlot для визуализации и взаимодействия.

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

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

Рекомендации

[1] Набор данных о жилье в Бостоне: https://keras.io/api/datasets/boston_housing/

Харрисон Д. и Рубинфельд Д.Л. Гедонистические цены и спрос на чистый воздух (1978), J. Environ. Экономика и менеджмент, т. 5, 81–102.