Вступление
Эта статья является продолжением моей последней статьи, где я представил простые методы и некоторые модели соседства для рекомендаций, зависящих от времени. В этом посте я представлю два новых класса моделей, методы на основе матричной факторизации (MF-BPR и MF-TOP) и методы нейронных сетей (RNN и CNN).
Я буду использовать 4 метрики: NDCG, MRR, MAP и HR. Все они подробно описаны в моей предыдущей статье.
Модели обучаются с использованием отфильтрованной версии набора данных MovieLens 20M.
Методы на основе матричной факторизации
В этой части я определю две модели, основанные на матричной факторизации. Они полностью описываются одним уравнением:
r (s, l, i) - это оценка i-го элемента (большего и наиболее релевантного) по отношению к последовательности s (то есть пользователю) и последнему элементу l последовательности s. Как только у нас есть оценка для каждого i в I (набор элементов), мы можем применить простой аргумент (от большего к меньшему) для оценок и взять первые k элементов, чтобы получить k наиболее релевантных элементов для этого. Пользователь. Мы определяем U как размер встраивания сеанса и V как размер встраивания элемента.
Вышеприведенное уравнение можно разложить на две части. Первый:
В качестве входных данных он принимает последовательность элементов s («долгосрочные» предпочтения пользователя). wᵢ - это скаляр, который воплощает вес, который мы придаем долгосрочному предсказанию), e_seq - матрица вложения для последовательности, размером: U x | I |, qᵢ - вектор весов размера U и b₁, ᵢ смещение. s - это последовательность элементов, преобразованная в вектор размера количества элементов, и где мы добавили «1» в позицию i, если i-й элемент находится в последовательность; «0» в противном случае (то же, что и S-KNN).
Вторая часть:
Он принимает в качестве входных данных последний элемент в последовательности l и, следовательно, учитывает «краткосрочные» предпочтения пользователя. Для второй части e_item представляет собой матрицу вложения для элементов размера: V x | I |, qᵢ вектор весов размера V и b₂, ᵢ смещение. l - это последний элемент, преобразованный в вектор размера количества элементов, и где мы добавили «1» в позицию элемента (следовательно, ноль везде, кроме одной).
Затем обе части умножаются на скаляр и складываются. Это уравнение определяет оценку для i-го элемента. Чем больше балл, тем больше вероятность, что i-й элемент будет актуален для пользователя. В целях реализации вместо вычисления оценки по каждому элементу мы напрямую выводим вектор с размером количества элементов:
Ниже я добавил общий код для MF с функцией сверху.
Мы протестировали две разные функции потерь, которые мы собираемся описать ниже. Я использовал разные обозначения: S_N - это набор отрицательных элементов (каждый элемент, кроме ожидаемого), r (s, l, i) - это оценка, прогнозируемая для ожидаемого элемента i, r (s, l, j) - это баллы, предсказанные для пункта, которые не ожидаются, а σ - сигмовидная функция.
МФ-БПР
Эта потеря в первую очередь включает разницу между оценкой ожидаемого предмета и неожиданного предмета. Затем мы сопоставляем результат от 0 до 1 с помощью сигмоида, а затем берем среднее значение по всем элементам отрицательной выборки, умноженное на -1.
Следовательно, чем больше разница между положительной и отрицательной оценкой, тем больше будет выходной сигмоид (между 0 и 1), тем больше будет выход журнала (между -inf и 0) и, следовательно, при умножении на -1 значение меньше будет выход. Следовательно, чтобы минимизировать потери, мы должны исключить разницу между оценкой положительного и отрицательного результата, которая будет максимизирована!
Ниже я добавил специальный код для функции потери BPR:
MF-TOP
Потеря TOP сначала берет разницу между оценкой неожиданного элемента и ожидаемого элемента, затем мы сопоставляем результат между 0 и 1 с помощью сигмоида. Второй член - это термин регуляризации, который обеспечивает низкое значение неожиданной оценки. Наконец, мы берем среднее значение по всем пунктам отрицательной выборки.
Следовательно, если разница между положительной и отрицательной оценкой велика, а отрицательная оценка мала, общие потери будут небольшими. Термин регуляризации здесь важен, чтобы гарантировать, что оценка отрицательных условий достигает 0.
Ниже я добавил конкретный код для функции потерь TOP:
Полученные результаты
Я провел оптимизацию гиперпараметров для размера встраивания как сеанса, так и элемента и построил различные метрики на проверочном наборе, полученном как для потерь BPR, так и для TOP.
HR:
КАРТА:
MRR:
NDCG:
Наконец, мы видим, что лучшая модель для обеих потерь - это модель с наибольшим размером вложения (700). Следовательно, мы получаем результаты по метрикам на тестовом наборе для лучшей модели по двум потерям:
Нейронные сети
В этой части я представлю более продвинутые методы, зависящие от времени: нейронные сети, которые моделируют временные зависимости в таких последовательностях, как CNN, RNN.
RNN
Рекуррентная нейронная сеть (RNN) - это класс нейронной сети, в которой нейроны внутри «одной клетки» соединены вместе. Это позволяет NN моделировать временные зависимости внутри входной последовательности. Они широко используются для музыкальных и текстовых наборов данных (для генерации, классификации), но могут использоваться для любых задач, связанных с последовательностями и временными зависимостями между элементами внутри входных данных, таких как прогноз цен акций или рекомендации.
Ячейку RNN можно лучше понять, если развернуть ее, как показано ниже. Его можно разложить на t (размер последовательности) «классических» нейронов. Обратите внимание, что параметры являются общими для нейронов одной и той же клетки, поэтому размер последовательности не влияет на количество параметров внутри клетки.
Выше мы видим, что каждый нейрон (кроме первого) имеет два разных входа: вход последовательности и вход нейрона непосредственно перед этим в последовательности. Точная формула для самой простой RNN:
Следовательно, RNN можно понимать как несколько копий одного и того же нейрона, каждая из которых передает представление последовательности (вложения), наблюдаемой до сих пор, следующему нейрону.
В нашем случае мы не использовали классические RNN, поскольку они страдают от проблем с исчезающим и взрывающимся градиентом, мы использовали LSTM. Общий принцип остается прежним, они просто используют более сложную внутреннюю структуру для решения вышеупомянутой проблемы, вводя реальные ячейки памяти и забывая шлюзы.
В случае рекомендации, зависящей от времени, я использовал архитектуру ниже:
Я обучил модель, взяв каждую последовательность увиденного пользователем контента в качестве входных данных (без последнего элемента) и последовательность, сдвинутую на 1 влево (без первого элемента). Я использовал потерю кросс-энтропии с оптимизатором Adam. Ниже я построил график потери обучения в зависимости от количества слоев LSTM:
Я провел небольшой поиск по сетке по количеству слоев LSTM и построил различные показатели ниже.
HR:
КАРТА:
MRR:
NDCG:
Мы видим, что лучшая длина в моем случае - 1. Следовательно, мы получаем результаты по метрикам на тестовом наборе для лучшей модели:
CNN
Сверточная нейронная сеть (CNN) - это класс NN с прямой связью, в котором структура связи между нейронами основана на зрительная кора головного мозга животных. Первоначально они часто использовались в областях, связанных с изображениями и видео.
По сравнению с полностью подключенной NN, CNN инвариантен к переводу, что делает их идеальными для моделирования данных, которые по своей сути обладают этим свойством, таких как изображения, видео и рекомендации (то есть одномерное изображение).
Нейрон CNN можно лучше понять как фильтр (в смысле компьютерного зрения). Один и тот же фильтр будет перемещаться с одной стороны на другую в последовательности данных (с использованием распределения веса). В случае системы рекомендаций можно напрямую использовать свертку с необработанными данными, как показано ниже:
Но в моем случае я сначала использовал слой встраивания, это позволило мне использовать два разных cnn - горизонтальный и вертикальный:
Мы использовали E как размер встраивания, F - количество фильтров, h - размер фильтра и D - размер полностью связанного слоя.
Две CNN будут принимать в качестве входных данных встроенные последовательности, то есть матрицу t x E, где каждая строка представляет встроенный элемент:
- Вертикальный cnn будет состоять из F нейронов, каждый из которых является фильтром размера h * E, который будет скользить вертикально по встроенной матрице. Он смоделирует динамику между элементами в последовательности.
- Горизонтальный cnn будет состоять из F нейронов, каждый из которых является фильтром размера t, который будет скользить горизонтально по встроенной матрице. Это взвешенная сумма элементов вместе с каждым вложенным скрытым измерением.
Я обучил модель, взяв последний элемент в качестве цели и n элементов до элемента перед последним в качестве входных. Я использовал потерю кросс-энтропии с оптимизатором Adam.
Я провел поиск по сетке по количеству плотных слоев и размеру вложения. Ниже я построил различные показатели.
Убыток:
HR:
КАРТА:
MRR:
NDCG:
Мы видим, что лучшая модель в моем случае - это модель с 1 плотным слоем и размером встраивания 500. Следовательно, мы получаем результаты по метрикам на тестовом наборе для лучшей модели:
Сравнение
Теперь мы можем сравнить все наши модели:
Лучшая модель при рассмотрении всех показателей - сверточная нейронная сеть (CNN).
Заключение
В этой и предыдущей статье я представил 4 различных класса методов: простые методы, использующие некоторые простые правила с последним элементом последовательности, методы соседства, использующие некоторые метрики расстояния, методы матричной факторизации, которые изучают скрытое представление последовательностей. и предметы, и, наконец, методы NN, которые изучают сложные нелинейные отношения. CNN хорошо известны своими задачами, связанными с изображениями, но здесь мы показали, что они могут обеспечить лучшую производительность для рекомендаций, зависящих от времени!
использованная литература
- ШУДЗИН ВАН, Сиднейский технологический университет; Университет Маккуори, Австралия LONGBING CAO, Технологический университет Сиднея, Австралия ЯН ВАНГ, Университет Маккуори, Австралия, Исследование рекомендательных систем на основе сеансов, февраль 2019 г.
- МАЛЬТЕ ЛЮДЕВИГ, Технический университет Дортмунд, Германия ДИЕТМАР ЯННАХ, AAU Клагенфурт, Австрия, Оценка алгоритмов рекомендаций на основе сеансов, октябрь 2018 г.
- Цзяси Тан, Школа компьютерных наук, Университет Саймона Фрейзера, Британская Колумбия, Канада; Школа компьютерных наук Ке Ванга, Университет Саймона Фрейзера, Британская Колумбия, Канада, Персонализированная последовательная рекомендация Top-N посредством внедрения сверточной последовательности, февраль 2018 г.