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

AI

Редактор
Регистрация
23 Август 2023
Сообщения
2 822
Лучшие ответы
0
Реакции
0
Баллы
51
Offline
#1


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



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

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



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

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


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


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

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

Сценарий

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

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

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

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

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

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

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

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

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

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

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



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

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



Точная формула 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



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

Заключение


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

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

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


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


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