4.1 임베딩이란?
- 단어나 문장을 수치화해 벡터 공간으로 표현하는 과정. 다른 딥러닝 모델의 입력값으로 많이 사용됨.
- 말뭉치의 의미에 따라 벡터화하기 때문에 문법적인 정보가 포함되어 있다.
- 문장 임베딩과 단어 임베딩이 있다.
- 문장 임베딩: 문장 전체를 벡터로 표현하는 방법. 전체 문장의 흐름을 파악해 벡터로 변환하기 때문에 문맥적 의미를 지니는 장점. 단어 임베딩에 비해 품질이 좋으며, 상용시스템에 많이 사용됨. 하지만 임베딩하기 위해 많은 문장 데이터가 필요하며 학습하는 데 비용이 많이 들어감.
- 단어 임베딩: 개별 단어를 벡터로 표현하는 방법. 동음이의어에 대한 구분을 하지 않기 때문에 동일한 벡터값으로 표현되는 단점이 있음. 하지만 문장 임베딩에 비해 학습 방법이 간단해 실무에서 많이 사용됨.
4.2 단어 임베딩
- 토크나이징을 통해 추출된 토큰들은 형태소 기반이기 때문에 컴퓨터에서 처리하기에 단어 임베딩 기법이 효과적.
4.2.1 원-핫 인코딩
- 단어를 숫자 벡터로 변환하는 가장 기본적인 방법.
- 요소들 중 단 하나의 값만 1이고 나머지 요솟값은 0인 인코딩.
- 원-핫 인코딩으로 나온 결과를 원-핫 벡터라 하며, 전체 요소 중 단 하나의 값만 1이기 때문에 희소(sparse) 벡터라고 함.
- 원-핫 벡터의 문제점: 단순히 단어의 순서에 의한 인덱스값을 기반으로 인코딩된 값이기 때문에 단어의 의미나 유사한 단어와의 관계를 담고 있지 않음. 또한 단어 사전의 크기가 커짐에 따라 원-핫 벡터의 차원도 커지는데 이때 메모리 낭비와 계산의 복잡도가 커짐. 대부분의 요소가 0의 값을 가지고 있으므로 비효율적임.
4.2.2 희소 표현과 분산 표현
- 희소 표현(sparse representation): 원-핫 벡터와 같이, 단어가 희소 벡터로 표현되는 방식. 각각의 차원이 독립적인 정보를 지니고 있어 사람이 이해하기에 직관적인 장점이 있지만 단어 사전의 크기가 커질수록 메모리 낭비와 계산 복잡도가 커짐. 단어 간의 연관성이 전혀 없어 의미를 담을 수 없음.
- 분산 표현(distributed representation): 각 단어 간의 유사성을 잘 표현하면서도 벡터 공간을 절약할 수 있는 방법. 하나의 차원에 다양한 정보를 가지고 있음. 신경망에서는 분산 표현을 학습하는 과정에서 임베딩 벡터의 모든 차원에 의미있는 데이터를 고르게 밀집시킴. 밀집 표현(dense representation)이라 부르기도 하며, 이렇게 만들어진 벡터를 밀집 벡터라고 함.
- 분산 표현 방식의 장점
1) 임베딩 벡터의 차원을 데이터 손실을 최소화하면서 압축할 수 있음.
2) 임베딩 벡터에 단어의 의미, 주변 단어 간의 관계 등 많은 정보가 내포되어 있어 일반화 능력이 뛰어남. 벡터 공간 상에서 유사한 의미를 갖는 단어들은 비슷한 위치에 분포되어 있음. (예: '남자'와 '남성'의 단어 위치가 매우 가까움)
4.2.3 Word2Vec
- 신경망 기반 단어 임베딩의 대표적인 방법
- 2013년 구글에서 발표
- 기존 신경망 기반의 단어 임베딩 모델에 비해 구조상 차이는 크게 없지만 계산량을 획기적으로 줄여 빠른 학습을 가능하게 함
- CBOW(continous bag-of-words)와 skip-gram 두 가지 모델로 제안됨
- CBOW 모델: 맥락(context word)이라 표현되는 주변 단어들을 이용해 타깃 단어를 예측하는 신경망 모델. 학습 속도가 빠름.
- skip-gram 모델: 하나의 타깃 단어를 이용해 주변 단어들을 예측하는 신경망 모델. CBOW 모델에 비해 예측해야 하는 맥락이 많기 때문에 단어 분산 표현력이 우수해 임베딩 품질이 우수.
- window: 앞위로 몇 개의 단어까지 확인할 지 결정하는 범위. 예를 들어 윈도우 크기를 2로 한 경우 타깃 단어의 앞뒤 단어 2개까지 모델 학습을 위해 사용됨.
- 의미상 비슷한 단어들을 비슷한 벡터 공간에 위치시킴. 벡터 특성상 단어들이 의미에 따라 방향성을 갖게 됨. 임베딩된 벡터들 간 연산이 가능. (예: '남자'와 '여자' 사이의 거리 = '왕'과 '여왕' 사이의 거리)
예제 실행 파일
https://colab.research.google.com/drive/1Lztaabf8bPPhqg93mkB7QCDgPsh7hSCp?usp=sharing
*Word2Vec에 대한 더 자세한 설명은
https://wikidocs.net/22660
'NLP' 카테고리의 다른 글
Transformer to T5) conclusion 요약 (0) | 2022.07.04 |
---|---|
파이썬 텍스트 파일 다루기 (0) | 2022.03.21 |