(1강) Intro to NLP, Bag-of-Words
NLP의 Task와 구분
NLP는 현재 딥러닝에서 가장 활발히 다뤄지고 있는 분야로, 다양한 기준에 구분할 수 있다.
Task를 기준으로 크게 분류하자면, 다음과 같다.
- Natural Language Understanding (NLU) : Computer에 인간의 언어를 이해시키는 작업
- Natural Language Generation (NLG) : Computer가 적절한 인간의 언어를 생성해내는 작업
학문적 연구 분야를 기준으로 분류하면 다음과 같다.
- Natural Language Processing (NLP)
- Text Mining
- Information Retrieval
학문적 연구 분야를 기준으로 세부적인 Task를 살펴보자.
NLP는 아래와 같은 세부 Task를 가진다. 이외에도 많은 Task가 있으며, 다른 분야보다 더 활발하게 연구되고 있는 분야이다.
- Tokenization : 일정한 규칙에 따라 문장을 단어로 Parsing 하는 작업
- Stemming : 단어의 의미와 어근을 구별하는 작업 (ex. '맑다', '맑은', '맑고' 등)
- Named Entity Recognition (NER) : 고유명사를 인식하는 작업 (ex. 'The New York Times' 등)
- Part-of-Speech (POS) Tagging : 단어의 품사나 성분을 인식하는 작업
- Sentiment Analysis : 문장이나 글의 감정을 분석하는 작업
- Machine Translation : 기계를 통해 문장이나 글을 번역하는 작업
- Entailment Prediction : 문장 간 논리 구조를 예측하는 등의 작업
- Question Answering : 질문을 이해하고 관련된 정보를 제공하는 작업 (ex. '나폴레옹이 죽은날은?' 등)
- Dialog Systems : 챗봇과 같이 대화를 이해하고 생성하는 작업
- Summarization : 글이나 다수의 문장을 핵심적인 내용으로 요악하는 작업
Text Mining은 아래와 같은 세부 Task를 가진다. 이 분야는 사회현상에 대한 분석 등과 밀접한 관계를 가진다.
- Extract Useful Information : 웹과 같은 방대한 정보 속에서 유의미한 정보를 추출하는 작업 (ex. 뉴스 분석, 소비자 반응 분석 등)
- Document Clustering : 글을 일정한 Class로 분류하거나 비슷한 글끼리 묶는 작업
Information Retrieval은 검색 기술을 연구하는 분야로 현대에는 검색 기술과 성능이 성숙기에 이르렀다고 판단한다. 이와 관련된 세부 분야로서 추천 기술이 활용되고 있다.
- Recommendation Systems : 사용자의 정보를 통해 선제적으로 정보를 제공하는 작업 (ex. Youtube 영상 추천 기능 등)
Trends of NLP
현대의 기계학습은 Computer Vision 분야와 NLP 분야가 활발히 연구되고 있다. CV는 CNN과 GAN 등으로 인해 폭발적인 성장을 이루고 있다. NLP는 다음과 같은 Trend로 발전해나가고 있다.
자연어는 그 자체로는 기계가 이해할 수 없고, 단어의 순서에 따라 의미가 바뀌는 특징을 가진다. 이에 따라, Embedding과 Sequential Data의 처리가 주된 관건이었다.
RNN (LSTM, GRU)과 같은 모델의 등장으로 Sequential Data를 처리할 수 있게 되었고, 더 나아가 Transformer 모델의 등장으로 큰 발전을 이루어 냈다. Transformer이전에는 각 Task에 특화된 모델이 따로 존재했었으나, 근래에는 Transformer의 구조를 이용한 모델이 이를 대체하고 있다.
Self Attention구조와 Self Learning을 통해 수 많은 데이터를 이미 학습한 Pre-trained 모델도 등장했다. Bert와 GPT-X 모델은 필요한 Task의 데이터를 전이학습하여 어디서든 좋은 성능을 낼 수 있도록 개발되었다.
Bag of Words
Bag of Words는 딥러닝 기술 이전에 적용되었던 Embedding 기술로 단어를 숫자나 벡터로 표현하는 기법이다. 단, Bag of Words로 표현된 모든 단어는 다른 단어 간의 거리가 모두 이며, Cosine 유사도는 0이다.
알고리즘의 순서와 예시는 다음과 같다.
- 먼저, 문장에서 나타난 단어들의 집합을 구한다.
- 각 단어를 One Hot Encoding하여 벡터로 표현한다.
- 각 단어를 표현하는 벡터의 합을 통해 문장을 표현한다.
Naive Bayes Classifier
Bag of Words를 이용해 Naive Bayes Classifier를 구현할 수 있다. 각 문장이 어떤 Class에 속하는지에 대한 Task를 수행할 수 있으며, 이는 조건부확률과 Bayesian Rule에 따라 필요한 모든 Parameter를 모두 추정할 수 있다.
문장 혹은 글인 가 어떤 Class 에 속하는지 알고 싶을 때 다음과 같이 정리할 수 있다.
문장 는 각각의 단어 로 이루어져 있기 때문에 동시사건으로 이해할 수 있다. 또한, 각 단어는 독립사건이기 때문에 다음과 같이 정리될 수 있다.
실습
(2강) Word Embedding
What is Word Embedding?
Word Embedding은 단어의 의미를 고려하여 Vector의 형태로 표현하는 것을 의미한다. 이는 Deep Learning의 학습을 기반으로 한다. 주어진 Text를 학습 데이터로 사용해 학습하므로써 Embedding Vector를 만들어낸다.
Word Embedding은 각각의 단어를 특정한 차원의 점으로 표현하는 것이며, 단어의 의미에 따라 벡터 공간에서의 거리가 다르도록 표현하는 방식이다. 동일한 위치에 표현되는 단어나, 단어와 함께 등장하는 다른 단어는 관계가 있다는 것을 가정으로 한다.
Word2Vec
Word2Vec의 기본 아이디어는 다음 사진과 같다.
Word2Vec의 알고리즘은 다음과 같은 순서로 동작한다.
- 문장이 주어진다.
- 문장에서 등장한 각 단어를 One Hot Encoding 한다.
- 앞에 등장한 단어를 X(입력 데이터)로, 뒤에 등장한 단어를 y(정답 데이터)로 학습 데이터를 구성한다.
- X를 입력으로 하여 두 번의 선형변환을 거쳐 y를 추론할 수 있도록 학습한다.
- 학습 된 가중치 W를 Embedding Vector로 사용한다.
Word Embedding의 특징
위와 같이 표현된 Embedding Vector는 다른 단어와의 관계를 통해서 다른 정보를 표현할 수 있다.
예를 들어, Embedding Vector로 표현된 '삼촌'과 '이모'라는 단어의 차이는 '왕'과 '여왕'이라는 단어의 차이와 유사하다. 즉, 벡터 간의 연산을 통해 특정한 정보를 표현할 수 있는 것이다.
이와 같은 특징을 통해서 Word Embedding은 NLP의 다양한 Task에서 활용되고 있다.
GloVe
GloVe는 문장 내에서 단어가 몇 번 등장했는지 미리 파악해두고, 이를 계산하는 방식을 가진다. GloVe의 목적함수는 입출력 쌍의 단어가 몇 번 등장했는지를 를 씌워 값으로 가지고 있고, 이 값에 근사하는 형태로 표현된다. Word2Vec에서는 반복적으로 수행되었어야 할 계산이 단순화 되는 장점이 있다.
실습
Reference
Word2Vec Word Embedding Example
Embedded Word Relationship Example
'네이버 부스트캠프 AI Tech' 카테고리의 다른 글
[U] Day 18 - NLP III (0) | 2021.03.26 |
---|---|
[U] Day 17 - NLP II (0) | 2021.03.26 |
[U] Day 15 - Generative Model (0) | 2021.03.26 |
[U] Day 14 - Recurrent Neural Network (0) | 2021.03.26 |
[U] Day 13 - Convolution Neural Networks (0) | 2021.03.26 |
Uploaded by Notion2Tistory v1.1.0