Прочитал статью CoLES: Contrastive Learning for Event Sequences with Self-Supervision, в который ребята рассказывают, как используя contrastive learning получать эмбединги для дискретной последовательности событий. Говорят, что применяют это в большой финансовой компании в Европе. По интересному совпадению, ряд авторов этой статьи читают канал



Пишут что генерить эмбединги вещь не новая, но если брать текст или картинки, то там контекст крайне помогает (соседние слова или пиксели), но так хорошо бывает не всегда.



For example, log entries, IoT telemetry, industrial maintenance, user behavior, travel patterns, transactional data, and other industrial and financial event sequences typically consist of interleaved relatively independent sub-streams.



Добавляют что популярные SOTA могут не выдать ничего путного с такими данными.

Используют новую хитрую аугментацию, генерируя подстроки из основной строки и используют их как высокоразмерные репрезентации изначальной строки. Применили метод на 4 датасетах и он везде зарешал



Какая цель? Сгенерировать такие эмбединги, чтобы они были близки, если произведены одним процессом и далеко, если разными (подстроки одного пользователя генерированы одним процессом)



Собственно на этом все; нарезали подстрок, отправили подстроки одного пользователя как позитивы, разных пользователей как негативы

Как меру близости использую Euclidian Distance (дополнительно обсудили как решать проблему negative samples)



Из интересного, решили использовать GRU для Sequence encoder



В целом - хорошая, прикладная инженерная статья. Не уверен что это будет state of the art, но рассмотреть как вариант для своих задач вполне можно

Из недочетов - 4 датасета кажется недостаточным для надежной оценки



P.S. Возможно в algorithm 1 (в статье) имеет смысл дополнительно слегка перемешивать соседние события?

#ArticleReview