이번에 머신러닝 프로젝트를 진행하면서 자연어 처리가 필요한 부분이 있었다.
자연어 처리 임베딩(벡터화)을 배웠을 때, 머신러닝 하위 개념에서 배웠었다.
그래서 CountVectorizer, TF-IDF 기법만 알고 있었다.
그런데 프로젝트를 진행하다보니 one-hot encoding 방식이 도입되었고, 이건 딥러닝 분야라고 배워서 뭔가 신기하고 이래도 되는건지 의구심이 들었다.
그래서 nlp가 어떤 영억에 포함되어 있는지 찾아봤다.
위 이미지에서 알 수 있듯이 자연어 처리는 인공지능 하위 개념이면서 동시에 머신러닝과 그 하위 개념인 딥러닝에 모두 겹쳐져 있었다.
그래서 자연스럽게 프로젝트 과정에서 넘나들었던 것이 아닌가 생각했다.
그러면 일단 nlp 개념부터 잡고 가보자.
NLP (natural language processing)
- 기계가 사람의 언어에 대해 처리하는 계산적 기술(computer Techniques)
감성분석(감정분석)
,의미분석
,구문분석
,음성인식
등
그러니까 간단히 말해서,
뭔가 유의미한 행동을 기계가 할 수 있도록 사람의 언어를 컴퓨터가 처리하고 이해하게끔 하는 작업이라고 할 수 있다.
계산적 기술도 세부적으로 3개의 분류가 있지만, 오늘은 그보다 임베딩 기술을 더 알아보고 싶다. 아무래도 거기서 의구심이 시작되었으니...
자연어 처리를 위해서 사람의 말을 컴퓨터가 이해할 수 있도록 글자가 아닌 숫자(0
, 1
)로 바꿔주는 작업이 필요하다. 이를 Embedding
or Vetorization
이라고 한다.
Embedding
: 전체 단어들 간의 관계에 맞춰 해당 단어
의 특성을 갖는 벡터로 바꿔 단어들 사이의 유사도를 계산하는 기법
크게 2개로 통계 기반과 뉴럴 네트워크 기반으로 나뉘고 뉴럴 네트워크의 등장으로 기법의 발전이 있었다고 한다. 간단하게 살펴보자.
임베딩 초기에는 말뭉치(Corpus)의 통계량을 활용했다.
TF-IDF
(Term Frequency-Inverse Document Frequency)
특정 단어가 문서 내에서 출현하는 빈도(TF)값과 흔한 단어는 문서에서 자주 등장되는 경우가 많아 역빈도(IDF)값을 계산한다.
이렇게 하면 단어의 중요도, 우선순위를 알 수 있다.
One-hot Encoding
이 기법은 문자를 숫자로 바꾸는 가장 기본적인 방법이다.
Count vector와 유사한 개념인데, 단어 간의 관계에서 단어들 간의 유사성과 반대적 의미에 대해서는 전혀 반영하지 못하고 문장의 횟수에만 의존한다는 단점이 있다.
그래서 문서 사이의 유사도를 측정할 때는 정확한 측정을 위해 TF-IDF가 더 많이 쓰인다고 한다.
워드 임베딩의 역사는 인공 망을 이용하여 주변 단어의 단어 등장 확률을 예측한 NPLM
(Neural Probabilistic Language Model)이 발표된 이후부터 Word2Vec → FastText → ELMO → BERT
기법으로 발전되었다고 한다.
단어, 문장 수준으로 세부적으로 나뉜다고 하니 하나씩 살펴본다.
신경망을 이용하여 텍스트를 변환하는 것이 가장 큰 특징이고 단어의 의미를 수치화 할 수 있다.
단어 수준의 벡터 표현은 텍스트를 수치화한 벡터 형태로 표현하는 것이고, 이에 해당되는 기법에는 Word2Vec, GloVe, FastText 등이 있다.
Word2Vec
단어 간 유사도를 파악할 수 없는 One-hot Encoding의 단점을 보완한 기법이다. 가장 큰 개념은 “비슷한 분포를 가진 단어이면 가까운 벡터로 표현된다.” 이다. 그러니까 문장의 맥락을 고려한다는 말이고 따라서 단어의 의미를 잘 파악한다고 한다.
ELMo
(Embeddings from Language Model)
이 기법의 큰 특징은 사전에 학습된 언어 모델을 사용한다는 것이다. 그리고 기존의 임베딩과 다르게 양방향 언어 모델을 사용해 문맥을 반영한다.
같은 단어이지만 상황에 따라, 문맥에 따라 다른 의미를 갖게 되는 경우를 해결할 수 있다.
이런 단어 수준의 기법에도 단점이 있었는데,
다른 단어가 만약 형태가 같으면 동일한 단어의 벡터로 전달되므로 동음이의어를 구분해내지 못했다.
이 문장 수준의 임베딩은 문맥을 고려하는 능력이 있는 ELMo
발표 이후 주목받기 시작했다. 그리고 단어 수준의 임베딩의 단점을 문장 수준의 임베딩이 개선할 수 있게 되었다.
BERT
(Bidirectional Encoder Representations from Transformer)ELMo
의 특징에서 출현한 모델이라, 이 또한 사전학습 모델이다.