Потеря для минимизации перекрытия двух коллекций/наборов

Интересно, есть ли функция потерь, которая может измерять перекрытие двух коллекций/наборов (порядок не имеет значения). Например. основная истина — это набор [a, b, c], а прогноз моей модели — это набор [b, e, f], перекрытие — [b]. Моя цель состоит в том, чтобы максимизировать перекрытие моего прогноза. Есть ли у нас функция потерь, которая может измерять размер перекрытия, который я могу минимизировать (отрицательно) метрику, в результате я могу максимизировать перекрытие. (Я знаю, что одно решение может следовать за обучением REIFORCE, которое рассматривает перекрытие как вознаграждение за каждую выборку данных и использует вознаграждение, чтобы взвесить потерю, но у нас есть другое решение) Спасибо.


person Hypnoz    schedule 10.07.2018    source источник
comment
Ваша функция стоимости, как вы хотите, не дифференцируема - когда вы, наконец, найдете способ ее вычислить, вы поймете, что ее нельзя минимизировать с помощью SGD. Вам нужно придумать суррогатную функцию потерь для вашей проблемы.   -  person P-Gn    schedule 10.07.2018


Ответы (2)


Как заметил П-Гн, проблема с такими коэффициентами заключается в их дифференцируемости. Однако можно определить аналогичные меры для этих коэффициентов, которые являются дифференцируемыми. Долговая расписка (пересечение над объединением), предложенная Prune, является хорошей мерой. Для задач глубокого обучения более популярен аналогичный коэффициент Дайса:

2 * len(A intersect B)/(len(A)+ len(B))

который колеблется от 0, если нет перекрытия, до 1 для идентичных наборов. Для бинарных векторов это можно сформулировать как

2 * abs(a.b)/(a**2 + b**2)

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

Теперь, если ваш последний слой в вашей нейронной сети имеет активацию softmax (например, когда вы используете кросс-энтропию), вы можете интерпретировать выходные данные как вероятности этого конкретного элемента, принадлежащего вашему предсказанному набору. Предыдущая формула по-прежнему является хорошей мерой пересечения между вашими наборами, но остается дифференцируемой. Так называемая потеря Dice (1 – коэффициент Dice) впервые была представлена ​​в этой статье, где вы можете прочитать больше. об этом.

person McLawrence    schedule 10.07.2018

Для этой метрики нет предопределенной функции потерь; вам придется написать свой собственный. Однако установить метрики перекрытия достаточно легко. Например, len(A intersect B) / len(A union B) достаточно просто: отсутствие перекрытия равно 0,0; равенство равно 1,0; ваш случай будет 0,2: 20% доступных элементов находятся в перекрытии.

Это заставляет вас двигаться?

person Prune    schedule 10.07.2018
comment
Да, я могу написать свой вычислительный график. Мне просто интересно, что потеря len (пересечение B) / len (объединение B) выполнима? Как течет градиент для этой функции потерь (для меня неуверенность в том, что все здесь основано на подсчете, а не на вложенном/скрытом состоянии, возможна ли оптимизация?). - person Hypnoz; 10.07.2018