by 이정윤
자연어처리 단계 중, 지금까지 전처리(Preprocessing)과 형태소 분석(Tokenization)에 대해서 공부하고 실습을 진행했다. 지금부터는 자연어를 컴퓨터가 인식하고 처리할 수 있는 형태로 바꾸는 임베딩에 대하여 알아보도록 하겠다.
임베딩 이란 자연어를 컴퓨터가 처리할 수 있도록 숫자들의 나열인 벡터, 즉 0과 1로 바꾸는 것을 의미한다. 지금도 꾸준히 발전된 새로운 모델들이 등장하는만큼, 임베딩의 방법과 종류는 굉장히 다양하다. 인터넷과 도서에 이미 정리되어 있는 자료가 많긴 하지만, 분류 기준의 차이인지 다루는 범위의 차이인지, 존재하는 자료들로는 임베딩 기법의 전체적인 틀을 이해하기 다소 어려운 부분이 있었다. 따라서 여러 자료들을 종합하여 한 번 쯤 들어보긴 했지만 어떤 기법에 속하는지, 어떤 원리를 사용한 것인지 등 전반적인 기법들의 개념을 정리해보는 시간을 가져보려고 한다. 언제나처럼 실습이 이 스터디의 주목표이므로 깊은 내용까지 들어가진 않는다.
여러 자료를 많이 참고했지만, 종합하여 이해하는 과정에서 오류가 발생했을 수 있다. 내용상 오류 정정은 언제나 감사한 마음으로 환영한다. (cathx618@gmail.com)
참고도서: 한국어임베딩(이기창, 2019)
참고자료: 인공지능과 자연어 처리 기술 동향 (유승의, 정보통신기획평가원, 2021.2.17)
앞서 언급했듯, 임베딩이란 사람의 말인 자연어를 컴퓨터가 이해, 즉 계산할 수 있도록 숫자형태로 바꾸는 것이다. 임베딩을 통해서 수행할 수 있는 역할은 다음과 같다.
그렇다면, 단어를 어떤 기준과 방식을 통해 의미있는 수치정보로 표현할 수 있을까? 임베딩을 만드는 세 가지 철학은 다음과 같다. (출처: 한국어 임베딩(이기창, 2019), p58~77)
백오브워즈 가정 | 언어모델 | 분포가정 | |
---|---|---|---|
내용 | 단어의 출현빈도 (어떤 단어가 많이 쓰였는가) | 단어의 순서 (단어가 어떤 순서로 쓰였는가) | 단어의 분포 (어떤 단어가 같이 쓰였는가) |
대표 통계량 | TF-IDF | - | PMI(점별 상호 정보량) |
대표 모델 | Deep Averaging Network | ELMo, GPT | Word2Vec |
사실 이 표의 의미에 대해서 완벽하게 이해하진 못했다. 다만, 이 세가지 요소들은 서로를 포함하는 관계도 되기 때문에 완전하게 경계를 나눠서 인식하면 안된다고 이해했다. (아래 내용을 보면 이 말이 이해갈 것!)
단어의 출현빈도는 단순하게 어떤 단어가 빈번하게 등장하는 지를 고려한다. 따라서 문장 내에서 단어의 순서나 문맥적을 반영하진 않는다. TF-IDF는 고려한다는 점에서 단순한 빈도 카운트는 아니지만, 여전히 빈도에 큰 중점을 두기 때문에 BoW (Bag of Words) 기법에 속한다.
반면, 단어의 순서는 말 그대로 단어 문장 속에서 사용된 순서, 즉 시퀀스를 고려한다. 이때 '언어모델' 이라는 개념이 등장하는데, 언어모델이란 단어 시퀀스에 확률을 부여하는 모델이다. (한국어 임베딩, 이기창, 2019, p64) 이 언어모델은 다시 '통계적 기반 언어모델'과 '뉴럴 네트워크(신경망) 기반 언어모델'로 구분할 수 있다.
마지막으로 단어의 분포는 문맥을 고려하는 방법이다. 즉, 비슷한 문맥환경에서 특정 쌍이 자주 등장한다면, 그 의미도 유사할 것이라는 가정에서 기반한다.
한편, 언어모델 부분에 대한 이해가 어려웠다. 앞서 구분한 언어모델 중 통계적 기반 언어모델에는 n개를 고려한 카운트 기반인 n-gram이 있다. 여기서 드는 의문은 n-gram 역시 카운트 기반인데, 언어모델은 단어의 시쿼스를 기반으로 확률을 부여하다는 설명 때문이었다. 처음에 언급했듯, 세 요소들을 뚜렷한 경계를 두고 이해하면 안될 것 같다. 즉, 단어의 순서를 고려했다고 해서 단어의 빈도를 고려하지 않은 것은 아니라는 것!
이를 더 쉽게 이해하기 위해 통계적 언어모델 (SLM)에 대해서 조금 더 자세히 알아보자.
P(나는 자연어 처리 공부를 합니다)=
P(나는) X P(자연어|나는) X P(처리|나는 자연어) X P(공부를|나는 자연어 처리) X P(합니다|나는 자연어 처리 공부를)
P(공부를|나는 자연어 처리)=COUNT(나는 자연어 처리 공부를)/COUNT(나는 자연어 처리)
참고 사이트: 임베딩의 역할, Natural Language Processing with PyTorch, 위키북스-통계적 언어모델, Language Model(언어 모델)
내가 이해한 내용들을 한 페이지로 정리하면 다음 표와 같다. 간단해보이지만, 이 정리를 하기까지 꽤 많은 노력과 공부가 필요했다. 여러 의견이 다른 자료들을 참고하였기 때문에 일부 기법의 카테고리 분류가 애매할 수 있지만, 현재까지 이해를 바탕으로 분류한 것이며 추후 수정될 수 있다. 대략적인 내용에 대한 간단한 설명은 아래에 있고, 세부적인 이해는 다음 스터디에서 진행하도록 하겠다.
참고사이트: 임베딩의 역할, 임베딩 기술 흐름과 종류, 위키독스-다양한 단어의 표현방법
'위키독스-다양한 단어의 표현방법'의 내용을 참고하였는데, NNLM과 RNNLM은 해당 개념에 대해 정확히 알지 못해 국소표현, 분산표현 중에 구분하지 않았다.
이때의 통계적 기반은 '통계적 기반 언어모델'과 100% 동일한 개념으로 이해하진 않았다. (카운트 기반과 의미상 더 가깝다고 생각했지만, 이역시 동일한 개념은 아닌 듯) * Topic modeling: 토필 모델링의 일종인 LSA(Latent, Senantic Analysis, 잠재의미분석)은 행렬분해 기반 기법으로 BoW, TF-IDF 처럼 빈도수만 고려할 때와 달리 행간의 잠재 의미를 이끌어내기 위한 방법이다. 데이터 차원의 수를 줄여 계산 효율성을 키우기도 한다. (행렬분해 기법) LSA의 단점을 보완한 것이 LDA (Latent Dirichlet Allocation, 잠재 디리클레 할당)이다.
이전의 단어들이 주어졌을 때, 다음에 어떤 단어가 나올지 예측하거나 문장 내 일부분에 구멍을 뚫어놓고 해당 단어가 무엇일지 맞추는 과정에서 학습을 하는 기법을 말한다. (한국어 임베딩, p38) * Word2Vec, FastText는 단어기반 임베딩, ELMo, BERT는 문장기반 임베딩에 속함.
참고도서: 한국어임베딩(이기창, 2019)
참고사이트: 위키독스-잠재 의미 분석, 토픽 모델링-잠재의미분석
임베딩 기술은 초기에는 단어기반의 임베딩(NLPM, Word2Vec, GloVe, FastText, Swivel 등)을 진행했지만, 최근에는 문장기반 임베딩(ELMo, BERT, GPT 등)이 주목받고 있다. 단어기반 임베딩은 동음이의어를 구분하기 어려운 반면, 문서기반 임베딩은 이를 구분할 수 있다. LSA는 차원 축소를 한 행렬을 기존 행렬과 비교할 때 단어를 기준으로 하면 단어 단어기반 임베딩, 문서를 기준으로 하면 문서기반 임베딩이 된다.
참고도서: 한국어임베딩(이기창, 2019)
이번 스터디에서는 본격적인 임베딩 실습에 들어가기 앞서 임베딩에 대한 기본적인 개념 정리를 했다. 임베딩 기술 종류 분류에서 등장한 기술들에 대한 모든 기술들 하나하나 세부적으로 들어가면 굉장히 방대하고 어려운 내용들이 나오므로 전부를 이해할 필요는 없을 듯 하여 기초적인 부분만 이해하고 넘어가도록 하겠다. 실제로 실습을 진행해볼 기술에 대해서는 다음 스터디에서 더 자세히 다뤄볼 예정이다.
다음에는 본격적으로 임베딩 실습을 진행하고자 한다.