Word Embedding
- 텍스트를 구성하는 하나의 단어를 수치화하는 방법의 일종
- 단어를 vector로 표현
[아래는 참고 2, 3 링크에서 참고하여 필요한 내용을 적어 놓고 일부 수정한 것입니다.]
데이터 = 대상의 속성을 표현해 놓은 자료
- 속성들을 바탕으로 대상을 판단할 수 있다 (속성 → 대상 판단)
- 따라서 대상을 어떤 속성으로 표현하는지 매우 중요하다 (대상 속성 표현 중요)
- 이렇게 대상의 속성을 표현하는 방식 => Feature representation
Ex) if 텍스트
- 텍스트의 속성을 표현해 놓은 것 : 데이터
- 단어가 강아지라면 강아지 자체가 대상의 속성이 될 수 있다.
- 품사, 앞 단어 또는 문장에서 몇번째 단어인지, 단어가 긴지 짧은지 등이 중요할 수 있다.
- 이런 언어적 정보를 추출하여 이를 기반으로 표현하는 것이 언어의 feature representation
1. Sparse Representation
ex) 강아지 → [0 0 0 2 0 0 0 0 ........ .... 0]
- 강아지에 대한 vector를 sparse representation으로 위와 같이 표현할 수 있다.
- One-hot encoding 방식
- Sparse vector
"You" : 0
"are" : 1
"stupid" : 2
"You are stupid" 라는 문장을 만드려면 [1 1 1] 과 같이 vector 형태로 만들 수 있다.
"Would" : 0
"you" : 1
"do" : 2
"me" : 3
"a" : 4
"favor" : 5
"Would you do me a favor" 라는 문장을 만드려면 [1 1 1 1 1 1] 과 같이 vector 형태로 만들 수 있다.
"I": 0
"am": 1
"a": 2
"boy": 3
"girl": 4
참고 1 링크에 근거하여 만약 "I am a boy" 라는 문장을 만들고 싶으면 어떻게 할까?
그럼 [1 1 1 1 0]의 vector로 나타낼 수 있다.
네 번째 index인 girl은 사용되지 않기 때문이다.
Sparse representation 단점
a. 단어의 개수가 늘어나면 차원이 계속 늘어남
- 전체 단어의 개수가 10,000개면 ▶ vector 차원도 10,000
- 저장 공간 측면에서 매우 비효율적
b. 단어와 단어 간의 관계가 전혀 드러나지 않는다.
- 어떠한 단어끼리 유사한 의미를 갖고, 반대의 의미를 갖는지 등 단어와의 관계 반영 못함
- 이는 검색 시스템에서 단점으로 작용
(서울->맛집, 서울->여행 등으로 관계 있는 단어끼리 보여줘야 하는데 그러지 못함)
2. Dense Representation
- Sparse Representation과 반대
- Vector의 차원을 단어 집합의 크기로 상정하지 않음(▶속성을 독립적인 차원으로 나타내지 않음)
- 사용자가 설정한 값으로 모든 단어의 vector 표현의 차원으로 설정
- One-hot encoding이 아닌 실수값을 가짐
- 해당 속성을 n차원으로 표현할 것이면 그 속성을 n차원 vector에 대응시키는 것 ▶ Embedding
- 여러 속성들이 섞여있서 표현되었기 때문 각각의 차원이 어떤 의미를 갖는지는 알 수 없다.
- 대신 '사람'을 표현하는 vector와 '유인원'을 표현하는 vector가 얼마나 다른지는 vector간의 distance를 통해 알 수 있다.
- Dense vector
ex)
Sparse representation : 강아지 ▶ [0 0 0 2 0 0 0 0 ........ .... 0] ▶ 10,000 차원
Dense representation : 강아지 ▶ [0.8 1.3 3.0 0.8 1.9 3.8 1.2 0.2 ........ .... 4.0] ▶ 128 차원
3. Word Embedding
- 단어를 dense vector의 형태로 표현하는 방법을 word embedding.
- Dense vector(=embedding vector)
"I": (0.3, 0.2)
"am": (0.1, 0.8)
"a": (0.5, 0.6)
"boy": (0.2, 0.9)
"girl": (0.4, 0.7)
- 입력 x에 weight W가 곱해져 h 생성
- x가 one-hot-encoding 된 값이기 때문에 h vector는 W의 행 하나에 대응된다.
wi vector 값을 해당 단어에 대한 distributed representation, vector representation 혹은 word embedding 이라고 한다.
참고 1 : https://datascienceschool.net/view-notebook/6927b0906f884a67b0da9310d3a581ee/
'딥러닝관련 > 자연어처리' 카테고리의 다른 글
자연어 처리란 (0) | 2021.12.15 |
---|---|
Transformer Decoder : Linear & Softmax Layer (0) | 2021.11.16 |
Transformer Decoder : Encoder-Decoder Attention (0) | 2021.11.16 |
Word2Vec (0) | 2020.07.20 |
StackGAN 논문 리뷰(작성 중) (0) | 2020.07.16 |