Контролируемая мера подобия

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

Помните, что мы обсуждаем контролируемое обучение только для того, чтобы создать меру подобия. Мера подобия, будь то ручная или контролируемая, затем используется алгоритмом для выполнения неконтролируемой кластеризации.

Сравнение ручных и контролируемых мер

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

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

Процесс контролируемой меры подобия

На следующем рисунке показано, как создать контролируемую меру подобия:

Введите данные объекта. Выберите DNN: автоэнкодер или предиктор. Извлечь вложения. Выберите измерение: скалярное произведение, косинус или евклидово расстояние.
Рисунок 1: Шаги по созданию контролируемой меры сходства.

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

Выберите DNN на основе обучающих меток

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

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

Сравнение автоэнкодера и предиктора DNN. Начальные входные данные и скрытые слои одинаковы, но выходные данные фильтруются по ключевому признаку в модели предикторов.
Рисунок 2: Сравнение автоэнкодера и предиктора.

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

  • Предпочитайте числовые функции категориальным функциям в качестве меток, потому что потери легче вычислить и интерпретировать для числовых функций.

  • Не используйте в качестве меток категориальные признаки с кардинальностью \(\lesssim\) 100. Если вы это сделаете, DNN не будет вынуждена сокращать ваши входные данные до вложений, потому что DNN может легко предсказывать категориальные метки с низкой кардинальностью.

  • Удалите функцию, которую вы используете в качестве метки, из входа в DNN; в противном случае DNN будет точно предсказывать результат.

В зависимости от вашего выбора меток результирующая DNN будет либо DNN автокодировщика, либо DNN предиктора.

Функция потерь для DNN

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

  1. Рассчитайте потери для каждого выхода DNN. Для выходов, которые:
    • Числовой, используйте среднеквадратичную ошибку (MSE).
    • Одновалентный категориальный, используйте логарифмическую потерю . Обратите внимание, что вам не нужно реализовывать потерю журнала самостоятельно, потому что вы можете использовать библиотечную функцию для ее расчета.
    • Многовалентный категориальный, используйте кросс-энтропийную потерю softmax . Обратите внимание, что вам не нужно будет самостоятельно реализовывать потерю перекрестной энтропии softmax, потому что вы можете использовать библиотечную функцию для ее расчета.
  2. Рассчитайте общие потери, суммируя потери для каждого выхода.

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

Использование DNN в онлайн-системе

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