아래 논문을 읽고 있는데 네거티브 샘플링의 개념을 이해하는 데 문제가 있습니다.
http://arxiv.org/pdf/1402.3722v1.pdf
누구든지 도와 주시겠습니까?
답변:
의 개념은 word2vec
텍스트에서 서로 가깝게 (서로의 맥락에서) 나타나는 단어에 대한 벡터 간의 유사성 (내적)을 최대화하고 그렇지 않은 단어의 유사성을 최소화하는 것입니다. 연결하는 논문의 방정식 (3)에서 지수를 잠시 무시하십시오. 당신은
v_c * v_w
-------------------
sum(v_c1 * v_w)
분자는 기본적으로 단어 c
(컨텍스트)와 w
(대상) 단어 사이의 유사성 입니다. 분모는 다른 모든 컨텍스트 c1
와 대상 단어 의 유사성을 계산합니다 w
. 이 비율을 최대화하면 텍스트에서 더 가깝게 나타나는 단어가 그렇지 않은 단어보다 더 유사한 벡터를 갖게됩니다. 그러나 많은 컨텍스트가 있기 때문에이를 계산하는 것은 매우 느릴 수 있습니다 c1
. 네거티브 샘플링은이 문제를 해결하는 방법 중 하나입니다. 몇 가지 컨텍스트 c1
를 무작위로 선택하기 만하면 됩니다. 최종 결과는 경우 cat
의 맥락에 나타나는 food
, 다음의 벡터 food
의 벡터에 더 비슷 cat
의 벡터 이상 (이들의 내적에 의해 측정 됨) 몇몇 다른 무작위로 선택된 단어(예를 들어 democracy
, greed
, Freddy
) 대신 언어의 다른 모든 단어 . 이것은 word2vec
훈련 을 훨씬 더 빠르게 만듭니다 .
word2vec
주어진 단어에 대해 유사해야하는 단어 목록 (긍정 클래스)이 있지만 부정적인 클래스 (대상 단어와 유사하지 않은 단어)는 샘플링에 의해 컴파일됩니다.
Softmax (현재 대상 단어와 유사한 단어를 결정하는 함수)를 계산 하는 것은 일반적으로 매우 큰 V (분모)의 모든 단어를 합산해야하기 때문에 비용이 많이 듭니다 .
무엇을 할 수 있습니까?
소프트 맥스 를 근사화 하기 위해 다양한 전략이 제안되었습니다 . 이러한 접근 방식은 소프트 맥스 기반 및 샘플링 기반 접근 방식 으로 분류 할 수 있습니다 . Softmax 기반 접근 방식은 softmax 계층을 그대로 유지하지만 아키텍처를 수정하여 효율성을 향상시키는 방법입니다 (예 : 계층 적 소프트 맥스 ). 반면에 샘플링 기반 접근 방식은 소프트 맥스 레이어를 완전히 없애고 대신 소프트 맥스에 근접하는 다른 손실 함수를 최적화합니다 (그들은 계산하기 저렴한 다른 손실로 소프트 맥스의 분모에서 정규화를 근사화하여이를 수행합니다. 네거티브 샘플링).
Word2vec의 손실 함수는 다음과 같습니다.
다음으로 분해 할 수있는 로그 :
일부 수학적 및 그라데이션 공식 ( 6 에서 자세한 내용 참조 )을 사용하면 다음과 같이 변환됩니다.
보시다시피 이진 분류 작업으로 변환되었습니다 (y = 1 포지티브 클래스, y = 0 네거티브 클래스). 이진 분류 작업을 수행하기 위해 레이블이 필요하므로 모든 컨텍스트 단어 c 를 참 레이블 (y = 1, 양성 샘플)로 지정하고 말뭉치에서 무작위로 선택된 k 를 거짓 레이블 (y = 0, 음성 샘플)로 지정합니다.
다음 단락을보십시오. 대상 단어가 " Word2vec " 라고 가정합니다 . 3 창, 우리의 상황에 맞는 단어는 : The
, widely
, popular
, algorithm
, was
, developed
. 이러한 문맥 단어는 긍정적 인 레이블로 간주됩니다. 부정적인 라벨도 필요합니다. 우리는 무작위로 코퍼스에서 일부 단어를 선택 ( produce
, software
, Collobert
, margin-based
, probabilistic
) 음의 샘플로 고려합니다. 우리가 말뭉치에서 무작위로 몇 가지 예를 뽑은이 기법을 음성 샘플링이라고합니다.
참조 :
여기 에 네거티브 샘플링에 대한 튜토리얼 기사를 썼습니다 .
네거티브 샘플링을 사용하는 이유는 무엇입니까? -> 계산 비용 절감
바닐라 Skip-Gram (SG) 및 Skip-Gram 네거티브 샘플링 (SGNS)의 비용 함수는 다음과 같습니다.
참고 T
모든 Vocabs에의 수입니다. 이는 V
. 즉, T
= V
.
p(w_t+j|w_t)
SG 의 확률 분포 는 V
다음과 같이 말뭉치의 모든 어휘에 대해 계산 됩니다.
V
Skip-Gram 모델을 학습 할 때 쉽게 수만을 초과 할 수 있습니다. 확률은 계산 V
시간이 필요 하므로 계산 비용이 많이 듭니다. 또한 분모의 정규화 인자에는 추가 V
계산이 필요합니다 .
반면에 SGNS의 확률 분포는 다음과 같이 계산됩니다.
c_pos
는 양의 단어에 대한 단어 벡터이고 출력 가중치 행렬의 W_neg
모든 K
음의 샘플에 대한 단어 벡터입니다 . SGNS를 사용하면 확률 은 일반적으로 5 ~ 20 사이 인 K + 1
횟수 만 계산하면됩니다 K
. 또한 분모의 정규화 인자를 계산하기 위해 추가 반복이 필요하지 않습니다.
SGNS를 사용하면 각 학습 샘플에 대해 일부 가중치 만 업데이트되는 반면 SG는 각 학습 샘플에 대해 수백만 개의 가중치를 모두 업데이트합니다.
SGNS는이를 어떻게 달성합니까? -> 다중 분류 작업을 이진 분류 작업으로 변환하여.
SGNS를 사용하면 더 이상 중심 단어의 문맥 단어를 예측하여 단어 벡터를 학습하지 않습니다. 노이즈 분포에서 실제 문맥 단어 (긍정적)와 무작위로 그려진 단어 (부정적)를 구별하는 방법을 배웁니다.
실제 생활에서, 당신은 일반적으로 준수하지 않는 regression
등의 임의의 단어 Gangnam-Style
, 또는 pimples
. 아이디어는 모델이 가능성이있는 (양성) 쌍과 가능성이없는 (음성) 쌍을 구분할 수 있다면 좋은 단어 벡터가 학습된다는 것입니다.
위 그림에서 현재 양의 단어 컨텍스트 쌍은 ( drilling
, engineer
)입니다. K=5
네가티브 샘플되고 임의로 그린 로부터 잡음 분포 : minimized
, primary
, concerns
, led
, page
. 모델이 학습 샘플을 반복 할 때 양의 쌍에 대한 확률이 출력 p(D=1|w,c_pos)≈1
되고 음의 쌍에 대한 확률 이 출력되도록 가중치가 최적화 됩니다 p(D=1|w,c_neg)≈0
.
K
등 V -1
(가) 건너 그램 바닐라로 모델을 다음 음의 샘플링은 동일합니다. 내 이해가 맞습니까?