Обучение рекомендателя широкого и глубокого обучения

В этой статье описывается, как использовать компонент Train Wide и Deep Recommender в конструкторе Машинное обучение Azure для обучения модели рекомендаций. Этот компонент основан на широком и глубоком обучении, который предлагается Google.

Компонент Train Wide и Deep Recommender считывает набор данных с тройным рейтингом элементов пользователя и, при необходимости, некоторые функции пользователя и элемента. Он возвращает обученный модуль рекомендателя широкого и глубокого обучения. Затем можно использовать обученную модель для создания прогнозов рейтинга или рекомендаций с помощью компонента рекомендателя широкого и глубокого обучения оценкам.

Дополнительные сведения о моделях рекомендаций и рекомендателе широкого и глубокого обучения

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

Существует два основных подхода к системам рекомендаций.

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

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

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

Дополнительные сведения о рекомендателе широкого и глубокого обучения и лежащих в его основе вероятностных алгоритмах можно найти в соответствующей научно-исследовательской публикации: Широкое и глубокое обучение для систем рекомендаций.

Настройка конфигурации рекомендателя широкого и глубокого обучения

Подготовка данных

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

Требуемый набор данных пользователь-элемент-рейтинг

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

  • Первый столбец должен содержать идентификаторы пользователей.
  • Второй столбец должен содержать идентификаторы элементов.
  • Третий столбец содержит рейтинги для пар пользователь-элемент. Значения оценки должны быть числовыми типами.

Например, типичный набор "пользователь-элемент-рейтинг" может выглядеть так:

UserId MovieId Rating
1 68646 10
223 31381 10

Набор признаков пользователя (опционально)

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

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

UserId Возраст Пол Интересы Местонахождение
1 25 Мужской Драма Европа
223 40 female Романы Азия

Набор признаков элемента (необязательно)

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

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

MovieId Заголовок Исходный язык Жанры Year
68646 Крестный отец Английский Драма 1972
31381 Унесенные ветром Английский История 1939

Обучение модели

  1. Включите компонент Обучение рекомендателя широкого и глубокого обучения в свой эксперимент в конструкторе и подключите его к обучающему набору данных.

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

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

    Чем больше это число, тем более полноценным является обучение; тем не менее на обучение затрачивается больше времени, и могут возникнуть лжевзаимосвязи.

  4. Размер пакета: введите количество учебных примеров, используемых в одном шаге обучения.

    Этот гиперпараметр может повлиять на скорость обучения. Больший размер пакета приводит к уменьшению затрат времени, но может увеличить время сведения. Если пакет слишком велик для GPU или ЦП, может возникнуть ошибка памяти.

  5. Оптимизатор широкого участка: выберите один оптимизатор, чтобы применить градиенты к широкому участку модели.

  6. Скорость обучения оптимизатора широкого участка: введите число от 0,0 до 2,0, определяющее скорость обучения для оптимизатора широкого участка.

    Этот гиперпараметр определяет размер шага на каждом этапе обучения при переходе к функции минимизации потерь. Большая скорость обучения может привести к выходу за минимум, а слишком малая скорость обучения — вызвать проблему конвергенции.

  7. Размерность пересекающихся признаков: введите размерность, задавая требуемые идентификаторы пользователя и идентификаторы элемента.

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

  8. Оптимизатор глубокого участка: выберите один оптимизатор, чтобы применить градиенты к глубокому участку модели.

  9. Скорость обучения оптимизатора глубокого участка: введите число от 0,0 до 2,0, определяющее скорость обучения для оптимизатора глубокого участка.

  10. Размерность внедрения пользователя: введите целое число, чтобы задать размерность внедрения идентификатора пользователя.

    Рекомендатель широкого и глубокого обучения создает общие внедрения идентификаторов пользователей и внедрения идентификаторов элементов для как широкого, так и глубокого участков.

  11. Размерность внедрения элемента: введите целое число, чтобы задать размерность внедрения идентификатора элемента.

  12. Размерность внедрения категориальных признаков: введите целое число для задания размерности внедрения категориальных признаков.

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

  13. Скрытые единицы: введите число скрытых узлов глубокого компонента. Число узлов в каждом слое разделяются запятыми. Например, вводя "1000,500,100", вы указываете, что глубокий компонент имеет три слоя, причем слои от первого до последнего имеют соответственно 1000, 500 и 100 узлов.

  14. Функция активации: выберите одну функцию активации, применяемую к каждому слою; по умолчанию — ReLU.

  15. Выпадение: введите число от 0,0 до 1,0, чтобы определить вероятность удаления выходных данных в каждом слое во время обучения.

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

  16. Нормализация пакетов: выберите этот параметр для нормализации пакетов после каждого скрытого слоя в глубоком компоненте.

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

  17. Запуск конвейера.

Технические примечания

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

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

Следующие шаги

Ознакомьтесь с набором доступных компонентов для Машинного обучения Azure.