Выборка кандидата: потеря NCE и отрицательный образец

Нейронные сети

В своей работе я использовал метод, аналогичный отрицательной выборке, но обнаружил, что ничего не знаю о выборке кандидатов. Итак, после прочтения некоторой соответствующей информации, вот краткое изложение некоторого соответствующего содержания.

Основной контент исходит от tensorflowcandidate_samplingЗаписка со студенткой Университета Карнеги-МеллонаNotes on Noise Contrastive Estimation and Negative Sampling, а некоторые ссылаются на документацию nce_loss и sampled_softmax_loss tensorflow.

What is Candidate Sampling

Прежде всего, что такое выборка кандидатов? Предположим, что у нас есть проблема с набором выборок, где каждая выборка состоит из(x_i, T_i)x_iявляется входной функцией,T_iпредставляет собой небольшой набор целей, удовлетворяющихT \subset L, |T| << |L|. Наша цель - научитьсяF(x, y), так что учитываяx, мы можем предсказать классyположительная вероятность.

Если мы используем обычный метод softmax, то при расчете каждой выборки нам нужно пройти весь набор|L|, для всех возможныхyРассчитать один разF(x, y), это очень дорогая операция. Особенно в предсказании корреляции НЛП эта операция стоит дороже. Поэтому предлагается метод выборки кандидатов: при расчете каждой выборки мы случайным образом выбираем небольшой набор кандидатов из всего набора меток или набора отрицательных меток.S,будетSиTвместе образуют текущую коллекцию кандидатовC = S \cup T, И вCРассчитать наF(x, y).

Характеристики распространенных методов выборки кандидатов можно увидеть в следующей таблице:

В этой таблицеK(x)— произвольная функция, не зависящая от класса-кандидата. Поскольку Softmax предполагает нормализацию, добавление такой функции не влияет на вычисляемую вероятность.Q(y|x)даS_iОжидаемая вероятность или ожидаемое количество класса y в .

NCE и нативные образцы могут быть адаптированы кT_iявляется случаем мультимножества, и в этом случаеP(y|x)равныйT_iОжидаемое количество классов y в . NCE, отрицательная выборка и выборочная логистика могут быть адаптированы кS_iявляется случаем мультимножества, и в этом случаеQ(y|x)равныйS_iОжидаемое количество классов y в .

Noise Contrastive Estimation (NCE)

Рассмотрим простой и наиболее часто используемый случай,|T| = 1. Взяв в качестве примера классическое предсказание слов, в настоящее времяT= {t_i}. Мы даем эмпирическое распределение\widetilde{P}(x)и\widetilde{P}(t|x), то каждая положительная выборка в обучающей выборке эквивалентна\widetilde{P}(x)образецx_i, и в этомxна основе\widetilde{P}(t|x)повышенная дискретизацияt_iи откалибровать этикеткуd = 1. При этом начинаем с раздачиQ(x)выборка изkвыборки шума, затем

P(d, t|x)= \begin{cases} \frac{k}{1 + k}Q(x) & \text{d=0}\\ \frac{1}{1 + k}\widetilde{P}(t|x)& \text{d=1} \end{cases}

Тогда, используя формулу условной вероятности, мы можем написать:

P(d = 0| t, x) = \frac{k * Q(x)}{\widetilde{P}(t|x) + k * Q(x)}

P(d = 1| t, x) = \frac{\widetilde{P}(t|x)}{\widetilde{P}(t|x) + k * Q(x)}

В алгоритме нейронной сети мы используемP_\theta(t,x)заменить\widetilde{P}(t|x), и пытаюсь тренироваться с градиентным спуском\theta.

Negative Sampling

Отрицательная выборка является аппроксимацией NCE.Стоит отметить, что отрицательная выборка имеет сильную зависимость от распределения Q, но у NCE нет этой проблемы.

реализация тензорного потока

Документация о потере NCE в тензорном потоке может относиться кtf.nn.nce_loss. Обратите внимание, что при использовании этого метода метки должны быть отсортированы в порядке убывания частоты, так как метод выборки по умолчанию — tf.nn.log_uniform_candidate_sampler. Конечно, мы также можем реализовать собственный метод выборки.

Отрицательная выборка реализуется с помощью sampled_softmax_loss Обратите внимание, что sampled_softmax_loss может обрабатывать только случай одной положительной метки.