В своей работе я использовал метод, аналогичный отрицательной выборке, но обнаружил, что ничего не знаю о выборке кандидатов. Итак, после прочтения некоторой соответствующей информации, вот краткое изложение некоторого соответствующего содержания.
Основной контент исходит от tensorflowcandidate_samplingЗаписка со студенткой Университета Карнеги-МеллонаNotes on Noise Contrastive Estimation and Negative Sampling, а некоторые ссылаются на документацию nce_loss и sampled_softmax_loss tensorflow.
What is Candidate Sampling
Прежде всего, что такое выборка кандидатов? Предположим, что у нас есть проблема с набором выборок, где каждая выборка состоит из,в
является входной функцией,
представляет собой небольшой набор целей, удовлетворяющих
. Наша цель - научиться
, так что учитывая
, мы можем предсказать класс
положительная вероятность.
Если мы используем обычный метод softmax, то при расчете каждой выборки нам нужно пройти весь набор, для всех возможных
Рассчитать один раз
, это очень дорогая операция. Особенно в предсказании корреляции НЛП эта операция стоит дороже. Поэтому предлагается метод выборки кандидатов: при расчете каждой выборки мы случайным образом выбираем небольшой набор кандидатов из всего набора меток или набора отрицательных меток.
,будет
и
вместе образуют текущую коллекцию кандидатов
, И в
Рассчитать на
.
Характеристики распространенных методов выборки кандидатов можно увидеть в следующей таблице:
В этой таблице— произвольная функция, не зависящая от класса-кандидата. Поскольку Softmax предполагает нормализацию, добавление такой функции не влияет на вычисляемую вероятность.
да
Ожидаемая вероятность или ожидаемое количество класса y в .
NCE и нативные образцы могут быть адаптированы кявляется случаем мультимножества, и в этом случае
равный
Ожидаемое количество классов y в . NCE, отрицательная выборка и выборочная логистика могут быть адаптированы к
является случаем мультимножества, и в этом случае
равный
Ожидаемое количество классов y в .
Noise Contrastive Estimation (NCE)
Рассмотрим простой и наиболее часто используемый случай,. Взяв в качестве примера классическое предсказание слов, в настоящее время
. Мы даем эмпирическое распределение
и
, то каждая положительная выборка в обучающей выборке эквивалентна
образец
, и в этом
на основе
повышенная дискретизация
и откалибровать этикетку
. При этом начинаем с раздачи
выборка из
выборки шума, затем
Тогда, используя формулу условной вероятности, мы можем написать:
В алгоритме нейронной сети мы используемзаменить
, и пытаюсь тренироваться с градиентным спуском
.
Negative Sampling
Отрицательная выборка является аппроксимацией NCE.Стоит отметить, что отрицательная выборка имеет сильную зависимость от распределения Q, но у NCE нет этой проблемы.
реализация тензорного потока
Документация о потере NCE в тензорном потоке может относиться кtf.nn.nce_loss. Обратите внимание, что при использовании этого метода метки должны быть отсортированы в порядке убывания частоты, так как метод выборки по умолчанию — tf.nn.log_uniform_candidate_sampler. Конечно, мы также можем реализовать собственный метод выборки.
Отрицательная выборка реализуется с помощью sampled_softmax_loss Обратите внимание, что sampled_softmax_loss может обрабатывать только случай одной положительной метки.