개요
우리는 매우 큰 데이터 세트에서 단어의 연속 벡터 표현을 계산하기 위한 두 가지 새로운 모델 아키텍처를 제안합니다. 이러한 표현의 품질은 단어 유사성 작업에서 측정되며, 그 결과는 다양한 유형의 신경망을 기반으로 이전에 최고 성능을 발휘했던 기술과 비교됩니다. 훨씬 낮은 계산 비용으로 정확도가 크게 향상되는 것을 관찰했습니다. 즉, 16억 단어 데이터 세트에서 고품질 단어 벡터를 학습하는 데 하루도 채 걸리지 않습니다. 또한, 우리는 이러한 벡터가 구문 및 의미 단어 유사성을 측정하기 위한 테스트 세트에서 state-of-the-art 성능을 제공한다는 것을 보여줍니다.
1. 소개
현재 많은 NLP 시스템과 기술은 단어를 원자 단위로 취급합니다. 단어는 어휘에서 색인으로 표시되므로 단어 간의 유사성 개념은 없습니다. 이 선택에는 여러 가지 타당한 이유가 있습니다. 즉 단순성, 견고성 및 간단한 모델이 엄청난 양의 데이터를 학습한 관찰입니다.
데이터는 더 적은 데이터로 훈련된 복잡한 시스템보다 성능이 뛰어납니다. 예를 들어 통계 언어 모델링에 사용되는 인기 있는 N-gram 모델이 있습니다. 오늘날 거의 모든 사용 가능한 데이터(수조 개의 단어[3])에 대해 N-gram을 훈련하는 것이 가능합니다.
그러나 단순한 기술로는 많은 작업에서 한계가 있습니다. 예를 들어, 자동 음성 인식을 위한 관련 도메인 내 데이터의 양은 제한되어 있습니다. 성능은 일반적으로 고품질로 전사된 음성 데이터(종종 수백만 단어)의 크기에 의해 좌우됩니다. 기계 번역에서 많은 언어에 대한 기존 말뭉치에는 수십억 개 이하의 단어만 포함됩니다. 따라서 기본 기술의 단순한 확장만으로는 큰 진전이 없는 상황이 있으며, 보다 발전된 기술에 집중해야 합니다.
최근 몇 년 동안 기계 학습 기술이 발전함에 따라 훨씬 더 큰 데이터 세트에서 더 복잡한 모델을 훈련하는 것이 가능해졌으며 일반적으로 단순한 모델보다 성능이 뛰어납니다. 아마도 가장 성공적인 개념은 단어의 분산 표현을 사용하는 것입니다[10]. 예를 들어, 신경 네트워크 기반 언어 모델 (neural network based language models)은 N-gram 모델보다 훨씬 더 성능이 좋습니다 [1, 27, 17].
1.1 논문의 목표
본 논문의 주요 목표는 수십억 개의 단어와 수백만 개의 어휘로 구성된 거대한 데이터 세트에서 고품질 단어 벡터를 학습하는 데 사용할 수 있는 기술을 소개하는 것입니다. 우리가 아는 한, 이전에 제안된 아키텍처 중 어느 것도 50~100 사이의 적당한 단어 벡터 차원을 사용하여 수억 개가 넘는 단어에 대해 성공적으로 훈련된 적이 없습니다.
우리는 유사한 단어가 서로 가까운 경향이 있을 뿐만 아니라 단어가 여러 정도의 유사성을 가질 수 있다는 기대를 가지고 결과 벡터 표현의 품질을 측정하기 위해 최근 제안된 기술을 사용합니다[20]. 이는 이전 문맥에서 관찰되었습니다.
예를 들어 명사는 여러 개의 단어 끝을 가질 수 있으며 원래 벡터 공간의 하위 공간에서 유사한 단어를 검색하면 유사한 끝을 가진 단어를 찾는 것이 가능합니다[13, 14].
다소 놀랍게도 단어 표현의 유사성은 단순한 구문 규칙성을 넘어서는 것으로 나타났습니다. 단어 벡터에 대해 간단한 대수 연산이 수행되는 단어 오프셋 기술을 사용하여 예를 들어 벡터("King") - 벡터("Man") + 벡터("Woman")의 결과는 다음과 같은 벡터가 되는 것으로 나타났습니다. Queen이라는 단어의 벡터 표현에 가장 가깝습니다 [20].
본 논문에서는 단어 간의 선형 규칙성을 보존하는 새로운 모델 아키텍처를 개발하여 이러한 벡터 연산의 정확성을 극대화하려고 노력합니다. 우리는 구문론적 규칙성과 의미론적 규칙성을 모두 측정하기 위한 새로운 포괄적인 테스트 세트를 설계하고 이러한 규칙성을 높은 정확도로 학습할 수 있음을 보여줍니다. 또한 훈련 시간과 정확도가 단어 벡터의 차원과 훈련 데이터의 양에 따라 어떻게 달라지는지 논의합니다.
1.2 이전 작업
단어를 연속 벡터로 표현하는 것은 오랜 역사를 가지고 있습니다 [10, 26, 8]. NNLM(신경망 언어 모델)을 추정하기 위한 매우 인기 있는 모델 아키텍처가 [1]에서 제안되었습니다. 여기서는 선형 투영 레이어와 비선형 숨겨진 레이어가 있는 피드포워드 신경망을 사용하여 다음을 수행했습니다.
단어 벡터 표현과 통계적 언어 모델을 함께 학습합니다. 이 작업은 다른 많은 작업에 이어 이루어졌습니다.
NNLM의 또 다른 흥미로운 아키텍처는 [13, 14]에 제시되어 있습니다. 여기서 단어 벡터는 단일 숨겨진 레이어가 있는 신경망을 사용하여 처음 학습됩니다. 그런 다음 단어 벡터는 NNLM을 훈련하는 데 사용됩니다. 따라서 전체 NNLM을 구성하지 않고도 단어 벡터가 학습됩니다. 이에 작업에서는 이 아키텍처를 직접 확장하고 간단한 모델을 사용하여 단어 벡터를 학습하는 첫 번째 단계에만 집중합니다.
나중에 단어 벡터를 사용하여 많은 NLP 애플리케이션을 크게 개선하고 단순화할 수 있다는 것이 밝혀졌습니다[4, 5, 29]. 단어 벡터 자체의 추정은 다양한 모델 아키텍처를 사용하여 수행되었으며 다양한 말뭉치 [4, 29, 23, 19, 9]에 대해 훈련되었으며 결과 단어 중 일부 벡터는 향후 연구 및 비교를 위해 제공되었습니다. 그러나 우리가 아는 한, 이러한 아키텍처는 대각선 가중치 행렬이 사용되는 특정 버전의 로그 이중선형 모델을 제외하고 [13]에서 제안된 것보다 훈련에 계산 비용이 훨씬 더 많이 듭니다[23].
2 모델 아키텍처
잘 알려진 LSA(Latent Semantic Analysis) 및 LDA(Latent Dirichlet Allocation)를 포함하여 단어의 연속 표현을 추정하기 위해 다양한 유형의 모델이 제안되었습니다. 본 논문에서는 신경망이 학습한 단어의 분산 표현에 중점을 둡니다.
이전에는 단어 간의 선형 규칙성을 보존하기 위해 LSA보다 훨씬 더 나은 성능을 발휘하는 것으로 나타났습니다[20, 31]. 게다가 LDA는 대규모 데이터 세트에서 계산 비용이 매우 많이 듭니다.
[18]과 유사하게, 다양한 모델 아키텍처를 비교하기 위해 먼저 모델의 계산 복잡성을 모델을 완전히 훈련하기 위해 액세스해야 하는 매개변수 수로 정의합니다. 다음으로, 계산 복잡성을 최소화하면서 정확도를 최대화하려고 노력할 것입니다.
다음 모든 모델의 경우 훈련 복잡성은 다음에 비례합니다.
O = E × T × Q, (1)
여기서 E는 훈련 에포크의 수이고, T는 훈련 세트의 단어 수이며, Q는 각 모델 아키텍처에 대해 추가로 정의됩니다. 일반적인 선택은 E = 3 − 50이고 T는 최대 10억입니다. 모든 모델은 확률적 경사하강법과 역전파를 사용하여 훈련됩니다[26].
2.1 Feedforward Neural Net Language Model (NNLM)
Input layer → Projection layer(linear) → Hidden Layer(nonlinear) → Output Layer (NNLM)
확률적 피드포워드 신경망 언어 모델은 [1]에서 제안되었습니다. 입력층, 투영층, 은닉층, 출력층으로 구성됩니다. 입력 레이어에서 N개의 이전 단어는 1-of-V 코딩을 사용하여 인코딩됩니다. 여기서 V는 어휘의 크기입니다. 그런 다음 입력 레이어는 공유 투영 행렬을 사용하여 N × D 차원을 갖는 투영 레이어 P에 투영됩니다. 특정 시간에 N개의 입력만 활성화되므로 투영 레이어 구성은 상대적으로 저렴한 작업입니다.
NNLM 아키텍처는 투영 레이어의 값이 조밀하기 때문에 투영과 숨겨진 레이어 간의 계산이 복잡해집니다. N = 10이라는 일반적인 선택의 경우 투영 레이어의 크기(P)는 500~2000일 수 있는 반면, 숨겨진 레이어 크기 H는 일반적으로 500~1000 단위입니다. 또한, 숨겨진 레이어는 어휘의 모든 단어에 대한 확률 분포를 계산하는데 사용되어 차원이 V인 출력 레이어가 생성됩니다. 따라서 각 훈련 예제당 계산 복잡도는 다음과 같습니다.
Q = N × D + N × D × H + H × V , (2)
여기서 지배항은 H × V 입니다. 그러나 이를 방지하기 위한 몇 가지 실용적인 솔루션이 제안되었습니다. 소프트맥스의 계층적 버전을 사용하거나[25, 23, 18] 훈련 중에 정규화되지 않은 모델을 사용하여 정규화된 모델을 완전히 피하는 것[4, 9]. 어휘의 이진 트리 표현을 사용하면 평가해야 하는 출력 단위의 수가 약 log2(V)로 줄어들 수 있습니다. 따라서 대부분의 복잡성은 N × D × H 항으로 인해 발생합니다.
우리 모델에서는 어휘가 허프만 이진 트리로 표현되는 계층적 소프트맥스를 사용합니다. 이는 단어의 빈도가 신경망 언어 모델에서 클래스를 얻는 데 잘 작동한다는 이전 관찰을 따릅니다[16]. 허프만 트리는 자주 사용되는 단어에 짧은 이진 코드를 할당합니다.
이는 평가해야 하는 출력 단위의 수를 더욱 줄입니다. 균형 이진 트리에서는 평가할 log2(V) 출력이 필요한 반면, 허프만 트리 기반 계층적 소프트맥스는 약 log2(U nig ram perplexity(V))만 필요합니다. 예를 들어 어휘 크기가 백만 개인 경우
즉, 평가 속도가 약 2배 향상됩니다. 계산 병목 현상이 N × D × H 항에 있기 때문에 이것이 신경망 LM의 속도 향상에 중요한 것은 아니지만 나중에 숨겨진 레이어가 없어 소프트맥스 정규화의 효율성에 크게 의존하는 아키텍처를 제안할 것입니다.
2.2 Recurrent Neural Net Language Model (RNNLM)
Input layer → Hidden Layer(nonlinear) → Output Layer (RNNLM)
컨텍스트 길이(모델 N의 순서)를 지정해야 하는 필요성과 같은 피드포워드 NNLM의 특정 제한을 극복하기 위해 순환 신경망 기반 언어 모델이 제안되었습니다.
이론적으로 RNN은 얕은 신경망보다 더 복잡한 패턴을 효율적으로 표현할 수 있기 때문입니다[15, 2]. RNN 모델에는 투영 레이어가 없습니다. 입력층, 은닉층, 출력층만 해당됩니다. 이 유형의 모델의 특별한 점은 시간 지연 연결을 사용하여 숨겨진 레이어를 자체에 연결하는 순환 행렬입니다. 이를 통해 순환 모델은 일종의 단기 메모리를 형성할 수 있습니다. 과거의 정보는 현재 입력과 이전 시간 단계의 숨겨진 레이어 상태를 기반으로 업데이트되는 숨겨진 레이어 상태로 표시될 수 있기 때문입니다.
RNN 모델의 훈련 예시당 복잡성은 다음과 같습니다.
Q = H × H + H × V , (3)
여기서 단어 표현 D는 은닉층 H와 동일한 차원을 갖습니다. 다시 말하면, H × V 항은 계층적 소프트맥스를 사용하여 H × log2(V)로 효율적으로 줄일 수 있습니다. 그러면 대부분의 복잡성은 H × H에서 발생합니다.
2.3 Parallel Training of Neural Networks
거대한 데이터 세트에 대한 모델을 훈련하기 위해 우리는 피드포워드 NNLM과 이 문서에서 제안된 새로운 모델을 포함하여 DistBelief[6]라는 대규모 분산 프레임워크 위에 여러 모델을 구현했습니다. 프레임워크를 사용하면 동일한 모델의 여러 복제본을 병렬로 실행할 수 있으며, 각 복제본은 모든 매개변수를 유지하는 중앙 집중식 서버를 통해 gradient 업데이트들를 동기화합니다. 이 병렬 훈련을 위해 우리는 Adagrad[7]라는 적응형 학습률 절차와 함께 미니 배치 비동기 경사하강법을 사용합니다. 이 프레임워크에서는 다음을 사용하는 것이 일반적입니다.
100개 이상의 모델 복제본, 각각은 데이터 센터의 서로 다른 시스템에서 많은 CPU 코어를 사용합니다.
3 New Log-linear Models
Input layer → Projection layer(linear) → Output Layer
이 섹션에서는 계산 복잡성을 최소화하려는 단어의 분산 표현을 학습하기 위한 두 가지 새로운 모델 아키텍처를 제안합니다. 이전 섹션의 주요 관찰은 대부분의 복잡성이 모델의 비선형 숨겨진 레이어로 인해 발생한다는 것입니다. 이것이 신경망을 그토록 매력적으로 만드는 이유이지만, 우리는 신경망만큼 정확하게 데이터를 표현할 수는 없지만 훨씬 더 많은 데이터에 대해 효율적으로 훈련할 수 있는 더 간단한 모델을 탐색하기로 결정했습니다.
새로운 아키텍처는 이전 연구[13, 14]에서 제안된 아키텍처를 직접 따르는데, 여기서 신경망 언어 모델은 두 단계로 성공적으로 훈련될 수 있다는 것이 밝혀졌습니다. 첫 번째, 연속 단어 벡터는 단순 모델을 사용하여 학습되고, 그 다음 N- gram NNLM은 이러한 기능을 기반으로 학습됩니다.
단어의 분산 표현. 나중에 단어 벡터 학습에 초점을 맞춘 상당한 양의 작업이 있었지만 우리는 [13]에서 제안된 접근 방식을 가장 간단한 접근 방식으로 간주합니다. 관련 모델이 훨씬 더 일찍 제안되었다는 점에 유의하십시오 [26, 8].
3.1 Continuous Bag-of-Words Mode
Input layer(w(t-2), w(t-1), w(t+1), w(t+2)) → Projection layer(SUM) → Output Layer(w(t))
첫 번째로 제안된 아키텍처는 비선형 숨겨진 레이어가 제거되고 투영 레이어가 모든 단어(프로젝션 행렬뿐만 아니라)에 대해 공유되는 피드포워드 NNLM과 유사합니다. 따라서 모든 단어는 동일한 위치에 투영됩니다(벡터의 평균이 계산됩니다). 역사 속 단어의 순서가 투영에 영향을 주지 않기 때문에 우리는 이 아키텍처를 bag-of-words model이라고 부릅니다.
게다가 우리는 미래에서 온 단어도 사용합니다. 우리는 입력에 4개의 미래 단어와 4개의 역사 단어가 있는 로그 선형 분류기를 구축하여 다음 섹션에 소개된 작업에서 최고의 성능을 얻었습니다. 여기서 훈련 기준은 현재(중간) 단어를 올바르게 분류하는 것입니다.
훈련 복잡성은 다음과 같습니다.
Q = N × D + D × log2 (V ). (4)
표준 Bag-of-Words 모델과 달리 이 모델은 컨텍스트의 연속적인 분산 표현을 사용하므로 이 모델을 CBOW로 더 나타냅니다. 모델 아키텍처는 그림 1에 나와 있습니다. 입력 레이어와 투영 레이어 사이의 가중치 행렬은 NNLM에서와 동일한 방식으로 모든 단어 위치에 대해 공유됩니다.
3.2 Continuous Skip-gram Model
Input layer(w(t)) → Projection layer → Output Layer(w(t-2), w(t-1), w(t+1), w(t+2))
두 번째 아키텍처는 CBOW와 유사하지만 문맥을 기반으로 현재 단어를 예측하는 대신 동일한 문장의 다른 단어를 기반으로 단어 분류를 최대화하려고 시도합니다.
보다 정확하게는 각 현재 단어를 연속 투영 레이어가 있는 로그 선형 분류기에 대한 입력으로 사용하고 현재 단어 전후의 특정 범위 내의 단어를 예측합니다. 범위를 늘리면 결과 단어 벡터의 품질이 향상되지만 계산 복잡성도 증가한다는 것을 발견했습니다. 더 먼 단어는 일반적으로 가까운 단어보다 현재 단어와 관련성이 낮기 때문에 훈련 예제에서 해당 단어에서 더 적은 샘플링을 수행하여 먼 단어에 더 적은 가중치를 부여합니다.
이 아키텍처의 훈련 복잡성은 다음에 비례합니다.
Q = C × (D + D × log2 (V )), (5)
여기서 C는 단어의 최대 거리입니다. 따라서 C = 5를 선택하면 각 훈련 단어에 대해 range < 1;C >, 에서 숫자 R을 무작위로 선택합니다. 그리고 나서 역사의 R 단어와 현재 단어의 미래의 R 단어를 올바른 레이블로 사용합니다. 이를 위해서는 현재 단어를 입력으로 하고 각 R + R 단어를 출력으로 사용하여 R × 2 단어 분류를 수행해야 합니다. 다음 실험에서는 C = 10을 사용합니다.
그림 1: 새로운 모델 아키텍처. CBOW 아키텍처는 문맥을 기반으로 현재 단어를 예측하고, Skip-gram은 현재 단어를 기준으로 주변 단어를 예측합니다.
4. 결과
다양한 버전의 단어 벡터의 품질을 비교하기 위해 이전 논문에서는 일반적으로 예제 단어와 가장 유사한 단어를 보여주는 테이블을 사용하고 이를 직관적으로 이해합니다. 프랑스라는 단어가 이탈리아나 다른 나라와 유사하다는 것을 쉽게 알 수 있지만, 다음과 같이 더 복잡한 유사성 작업에서 해당 벡터를 처리할 때 더 어렵습니다. 우리는 단어들 사이에 다양한 유형의 유사성이 있을 수 있다는 이전 관찰을 따릅니다. 예를 들어, small 단어가 similar 단어와 유사하다는 것과 같은 의미에서 big 단어는 bigger 단어와 유사합니다. 또 다른 유형의 관계의 예로는 big - biggest and small - smallest 단어 쌍이 있습니다[20]. 또한 우리는 다음과 같이 질문할 수 있듯이 동일한 관계를 가진 두 쌍의 단어를 질문으로 표시합니다. "가장 큰 것이 큰 것과 같은 의미에서 작은 것과 유사한 단어는 무엇입니까?"
다소 놀랍게도 이러한 질문은 단어의 벡터 표현으로 간단한 대수 연산을 수행하여 답할 수 있습니다. maximum이 big과 유사한 것과 같은 의미에서 small과 유사한 단어를 찾으려면 벡터 X = vector("biggest") − vector("big ") + vector("small")를 간단히 계산할 수 있습니다. 그런 다음 벡터 공간에서 코사인 거리로 측정된 X에 가장 가까운 단어를 검색하고 이를 질문에 대한 답변으로 사용합니다(이 검색 중에 입력 질문 단어를 삭제합니다). 단어 벡터가 잘 훈련되면 이 방법을 사용하여 정답(가장 작은 단어)을 찾는 것이 가능합니다.
마지막으로 우리는 많은 양의 데이터에 대해 고차원 단어 벡터를 훈련할 때 결과 벡터를 사용하여 도시와 그것이 속한 국가와 같은 단어 간의 매우 미묘한 의미 관계에 답할 수 있다는 것을 발견했습니다. 프랑스는 파리에 있고 독일은 베를린에 있습니다. 이러한 의미론적 관계를 가진 단어 벡터는 기계 번역, 정보 검색 및 질문 응답 시스템과 같은 기존의 많은 NLP 응용 프로그램을 개선하는 데 사용될 수 있으며 다른 기능을 활성화할 수도 있습니다.
미래의 응용 프로그램은 아직 개발되지 않았습니다.
표 1: 의미-구문적 단어 관계 테스트 세트의 5가지 유형의 의미론적 질문과 9가지 유형의 구문론적 질문의 예.
4.1 작업 설명
단어 벡터의 품질을 측정하기 위해 우리는 5가지 유형의 의미 질문과 9가지 유형의 구문 질문을 포함하는 포괄적인 테스트 세트를 정의합니다. 각 범주의 두 가지 예가 표 1에 나와 있습니다. 전체적으로 의미론적 질문은 8,869개, 구문론적 질문은 10,675개입니다. 각 카테고리의 질문은 두 단계로 생성되었습니다. 먼저 유사한 단어 쌍 목록을 수동으로 생성했습니다. 그런 다음 두 단어 쌍을 연결하여 큰 질문 목록이 형성됩니다. 예를 들어, 미국의 68개 대도시와 그 도시가 속한 주의 목록을 만들고 두 단어 쌍을 무작위로 선택하여 약 2.5K개의 질문을 구성했습니다. 테스트 세트에는 단일 토큰 단어만 포함되었으므로 다중 단어 엔터티(예: New York)는 존재하지 않습니다.
우리는 모든 질문 유형과 각 질문 유형에 대해 개별적으로(의미론적, 구문론적) 전반적인 정확성을 평가합니다. 위의 방법을 사용하여 계산된 벡터에 가장 가까운 단어가 질문의 올바른 단어와 정확히 동일한 경우에만 질문에 올바르게 대답한 것으로 간주됩니다. 따라서 동의어는 실수로 간주됩니다. 이는 또한 현재 모델에는 단어 형태에 대한 입력 정보가 없기 때문에 100% 정확도에 도달하는 것이 불가능할 가능성이 있음을 의미합니다.
그러나 우리는 특정 애플리케이션에 대한 단어 벡터의 유용성이 이 정확도 측정항목과 긍정적인 상관관계를 가져야 한다고 믿습니다. 특히 구문 질문의 경우 단어 구조에 대한 정보를 통합하면 더 많은 발전을 이룰 수 있습니다.
4.2 정확도의 극대화
우리는 단어 벡터를 훈련하기 위해 Google News 코퍼스를 사용했습니다. 이 자료에는 약 60억 개의 토큰이 포함되어 있습니다. 우리는 어휘 크기를 가장 자주 사용되는 단어 100만 개로 제한했습니다. 분명히 우리는 시간 제약이 있는 최적화 문제에 직면해 있습니다. 더 많은 데이터와 더 높은 차원의 단어 벡터를 사용하면 정확도가 향상될 것으로 예상할 수 있기 때문입니다. 가능한 한 좋은 결과를 신속하게 얻기 위한 최선의 모델 아키텍처 선택을 추정하기 위해 먼저 가장 자주 사용되는 30,000개 단어로 어휘를 제한하여 훈련 데이터의 하위 집합에 대해 훈련된 모델을 평가했습니다.
단어 벡터 차원을 다르게 선택하고 훈련 데이터의 양을 늘리는 CBOW 아키텍처를 사용한 결과는 표 2에 나와 있습니다.
어느 시점이 지나면 더 많은 차원을 추가하거나 더 많은 교육 데이터를 추가하면 개선 효과가 줄어드는 것을 볼 수 있습니다. 따라서 벡터 차원과 훈련 데이터의 양을 함께 늘려야 합니다. 이 관찰은 사소해 보일 수 있지만 현재 상대적으로 많은 양의 데이터에 대해 단어 벡터를 훈련하는 것이 인기가 있지만 크기가 충분하지 않습니다(예: 50 - 100). 방정식 4에서 훈련 데이터의 양을 두 배로 늘리면 벡터 크기를 두 배로 늘리는 것과 거의 동일하게 계산 복잡성이 증가합니다.
표 2와 4에 보고된 실험에서는 확률적 경사하강법과 역전파를 사용하는 3번의 training epoch를 사용했습니다. 우리는 시작 학습률 0.025를 선택하고 이를 선형적으로 감소시켜 마지막 훈련 에포크가 끝날 때 0에 가까워지도록 했습니다.
표 2: 제한된 어휘를 사용하는 CBOW 아키텍처의 단어 벡터를 사용하여 의미론적-구문적 단어 관계 테스트 세트의 하위 집합에 대한 정확도. 가장 자주 사용되는 30,000개 단어 중 단어를 포함하는 질문만 사용됩니다.
표 3: 640차원 단어 벡터를 사용하여 동일한 데이터에 대해 훈련된 모델을 사용한 아키텍처 비교. 정확성은 의미론적-구문적 단어 관계 테스트 세트와 [20]의 구문 관계 테스트 세트에 대해 보고됩니다.
4.3 모델 아키텍처 비교
먼저 동일한 학습 데이터를 사용하고 동일한 640 차원의 단어 벡터를 사용하여 단어 벡터를 파생하기 위한 다양한 모델 아키텍처를 비교합니다. 추가 실험에서 우리는 새로운 의미-구문적 단어 관계 테스트 세트의 전체 질문 세트, 즉 30,000개 어휘에 제한되지 않은 질문 세트를 사용합니다. 또한 단어 간의 구문 유사성에 초점을 맞춘 [20]에 소개된 테스트 세트에 대한 결과도 포함합니다.
학습 데이터는 여러 LDC 말뭉치로 구성되며 [18](320M 단어, 82K 어휘)에 자세히 설명되어 있습니다. 우리는 이 데이터를 사용하여 단일 CPU에서 훈련하는 데 약 8주가 걸렸던 이전에 훈련된 순환 신경망 언어 모델과 비교했습니다. 우리는 8개의 이전 단어의 기록을 사용하여 DistBelief 병렬 훈련[6]을 사용하여 동일한 수의 640개의 숨겨진 단위로 피드포워드 NNLM을 훈련했습니다(따라서 투영 레이어의 크기가 640 × 8 이므로 NNLM은 RNNLM보다 더 많은 매개 변수를 갖습니다.)
표 3에서는 RNN의 단어 벡터([20]에서 사용됨)가 대부분 구문 질문에서 잘 수행되는 것을 볼 수 있습니다. NNLM 벡터는 RNN보다 훨씬 더 나은 성능을 발휘합니다. RNNLM의 단어 벡터가 비선형 숨겨진 레이어에 직접 연결되므로 이는 놀라운 일이 아닙니다. CBOW 아키텍처는 구문 작업에서는 NNLM보다 더 잘 작동하고 의미 작업에서는 거의 동일합니다. 마지막으로 Skip-gram 아키텍처는 CBOW 모델보다 구문 작업에서 약간 더 나쁘게 작동하지만(여전히 NNLM보다 우수함) 테스트의 의미 부분에서는 다른 모든 모델보다 훨씬 더 좋습니다.
다음으로, 하나의 CPU만 사용하여 훈련된 모델을 평가하고 그 결과를 공개적으로 사용 가능한 단어 벡터와 비교했습니다. 비교는 표 4에 나와 있습니다. CBOW 모델은 Google News 데이터의 하위 집합에 대해 약 하루 만에 학습된 반면 Skip-gram 모델의 학습 시간은 약 3일이었습니다.
추가로 보고된 실험에서는 단 하나의 훈련 에포크만 사용했습니다(다시 말하지만, 훈련이 끝날 때 학습률이 0에 가까워지도록 학습률을 선형적으로 줄입니다). 표 5에 표시된 것처럼 한 에포크를 사용하여 두 배 많은 데이터에 대한 모델을 훈련하면 3번의 에포크에 대해 동일한 데이터를 반복하는 것보다 비슷하거나 더 나은 결과를 얻을 수 있으며 추가로 약간의 속도 향상도 제공됩니다.
표 4: 의미-구문적 단어 관계 테스트 세트에서 공개적으로 사용 가능한 단어 벡터와 우리 모델의 단어 벡터를 비교합니다. 전체 어휘가 사용됩니다.
표 5: 동일한 데이터에 대해 3번의 에포크 동안 훈련된 모델과 한 에포크 동안 훈련된 모델의 비교. 정확성은 전체 의미-구문 데이터 세트에 대해 보고됩니다.
4.4 모델의 대규모 병렬 훈련
앞서 언급했듯이 우리는 DistBelief라는 분산 프레임워크에서 다양한 모델을 구현했습니다. 아래에서는 미니 배치 비동기 경사하강법과 Adagrad라는 적응형 학습률 절차를 사용하여 Google News 6B 데이터 세트에서 훈련된 여러 모델의 결과를 보고합니다[7]. 우리는 훈련 중에 50~100개의 모델 복제본을 사용했습니다. 데이터 센터 시스템은 다른 생산 작업과 공유되므로 CPU 코어 수는 추정치이며 사용량은 상당히 변동될 수 있습니다. 분산 프레임워크의 오버헤드로 인해 CBOW 모델과 Skip-gram 모델의 CPU 사용량은 단일 시스템 구현보다 서로 훨씬 더 가깝습니다. 결과는 표 6에 보고되어 있다.
표 6: DistBelief 분산 프레임워크를 사용하여 훈련된 모델 비교. 1000차원 벡터를 사용한 NNLM 교육은 완료하는 데 시간이 너무 오래 걸립니다.
표 7: Microsoft 문장 완성 챌린지 모델 비교 및 조합.
4.5 Microsoft 연구 문장 완성 챌린지
Microsoft 문장 완성 챌린지는 최근 언어 모델링 및 기타 NLP 기술을 발전시키기 위한 과제로 도입되었습니다[32]. 이 작업은 1040개의 문장으로 구성되어 있습니다. 각 문장에는 하나의 단어가 누락되어 있으며 목표는 5개의 합리적인 선택 목록이 주어지면 문장의 나머지 부분과 가장 일관성이 있는 단어를 선택하는 것입니다. N-gram 모델, LSA 기반 모델[32], 로그 이중선형 모델[24] 및 현재 state-of-the-art 성능을 유지하는 순환 신경망의 조합을 포함하여 이 세트에 대한 여러 기술의 성능이 이미 보고되었습니다. 이 벤치마크에서 정확도는 55.4%입니다[19].
우리는 이 작업에 대한 Skip-gram 아키텍처의 성능을 조사했습니다. 먼저 [32]에 제공된 5천만 단어에 대해 640차원 모델을 훈련합니다. 그런 다음 입력에서 알 수 없는 단어를 사용하여 테스트 세트의 각 문장의 점수를 계산하고 문장의 모든 주변 단어를 예측합니다. 최종 문장 점수는 이러한 개별 예측의 합계입니다. 문장 점수를 사용하여 가장 가능성이 높은 문장을 선택합니다.
새로운 결과와 함께 일부 이전 결과에 대한 간략한 요약이 표 7에 나와 있습니다. Skip-gram 모델 자체는 이 작업에서 LSA 유사성보다 더 나은 성능을 발휘하지 못하지만 이 모델의 점수는 RNNLM으로 얻은 점수를 보완합니다. 가중치 조합(Skip-gram+RNNLMs)은 58.9%의 새로운 state-of-the-art 결과를 가져옵니다(세트의 개발 부분에서 59.2%, 세트의 테스트 부분에서 58.7%).
5 학습된 관계의 예
표 8은 다양한 관계를 따르는 단어를 보여줍니다. 위에서 설명한 접근 방식을 따릅니다. 두 단어 벡터를 빼서 관계를 정의하고 그 결과를 다른 단어에 추가합니다. 예를 들어 파리 - 프랑스 + 이탈리아 = 로마가 됩니다. 볼 수 있듯이 정확도는 상당히 좋지만 추가 개선의 여지가 분명히 많이 있습니다(정확한 일치를 가정하는 정확도 측정 기준을 사용하면 표 8의 결과는 약 60%에 불과합니다). 우리는 더 큰 차원의 더 큰 데이터 세트에서 훈련된 단어 벡터가 훨씬 더 나은 성능을 발휘할 것이며 새로운 혁신적인 애플리케이션의 개발을 가능하게 할 것이라고 믿습니다. 정확성을 높이는 또 다른 방법은 관계에 대한 두 가지 이상의 예를 제공하는 것입니다. 관계 벡터를 형성하기 위해 하나가 아닌 10개의 예를 사용함으로써(개별 벡터의 평균을 구함) 의미 구문 테스트에서 최고의 모델의 정확도가 절대적으로 약 10% 향상되는 것을 관찰했습니다.
다양한 작업을 해결하기 위해 벡터 연산을 적용하는 것도 가능합니다. 예를 들어, 단어 목록에 대한 평균 벡터를 계산하고 가장 먼 단어 벡터를 찾아 목록에 없는 단어를 선택하는 경우 정확도가 좋은 것을 관찰했습니다. 이것은 특정 인간 지능 테스트에서 널리 사용되는 유형의 문제입니다. 분명히 이러한 기술을 사용하여 아직 많은 발견이 이루어져야 합니다.
표 8: 표 4의 최상의 단어 벡터를 사용한 단어 쌍 관계의 예(300차원의 783M 단어에 대해 훈련된 스킵 그램 모델)
6 결론
이 논문에서 우리는 구문론적 및 의미론적 언어 작업 모음에 대한 다양한 모델에서 파생된 단어의 벡터 표현 품질을 연구했습니다. 우리는 널리 사용되는 신경망 모델(피드포워드 및 순환 모두)과 비교하여 매우 간단한 모델 아키텍처를 사용하여 고품질 단어 벡터를 훈련하는 것이 가능하다는 것을 관찰했습니다. 계산 복잡성이 훨씬 낮기 때문에 훨씬 더 큰 데이터 세트에서 매우 정확한 고차원 단어 벡터를 계산하는 것이 가능합니다. DistBelief 분산 프레임워크를 사용하면 기본적으로 어휘 크기에 제한이 없는 1조 단어로 구성된 말뭉치에서도 CBOW 및 Skip-gram 모델을 훈련할 수 있습니다. 이는 유사한 모델에 대해 이전에 발표된 최고의 결과보다 몇 배 더 큰 규모입니다.
최근 단어 벡터가 이전 기술 수준보다 훨씬 뛰어난 성능을 보이는 것으로 나타난 흥미로운 작업은 SemEval-2012 작업 2[11]입니다. 공개적으로 사용 가능한 RNN 벡터는 다른 기술과 함께 사용되어 이전 최고 결과에 비해 Spearman의 순위 상관 관계를 50% 이상 증가시켰습니다[31]. 신경망 기반 단어 벡터는 이전에 감정 분석[12] 및 의역 감지[28]와 같은 다른 많은 NLP 작업에 적용되었습니다. 이러한 애플리케이션은 본 문서에 설명된 모델 아키텍처의 이점을 누릴 수 있을 것으로 예상됩니다.
우리의 지속적인 연구는 단어 벡터가 지식 기반의 사실 자동 확장과 기존 사실의 정확성 검증에 성공적으로 적용될 수 있음을 보여줍니다. 기계 번역 실험의 결과도 매우 유망해 보입니다. 앞으로는 우리의 기술을 잠재관계분석(Latent Relational Analysis) [30] 및 기타 기술과 비교하는 것도 흥미로울 것입니다. 우리는 우리의 포괄적인 테스트 세트가 연구 커뮤니티가 단어 벡터를 추정하기 위한 기존 기술을 개선하는 데 도움이 될 것이라고 믿습니다. 또한 고품질 단어 벡터가 미래 NLP 애플리케이션의 중요한 구성 요소가 될 것으로 기대합니다.
7 후속작업
이 백서의 초기 버전이 작성된 후 우리는 연속 단어 백 및 스킵 그램 아키텍처를 모두 사용하여 단어 벡터를 계산하기 위한 단일 시스템 다중 스레드 C++ 코드를 게시했습니다. 훈련 속도는 이 백서의 앞부분에서 보고된 것보다 상당히 빠릅니다. 즉, 일반적인 하이퍼파라미터 선택의 경우 시간당 수십억 단어 정도입니다. 또한 우리는 명명된 엔터티를 나타내는 140만 개가 넘는 벡터를 게시하고 1,000억 개가 넘는 단어에 대해 훈련을 받았습니다. 우리의 후속 작업 중 일부는 다가오는 NIPS 2013 논문에 게재될 예정입니다[21].
References
[1] Y. Bengio, R. Ducharme, P. Vincent. A neural probabilistic language model. Journal of Machine Learning Research, 3:1137-1155, 2003.
[2] Y. Bengio, Y. LeCun. Scaling learning algorithms towards AI. In: Large Scale Kernel Machines, MIT Press, 2007.
[3] T. Brants, A. C. Popat, P. Xu, F. J. Och, and J. Dean. Large language models in machine translation. In Proceedings of the Joint Conference on Empirical Methods in Natural Language Processing and Computational Language Learning, 2007.
[4] R. Collobert and J. Weston. A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Learning. In International Conference on Machine Learning, ICML, 2008.
[5] R. Collobert, J. Weston, L. Bottou, M. Karlen, K. Kavukcuoglu and P. Kuksa. Natural Language Processing (Almost) from Scratch. Journal of Machine Learning Research, 12:24932537, 2011.
[6] J. Dean, G.S. Corrado, R. Monga, K. Chen, M. Devin, Q.V. Le, M.Z. Mao, M.A. Ranzato, A. Senior, P. Tucker, K. Yang, A. Y. Ng., Large Scale Distributed Deep Networks, NIPS, 2012.
[7] J.C. Duchi, E. Hazan, and Y. Singer. Adaptive subgradient methods for online learning and stochastic optimization. Journal of Machine Learning Research, 2011.
[8] J. Elman. Finding Structure in Time. Cognitive Science, 14, 179-211, 1990.
[9] Eric H. Huang, R. Socher, C. D. Manning and Andrew Y. Ng. Improving Word Representations via Global Context and Multiple Word Prototypes. In: Proc. Association for Computational Linguistics, 2012.
[10] G.E. Hinton, J.L. McClelland, D.E. Rumelhart. Distributed representations. In: Parallel distributed processing: Explorations in the microstructure of cognition. Volume 1: Foundations, MIT Press, 1986.
[11] D.A. Jurgens, S.M. Mohammad, P.D. Turney, K.J. Holyoak. Semeval-2012 task 2: Measuring degrees of relational similarity. In: Proceedings of the 6th International Workshop on Semantic Evaluation (SemEval 2012), 2012.
[12] A.L. Maas, R.E. Daly, P.T. Pham, D. Huang, A.Y. Ng, and C. Potts. Learning word vectors for sentiment analysis. In Proceedings of ACL, 2011.
[13] T. Mikolov. Language Modeling for Speech Recognition in Czech, Masters thesis, Brno University of Technology, 2007.
[14] T. Mikolov, J. Kopecky, L. Burget, O. Glembek and J. Cernocky. Neural network based language models for higly inflective languages, In: Proc. ICASSP 2009.
[15] T. Mikolov, M. Karafiat, L. Burget, J. Cernocky, S. Khudanpur. Recurrent neural network based language model, In: Proceedings of Interspeech, 2010.
[16] T. Mikolov, S. Kombrink, L. Burget, J. Cernocky, S. Khudanpur. Extensions of recurrent neural network language model, In: Proceedings of ICASSP 2011.
[17] T. Mikolov, A. Deoras, S. Kombrink, L. Burget, J. Cernocky. Empirical Evaluation and Com11
[18] T. Mikolov, A. Deoras, D. Povey, L. Burget, J. Cernock ˇ y. Strategies for Training Large Scale Neural Network Language Models, In: Proc. Automatic Speech Recognition and Understand-
ing, 2011.
[19] T. Mikolov. Statistical Language Models based on Neural Networks. PhD thesis, Brno University of Technology, 2012.
[20] T. Mikolov, W.T. Yih, G. Zweig. Linguistic Regularities in Continuous Space Word Representations. NAACL HLT 2013.
[21] T. Mikolov, I. Sutskever, K. Chen, G. Corrado, and J. Dean. Distributed Representations of Words and Phrases and their Compositionality. Accepted to NIPS 2013.
[22] A. Mnih, G. Hinton. Three new graphical models for statistical language modelling. ICML, 2007.
[23] A. Mnih, G. Hinton. A Scalable Hierarchical Distributed Language Model. Advances in Neural Information Processing Systems 21, MIT Press, 2009.
[24] A. Mnih, Y.W. Teh. A fast and simple algorithm for training neural probabilistic language models. ICML, 2012.
[25] F. Morin, Y. Bengio. Hierarchical Probabilistic Neural Network Language Model. AISTATS, 2005.
[26] D. E. Rumelhart, G. E. Hinton, R. J. Williams. Learning internal representations by backpropagating errors. Nature, 323:533.536, 1986.
[27] H. Schwenk. Continuous space language models. Computer Speech and Language, vol. 21, 2007.
[28] R. Socher, E.H. Huang, J. Pennington, A.Y. Ng, and C.D. Manning. Dynamic Pooling and Unfolding Recursive Autoencoders for Paraphrase Detection. In NIPS, 2011.
[29] J. Turian, L. Ratinov, Y. Bengio. Word Representations: A Simple and General Method for Semi-Supervised Learning. In: Proc. Association for Computational Linguistics, 2010.
[30] P. D. Turney. Measuring Semantic Similarity by Latent Relational Analysis. In: Proc. International Joint Conference on Artificial Intelligence, 2005.
[31] A. Zhila, W.T. Yih, C. Meek, G. Zweig, T. Mikolov. Combining Heterogeneous Models for Measuring Relational Similarity. NAACL HLT 2013.
[32] G. Zweig, C.J.C. Burges. The Microsoft Research Sentence Completion Challenge, Microsoft Research Technical Report MSR-TR-2011-129, 2011.
'자연어처리논문' 카테고리의 다른 글
[번역] Neural Machine Translation by Jointly Learning to Align and Translate (0) | 2023.11.04 |
---|---|
Sequence to Sequence 논문 리뷰 (0) | 2023.10.26 |
ELMo 논문 요약 (0) | 2023.10.14 |
[번역] Sequence to Sequence Learning with Neural Networks (seq2seq) (0) | 2023.10.08 |
[번역] Deep contextualized word representations (ELMo) (0) | 2023.10.08 |