ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • NLP05. 워드 임베딩
    NLP 2021. 12. 15. 20:47

    NLP05. 워드 임베딩

    01. 벡터화

    02. 벡터화 실습 : 원-핫 인코딩 구현해보기

    03. 워드 임베딩

    04. Word2Vec

      (1) 분포 가설

      (2) CBoW

      (3) Skip-gram과 Negative Sampling

      (4) 영어 Word2Vec 실습과 OOV문제

    05. 임베딩 벡터의 시각화

    06. FastText

    07. GloVe

    =============================

     

    01. 벡터화

    [0] 용어 정리 및 준비사항

    - 벡터화(vectorization) : 기계가 자연어 처리를 원활히 수행할 수 있도록 전처리 과정에서 텍스트를 벡터로 변환하는 과정

    - BoW(Bag of Words) : 단어의 순서는 고려하지 않고, 단어의 등장 빈도만 고려해서 단어를 벡터화하는 방법. 내림차순 인덱스 부여

    - OOV(Out Of Vocabulary) : 단어장에 없는 단어에 대처할 수 없어 난감한 문제

    - DTM(문서 단어 행렬, Document-Term Matrix) : BoW를 사용하여 문서를 행으로, 단어를 열로 구성한 행렬.  문서 간 유사도를 비교하는 데 사용됨. 단어의 등장 빈도 반영됨

    - 희소벡터(sparse vector) : BoW 또는 DTM과 같이 고차원 행렬에서 대부분의 값이 0인 벡터. 메모리 과다 사용 및 연산량 급증의 문제 야기함.

    - 단어장(vocabulary) : DTM에서 중복을 배제한 단어들의 집합(set), 크기 V

    - TF-IDF(Term Frequency- Inverse Document Frequency) : 모든 문서에 등장하는 단어는 중요도가 떨어지고, 특정 문서에 특정 단어가 빈번히 등장하면 중요도가 높은 단어임.

    - One-hot encoding : 

    [2] Bag of Words/ DTM(Document Term Matrix)

    [3] TF-IDF

    [4] 원-핫 인코딩(one-hot encoding)

    ① 텍스트 데이터에서 단어장 작성

    ② 단어장의 단어들 고유 정수(인덱스) 부여(인덱스 부여 순서는 등장빈도의 내림차순)

    ③ 각 단어는 해당 인덱스 위치만 1이고 나머지는 0인 벡터 생성(one-hot vector, unit vector)

     

    02. 벡터화 실습 : 원-핫 인코딩 구현해보기

    [1] 벡터화 실습 프로세스

    (Step1) 패키지 설치

    (Step2) 전처리 이야기 

    (Step3) 토큰화 이야기

    (Step4) 단어자 만들기

    (Step5) 원-핫 벡터 만들기

     

    [2] 케라스를 통한 원-핫 인코딩(one-hot encoding)

     

    03. 워드 임베딩

    [1] 희소 벡터의 문제점 :

    (1) 자원의 저주(cusrse of dimensionality)

    (2) 벡터 간 유사도 없음(내적이 0, orthogonal=독립적)

    (3) 문제점 해결을 위한 제안

    - 희소벡터인 원-핫 벡터의 문제 해결을 위해

      단어장 크기 보다 작은 차원의 밀집 벡터를 학습 => 워드 임베딩

    - 임베딩 벡터(embedding vector) : 워드 임베딩를 위한 실수값을 가진 밀집벡터(dense vector)

    [2] 워드 임베딩(Word Embedding)

    ※ 원핫 벡터 vs 임베딩 벡터

    구분 원-핫 벡터 임베딩 벡터
    차원 고차원(단어장의 크기) 저차원
    다른 표현 희소 벡터의 일종 밀집 벡터의 일종
    표현 방법 수동 훈련데이터로부터 학습함
    값의 타입 1과 0 실수
    기반 이론 빈도 기반 분포가설/학습
    알고리즘 인덱스부여, 원-핫 인코딩 함수 적용 keras.Embedding, Word2Vec, GloVe, LSA, FastText

     

    04. Word2Vec

      (1) 배경 지식

    [1] 분포 가설

    - 언어학자 존 루퍼트 퍼스(John Rupert Firth)

      You shall know a word by the company it keeps
      (곁에 오는 단어들을 보면 그 단어를 알 수 있다)

     - 분포 가설 : 비슷한 문맥에서 같이 등장하는 경향이 있는 단어들은 비슷한 의미를 가진다.

    [2] Word2Vec 종류

    - CBoW : 주변 단어를 통해 중심 단어 예측

    - Skip-gram : 중심 단어를 통해 주변단어 예측

     

      (2) CBoW(Continuous Bag of Words)

    [1] 주요 용어

    - 중심단어 center word : 예측해야 할 단어

    - 주변단어(context word) : 예측에 사용되는 단어

    - 윈도우(window) : 중심단어를 예측하기 위해 앞/뒤로 사용될 주변단어 수m. 총 2m의 단어

    - 슬라이딩 윈도우 :  윈도우를 계속 움직여 주변단어와 중심단어를 바꿔가며 학습을 위한 뎅터 셋을 만드는 과정

    [슬라이딩 윈도우]

    - 룩업테이블(lookup table) : 원-핫 벡터와 가중치 행렬과의 곱은 가중치 행렬의 i위치에 있는 행을 그대로 가져오는 것과 동일함.

    - 투사층(projection layer) : Word2Vect에서의 은닉층을 기존 신경망의 은닉층과 구분하기 위한 명칭. 기존 신경망의 은닉층과 달리 활성화 함수가 존재하지 않고 단순히 가중행렬과의 곱셈만 수행하기 때문임.

    - 비지도학습(unsupervised learning) : 중심 단어와 주변단어로 feature변수와 label변수를 직접 만들어 학습을 함.

    - 셸로우 러닝(shallow learning) : 딥러닝은 여러 은닉층을 가지고 학습을 하는 반면, 셸로우 러닝은 1개 은닉층을 포함한 3개 층으로 구성하여 학습을 진행함.

     

    [2] 데이터 셋 : 윈도우 슬라이딩, (주변단어, 중심단어, 주변단어)

    [3] CBoW 작동 메커니즘

    - V : 단어장(Vocabulary)의 크기

    - N : 은닉층 노드 수(하이퍼파라미터)

     

    [4] 은닉층 연산

    [5] 은닉층에서 출력층으로 가는 과정과 출력층의 연산

    - 출력층 활성화 함수 : 소프트맥스 함수

    - loss함수 : cross entropy

    - 학습방향 : 출력층의 벡터를 중심 단어의 원-핫 벡터와의 손실을 최소화하도록 학습

    - 임베딩 벡터(선택) : ①W의 행벡터 또는 ②W'의 열벡터 또는 ③W와 W'의 평균치 

          = Wor2Vec representation vector

     

      (3) Skip-gram과 Negative Sampling

    [1] Skip-gram

    (1) 데이터셋 (중심 단어, 주변 단어)

    (2) 작동 메커니즘 : 학습 후 가중치 행렬 W의 행 또는 W'의 열로부터 임베딩 벡터 산출

     

     

    [2] 네거티브 샘플링(Negative Sampling)

    - 연산량을 줄이기 위해서 다중 분류 문제(소프트맥스 함수)를 이진 분류 문제(시그모이드 함수)로 바꿈

    - 무작위로 단어장에 있는 아무 단어를 가져와 target word로 하는 '거짓 데이터셋'을 만들고 0으로 레이블링 해준다.

    - 거짓 데이터셋을 만들기 때문에 이 방법을 negative sampling이라고 한다.

     

      (4) 영어 Word2Vec 실습과 OOV문제

    [1] 영어 Word2Vec 실습

    [2] Word2Vec의 OOV문제

     

     

    05. 임베딩 벡터의 시각화

    [1] 필요한 파일 만들기

    [2] 임베딩 프로젝터에 tsv파일 업로드하기

     

    06. FastText

    [1] FastText의 학습방법

    [2] OOV와 오타에 대한 대응

    [3] 한국어에서의 FastText

     

    07. GloVe

    [1] 잠재 의미 분석(LSA, Latent Semantic Analysis)

    [2] 윈도우 기반 동시 등장 행렬(Window based Co-occurrence Matrix)

    [3] 동시 등장 확률(Co-occurrence Probability)

    [4] GloVe의 손실 함수 설계하기

    [5] GloVe 실습

     

     

     

    'NLP' 카테고리의 다른 글

    [김성범]Data Augmentation  (0) 2022.01.21
    [Attention] 6. Self-Attention  (0) 2022.01.18
    NLP14 : BERT pretrained model 제작  (0) 2022.01.06
    NLP01. 텍스트 데이터 다루기  (0) 2021.12.11
    parsing과 parser  (0) 2021.12.09
Designed by Tistory.