계속지나가기
코딩스뮤
계속지나가기
전체 방문자
오늘
어제
  • 코딩스뮤:)
    • Algorithm
      • 백준 문제풀이
      • 프로그래머스 문제풀이
      • 알고리즘 이론
      • 자료구조
      • SW Expert Academy
    • 인공지능(AI)
      • LLMs
      • 자연어처리(NLP)
      • 컴퓨터비전(CV)
      • 딥러닝(DL)
      • 머신러닝(ML)
      • 인공지능기초수학
      • 선형대수학
    • 컴퓨터 세팅
    • Computer Science
      • 유닉스프로그래밍
      • 프로그래밍언어론
      • 디자인패턴
      • 클린코드
      • SW 영어
      • 리눅스
      • 논리회로
    • Server
      • Docker

블로그 메뉴

  • 홈
  • Who Am I(CV)
  • 태그

공지사항

인기 글

태그

  • ML
  • 경사하강법
  • 최대유량
  • 선형회귀
  • 패턴인식
  • MaximumFlow
  • SIFT
  • 비지도학습
  • machinelearning
  • 머신러닝
  • ComputerVision
  • networkflow
  • NLP
  • DIP
  • DigitalImageProcessing
  • 비용함수
  • 결정경계
  • 군집화
  • 파이썬 클린코드
  • 컴퓨터비전
  • 손실함수
  • f1-score
  • 언어모델
  • 지도학습
  • 에지검출
  • LM
  • 네트워크플로우
  • 기계학습
  • 알고리즘
  • 디지털이미지처리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
계속지나가기

코딩스뮤

[NLP] 워드투벡터(Word2Vec)
인공지능(AI)/자연어처리(NLP)

[NLP] 워드투벡터(Word2Vec)

2021. 10. 13. 18:44
반응형

Word2Vec Model


Word2Vec는 단어 간 유사도를 반영할 수 있도록 단어의 의미를 벡터화할 수 있는 방법이다. Word2Vec의 주요 아이디어는 "비슷한 분포를 가진 단어라면 비슷한 의미를 가질 것"이다 즉, 자주 같이 등장할수록 두 단어는 비슷한 의미를 가짐을 의미한다.

Word2Vec은 Input, Hidden, Output Layer 3개의 층으로만 이루어져 학습이 빠르고 많은 단어 뭉치를 학습할 수 있어 성능이 좋다.

 

Word2Vec 모델은 Continous Bag of Words(CBoW)와 Skip-Gram 두 가지 방식이 있다

Tomas Mikolov의 Efficient Estimation of Word Representations in Vector Space 중 발췌

 

 

Continous Bag of Words(CBoW)

  • CBoW란? 주변에 있는 단어들을 가지고 중간에 있는 단어들을 예측하는 방법
  • 즉, "The fat cat sat on the mat"이라는 문장이 있을 때 sat을 예측하는 것
    • 즉 문장의 n개의 토큰이 있을 때 예측대상의 단어 인덱스는 int(n/2)이며 이를 중심 단어(center word)라고 함
    • 예측에 사용되는 단어들을 주변 단어(context word)라고 함
    • 중심단어를 예측하기 위해서 주변 단어의 수, 즉 앞 뒤로 몇 개의 단어를 볼지 범위를 정하게 되는데, 이 범위를 윈도우(window)라한다.
      • 즉, window=k일 때, 예측에 사용되는 주변단어의 개수는 2k개이다
  • 아래는 "The fat cat sat on the mat" 문장에서 윈도우의 크기를 2로 설정했을 때 CBoW가 학습되는 과정이다
    • CBoW의 인공신경망을 간단히 도식화한 모습
      • Input layer : fat, cat, on, the 주변단어가 one-hot vector로 input
      • Output layer: sat 중심단어가 one-hot vector로 output
  • 좀 더 확대하여, 동작 메커니즘을 상세히 알아보도록 하자
    • cat,fat의 one-hot vector의 크기가 V(그림에서 V=6), 투사층의 크기는 M(그림에서 M=5)이다
      • 투사층의 크기 M은 임베딩하고 난 벡터의 차원 즉, CBoW를 수행하고 나서 얻는 임베딩 벡터 차원에 해당한다
    • 입력층과 투사층 사이의 가중치인 W는 V x M 행렬, 투사층과 출력층 사이의 가중치 W' 는 M x V 행렬이다
      • 주의할 점은 W와 W'은 동일한 행렬을 전치한 것이 아닌, 서로 다른 행렬이다
      • W, W'는 훈련 전 굉장히 작은 랜덤 값을 가지게 되며 CBoW는 주변 단어로 중심단어를 더 정확히 맞추기 위해 계속해서 W, W'를 학습해가는 구조이다
    • 입력 벡터와 가중치W가 곱해지는 과정을 자세히 보자
      • [3] -> [2] / [7] -> [6] 로 수정
         
      • 입력 벡터는 one-hot vector이므로, 이를 가중치 W와 곱하면, 결국 W 행렬의 i번 째 행을 그대로 읽어오는 것과 동일하다
      • 이 작업을 룩업 테이블(lookup table)이라고 부른다
  • 앞서 CBoW의 목적은 W와 W'를 잘 훈련시키는 것이라고 했는데, 그 이유가 여기서 lookup해온 W의 각 행 벡터(그림에서 V_cat)가 Word2Vec을 수행한 후의 각 단어의 M차원의 크기를 갖는 임베딩 벡터 들이기 때문이다
    • 그 결과 window의 크기가 n이라고 했을 때 2n개의 임베딩 벡터들이 생성되고, 이들은 투사층에서 만나 이 벡터들의 평균인 벡터를 구하게 된다
    • 임베딩 벡터를 v1, v2, .., vk 라 했을 때 평균 계산은 다음과 같다
    • 평균을 계산한 벡터가 hidden layer가 된다
  •  이렇게 구해진 평균 벡터는 두 번째 가중치 행렬 W'와 곱해지고, 곱셈의 결과로는 one-hot vector와 차원이 V로 동일한 벡터가 나오게 된다.
    • 이 벡터에 소프트맥스(Softmax) 함수를 취하게 되는데, 이는 0~1사이의 실수로 각 원소의 총 합은 1이 되는 상태로 바뀐다
    • SoftMax를 취하고 나온 벡터를 스코어 벡터(Score Vector)라고 한다
    • 스코어 벡터의 각 차원 안에서 값이 의미하는 것은 아래와 같다
      • 스코어 벡터를  ŷ , 우리가 실제로 값을 알고 있는 중심 단어의 one-hot vector를 y라고 하자
      • 벡터의 j번 째 인덱스가 가진 0~1 사이의 값은 j번째 단어가 중심 단어일 확률
    •  ŷ는 y에 가까워져야 한다. 즉, 두 벡터의 오차를 줄이기 위해 손실함수(loss function)로 cross entropy 함수를 사용한다
      • 결과적으로 ŷ가 y를 정확하게 예측한 경우 cross-entropy의 값은 0이 되고 위의 식을 최소하하는 방향으로 학습해야 한다
  • 마지막으로 역전파(Back Propagation)을 수행하면 W, W'가 학습되는데, 학습이 다 되었다면 M차원의 크기를 갖는 W의 행이나 W'의 열로부터 어떤 것을 임베딩 벡터로 사용할지 결정하면 된다
    • 때로는 W,W'의 평균치를 가지고 임베딩 벡터를 선택하기도 함

 

Skip Gram

CBoW와 반대로 중간에 있는 단어로 주변 단어들을 예측하는 방법으로 앞서 설명한 CBoW와 매커니즘 자체는 동일하다. 단 중심단어에서 주변 단어를 예측하므로 input에는 중심단어가 ouput은 주변단어가 된다. 또한, 중심단어에서 주변 단어를 예측하므로 투사층에서 벡터들의 평균을 구하는 과정은 없다. 여러 논문에서 성능 비교를 진행했을 때, 전반적으로 skip-gram이 CBoW보다 성능이 좋다고 알려져 있다

반응형

'인공지능(AI) > 자연어처리(NLP)' 카테고리의 다른 글

Prompt-Based Learning, 프롬프트 기반 학습  (0) 2022.08.08
[LM 평가지표] Perplexity, PPL  (0) 2022.02.04
[NLP] 단어 표현 방법(Word Representation)  (0) 2021.10.13
[NLP] 단어 표현 방법 : Bag-of-Word Model(Bow)  (0) 2021.10.13
[논문리뷰] Transformer(Attention is All you Need) 이해하기  (0) 2021.05.07
    '인공지능(AI)/자연어처리(NLP)' 카테고리의 다른 글
    • Prompt-Based Learning, 프롬프트 기반 학습
    • [LM 평가지표] Perplexity, PPL
    • [NLP] 단어 표현 방법(Word Representation)
    • [NLP] 단어 표현 방법 : Bag-of-Word Model(Bow)
    계속지나가기
    계속지나가기
    NLP Engineer

    티스토리툴바