Я не знаю, есть ли у вас такое чувство. При изучении модели алгоритма рекомендательной системы применение встраивания незаменимо. Можно даже сказать, что некоторые модели рекомендательного алгоритма находятся в процессе встраивания, что показывает важность встраивания в рекомендательной системе.
В этой статье отдельно предлагается встраивание и рассматривается применение встраивания в рекомендательных системах. Следующий контент в основном углубляет и понимает понимание встраивания в области рекомендательной системы из метода глубокого обучения и традиционного метода совместной фильтрации, а также чувствует важную идею «встраивания».
▌Метод глубокого обучения
Возьмем одну из самых классических статей в области рекомендательных систем, «Глубокие нейронные сети для рекомендаций YouTube». Эта структура модели видеорекомендаций Youtube в основном закладывает основные этапы рекомендательной системы: отзыв и сортировка, как показано ниже. рисунок Показать:
Среди них этап отзыва (генерация кандидатов) заключается в том, чтобы отфильтровать видео, которые могут заинтересовать пользователей, из рекомендуемой видеотеки, состоящей из миллионов, и уменьшить рекомендуемую видеотеку с миллионов до сотен. Но как мы можем завершить скрининг быстро и эффективно?
Вы должны знать, что youtube очень активный видеосайт, на который одновременно каждую секунду заходят тысячи людей, при этом необходимо выбрать сотни видео, представляющих интерес для сотен пользователей, из множества миллионов видео-кандидаты, которые персонализируются для каждого пользователя каждую секунду. Об этом нелегко думать, поэтому невозможно запускать модель каждый раз, когда вы вызываете пользователя, и решение связано с приложением для встраивания, которое будет представлено далее. На рисунке 1 ниже показана модель этапа отзыва YouTube:
На этапе обучения автономной модели используется простой и грубый софтмакс для классификации всех видео в видеотеке, а меткой является видео следующего просмотренного видео пользователя, Поэтому идея построения модели во всем отзыве Этап заключается в том, чтобы предсказать определенный момент в определенное время. Какие видео интересуют пользователей в видеотеке с более чем миллионом уровней, и какие видео они хотят щелкнуть и посмотреть больше всего?
Очень важной проблемой здесь является то, что требуется много вычислительных ресурсов и времени, чтобы сделать softmax для видео с более чем одним миллионом уровней, поэтому идея отрицательного образца в word2vec принимается на этапе автономного обучения модели припоминания. Но даже в этом случае, несмотря на миллионы видеобиблиотек и тысячи запросов на отзыв в секунду, онлайн по-прежнему не может удовлетворить спрос, вы не можете напрямую использовать модель для softmax на видео и выбрать TopN для отзыва. по вероятности. , значит есть метод встраивания в отзыв.
Как показано на рисунке 1 выше, основная идея состоит в том, чтобы использовать выходные данные предыдущего слоя softmax в качестве встраивания пользователя, а каждый вектор-строку весовой матрицы в слое softmax используется в качестве встраивания видео, поэтому что в процессе развертывания модели нет необходимости развертывать всю Нейронная сеть завершает процесс прогнозирования от исходного вектора признаков до конечного результата.Ей нужно только сохранить встраивание пользователя и встраивание видео в онлайн-памяти. базе данных, а ранжирование видео можно получить, переупорядочив операции внутреннего продукта, что значительно ускоряет отзыв.
Здесь мы будем использовать метод иллюстрации, чтобы конкретно представить, что такое встраивание пользователя, что такое встраивание видео, почему векторный внутренний продукт может быть вызван и почему значение, полученное с помощью внутреннего продукта, может отражать интерес пользователя к видео. Как показано на рисунке выше, предпоследний слой и последний слой softmax на рисунке 1 взяты и проанализированы отдельно.На самом деле последний слой softmax на рисунке 1 — это полносвязный слой с добавленной функцией softmax. (Рисунок 1) Количество нейронов в softmax) совпадает с количеством видео для классификации, оба равны T, а функция softmax нормализует выходные данные полносвязного слоя (softmax на рисунке) для получения значения вероятности соответствующие каждому видео.
Каждый нейрон этого полносвязного слоя (softmax на рисунке) соответствует весовому вектору, выдаваемому предыдущим полносвязным слоем (relu на рисунке), который является каждой строкой весовой матрицы W[T×N] на приведенном выше рисунке. , а Весовой вектор каждой строки — это встраивание видео. Количество и количество нейронов такое же, как и количество видео в видеотеке. T, выход верхнего полносвязного слоя (relu на рисунке) равен пользовательское встраивание, представленное на рисунке выше, равное X[N×1]. Следовательно, то, что на самом деле получается посредством внутреннего продукта встраивания пользователя и встраивания видео, — это прогнозируемое значение каждого видео, которое не было нормализовано функцией softmax, что в определенной степени отражает размер прогнозируемой вероятности.
Следовательно, чем больше значение внутреннего продукта встраивания пользователя и встраивания видео, тем выше вероятность того, что пользователь заинтересован в видео.Поэтому встраивание пользователя и встраивание видео могут быть сохранены в базе данных онлайн-памяти заранее, и метод переупорядочивания с помощью операции внутреннего продукта Получите рейтинг видео, чтобы улучшить скорость и эффективность отзыва.
Подводя итог, можно сказать, что для повышения скорости и эффективности отзыва это эквивалентно преобразованию вывода модели отзыва в метод, который быстро получает оценку видео пользователя с помощью метода встроенного векторного внутреннего произведения. Одно из применений встраивания можно увидеть на этом примере:Вычисляя сходство внедрения между пользователями и элементами, Embedding можно напрямую использовать в качестве одного из уровней отзыва или методов отзыва рекомендательной системы.
На самом деле, существует множество приложений, подобных внедрению, например документ Microsoft Item2Vec: Neural Item Embedding for Collaborative Filtering, который специально обучает внедрению элементов, а затем выполняет совместную фильтрацию на основе элементов, вычисляя сходство внедрения между элементами. Таким образом, диапазон рекомендуемых элементов-кандидатов также может быть сужен, что может быть использовано для прямой рекомендации похожих элементов.
Существует много способов специально изучить встраивание элементов, например, deepwalk, LINE, Node2vec и SDNE посредством встраивания графа. Таким образом, в сочетании с примерами применения этих вложений, краткое изложение применения встраивания в отзыв выглядит следующим образом:Путем вычисления сходства внедрения между пользователем и элементом или элементом и элементом сужается область действия библиотеки-кандидата рекомендаций.
Кроме того, суммируя текущие основные модели прогнозирования ctr, такие как wide&deep, deepFM, PNN и DCN, можно обнаружить, что встраивание имеет очень распространенное применение:Преобразование многомерных разреженных векторов признаков в низкоразмерные плотные векторы признаковВообще говоря, это преобразование разреженного векторного представления дискретных объектов после горячего кодирования в плотное векторное представление объектов.
Или, с другой точки зрения, встраивание само по себе представляет собой многомерное представление объектов, поэтому в модели прогнозирования ctrОбученное встраивание можно использовать как функцию входной модели глубокого обучения.Например, FNN использует предварительно обученные вложения FM в качестве входных данных модели, а затем получает взаимные признаки этих вложений с помощью перекрестных операций признаков, таких как многослойные персептроны. Для конкретного перекрестного анализа функций и обработки функций в системе рекомендаций, пожалуйста, обратитесь к официальному аккаунту.Обработка функцийсерия статей.
Это введение в приложение для встраивания в метод глубокого обучения Здесь я сосредоточусь на воплощении идеи встраивания в традиционном методе рекомендаций, связанном с недавно изученной совместной фильтрацией.
▌Традиционный метод
Хотя глубокое обучение играет все более важную роль в текущей модели рекомендательной системы, важная идея встраивания присутствует повсюду, и тень встраивания все еще можно увидеть в традиционных методах рекомендаций. Например, модель совместной фильтрации, основанная на разложении матрицы, как показано на следующем рисунке:
Разложив матрицу оценок пользователя Rating Matrix на две матрицы User Matrix и Item Matrix, мы можем рассматривать умножение User Matrix и Item Matrix как встраивание четырех пользователей и W из A, B, C, D соответственно. , X, Y, Z четырех вложений элементов перемножаются.
Можно видеть, что матрица оценки является относительно разреженной, что указывает на то, что некоторые пользователи не оценивают элементы, поэтому цель декомпозиции матрицы состоит в том, чтобы заполнить элементы, которые пользователи не оценивают, путем умножения разложенного внедрения пользователя и внедрения элемента, так что можно рекомендовать. Модель изучает параметры внедрения путем умножения внедрения пользователя и внедрения элемента, чтобы соответствовать оценке пользователя для элемента.
Как показано на рисунке выше, разложенное пользовательское вложение B ([1.4, 0.9]) и вложение элемента W ([1.5, 1.7]) умножаются, чтобы получить 3,63, что максимально близко к строке B и столбцу W. в Матрице рейтинга, которая равна 4.0. В соответствии с этим Вложение получается путем подгонки и обучения, и, наконец, встраивание пользователя и встраивание элемента, изученное моделью, умножаются для получения оценки, которую пользователь не дал элементу.Например , оценка строки A и столбца W в матрице рейтинга представляет собой пользовательское вложение A ([1,2, 0,8]), а вложение элемента W([1,5,1,7]) умножается, чтобы получить 3,16.
Поскольку модель относительно проста, вот код модели, реализованной с помощью tensorflow:
def build_model(user_indices, item_indices, rank, ratings, user_cnt, item_cnt, lr, lamb, mu, init_value):
W_user = tf.Variable(tf.truncated_normal([user_cnt, rank], stddev=init_value/math.sqrt(float(rank)), mean=0),
name = 'user_embedding', dtype=tf.float32)
W_item = tf.Variable(tf.truncated_normal([item_cnt, rank], stddev=init_value/math.sqrt(float(rank)), mean=0),
name = 'item_embedding', dtype=tf.float32)
W_user_bias = tf.concat([W_user, tf.ones((user_cnt,1), dtype=tf.float32)], 1, name='user_embedding_bias')
W_item_bias = tf.concat([tf.ones((item_cnt,1), dtype=tf.float32), W_item], 1, name='item_embedding_bias')
user_feature = tf.nn.embedding_lookup(W_user_bias, user_indices, name = 'user_feature')
item_feature = tf.nn.embedding_lookup(W_item_bias, item_indices, name = 'item_feature')
preds = tf.add(tf.reduce_sum( tf.multiply(user_feature , item_feature) , 1), mu)
square_error = tf.sqrt(tf.reduce_mean( tf.squared_difference(preds, ratings)))
loss = square_error + lamb*(tf.reduce_mean(tf.nn.l2_loss(W_user)) + tf.reduce_mean(tf.nn.l2_loss(W_item)))
tf.summary.scalar('square_error', square_error)
tf.summary.scalar('loss', loss)
merged_summary = tf.summary.merge_all()
#tf.global_variables_initializer()
train_step = tf.train.GradientDescentOptimizer(lr).minimize(loss) # tf.train.AdadeltaOptimizer(learning_rate=lr).minimize(loss) #
return train_step, square_error, loss, merged_summary
Хотя модель относительно проста, можно обнаружить, что идея встраивания на самом деле проходит через всю модель.
Помимо коллаборативной фильтрации на основе матричной декомпозиции, существует также коллаборативная фильтрация на основе автоэнкодеров.Идея коллаборативной фильтрации автоэнкодерами заключается в объединении оценок пользователя всех элементов в вектор фиксированной размерности (заполните 0, чтобы не было оценок ), а затем вектор оценки кодируется и декодируется автоматическим кодировщиком, а затем получается вектор с той же размерностью, что и вектор оценки.Выходной вектор модели автоматического кодировщика используется для соответствия входному вектору. Модель автоэнкодера представлена на рисунке:
Сначала входной вектор кодируется через два полностью связанных слоя, затем декодируется через два полностью связанных слоя, и, наконец, получается выходной вектор подобранного входного вектора. Модель также изучает параметры всей модели, подбирая существующие оценки.После того, как модель изучена, оценки элементов, ранее заполненных 0, могут быть получены через соответствующую позицию выходного вектора модели.
Хотя эта модель не имеет очевидного воплощения идеи внедрения, исходя из моего личного понимания внедрения, может ли плотный вектор оценки пользователя для всех элементов в конечном выводе модели использоваться в качестве пользовательского вектора внедрения, представляющего интерес пользователя?
▌Сводка
Посредством анализа встраивания в этой статье делается вывод о том, что встраивание имеет следующие три функции:
- Путем вычисления сходства внедрения между пользователем и элементом или элементом и элементом сужается область действия библиотеки-кандидата рекомендаций.
- Преобразование многомерных разреженных векторов признаков в низкоразмерные плотные векторы признаков.
- Обученное встраивание можно использовать как функцию входной модели глубокого обучения.
Какую бы важную роль в модели ни играло встраивание, в понимании сути вложения оно использует многомерный плотный вектор для характеристики вещей из множества измерений от начала до конца.