основе трансформера на открытом датасете MovieLens, задачу сам себе поставил для обучения
Оговорюсь, ранее не обучал трансформеры и не работал с PyTorch
Для тех кто не знаком с датасетом, дам краткое описание: там три таблички, табличка с фильмами и жанрами, табличка с пользователями и информацией по ним (пол, возраст, род деятельности) и табличка с оценками фильмов пользователями (что пользователь смотрел, когда и какую оценку по пятибальной шкале поставил).
Данные я подготовил следующим образом: объединил таблицы и сгруппировал данные по пользователям, для каждого пользователя отсортировал историю просмотров с оценками в хронологическом порядке по timestamp, организовал цепочки фильмов и оценок со сдвигом для обучения (пример: пользователь посмотрел 20 фильмов, я нарезаю данные окном 10, 9 фильмов в цепочке, 10-й как target, итого 11 цепочек).
Теперь как я вижу трансформер
Input для модели: цепочки фильмов с жанрами и оценками, которые пользователь смотрел, данные пользователя, жанр и id фильма, который требуется оценить.
Output модели: оценка нового фильма.
Теперь где я застрял:
1. Как правильно подготовить эмбеддинги и подать данные на вход трансформеру? Я вижу для себя три разных непересекающихся домена данных: данные пользователей, данные фильмов и истории просмотров. Не уверен, что корректно схлопывать все в один тензор torch.cat(tensors), не смотря на то, что я организовал одинаковую размеренность векторов. Но как обучать эмбеддинги параллельно и независимо я не знаю.
2. Как правильно заэмбеддить истории просмотров фильмов с их жанрами и истории оценок? В отличие от данных пользователя это цепочки
3. Как правильно поработать с жанрами? Была идея обучить отдельную сетку на жанрах, чтобы получить эмбэддинги и не работать с бинарным вектором размерностью 17 (всего 18 уникальных жанров). Но возможно эти эмбецдинги также обучатся в трансформере параллельно с данными пользователя и цепочками
спасибо, если ты дочитал до этого момента, буду рад любой помощи или совету 🙏
а можно спросить одно, а зачем тебе тут торч?
Обсуждают сегодня