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

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

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

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

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

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

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

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

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

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) помогает “восстановить” важную информацию о разнице между классами, которая могла быть потеряна в процессе обучения. Это особенно полезно, когда классы сильно отличаются друг от друга, и важно учитывать эти различия. 

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

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

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

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

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

Сценарий

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

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

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

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

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

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

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

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

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

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

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

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

Математическая Интерпретация 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, где мы делимся новыми инструментами, кейсами, инсайтами и рассказываем, как всё это применимо к реальным задачам.

Автор: Aleron75

Источник

Rambler's Top100