[딥러닝] NLP

홍랑·2021년 12월 21일
0

DeepLearning

목록 보기
1/5
post-thumbnail

이번에 머신러닝 프로젝트를 진행하면서 자연어 처리가 필요한 부분이 있었다.
자연어 처리 임베딩(벡터화)을 배웠을 때, 머신러닝 하위 개념에서 배웠었다.
그래서 CountVectorizer, TF-IDF 기법만 알고 있었다.
그런데 프로젝트를 진행하다보니 one-hot encoding 방식이 도입되었고, 이건 딥러닝 분야라고 배워서 뭔가 신기하고 이래도 되는건지 의구심이 들었다.

그래서 nlp가 어떤 영억에 포함되어 있는지 찾아봤다.

위 이미지에서 알 수 있듯이 자연어 처리는 인공지능 하위 개념이면서 동시에 머신러닝과 그 하위 개념인 딥러닝에 모두 겹쳐져 있었다.
그래서 자연스럽게 프로젝트 과정에서 넘나들었던 것이 아닌가 생각했다.


📌 NLP

그러면 일단 nlp 개념부터 잡고 가보자.

NLP (natural language processing)

  • 기계가 사람의 언어에 대해 처리하는 계산적 기술(computer Techniques)
  • 감성분석(감정분석), 의미분석, 구문분석, 음성인식

그러니까 간단히 말해서,
뭔가 유의미한 행동을 기계가 할 수 있도록 사람의 언어를 컴퓨터가 처리하고 이해하게끔 하는 작업이라고 할 수 있다.

계산적 기술도 세부적으로 3개의 분류가 있지만, 오늘은 그보다 임베딩 기술을 더 알아보고 싶다. 아무래도 거기서 의구심이 시작되었으니...

📌 Embedding

자연어 처리를 위해서 사람의 말을 컴퓨터가 이해할 수 있도록 글자가 아닌 숫자(0, 1)로 바꿔주는 작업이 필요하다. 이를 Embedding or Vetorization 이라고 한다.

Embedding : 전체 단어들 간의 관계에 맞춰 해당 단어
의 특성을 갖는 벡터로 바꿔 단어들 사이의 유사도를 계산하는 기법

크게 2개로 통계 기반과 뉴럴 네트워크 기반으로 나뉘고 뉴럴 네트워크의 등장으로 기법의 발전이 있었다고 한다. 간단하게 살펴보자.

📚 통계적 기반

임베딩 초기에는 말뭉치(Corpus)의 통계량을 활용했다.

  1. TF-IDF (Term Frequency-Inverse Document Frequency)
    특정 단어가 문서 내에서 출현하는 빈도(TF)값과 흔한 단어는 문서에서 자주 등장되는 경우가 많아 역빈도(IDF)값을 계산한다.
    이렇게 하면 단어의 중요도, 우선순위를 알 수 있다.

  2. One-hot Encoding
    이 기법은 문자를 숫자로 바꾸는 가장 기본적인 방법이다.
    Count vector와 유사한 개념인데, 단어 간의 관계에서 단어들 간의 유사성과 반대적 의미에 대해서는 전혀 반영하지 못하고 문장의 횟수에만 의존한다는 단점이 있다.

그래서 문서 사이의 유사도를 측정할 때는 정확한 측정을 위해 TF-IDF가 더 많이 쓰인다고 한다.

📚 neural network 기반

워드 임베딩의 역사는 인공 망을 이용하여 주변 단어의 단어 등장 확률을 예측한 NPLM (Neural Probabilistic Language Model)이 발표된 이후부터 Word2Vec → FastText → ELMO → BERT 기법으로 발전되었다고 한다.

단어, 문장 수준으로 세부적으로 나뉜다고 하니 하나씩 살펴본다.

📖 단어 수준

신경망을 이용하여 텍스트를 변환하는 것이 가장 큰 특징이고 단어의 의미를 수치화 할 수 있다.
단어 수준의 벡터 표현은 텍스트를 수치화한 벡터 형태로 표현하는 것이고, 이에 해당되는 기법에는 Word2Vec, GloVe, FastText 등이 있다.

  1. Word2Vec
    단어 간 유사도를 파악할 수 없는 One-hot Encoding의 단점을 보완한 기법이다. 가장 큰 개념은 “비슷한 분포를 가진 단어이면 가까운 벡터로 표현된다.” 이다. 그러니까 문장의 맥락을 고려한다는 말이고 따라서 단어의 의미를 잘 파악한다고 한다.

  2. ELMo (Embeddings from Language Model)
    이 기법의 큰 특징은 사전에 학습된 언어 모델을 사용한다는 것이다. 그리고 기존의 임베딩과 다르게 양방향 언어 모델을 사용해 문맥을 반영한다.
    같은 단어이지만 상황에 따라, 문맥에 따라 다른 의미를 갖게 되는 경우를 해결할 수 있다.

이런 단어 수준의 기법에도 단점이 있었는데,
다른 단어가 만약 형태가 같으면 동일한 단어의 벡터로 전달되므로 동음이의어를 구분해내지 못했다.

📖 문장 수준

이 문장 수준의 임베딩은 문맥을 고려하는 능력이 있는 ELMo 발표 이후 주목받기 시작했다. 그리고 단어 수준의 임베딩의 단점을 문장 수준의 임베딩이 개선할 수 있게 되었다.

  1. BERT (Bidirectional Encoder Representations from Transformer)
    이 모델은 최근까지 딥러닝 모델을 적용한 모든 자연어 처리 분야에서 좋은 성능을 보이고 있는 범용 언어 모델이라고 한다. ELMo의 특징에서 출현한 모델이라, 이 또한 사전학습 모델이다.

    사전 학습은 비지도 학습으로 진행되고, 대량의 말뭉치를 임베딩한 후 이를 트
    렌스퍼하여 Fine-tuning을 통해 목적에 맞는 학습을 수행하여 과업을 수행한다.
    이 모델도 양방향 모델을 적용해서 문맥을 앞뒤를 고려해 정확도가 우수한 특징이 있다.

    대량의 텍스트 데이터에도 적용할 수 있다는 점, 다양한 언어를 지원한다는 점에서 가장 큰 장점을 가지고 있다.




참고

profile
호랑이 기운이 솟아나요🐯

0개의 댓글