НЛП - отрицательная выборка - как извлечь отрицательные выборки из распределения шума? - PullRequest
3 голосов
/ 24 апреля 2019

Насколько я понимаю, отрицательная выборка случайных выборок K negative samples из распределения шума, P(w). Распределение шума - это, в основном, распределение частот + некоторая модификация слов. Обычно мы выбираем K = 5 ~ 20 отрицательных образцов.

P(w) = Uw(w)^(3/4) / normalization_factor

И я видел эти два одинаковых уравнения, которые представлены в двух разных обозначениях:

enter image description here

Три вопроса:

  1. Что означает синяя коробка? Какое значение имеют j и i?
  2. Второе уравнение, похоже, не показывает ничего, что "случайным образом рисует" слова из распределения шума. Что означает k в красном поле?
  3. Как вы выбираете образцы шума из распределения шума?

Допустим, что нормированное распределение шума выглядит следующим словарем:

dist = {'apple': 0.0023, 'bee': 0.004, 'desk':0.032', 'chair': 0.032 ...}

Как вы "случайным образом" рисуете K выборки шума из dist?

1 Ответ

1 голос
/ 01 июня 2019

Я понял это и написал учебную статью об отрицательной выборке.

  1. Синяя рамка означает, что u_j исходит из распределения шума P_n(w).
  2. Синяя рамка содержит аспект «случайного рисования» отрицательной выборки.u_j - это i -ая отрицательная выборка из распределения шума, а также одновременно j -й вектор слова в выходной весовой матрице.
  3. Вы используете что-то вроде np.random.choice()

Оригинальная функция стоимости, приведенная в оригинальной статье Word2Vec, на самом деле довольно запутанная с точки зрения обозначений.Более понятной формой функции стоимости будет:

enter image description here

, где c_pos - слово-вектор для положительного слова, а h - скрытый слойи эквивалентен вектору слова входного слова w.c_neg - вектор слов случайным образом нарисованных отрицательных слов, а W_neg - вектор слов всех K отрицательных слов.

Распределение шума - нормализованное распределение частот поднятых словк власти α.Математически это может быть выражено как:

enter image description here

Распределение слов, основанное на том, сколько раз каждое слово появилось в корпусе, называется распределением униграмм, иобозначается как U(w).Z - это коэффициент нормализации, а α - это гиперпараметр, который обычно равен α=3/4.

Повышение распределения до степени α имеет эффект сглаживания распределения:

enter image description here

Попытки сражатьсядисбаланс между обычными и редкими словами за счет уменьшения вероятности рисования общих слов и увеличения вероятности рисования редких слов.

Отрицательные выборки случайным образом извлекаются из распределения шума:

import numpy as np

unig_dist  = {'apple': 0.023, 'bee': 0.12, 'desk': 0.34, 'chair': 0.517}

sum(unig_dist.values())
>>> 1.0

alpha      = 3 / 4

noise_dist = {key: val ** alpha for key, val in unig_dist.items()}
Z = sum(noise_dist.values())
noise_dist_normalized = {key: val / Z for key, val in noise_dist.items()}
noise_dist_normalized
>>> {'apple': 0.044813853132981724,
 'bee': 0.15470428538870049,
 'desk': 0.33785130228003507,
 'chair': 0.4626305591982827}

Первоначально, chair было самым распространенным словом и имело вероятность быть нарисованным 0.517.После того как распределение униграмм U(w) было возведено в степень 3/4, оно имеет вероятность 0.463.

С другой стороны, apple было наименее распространенным словом вероятности 0.023, но после преобразования имеет вероятность 0.045.Дисбаланс между самым распространенным словом (chair) и наименее распространенным словом (apple) был смягчен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...