개요
- 책을 보고 공부한 내용을 정리합니다.
딥러닝 텐서플로 교과서
- 저자 서지영님
- 길벗 출판사
코드 출처
https://github.com/gilbutITbook/080263
GitHub - gilbutITbook/080263
Contribute to gilbutITbook/080263 development by creating an account on GitHub.
github.com
10. 자연어 처리를 위한 임베딩
- 사람이 사용하는 언어(자연어)를 컴퓨터가 이해할 수 있는 언어(숫자) 형태인 벡터(vector)로 변환한 결과 혹은 과정
- 종류 : [ 희소 표현 기반 임베딩, 횟수 기반 임베딩, 예측 기반 임베딩, 횟수/예측 기반 임베딩]
10.1.1 희소 표현 기반 임베딩(spare representation)
- 대부분의 값이 0으로 채워져 있는 경우
- 대표적으로 원-핫 인코딩
원- 핫 인코딩
- 죽어진 텍스트를 숫자(벡터)로 변환
- 단어 N개를 각각 N차원의 벡터로 표현
단점
1. 원-핫 벡터들은 하나의 요소만 1 값을 갖고 나머지는 모두 0인 희소 벡터(sparse vector)를 갖는다
- 두 단어에 대한 벡터의 내적(inner product)을 구해 보면 0 값을 갖게 되므로 직교를 이룸
- 즉, 단어 끼리 관계성 없이 서로 독립적(independent)인 관계를 가짐
2. 차원의 저주(curse of dimensionality) 문제 발생
- 단어 하나 표현하는데 말뭉치에 있는 단어 수만큼 차원이 존재해 복잡함
10.1.2 횟수 기반 임베딩
- 단어가 출현한 빈도를 고려하는 방법
- 대표적으로 카운터 벡터와 TF-IDF
카운터 벡터
- 문서 집합에서 단어를 토큰으로 생성하고 각 단어의 출현 빈도수를 이용하여 인코딩
- 토크 나이징과 벡터화가 동시에 가능
- CountVectorizer() 사용 (사이킷런)
1. 문서를 토큰 리스트로 변환
2. 각 문서에서 토큰 출현 빈도 체크
3. 인코딩하고 벡터로 변환
TF-IDF (Term Frequency-Inverse Document Frequency)
- 정보 검색론(information Retrieval, IR)에서 가중치 구할 때 사용
- TF(Term Frequency)는 문서 내에서 특정 단어가 출현한 빈도
- IDF(Inverse Document Frequency, 역면서 빈도)를 이해하려면 DF(문서 빈도)을 알아야 함
- DF는 한 단어가 전체 문서에서 얼마나 공통적으로 많이 등장하는지를 나타낸 값
- 특정 단어가 모든 문서에 등장하는 일반적인 단어라면, TF-IDF 가중치를 낮추어 줄 필요가 있음
- 따라서 DF 값이 클수록 TF_IDF의 가중치 값을 낮추기 위해 DF값에 역수를 취하는데 이 값이 IDF
- 특정 단어가 발생하는 빈도가 0이라면 분모가 0이 되는데 이를 방지하고자 분모에 1을 더해주는 것을 스무딩이라고 함
10.1.3 예측 기반 임베딩
- 어떤 단어가 나올지를 예측하면서 단어를 벡터로 만드는 방식
- 대표적으로 Word2 Vec
워드 투 벡터
- 신경망 알고리즘
- 특정 단어의 동의어를 찾을 수 있음
- 과정
- 1. 일정한 크기의 윈도로 분할된 텍스트를 신경망 입력으로 사용
- 2. 모든 분할된 텍스트는 한 상의 대상 단어와 콘텍스트로 네트워크에 공급
CBOW (Continuous Bag Of Words)
- 단어를 여러 개 나열한 후 이와 관련된 단어를 추정하는 방식
SKIP-Gram
- - CBOW 방식과 반대로 특정한 단어에서 문맥이 될 수 있는 단어를 예측
패스트 텍스트(FastText)
- 워드 투 벡터의 단점을 보완하고자 페이스북에서 개발
- 기존 워드 투 벡터의 방식은 분산 표현을 이용하여 단어의 분산 분포가 유사한 단어들에 비슷한 벡터 값을 할당하여 표현
- 따라서 사전에 없는 단어에 대해서는 벡터 값을 얻을 수 없음
- 패스트 텍스트는 개발된 단어 표현 방법을 사용해 단점을 보안함
- 방법은 아래와 같음
1. 사전에 단어에 벡터 값을 부여하는 방법
- 각 단어를 n-gram으로 표현
- 예를 들어 n을 3으로 설정하면 아래와 같이 임베딩
- 학습이 완료된 후 데이터셋의 모든 단어를 n-gram에 대해 임베딩
- 따라서 사전에 없는 단어가 등장한다면 n-gram으로 분리된 부분 단어와 유사도 계산하여 의미 유추
2. 자주 사용되지 않는 단어에 학습 안정성을 확보하는 방법
- 워드 투 벡터는 단어의 출현 빈도가 적으면 임베딩의 정확도 낮음
- 패스트 텍스트는 등장 빈도수가 적더라도, n-gram으로 임베딩 하고 때문에 참고할 수 있는 경우의 수가 많음
10.1.4 횟수/예측 기반 임베딩
- 대표적으로 글로브가 있음
글로브 (GloVe, Global Vectors for Word Representation)
- 횟수 기반의 (LSA, Latent Semantic Analysis, 잠재 의미 분석)과 예측 기반의 워드 투 벡터 단점을 보완하기 위한 모델
- 단어에 대한 글로벌 동시 발생 확률 정보를 포함하는 단어 임베딩 방법
'Study > 딥러닝 텐서플로 교과서 - 길벗' 카테고리의 다른 글
[Book]딥러닝 텐서플로 교과서[END] (0) | 2022.01.28 |
---|---|
[Book]9. 자연어 처리 (0) | 2022.01.06 |
[Book]8. 성능 최적화 (0) | 2022.01.06 |
[Book]7. 시계열 분석 (0) | 2022.01.05 |
[Book]6. 합성곱 신경망 2 (0) | 2022.01.04 |