본문 바로가기
Study/NLP

Stanford CS224n - Lecture 2 Word Vectors and Word Senses

by GodKim 2021. 7. 29.

이 글은 https://youtu.be/kEMJRjEdNzM 강의를 듣고 제가 더 편하게 이해하기 위해 정리한 글입니다. 혹시 제가 잘못 이해한 부분이 있다면 댓글로 친절히 알려주시면 감사하겠습니다!


1. Word Vectors

 저번 강의에 이어 optimization에 관한 이야기 진행되었다. Gradient Descent 방법으로 J(θ)를 줄이는 것이 목표였지만, J(θ)는 코퍼스 전체에 대한 함수이기에 계산량이 너무 크다는 단점이 있다.

  => because, 손실함수 계산시에 전체 train set를 이용함

 또한, 한 번 파라미터를 업데이트하는데 오랜 시간이 소요된다는 단점도 있다.

1.1. Stochastic Gradient Descent(SGD)

 이를 보안하기 위해 등장한 것이 SGD이다. 손실함수 계산시에 전체 train set를 이용하는 것이 아니라 일부 데이터만 샘플링하여 계산하는 방법이다. 이때, 샘플링된 window만 업데이트를 진행하기에 모든 단어가 아닌 특정 단어의 vector만 업데이트되는 특징이있다.

 이에 따른 장점으로는 계산량이 적기에 학습이 빠르고 local minimum에 빠질확률이 낮다. 하지만 전체적인 성능은 Adam과 같은 다른 opimizer에 비해 안좋다. 요컨대, SGD는 우리가 가진 데이터가 sparse하기 때문에 계산의 효율성의 문제가 발생하는 것이다. 실제로 가진 단어는 2m+1인 것에 비해 컴퓨터는 2dV의 matrix를 주고 받아야하기 때문이다. (이해 X....) 

1.2. Negative Sampling

 Word2Vec에서는 효율성을 높이기 위해 SGD 이외에 Negative Sampling이라는 기법을 사용한다. Negative Sampling은 중심단어와 주변단어 쌍의 선형회귀를 학습한 후 예측 결과가 정답이 아닌 쌍에 대해 적은 확률을 부여한다.

 Word2Vec은 출력층 값에 Softmax 함수르 적용해 확률로 변환하는 구조를 지니고있다. 이러한 구조는 계산량이 많다는 단점을 지니고있다. 따라서 계산량을 줄이기 위해 확률을 구할 때 모든 단어를 대상으로 구하지 않고 일부 단어만 추출해서 계산을 한다. 이것이 Negative Sampling이다. 진행 방식은 아래와 같다.

  1. 설정한 윈도우 내에서 등장하지 않은 단어 5 ~ 20개 정도 추출
  2. 윈도우 내의 정답단어와 합쳐서 softmax 확률을 구하기
  3. 샘플링된 단어 대상으로만 파라미터 업데이트 진행

2. GloVe Model

 Skip-gram은 아무리 window size를 늘려도 전체 단어의 동반 출현빈도수(global co-occurrence statistics)는 구하지 못한다. 따라서 이를 구하기 위한 방식이 count-based matrix이다. 하지만 이런 matrix는 문서 전체 단어에 대해 구해지는 것이기에 차원이 너무 커서 차원을 축소해 사용한다.

 Window 단위의 경우 Word2Vec과 유사하다. 해당 단위는 POS(Part of Speech)나 의미론적 요소, 문법 관계를 파악할 수 있다. 반면에, 문서 단위의 경우에는 전체적인 통계정보를 내는데 유리하며 LSA(Latent Semantic Analysis)와 연관된다.

 하지만, count-based matrix에 기반한 Co-occurrence Vectors는 단어 집합의 크기가 커지면 차원이 방대해진다는 단점이 존재한다. 이는 저장공간과 직결되는 문제이며, sparsity 문제 또한 존재한다. 따라서 차원을 낮출 필요가 존재하며 이때 사용되는 것이 SVD(Singular Value Decomposition; 특이값분해)이다.

2.1. SVD

SVD 수식

  • U와 V에 속한 벡터는 모두 특이벡터이다.
  • 모든 벡터는 서로 직교한다.
  • SVD를 Word2Vec에 적용하면 X(co-occurrence matrix)를 \( U∑V^T \) 로 factorize하면된다.
    • 이때 U와 V는 orthonormal(정규직교)한다는 특징을 지닌다.

GloVe Model은 global co-occurrence statistics를 포함한 direct prediction word embedding이다. 즉, 전체 통계 정보와 skip-gram과 같은 예측모델이 공존하는 것이다. 학습 순서는 다음과 같다.

  1. 전체 학습데이터로부터 co-occurrence matrix X를 생성
    1. \( X_{ij} \)는 중심단어 i에 대한 주변단어 j의 출현빈도이다.
    2. \( X_i \)는 전체 학습데이터에 대한 중심단어 i의 출현빈도이다.
  2. 손실함수 J를 정의
  3. forward와 backward를 연산 후 Gradient Descent로 업데이트

3. Word Embedding Evaluation

 3.1. Intrinsic(내적)

   Word embedding만 사용해 단어간 유사도를 통해 평가를 진행한다. 이때, 유사도 평가는 벡터간 거리 계산이 가능한 코사인 유사도나 유클리디안 거리를 활용해 계산을 진행한다. 혹은 사람이 직접 평가 데이터를 만들어 단어 사이의 거리를 계산하여 점수를 부여하는 방식으로 평가를 진행한다. 그렇다면 내적 평가의 거리 계산은 어떻게 진행되는 것일까?

  • man : woman = king : ???(queen)
    • 단어의 동반 출현 빈도를 기반으로 의미와 문법정보를 상대적으로 학습한다.
      • 예를 보면, king은 비슷한 문장에서 he, man 등으로 대체가 가능하다. (He is the king)
      • 비슷한 문맥으로 queen은 she나 woman 등으로 대체가 가능한 것에서 파악할 수 있다. (She is the queen)
    • 이를 기반으로 벡터 공간에 투영하면 비슷한 의미 혹은 문법 정보를 지닌 단어들은 비슷한 형태의 벡터(방향 및 크기)를 지닌다.
    • 하지만, 단어는 의미와 1대1 대응하지 않는다는 것이 문제이다(중의성).

 중의성을 해결하기 위해선 clustering을 통해 같은 단어더라도 의미별로 구분을 하여(Jaguar_1, Jaguar_2와 같이 구분  후) 재학습을 진행하는 방식을 제시한 논문들이 있다. 

3.2. Extrinsic(외적)

  내부가 아닌 외부, 즉, 실제 문제에 직접 적용해서 성능을 평가하는 방식이다. 개체명 인식기와 같은 모델에 직접 embedding을 적용하여 성능을 평가하는 것이다.

 


이유는 모르겠지만 이번 강의는 좀 많이 헤맸다. 초반에 저번 강의랑 이어지는 부분을 캐치하지 못하니까 멘붕...집중도 안돼... 그래서 https://eda-ai-lab.tistory.com/122 이 블로그의 거대한 도움을 받아서 정리를 진행했다.... 감사함다...

반응형

댓글