(작성중)
0. 개념 정리
희소 표현(Sparse Representation)
앞서 원-핫 인코딩을 통해서 얻은 원-핫 벡터는 표현하고자 하는 단어의 인덱스의 값만 1이고, 나머지 인덱스에는 전부 0으로 표현되는 벡터 표현 방법이었습니다. 이와 같이 벡터 또는 행렬의 값이 대부분이 0으로 표현되는 방법을 희소 표현(sparse representation)이라고 합니다.
하지만 이러한 표현 방법은 각 단어 벡터간 유의미한 유사성을 표현할 수 없다는 단점이 있었고, 대안으로 단어의 의미를 다차원 공간에 벡터화하는 방법을 사용하는데 이러한 표현을 분산 표현(distributed representation) 이라고 합니다. 그리고 분산 표현을 이용하여 단어 간 의미적 유사성을 벡터화하는 작업을 워드 임베딩(embedding)이라 부르며 이렇게 표현된 벡터를 임베딩 벡터(embedding vector)라고 합니다.
분산 표현(Distributed Representation)
분산 표현(distributed representation) 방법은 기본적으로 분포 가설(distributional hypothesis)이라는 가정 하에 만들어진 표현 방법입니다. 이 가정은 '비슷한 문맥에서 등장하는 단어들은 비슷한 의미를 가진다' 라는 가정입니다. 강아지란 단어는 귀엽다, 예쁘다, 애교 등의 단어가 주로 함께 등장하는데 분포 가설에 따라서 해당 내용을 가진 텍스트의 단어들을 벡터화한다면 해당 단어 벡터들은 유사한 벡터값을 가집니다. 분산 표현은 분포 가설을 이용하여 텍스트를 학습하고, 단어의 의미를 벡터의 여러 차원에 분산하여 표현합니다.
이렇게 표현된 벡터들은 원-핫 벡터처럼 벡터의 차원이 단어 집합(vocabulary)의 크기일 필요가 없으므로, 벡터의 차원이 상대적으로 저차원으로 줄어듭니다. 예를 들어 갖고 있는 텍스트 데이터에 단어가 10,000개 있고 인덱스는 0부터 시작하며 강아지란 단어의 인덱스는 4였다면 강아지란 단어를 표현하는 원-핫 벡터는 다음과 같습니다.
- Ex) 강아지 = [ 0 0 0 0 4 0 0 0 0 0 0 0 ... 중략 ... 0]
1이란 값 뒤에 9,995개의 0의 값을 가지는 벡터가 됩니다. 하지만 Word2Vec으로 임베딩 된 벡터는 굳이 벡터 차원이 단어 집합의 크기가 될 필요가 없습니다. 강아지란 단어를 표현하기 위해 사용자가 설정한 차원의 수를 가지는 벡터가 되며 각 차원의 값은 실수값을 가집니다.
- Ex) 강아지 = [0.2 0.3 0.5 0.7 0.2 ... 중략 ... 0.2]
요약하면 희소 표현이 고차원에 각 차원이 분리(원핫벡터)된 표현 방법이었다면, 분산 표현은 저차원에 단어의 의미를 여러 차원에다가 분산하여 표현합니다. 이런 표현 방법을 사용하면 단어 벡터 간 유의미한 유사도를 계산할 수 있습니다. 이를 위한 대표적인 학습 방법이 Word2Vec입니다.
Hierarchical Softmax
이 트리 구조의 weight들을 학습하게 되며, 이진 분류이기 때문에 log2(단어 수) 만큼의 계산량이 나옵니다.
https://analysisbugs.tistory.com/184
[Text mining] 4. Word2vec (3) Hierarchical Softmax
안녕하세요. 이번 포스팅에서는 Skip-gram Word2vec의 계산 복잡성을 해결하기 위한 방법으로 Hierarchical Softmax에 대해 배워보도록 하겠습니다. Skip-gram Word2vec에서 하나의 중심단어의 embedding 시에..
analysisbugs.tistory.com
Corpus
언어학에서 코퍼스 또는 텍스트 코퍼스는 크고 구조화 된 텍스트 집합으로 구성된 언어 리소스
1. Introduction
- word vector에 실제 단어의 의미를 담아내고자 함
- 단어들의 거리 유사도를 아는 것에서 나아가, syntax, semantic 관점의 다양한 유사도를 알고자 함
- 원핫인코딩의 단점인 sparse vector(희소 벡터) 문제를 해결 -> 작은 차원의 분산된 word vecetor 생성
- sparse vector가 안좋은 이유 : 낭비되는 공간이 많음
- syntax : 문장 내 단어의 등장 위치가 비슷한 단어들의 벡터를 거리적으로 유사하게 만듦
- sementic
- 벡터 연산 수행
- 예시 : king - man + woman = queen
2. Model Architectures
* 계산 복잡도를 설명하기 위한 정의
- 훈련 복잡도 : E*T*Q
- E : 에폭
- T : 훈련 데이터 개수
- Q : 특정 모델에 맞게 정의된 임의의 값
Feedforward Neural Net Language Model(NNLM)
- 예문 : "what will the fat cat sit on"
- NNLM은 n-gram 언어 모델처럼 다음 단어를 예측할 때, 앞의 모든 단어를 참고하는 것이 아니라 정해진 개수의 단어만을 참고 -> 이 개수를 n이라고 하고 n=4라고 가정
- 이때, 언어 모델은 'what will the fat cat'라는 단어 시퀀스가 주어졌을 때, 다음 단어 sit을 예측하기 위해 앞의 4개 단어 'will the fat cat'까지만 참고하고 그 앞 단어인 what은 무시
- 이 범위를 윈도우(window)라고 하기도 함. 여기선 윈도우의 크기인 n은 4입니다.
- N : input word 개수(여기선 하이퍼파라미터 역할)
- V : vocabulary size
- D : word representation demension
- H : hidden layer size
- Input Layer : N*V(위 그림에서 input layer 아래의 각 사각형이 1*V임)
- Projection Layer : N*D
- Hidden Layer : Projection Layer와 D*H연산 후
- Output Later : 1*V
그래프 설명
- 이전의 단어들 중 N개의 word에 대한 one-hot-vector를 input으로 받음
- projection layer에서 V*D 가중치 행렬과 곱해짐 : word embedding vector 생성
- 구해진 projection layer에 D*H 가중치 행렬을 곱한 뒤 활성화 함수를 통과시켜 hidden layer 얻음 : 여러 word embedding vector를 하나의 벡터로 만듦
- hidden layer에서 softmax와 cross-entropy loss를 통해 output에 대한 원핫벡터 만듦
계산 복잡도
- Q = N*D(onehotvector에서 projection layer 만드는 연산) + N*D*H(projection layer에서 hidden layer 만드는 연산) + H*V(hidden layer에서 output 만드는 연산)
- 가장 부하가 큰 연산은 N*D*H
- hierarchical softmax 사용 시 $H*log_{2}V$
결과
- 개선 : 임베딩 벡터를 통해 단어 유사도 계산 가능해짐 -> 희소 문제 해결
- 한계 : 고정된 길이(n. 여기선 4)만을 참고할 수 있음. 이러한 한계를 극복한 모델이 RNNLM
RNNLM
- RNN 사용
- projection layer 제거
- 예측하려는 단어 이전의 모든 단어들에 대한 정보를 순환적으로 hidden layer에 담아 사용
계산 복잡도
- Q = H*H(projection layer에서 hidden layer 만드는 연산) + H*V(hidden layer에서 output 만드는 연산)
- D를 H와 동일하게 만들어서 D대신 H가 들어감
- hierarchical softmax 사용 시 $H×log_{2}V$
- 가장 부하가 큰 연산은 H*H
3. New Log-linear Models(Word2Vec)
1. computational complexity를 줄이고
2. distributed expression을 학습할 수 있는 모델 제안
▶ continuous bag-of-words model(CBOW)을 사용하는 단계와 continuous skip-gram model(Skip-gram)을 사용하는 단계의 두 가지가 있음
▶ CBOW은 주변에 있는 단어들을 입력으로 중간에 있는 단어들을 예측
▶ 반대로, Skip-Gram은 중간에 있는 단어들을 입력으로 주변 단어들을 예측
Continuous Bag-of-Words Model
출처: https://wikidocs.net/22660
- Word2Vec은 은닉층이 다수인 딥 러닝(deep learning) 모델이 아니라 은닉층이 1개인 얕은 신경망(shallow neural network)
- NNLM에서 hidden layer를 제거 -> Word2Vec의 은닉층은 일반적인 은닉층과는 달리 활성화 함수가 존재하지 않으며 projection layer이 존재
- NNLM에서는 이전 word들만을 사용해 다음 word를 예측했다면, CBOW에서는 양방향(이전/이후)의 word 각 N개 총 2N 개를 사용해 예측을 진행
- hierarichial softmax를 사용한다는 가정 하에 가장 연산량이 많이 소요되는 layer가 hidden layer였으므로 이를 제거해 전체 연산량을 줄임
- NNLM에서 hidden layer의 존재 의미는 여러 word embedding vector를 하나의 vector로 압축하는 것이었다면, CBOW에서는 이를 non-linear layer를 거치지 않고 단순하게 평균을 냄
- 따라서 CBOW의 projection layer는 word embedding vector(Wp에서의 row)들의 평균
computational complexity는 다음과 같다.
Continuous Skip-gram Model
출처: https://wikidocs.net/22660
- CBOW와 유사하지만 input/output이 서로 뒤바뀜
- 현재 word를 통해 이전, 이후의 word를 예측
- 여러 prediction을 수행하기 때문에 당연하게도 연산량은 CBOW에 비해 많음
- 하지만 skip-gram은 input word vector를 평균내지 않고 온전히 사용하기 때문에 등장 빈도가 낮은 word들에 대해 CBOW 대비 train 효과가 크다는 장점
- CBOW에서는 각 word vector들을 평균내서 사용하기 때문에 등장 빈도가 낮은 word들은 제대로 된 학습을 기대하기 힘듦
computational complexity는 다음과 같다.
새로운 variable C가 등장하는데 C는 predict할 word의 개수와 관련된 값이다. 구체적으로, C는 predict할 word와 현재 word의 maximum distance이다. [1,C)의 범위에서 random하게 value R을 뽑고, 현재 word 이전 R개, 이후 R개의 word에 대해서 predict를 수행한다. R의 기댓값은 $\frac{1+(C−1)}{2}=\frac{C}{2}$이고, predict 수행 횟수는 $2R=2×\frac{C}{2}=C$이므로 전체 computational complexity는 1회 수행할 때의 값에 C를 곱한 것이다.
참고
https://cpm0722.github.io/paper-review/efficient-estimation-of-word-representations-in-vector-space
[NLP 논문 리뷰] Efficient Estimation Of Word Representations In Vector Space (Word2Vec)
Paper Info
cpm0722.github.io
02) 워드투벡터(Word2Vec)
앞서 원-핫 벡터는 단어 벡터 간 유의미한 유사도를 계산할 수 없다는 단점이 있음을 언급한 적이 있습니다. 그래서 단어 벡터 간 유의미한 유사도를 반영할 수 있도록 단어의 ...
wikidocs.net
'AI > AITech 3기' 카테고리의 다른 글
[DL Basic] 2강 MLP (Multi-Layer Perceptron) (2) | 2022.02.10 |
---|---|
[DL Basic] 1강 Historical Review (2) | 2022.02.10 |
[학습 정리] 3주차 (0) | 2022.02.04 |
[Data Viz] 1-3강 Python과 Matplotlib (0) | 2022.02.03 |
[Data Viz] 1-2강 시각화의 요소 (0) | 2022.02.03 |