brunch

You can make anything
by writing

C.S.Lewis

by Geumjae Lee Mar 07. 2019

워드 임베딩의 간략한 역사

A BRIEF HISTORY OF WORD EMBEDDINGS

다음 글은 스웨덴 Gavagai사의 co-founder이자 main researches인 Magnus Sahlgre 씨의 허락을 받아 한국어로 번역한 것이며, 번역문 뒤에 있는 코멘트는 제가 작성한 글입니다. 그리고 원문 게시 시점은 2015년 09월 30일입니다. 

이 글은 워드 임베딩이 왜 맥락적이라고 불리는지에 대해 이론적/역사적 뿌리를 알 수 있는 중요한 내용을 담고 있기 때문에 제 블로그에 게시하게 되었습니다. 

The following article was translated into Korean by permission of Magnus Sahlgren, co-founder and main researcher of Gavagai, Sweden. And the comments written separately from the translation are my own. And the time to publish the original is September 30, 2015.

This article contains important information about the theoretical / historical roots of why word embedding is called contextual, so I posted it on my blog.


원문 출처 : https://www.gavagai.se/blog/2015/09/30/a-brief-history-of-word-embeddings/


워드 임베딩의 간략한 역사(그리고 조금의 설명)  

   

현재 NLP에서 가장 강력한 트렌드 중 하나는 word embedding의 사용이며, 워드 임베딩은 상대적 유사성이 의미적 유사성과 상관관계가 있는 벡터를 말한다. 이러한 벡터는 용어(term) 사이의 유사점을 계산하기 위한 목적으로 사용되며 텍스트 분류, 문서 클러스터링, 품사 태깅, 명명된 엔티티 인식, 정서 분석 등과 같은 하위 NLP 작업의 표현 기반으로 사용된다. ACL이나 EMNLP와 같은 최근의 NLP 대형 컨퍼런스를 볼 때, 이것이 트렌드라는 것은 분명하다. 처음부터 (이제까지) 의미론은 EMNLP(empirical methods in nlp)에서 지배적인 주제였다. 사실, 어떤 사람들은 컨퍼런스의 이름을 "Embedding Methods in NLP"로 바꿀 것을 제안하기도 했는데, 왜냐하면 워드 임베딩에 대한 다양한 유형의 방법, 응용 프로그램 및 평가를 다루는 많은 양의 논문 때문이다.     


이는 긍정적인 추세이다(semantics와 embeddings이 마음에 든다면). 현재 NLP에서 많은 진전이 있다. 그러나 놀랍게도 워드 임베딩에 관한 최근의 많은 논문(논의)은 컴퓨터 과학, 인지 과학, 전산 언어학과 같은 이전 분야에서 많은 작업이 있었음을 잊어버렸다. 이것은 학문적 태도가 나쁘다는 사실뿐만 아니라, 기존의 지식을 기반으로 구축하기보다는, 바퀴를 재발명함으로써 발전을 늦추게 되는 리스크도 가지고 있다고 할 수 있다.            

이 게시물의 요점은 워드 임베딩의 간단한 역사를 제공하고 최신의 기술을 요약하는 것이다. 일반적인 주의사항이 적용된다 : 이는 해당 주제에 대한 모든 관련 연구의 전체 목록을 의미하지는 않는다. 대신 그것은 현장을 탐구하는데 관심이 있는 사람들을 위한 참고사항 및 출발점이 될 것이다. 

    

첫째, 전문 용어에 대한 주석이다. 워드 임베딩은 현재 지배적인 용어로 보인다. 딥러닝 커뮤니티에서 유래한 방법론의 인기 때문이다. 전산 언어학에서, 우리는 종종 분산 의미적 모델이라는 용어를 선호한다(기저에 깔려있는 의미적 이론을 분산 의미distributional semantics이라고 부르기 때문이다). 매우 일반적인 distributed representation에서 좀 더 구체적인 의미적 벡터 space 또는 단순한 word space에 이르기까지 다른 많은 대체 용어가 사용된다. 일관성을 위해, 나는 현재의 관행을 고수하고 이 글에 워드 임베딩이라는 용어를 사용할 것이다.     

    

워드 임베딩은 공식 언어학 및 촘스키 전통(무맥락 언어론)과는 완전히 대조적으로 문맥 정보만이 언어 항목의 실행 가능한 표현을 구성한다는 아이디어를 기반한다. 이 아이디어는 구조주의 언어학 및 일상 언어 철학, 특히 1950년대에 중요한 작품을 출판한 Zellig Harris, John Firth 및 Ludwig Wittgenstein의 저작에서 이론적으로 뿌리를 두고 있다(비트겐슈타인은 사후에). Feature representation을 사용하여 (의미적) 유사성을 계량화하려는 초기의 시도는 수작업 피처를 사용했다. Charles Osgood의 1960년대 semantic differential은 좋은 예이며, 1980년대의 연결주의와 인공 지능에 대한 초기 연구에도 비슷한 표현이 사용되었다.

     

자동 생성된 문맥 피처를 사용하는 방법은 여러 다른 연구 영역에서 1990년경에 거의 비슷하게 개발되었다. 가장 영향력 있는 초기 모델 중 하나는 Latent Semantic Analysis / Indexing(LSA/LSI)이며, 정보 검색이라는 맥락에서 개발됐으며, 오늘 주제가 되는 모델의 선구자이기도 하다. 거의 동시에, 문맥 표현을 사용하는 인공 신경 네트워크에 대한 연구에서 개발된 몇 가지 모델이 있었다. 이것들 중 가장 잘 알려진 것은 Self Organizing Maps(SOM)과 Simple Recurrent Networks(SRN)이며, 후자는 현재의 신경 언어 모델의 조상 격이다. 전산 언어학에서, Hinrich Schütze는 단어 동시 발생에 기반한 모델을 개발했으며, 이는 인지 과학에서의 의미 기억 모델로 개발된 Hyperspace Analogue Language(HAL)에서도 사용되었다.    

 

이후의 개발은 기본적으로 이러한 초기 모델을 개선한 것이다. 오늘의 주제 모델은 LSA의 개선이며, probabilastic LSA(PLSA) 및 Latent Dirichlet Allocation(LDA)과 같은 메서드를 포함한다. 신경 언어 모델은 SRN과 동일한 신경 네트워크 응용 프로그램을 기반하며 Convolutional Neural Network(CNN) 및 Autoencoders와 같은 아키텍처를 포함한다. 분산 의미적 모델은 종종 HAL과 동일한 유형의 표현을 기반으로 하며 Random Indexing 및 BEAGLE과 같은 모델을 포함한다.

     

이 다양한 모델 간의 주요 차이점은 그들이 사용하는 문맥 정보 유형이다. LSA와 토픽 모델은 문서를 문맥으로 사용하는데, 이는 정보 검색에 뿌리를 둔 유산이다. 신경 언어 모델과 분산 의미적 모델은 대신 단어를 문맥으로 사용하고, 이것은 논리/언어적 인지적 관점에서 더 자연스러운 것이다. 이러한 서로 다른 문맥 표현은 서로 다른 유형의 의미적 유사성을 포착한다. 문서 기반 모델은 의미적 관련성(예 : "보트" - "물")을 포착한다. 반면, 단어 기반 모델은 의미적 유사성(예 : "보트" - "선박")을 포착한다. 이러한 아주 기본적인 차이점은 지나치게 자주 오해된다.     


일반적인 오해에 대해서 말하면, 폭로를 필요로 하는 두 가지 신화가 있다 :     

- 좋은 워드 임베딩을 위해서는 깊은 신경망이 필요 없다. 실제로 가장 성공적이고 인정받은 두 가지 모델인 word2vec 라이브러리에 포함된 Skipgram 및 CBoW 모델은 오리지널 SRN과 동일한 방식의 얕은 신경망이다.     

- (현재) 예측적 신경망 모델과 카운트 기반의 분산 의미적 모델 사이에는 질적인 차이가 없다. 오히려, 그것들은 동일한 유형의 의미적 모델에 도달하기 위한 다른 연산 수단일 뿐이다; 최근의 몇몇 논문은 이론적으로나 경험적으로 이 두 가지 유형의 모델 간의 일치성을 입증했다[Levy and Goldberg(2014), Pennington et al.(2014), Österlund et al.(2015)].     


이것은 매우 간단한 역사와 몇 가지 설명이었다. 현재의 최신 기술은 어떤가? 지루한 대답은 해결하려는 작업과 모델 최적화에 얼마나 많은 노력을 기울이느냐에 달려 있다는 것이다. 좀 더 즐거운 대답은 당신이 선택한 현재의 방법을 선택하더라도 괜찮을 것이라는 것이며, 왜냐하면 그것들이 다소 비슷하기 때문이다. 좋은 방법은 요소로 나눈 factorized 모델을 사용하는 것이며 – 분산 의미적 모델의 명시적 인수분해를 사용하거나(가령 PyDSM 파이썬 라이브러리 또는 GloVe implementation에서 사용 가능) 또는 word2vec와 같은 신경망 모델로 구현된 것을 사용하는 것이다. - 왜냐하면 그것들이 최신의 결과를 보여주기 때문이며(Österlund et al., 2015), 광범위한 의미적 작업에 걸쳐 견고하기 때문이다(Schnabel et al., 2015).


워드 임베딩으로 놀기에 관심이 있는 사용자를 위해 다음 라이브러리를 권장한다.


STANDALONE IMPLEMENTATIONS

– WORD2VEC (ALSO AVAILABLE IN E.G. SPARK MLLIB AND DL4J)

– GLOVE


FRAMEWORKS

– S-SPACE (JAVA)

– SEMANTICVECTORS (JAVA)

– GENSIM (PYTHON)

– PYDSM (PYTHON)

– DISSECT (PYTHON)


#(이하는 필자의 글이다)


비트겐슈타인과 촘스키를 비교한 부분이 인상적이다. 비트겐슈타인은 언어가 맥락적이라고 주장하였고, 촘스키는 언어가 무 맥락적이라고 주장하였고, 이에 저자는 word2vec과 같은 방법은 언어가 맥락적이라는 가정에서 만들어진 것이라고 말하고 있다. 


다만, 이 글의 저자는 word2vec와 같이 '주변 단어'를 '목적 단어'의 문맥으로 삼아야 한다고 주장하고 있지만, 배틀그라운드에서 사용되는 '감자(수류탄의 은어)'와 같은, 특수성에 따라 다르게 해석될 여지가 있는 단어를 '단어 맥락'으로 규정하면, 문서별로 나타나는 특수성을 규정할 수 없는 문제가 발생하는 것은 생각하지 못하고 있다. 단어를 맥락으로 삼는 것은 여러 문서에 걸쳐서 그것의 의미가 항상 동일하다는 것을 전제하며, 이는 문서 개별적 맥락을 반영할 수 없는 것이다. 


"……요컨대 함수 F(fx)가 자기 자신의 독립변수가 될 수 있을 거라고 가정해보자. 그렇다면 'F(F(fx))'라는 명제가 주어질 것이다. 그리고 이 명제에서 외부 함수 F와 내부 함수 F는 상이한 의미를 가져야 한다. 왜냐하면 그 내부 함수는 Φ(fx)의 형식을 지니고, 외부 함수는 Ψ(Φ(fx))의 형식을 지니기 때문이다. 그 두 함수에는 단지 'F'라는 문자만이 공통적인데, 그러나 그 문자는 그 자체로 아무것도 지칭하지 않는다……."(논고 3.333)


이때 내부와 외부를 가르는 기준은 개별적 문서 혹은 사건이 된다. 비트겐슈타인은 언어게임을 설명하고자 교통사고를 빗댄 적이 있다. 교통사고라는 사건 내부에서 생기는 언어의 특수성을 표현하고자 함이었을 것이다. 

작가의 이전글 자연어의 피처와 전처리
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari