Применение Embedding в рекомендательной системе:
В рекомендательной системе можно
Embedding
вектор для быстрого припоминания
Векторизованный отзыв, изучение векторов интереса пользователей и элементов с помощью модели и вычисление сходства между пользователями и элементами с помощью внутреннего продукта, чтобы получить окончательный набор кандидатов (классическая модель отзыва Youtube).
Сбор данных: нейронные сети требуют большого количества обучающих выборок;
Обработка данных: в соответствии с конкретными проблемами данные обрабатываются и обучаются в соответствии со стандартом встраивания сцены.
веса: построить модель встраивания для тренировки весов;
Использование весов: рекомендации и визуализации с использованием встроенных весов
Рекомендация: Визуализируйте сходство между пользователями и элементами, вычислив внутренний продукт, который можно визуализировать с помощью PCA.
Векторизованный отзыв:
Ускорение с помощью приблизительного поиска ближайшего соседа:
Для онлайн-сервисов существуют жесткие требования к производительности (десятки миллисекунд). Сохраняя интересы пользователей
Встраивание и встраивание интереса к видео, полученному методом поиска ближайшего соседа
Результат top N означает, что алгоритм является LSH, локальным чувствительным хэшем.
На этапе отзыва сопоставьте все векторы интересов элементов с разными сегментами, а затем сопоставьте векторы интересов пользователей с сегментами, чтобы можно было вычислить только внутреннее произведение вектора пользователя и вектора элементов в этом сегменте => значительно сокращается объем вычислений.
Если каждое видео в видеотеке рассматривать как категорию, то в момент времени t для пользователя U и контекста C вероятность того, что пользователь посмотрит видео i, равна u
встраивание пользователя (вывод последней функции активации сети Relu) vi вложение видео i
Вложение входного слоя — это вектор пользовательского пространства и видеопространства соответственно, а конечный выходной слой — через
Встраивание пользователя и матрица встраивания полного видео представляют собой скалярное произведение (линейное изменение полного слоя соединения), и они преобразуются в одно и то же пространство, поэтому для пользователя и видео встраивание выходного слоя
это одно и то же пространство (его можно понимать как пространство интересов, а внутренний продукт двух представляет сходство)
Файсс Инструменты
Инструмент поиска подобия ИИ, разработанный командой FAIR (Facebook AI Research), решает проблему поиска ближайшего соседа в крупномасштабном d-мерном векторе.Используя Faiss, Facebook создал поиск ближайшего соседа в наборе данных на уровне миллиарда, а скорость увеличилась в 8,5 раз Faiss поддерживает только поиск Faiss в оперативной памяти Реализовано на C++, поддерживает Python pip install faiss-cpu pip install faiss-gpu
ИндексIVFFFlat:
IndexFlatL2 — поиск методом грубой силы, с низкой скоростью. Цель IndexIVFFlat — обеспечить более быстрый поиск. Во-первых, вектор базы данных делится на несколько подклассов методом кластеризации. Каждый подкласс представлен центром класса. IndexIVFFlat требует этапа обучения , и другой квантизатор индекса Релевантно, используйте квантизатор, чтобы определить, к какой ячейке он принадлежит.При вычислении вектора запроса выберите центр класса с ближайшим расстоянием, а затем примените точный метод запроса к подклассу, чтобы повысить точность индекса за счет увеличения числа смежных подклассов.
nlist, сколько пространств Вороного разбито на векторы базы данных
квантизатор = faiss.IndexFlatL2(d) # квантизатор
index.nprobe, выбрать n пространств Вороного для индексации
Отрегулируйте скорость и точность, изменив значение nprobe. Когда nprobe маленькое, запрос может быть неверным, но затраты времени малы. Когда nprobe большое, точность постепенно увеличивается, но также увеличиваются затраты времени. nprobe=nlist, он эквивалентен типу индекса IndexFlatL2.