- BrainTools - https://www.braintools.ru -

Как алгоритм Recovering Difference Softmax (RDS) делает рекомендации и уведомления точнее и эффективнее

Как алгоритм Recovering Difference Softmax (RDS) делает рекомендации и уведомления точнее и эффективнее - 1

Привет, чемпионы! Алгоритм Recovering Difference Softmax (RDS) – это не просто очередной метод машинного обучения [1], а полноценный подход к оптимизации уведомлений и контента для повышения вовлеченности пользователей. Изначально разработанный командой исследователей Duolingo [2], этот алгоритм эффективно решает конкретные проблемы, возникающие при использовании стандартных алгоритмов многоруких бандитов в задачах, связанных с повторяющимися уведомлениями. RDS помогает увеличить активность пользователей и удержать их внимание [3] к приложению или платформе.

Как алгоритм Recovering Difference Softmax (RDS) делает рекомендации и уведомления точнее и эффективнее - 2

Softmax обычно используется для мультиклассовой классификации, где важно определить вероятность принадлежности объекта к одному из нескольких классов Softmax function [4].

Что такое Softmax и зачем он нужен

Как алгоритм Recovering Difference Softmax (RDS) делает рекомендации и уведомления точнее и эффективнее - 3

Softmax – это функция, которая преобразует вектор чисел в вектор вероятностей, где сумма всех вероятностей равна 1.

Это позволяет интерпретировать выходные данные модели как вероятности принадлежности к разным классам.

🧠Математически [5] это выглядит так:

1P(i) = exp(a_i) / ∑ exp(a_j)

Где:

  • P(i) – вероятность принадлежности к классу i.

  • a_i – оценка (score) для класса i, выданная моделью.

  • Суммирование происходит по всем классам j.

Пример: Представим, модель классифицирует изображения по классам: кошка, собака и птица, и дала следующие оценки: кошка (2.0), собака (1.0), птица (0.5). Softmax преобразует эти оценки в вероятности:

Класс

Оценка (aᵢ)

exp(aᵢ)

P(i) (вероятность)

Кошка

2.0

7.39

0.665

Собака

1.0

2.72

0.245

Птица

0.5

1.65

0.149

Сумма

1.000

Теперь модель уверена на 66.5%, что на изображении кошка.

Recovering Difference Softmax: В чём особенность?

Recovering Difference Softmax (RDS) помогает “восстановить” важную информацию о разнице между классами, которая могла быть потеряна в процессе обучения [6]. Это особенно полезно, когда классы сильно отличаются друг от друга, и важно учитывать эти различия.  [7]

Главная идея — добавлять специальные “штрафы” или “бонусы” к оценкам классов на основе их различий, помогая модели [8]лучше различать классы и точнее вычислять вероятности.

Как алгоритм Recovering Difference Softmax (RDS) делает рекомендации и уведомления точнее и эффективнее - 4

Где это применяется RDS?

Алгоритм RDS может использоваться в самых разных областях, где нужно делать выбор:

Примеры использования Softmax и Recovering Difference Softmax

Сценарий

Использование Softmax

Использование Recovering Difference Softmax

Рекомендация фильмов

Предлагает несколько фильмов с примерно одинаковой вероятностью

Выбирает один фильм, который с наибольшей вероятностью понравится пользователю

Определение следующего слова

Предлагает несколько возможных следующих слов

Выбирает наиболее вероятное следующее слово

Распознавание объектов

Определяет несколько объектов на изображении с разными вероятностями

Определяет один объект на изображении с наибольшей вероятностью

Пример из Duolingo [2]: Duolingo использует RDS для оптимизации уведомлений, определяя лучшее время отправки уведомлений, чтобы пользователи не забросили учёбу. Алгоритм учитывает индивидуальные привычки пользователей (кто-то учится каждый день, кто-то раз в неделю) и “восстанавливает” мотивацию [12] тех, кто давно не заходил в приложение.

Математическая Интерпретация RDS

Как алгоритм Recovering Difference Softmax (RDS) делает рекомендации и уведомления точнее и эффективнее - 5

Точная формула RDS может варьироваться в зависимости от реализации, но общая идея заключается в модификации оценок классов перед применением Softmax. Например, можно добавить компонент, учитывающий разницу между максимальной и остальными оценками:

RunCopy code1P(i) = exp(a_i + bonus_i) / ∑ exp(a_j + bonus_j)

1P(i) = exp(a_i + bonus_i) / ∑ exp(a_j + bonus_j)

Где bonus_i – это функция, которая зависит от разницы между классами.

Техническая реализация

import numpy as np

def recovering_difference_softmax(logits, alpha=1.0):
    """
    Вычисляет Recovering Difference Softmax для заданных логитов.

:param logits: Входные логиты (numpy array), размерность (n_samples, n_classes)
:param alpha: Параметр, контролирующий степень различия
:return: Вероятности классов после применения RDS
"""
# Вычисляем стандартные вероятности softmax
exp_logits = np.exp(logits - np.max(logits, axis=1, keepdims=True))
softmax_probs = exp_logits / np.sum(exp_logits, axis=1, keepdims=True)

# Вычисляем среднее значение вероятностей для каждого класса
mean_probs = np.mean(softmax_probs, axis=0, keepdims=True)

# Вычисляем разницу между вероятностями и их средним значением
diff_probs = softmax_probs - mean_probs

# Применяем модификацию с параметром alpha
rds_probs = softmax_probs + alpha * diff_probs

# Нормализуем вероятности, чтобы их сумма была равна 1
rds_probs = rds_probs / np.sum(rds_probs, axis=1, keepdims=True)

return rds_probs

# Пример использования
logits = np.array([[2.0, 1.0, 0.1],
                   [1.0, 3.0, 0.2],
                   [0.5, 0.2, 2.0]])

rds_probs = recovering_difference_softmax(logits, alpha=0.5)
print("Вероятности после применения RDS:n", rds_probs)

Пояснения:

  1. Логиты: Это входные значения, которые подаются на softmax. Они представляют собой необработанные оценки для каждого класса.

  2. Стандартный softmax: Вычисляется с помощью экспоненты логитов, нормализованных по сумме, чтобы получить вероятности.

  3. Среднее значение вероятностей: Вычисляется среднее значение вероятностей для каждого класса по всем образцам.

  4. Разница вероятностей: Вычисляется разница между вероятностями и их средним значением, чтобы учесть отклонения.

  5. Модификация с параметром alpha: Параметр α контролирует степень, с которой учитываются различия. При α=0 RDS сводится к стандартному softmax.

  6. Нормализация: После модификации вероятности нормализуются, чтобы их сумма для каждого образца была равна 1.

Альтернативы Softmax

Как алгоритм Recovering Difference Softmax (RDS) делает рекомендации и уведомления точнее и эффективнее - 6

Также существуют и другие методы для решения задач классификации, например SVM (Support Vector Machine). SVM и Softmax часто дают схожие результаты, но Softmax позволяет получить вероятности классов, что может быть полезно во многих приложениях CS231n: Softmax классификатор – My deep learning.

Заключение

Recovering Difference Softmax — мощный инструмент для улучшения работы алгоритмов машинного обучения, особенно когда нужно делать чёткие выборы. Он помогает алгоритмам быть более уверенными в своих решениях и лучше справляться с задачами, где важна точность.

Особенно эффективен он в задачах, где важны время, новизна контента и персонализация. Если ты хочешь, чтобы твои пользователи были довольны и активны, RDS — это то, что тебе нужно!

📚Список источников

🔥 Ставьте лайк и пишите, какие темы разобрать дальше! Главное — пробуйте и экспериментируйте!

✔️ Присоединяйтесь к нашему Telegram-сообществу @datafeeling [21], где мы делимся новыми инструментами, кейсами, инсайтами и рассказываем, как всё это применимо к реальным задачам.

Автор: Aleron75

Источник [22]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/15540

URLs in this post:

[1] метод машинного обучения: https://t.me/datafeeling/1281

[2] Duolingo: https://habr.com/ru/companies/datafeel/articles/907412/

[3] внимание: http://www.braintools.ru/article/7595

[4] Softmax function: https://en.wikipedia.org/wiki/Softmax_function

[5] Математически: http://www.braintools.ru/article/7620

[6] обучения: http://www.braintools.ru/article/5125

[7] важно учитывать эти различия. : https://medium.com/@jakemazurkiewicz6/how-i-re-created-duolingos-famous-notification-algorithm-00fce580b84e

[8] модели : https://t.me/datafeeling/1254

[9] Выбор лучших товаров : https://t.me/datafeeling/1293

[10] зрение: http://www.braintools.ru/article/6238

[11] Распознавание объектов на изображениях: https://t.me/tech_hipster/1182

[12] мотивацию: http://www.braintools.ru/article/9537

[13] Duolingo – Wikipedia: https://en.wikipedia.org/wiki/Duolingo

[14] softmax is not enough (for sharp out-of-distribution) – OpenReview: https://openreview.net/forum?id=wMj6PgKVuJ

[15] Apple Machine Learning Research at ICLR 2025: https://machinelearning.apple.com/research/iclr-2025

[16] A Sleeping, Recovering Bandit Algorithm for Optimizing Recurring Notifications PDF: https://dl.acm.org/doi/pdf/10.1145/3394486.3403351

[17] The Duolingo Score Tracks Your Learning Progress: https://blog.duolingo.com/duolingo-score/

[18] Improving Routing in Sparse Mixture of Experts with Graph PDF: https://arxiv.org/pdf/2505.00792

[19] Recovering Neural Network Weights through Controlled Channels: https://arxiv.org/html/2503.19142v1

[20] NetFormer: An interpretable model for recovering dynamical: https://openreview.net/forum?id=bcTjW5kS4W

[21] @datafeeling: https://t.me/+w0V_HEhKSkIyMTYy

[22] Источник: https://habr.com/ru/companies/datafeel/articles/908770/?utm_campaign=908770&utm_source=habrahabr&utm_medium=rss

www.BrainTools.ru

Rambler's Top100