1. 소개
단어의 분산 표현은 자연어 처리에서 유사한 단어를 함께 그룹화하여 효율적인 결과를 생성합니다. 최근에 개발된 Skip-Gram 모델은 비정형 텍스트 데이터의 많은 단어를 양질의 단어 벡터로 표현하는 좋은 방법입니다. 이전 신경망 연구와 달리 Skip-Gram 모델은 조밀한 행렬 곱셈을 포함하지 않기 때문에 효율적입니다. 자연어 처리에서 신경망을 사용하는 기술은 언어적 관계와 패턴을 반영하고 연산과 같은 선형 변환으로 사용할 수 있기 때문에 흥미롭습니다.
본 논문에서는 기존 Skip-Gram 모델을 발전시키기 위한 몇 가지 방향을 제안하고자 한다. 학습 과정에서 일반적인 단어의 서브샘플링이 효율적일 수 있으며 복잡한 계층적 소프트맥스 대신 NCE(Noise Contrastive Estimation)를 사용하여 보다 효율적이고 고품질의 벡터 표현을 도출할 수 있습니다.
또한 자연어 처리에서 관용구를 표현하기 어려운데 단어 기반의 스킵그램 대신 구문 벡터를 사용하는 기술이 도입되었다. 또한 Skip-Gram 모델을 도입하여 단어 벡터 표현에 연산을 적용하는 것이 유용할 수 있음을 설명합니다.
2. 스킵 그램 모델
Skip-Gram 모델의 목표는 대상 단어 벡터를 사용하여 주변 단어를 예측하는 것입니다. 이때 변수 C의 크기는 문맥어의 크기(개수)에 따라 조정될 수 있으며, 이를 증가시키면 정확도는 높아지지만 더 많은 비용이 투입된다. Skip-Gram은 Softmax 활성화 기능을 사용하는데 비용이 많이 들기 때문에 실용적이지 않습니다.
2.1 계층적 소프트맥스: 해석에 오랜 시간이 걸렸습니다.
기존 Full Softmax의 경우 지수함수를 더한 후 모든 경우에 결과의 지수함수로 나누어 확률의 역할을 한다. 그러나 one-hot 벡터는 차원이 크기 때문에 full softmax를 사용할 때 많은 계산이 필요합니다. 즉, 모든 지수 함수를 합산해야 합니다. 이러한 비효율성을 개선하기 위해 계층적 소프트맥스가 도입되었습니다.
Hierarchical Softmax는 위의 그림과 같이 Binary Tree 형태로 구축됩니다. 트리의 리프(말단 노드)는 단어이고 중간 노드는 트리의 루트에서 각 단어에 도달하기 위한 벡터로 구성됩니다. 이러한 벡터가 마지막 단어 노드에 도달하면 각 단어에 확률이 부여되며 이를 최적화하기 위해 매개 변수를 업데이트하는 과정입니다.
논문에서는 이를 위의 공식으로 설명하는데, 여기서 L(w)는 트리의 깊이이고 n(w,j)는 단어 w에 도달하기 위한 경로에 놓인 j번째 노드를 나타냅니다. ch(x)는 x의 자식을 참조하고 (( ))는 내용이 참이면 1을 반환하고 거짓이면 -1을 반환합니다. 즉, 트리의 뒤에서 1단계부터 2번째 노드까지 w 방향의 j+1번째 노드가 j번째 노드의 자식이면 j번째 노드의 벡터에 1을 곱하여 내적이 수행된다. 입력 단어로 If j+ 첫 번째 노드가 j 번째 노드의 자식 노드가 아니면 j 번째 노드의 벡터에 -1을 곱하고 입력 단어와 스칼라 곱을 형성합니다. 이러한 결과를 시그모이드 함수에 대입하여 확률 값으로 변환하고 각 단계를 반복하여 확률을 구한다.
이 방법 가장 큰 장점은 학습 단어가 log(V)로 줄어든다는 것입니다.있다
2.2 네거티브 샘플링
계층적 softmax를 대체하는 기술로 NCE(Noise Contrastive Estimation)가 있습니다. NCE는 로지스틱 회귀를 사용하여 데이터에서 노이즈를 제거합니다. NCE는 softmax log-likelihood를 최대화하지만 Skip-Gram 모델은 좋은 품질의 벡터 표현을 학습하는 데 중점을 두므로 NCE는 NGE(Negative Sampling)를 모델링하고 이를 새로운 손실 함수로 사용합니다.
네거티브 샘플링은 Word2Vec의 CBOW와 Skip-Gram의 단어 수가 증가함에 따라 계산 복잡성이 증가하기 때문에 이 문제를 해결하기 위해 개발되었습니다. Word2Vec은 역전파 중에 각 단어의 임베딩 벡터를 업데이트합니다. 중심 단어가 “Korea”이고 주변 단어가 “Seoul” 및 “Daegu”와 같은 단어인 경우 “game” 및 “lawyer”와 같이 관련 없는 수많은 단어의 임베딩 벡터 값을 업데이트하는 것은 비효율적입니다.
네거티브 샘플링은 이러한 문제를 찾아 학습 과정에서 모든 단어가 아닌 일부 단어에 집중하는 방법입니다.
현재 집중하고 있는 인접 단어가 “서울”과 “대구”인 경우, “게임”, “컴퓨터” 및 “빵”과 같은 일부 단어는 전체 단어 집합에서 비주변 단어 중에서 무작위로 선택됩니다. 이러한 단어 집합을 이용하여 각 단어가 이웃 단어인지 여부를 분류하기 위해 마지막 단계에서 이진 분류 단계가 수행됩니다.
이를 구현하기 위해서는 먼저 예시 단어를 선택해야 합니다. 예시 단어 선택 기준은 문장 전체에서 자주 사용되는 단어에 높은 가중치를 부여하여 단어를 먼저 선택합니다.
여기서 wi는 i번째 단어이고 f(wi)는 해당 단어의 빈도입니다.
기존 스킵그램에서 사용되는 중심단어 주변단어는 1로 표시하였다. 위의 확률을 이용하여 중심 단어와 관련이 없는 단어를 선택한 후 해당 단어에 대해 0을 표시합니다. 이후, 중심 단어에 대한 임베딩 테이블과 주변 단어 또는 관련 없는 단어에 대한 임베딩 테이블을 작성하여 임베딩 벡터로 변환한다. 2개의 임베딩 벡터를 이용하여 중간 단어와 다음 단어의 내적을 모델의 예측값으로 사용하고 임베딩 벡터의 값은 라벨과 함께 오차만큼 역전파하여 업데이트한다. 학습 후 임베딩 테이블을 키워드로 사용할 수 있습니다. (아마도 주변 단어 임베딩 테이블이 관련 없는 단어가 섞여서 사용하기 어렵기 때문인듯)
위의 논문은 샘플을 선택하는 기준을 제시하는데 훈련 데이터의 수가 적을 때는 음성 샘플의 수를 5개에서 20개로 설정하는 것을 권장하지만, 큰 데이터의 경우에는 다음 중에서 선택하는 것이 더 효율적이라고 합니다. 2 및 5개의 샘플을 선택합니다.
Word2vec의 성능은 CBOW < Skip-gram < Skip-gram with Negative Sampling으로 알려져 있습니다.
2.3 일반 단어의 서브샘플링
말뭉치에서 가장 흔한 단어(in, the, a 등)는 수백만 번 나타날 수 있습니다. 이 단어는 덜 일반적인 단어보다 더 많은 정보를 전달하지 않습니다. 또한, 일반 단어의 벡터는 백 번 학습해도 크게 변하지 않습니다. 이는 학습 중에 각 단어가 다음 확률로 제거됨을 의미합니다.
위의 방정식에 따르면 빈도가 높을수록 제거 가능성이 커집니다.
3 실증적 결과
계층적 소프트맥스, 노이즈 구성 추정, 네거티브 샘플링 및 서브샘플링이 평가됩니다. 예를 들어 “독일 : 베를린 – 프랑스 : ??”와 같은 유추적 추론 작업을 수행하기 위해 코사인 거리를 사용하여 해당 단어의 벡터를 찾고자 합니다.
Skip-Gram 모델을 훈련할 때 다양한 뉴스 기사가 포함된 데이터 세트를 사용하고 5회 미만으로 발생한 단어를 제거했습니다. 성능 결과를 보면 Negative Sampling이 유추적 추론 작업에서 Hierarchical Softmax보다, Noise Constrastive Estimation보다 더 잘 수행되었습니다. 일반적인 단어의 서브샘플링은 학습률을 개선하고 단어 표현을 더 정확하게 만들었습니다.
Skip-Gram 모델의 선형성이 벡터를 선형 유사 추론에 더 적합하게 만들었다고 말할 수 있지만, 다른 연구에서는 표준 시그모이드 순환 신경망(비선형으로 알려진 모델)에서 학습한 벡터가 학습 데이터임을 보여줍니다. 선형 두뇌 티저에서 성능이 향상되었습니다. 이는 비선형 모델도 선형 구조에 따라 단어를 표현할 수 있음을 보여줍니다.
4. 문구 배우기
많은 문장은 개별 단어의 의미를 단순히 합한 것으로 표현할 수 없습니다. 구문에 대한 벡터 표현을 학습하기 위해 한 컨텍스트에서는 일반적이지만 다른 컨텍스트에서는 덜 일반적인 벡터 표현을 찾습니다. (예: New York Times, Toronto Maple Leafs, 즉 기타 문구) 이 방법을 사용하면 어휘를 늘리지 않고도 합리적인 문구를 만들 수 있습니다. 텍스트에서 구문을 분류하기 위해 데이터 기반 접근 방식을 사용하여 유니그램 및 바이그램 카운트를 기반으로 다음과 같은 점수를 작업에 사용했습니다.
현재 델타는 매우 드물게 형성되는 것으로 보이는 단어로 구성된 구를 제어하는 할인 계수입니다. 작업할 때 2~4회 패스 후에 임계값이 더 줄어들어 더 긴 프레이즈가 형성될 수 있습니다.
4.1 구문 스킵그램 결과
Hierarchical Softmax를 사용한 Huffman 코드는 서브 샘플링을 함께 사용함으로써 성능이 크게 향상되어 1위를 차지했으며, NEG는 학습 시 몇 개의 구문이 포함되어 나타나는지 나타내는 숫자인 k-value에 민감했습니다.
5. 첨가제 조성
위의 작업에서 Skip-Gram 모델이 학습한 단어 및 구 표현은 간단한 벡터 계산으로 정확한 유사 추론이 가능한 선형 구조를 가지고 있습니다. 흥미롭게도 우리는 skip-gram 표현이 다른 구조의 선형 특징을 가지고 있어 단어의 벡터 표현의 요소별 합산(행렬 간 합)에 의해 단어가 의미론적으로 결합될 수 있음을 주목합니다.
이러한 새로운 속성은 학습의 목적 함수로 설명할 수 있습니다. 단어 벡터는 softmax 비선형성에 대한 입력과 선형 관계를 가집니다. 단어 벡터는 문장에서 주변 단어를 예측하도록 훈련되기 때문에 벡터는 단어가 나타내는 컨텍스트의 분포를 나타낼 수 있습니다. 이 값들은 로그 연산에 의해 출력 레이어에서 계산된 확률과 관련이 있으므로 두 단어 벡터의 합은 두 컨텍스트 분포의 곱과 관련됩니다. 여기서 곱셈은 AND 연산으로 작동합니다. 두 단어 벡터와 확률이 높은 단어는 확률이 높고 다른 단어는 확률이 낮습니다. 예를 들어, “Volga River”라는 문구가 “Russian” 및 “Fluss”라는 단어와 함께 같은 문장에서 자주 나타나는 경우 두 단어 벡터의 합은 관계를 학습하여 Volga River 벡터에 근접한 특징 벡터를 나타냅니다. .