2016-07-12 5 views
0

나는 예제가 작동하고 실제로 nce_weights의 stddev를 설정하는 이유를 이해하지 못하는 것을 이해하려고 시도하고있다.word2vec에서 nce_weights의 stddev는 무엇을 의미합니까?

nce_weights = tf.Variable(
    tf.truncated_normal([vocabulary_size, embedding_size], 
         stddev=1.0/math.sqrt(embedding_size))) 

stddev 매개 변수를 제거한 다음 실행하려고했습니다. 그러나 어떤 차이점을 찾을 수 없습니다.

stddev는 표준 편차를 의미합니다. 왜 stddev 매개 변수를 사용하고 예제의 stddev 값을 의미합니까?

감사합니다.

답변

0

nce_weights는 잡음 대조적 추정 훈련 기법, 라벨의 많은 수의 훈련 분류를위한 효율적인 방법 ("소음 대조적 인 교육과 함께 확장"섹션의 설명을 참조 구현에 사용되는 분류 무게입니다 원래 연결된 word2vec tutorial).

이러한 가중치는 학습 중에 학습되지만 처음에는 학습 시작시 초기화해야합니다. 우리는 절단 된 정규 분포 (모든 평균이 평균의 2 표준 편차 이내 인 정규 분포)에서 무작위 가중치를 그려서이 작업을 수행합니다. 이것은 tf.Variable 호출에서 이니셜 라이저로 tf.truncated_normal op를 전달하면됩니다. 절단 된 정상 이니셜 라이저는 모양, 평균 및 표준 편차를 매개 변수로 사용합니다 (매개 변수 및 정의에 대해 위에 링크 된 페이지 참조). 마지막 두 개는 우리가 그려 낼 절단 된 가우스 분포에 대한 충분한 통계입니다.

(언급 한대로) 이것을 전달하지 않으면 기본값 (stddev의 경우 1.0)으로 초기화됩니다.