TIL
  • Main
  • TIL : ML
    • AI News
      • AI-powered coding, free of charge with Colab
    • Paper
      • Retrieval-augmented generation for knowledge-intensive nlp tasks
        • reference 정리
      • Sequence to Sequence
    • Generative AI
      • LLM
        • 기본 개념
    • Boostcamp
      • Daily Report
        • 2021
          • 09
            • week4
            • week5
          • 10
            • week1
            • week2
            • week3
            • week4
          • 11
            • week1
            • week2
            • week3
            • week4
            • week5
          • 12
            • week1
            • week2
            • week3
      • Final Project
        • 프로젝트 기획
          • 🌟최종 프로젝트 기획
          • 최종 프로젝트 Version
          • 아이디어 수집
          • 욕설, 혐오발언 감지
          • 라이브 커머스 레포팅 프로젝트
        • 프로젝트 진행
          • week1
          • week2
          • week3
      • Competition
        • 1. [NLP] 문장 내 개체간 관계 추출
          • Day1 (9.27, 월)
          • Day2-3 (9.28~29, 화~수)
          • Day4 (9.30, 목)
          • Day5 (10.1, 금)
          • Day6~7 (10.2~3, 토~일)
          • Day8 (10.4, 월)
          • Day9 (10.5, 화)
          • Day10 (10.6, 수)
          • Day 11 (10.7 목)
        • 2. [NLP] MRC 프로젝트
          • Day1 (10.25, 월)
          • Day2 (10.26, 화)
          • Day3 (10.27, 수)
          • Day4-5 (10.28-29, 목-금)
          • Day6 (11.1, 월)
          • Day7 (11.2, 화)
          • Day8 (11.3, 수)
          • Day9 (11.4, 목)
        • 🔨3. [NLP] 데이터 제작
          • Day1
        • 🔨4. [공통] 모델 경량화
      • [U Stage] - DL basic
        • (01강) 딥러닝 기본 용어 설명 - Historical Review
        • (02강) 뉴럴 네트워크 - MLP (Multi-Layer Perceptron)
        • (03강) Optimization
        • 🔨(04강) Convolution은 무엇인가?
        • 🔨(05강) Modern CNN - 1x1 convolution의 중요성
        • 🔨(06강) Computer Vision Applications
        • (07강) Sequential Models - RNN
        • (08강) Sequential Models - Transformer
        • Page 2
      • [U Stage] - PyTorch
        • (01강) Introduction to PyTorch
        • (02강) PyTorch Basics
        • (03강) PyTorch 프로젝트 구조 이해하기
        • (04강) AutoGrad & Optimizer
        • (05강) Dataset & Dataloader
        • (06강) 모델 불러오기
        • (07강) Monitoring tools for PyTorch
        • (08강) Multi-GPU 학습
        • (09강) Hyperparameter Tuning
        • (10강) PyTorch Troubleshooting
      • [U Stage] - NLP
        • (01강) Introduction to NLP, Bag-of-Words
        • (02강) Word Embedding
        • (03강) Recurrent Neural Network and Language Modeling
        • (04강) LSTM and GRU
        • (05강) Sequence to Sequence with Attention
        • (06강) Beam Search and BLEU score
        • (07-08강) Transformer
        • (09강) Self-supervised Pre-training Models
      • [P Stage] - KLUE
        • (1강) 인공지능과 자연어 처리
        • (2강) 자연어의 전처리
        • (3강) BERT 언어모델 소개
        • (4강) 한국어 BERT 언어 모델 학습
        • (5강) BERT 기반 단일 문장 분류 모델 학습
        • (6강) BERT 기반 두 문장 관계 분류 모델 학습
        • (7강) BERT 언어모델 기반의 문장 토큰 분류
        • 오피스아워 (9.30, 목)
        • (8강) GPT 언어 모델
        • (9강) GPT 언어모델 기반의 자연어 생성
        • (10강) 최신 자연어처리 연구
      • [P Stage] - MRC
        • Before Study
        • (1강) MRC Intro & Python Basics
        • (2강) Extraction-based MRC
        • (3강) Generation-based MRC
        • (4강) Passage Retrieval - Sparse Embedding
        • (5강) Passage Retrieval - Dense Embedding
        • 오피스아워
        • (6강) Scaling up with FAISS
        • (7강) Linking MRC and Retrieval
        • (8강) Reducing Training Bias
        • (9강) Closed-book QA with T5
        • (10강) QA with Phrase Retrieval
        • 마스터클래스
      • [P Stage] - 데이터제작(NLP)
        • (1강) 데이터 제작의 A to Z
        • (2강) 자연어처리 데이터 기초
        • (3강) 자연어처리 데이터 소개 1
        • (4강) 자연어처리 데이터 소개 2
        • (5강) 원시 데이터의 수집과 가공
        • 오피스아워 (11.10, 수)
        • (6강) 데이터 구축 작업 설계
        • (7강) 데이터 구축 가이드라인 작성 기초
        • (8강) 관계 추출 과제의 이해
        • (9강) 관계 추출 관련 논문 읽기
        • (10강) 관계 추출 데이터 구축 실습
      • [P Stage] - 모델 최적화
        • (1강) 최적화 소개 및 강의 개요
        • (2강) 대회 및 데이터셋 소개
        • (3강) 작은 모델, 좋은 파라미터 찾기: AutoML 이론
        • 🔨(4강) 작은 모델, 좋은 파라미터 찾기: AutoML 실습
        • (5강) 작은 모델, 좋은 파라미터 찾기: Data Augmentation & AutoML 결과 분석
        • 🔨오피스아워 -Baseline 코드에 모듈 작성하기(신종선 멘토님)
      • [P Stage] - Product Serving
        • Part 1: Product Serving 개론
          • 1.1 강의 진행 방식
          • 1.2 MLOps 개론
          • 1.3 Model Serving
          • 1.4 머신러닝 프로젝트 라이프 사이클
        • Part 2: 프로토타입부터 점진적으로 개선하기
          • 2.1 프로토타이핑 - Notebook 베이스(Voila)
          • 2.2 프로토타이핑 - 웹 서비스 형태(Streamlit)
          • 2.3 Linux & Shell Command
          • 2.4 Cloud
          • 2.5 Github Action을 활용한 CI/CD
        • Part 3: 더 완성화된 제품으로
          • 3.1.1 FastAPI
          • 3.1.2 Fast API
          • 3.1.3 Fast API
          • 3.2 Docker
          • 3.3 Logging
          • 3.4 MLFlow
        • Part 4: 심화 소재
          • 4.1 BentoML
          • 4.2 Airflow
          • 4.3 머신러닝 디자인 패턴
          • 4.4 앞으로 더 공부하면 좋을 내용
      • 특강
        • (특강) 김상훈 - 캐글 그랜드마스터의 노하우 대방출
        • (특강) 이활석 - 서비스 향 AI 모델 개발하기
        • (특강) 구종만 - AI + ML과 Quant Trading
        • (특강) 문지형 - 내가 만든 AI 모델은 합법일까, 불법일까
        • (특강) 이준엽 - Full Stack ML Engineer
        • (특강) 박은정 - AI 시대의 커리어 빌딩
        • (특강) 오혜연 - AI Ethics
    • Competition
      • (DACON)한국어 문장 관계 분류 경진대회
        • Day1(2.14, 월)
        • Day2(2.15, 화)
        • Day3(2.16, 수)
        • Day4(2.17, 목)
      • 2021 인공지능 데이터 활용 경진대회
        • 역량평가
          • Day1 (9.28, 화)
          • Day2 (9.29, 수)
          • Day3 (9.30, 목)
        • 예선
          • Data 분석
          • NSML
          • What We Have Done?
    • ETC
      • 인터뷰 대비
        • Computer Science
        • ML/DL
      • Poetry로 dependency 관리
        • window에서 설치하기
      • code block
      • 공부할 것 임시보관
      • Transformer to T5
      • Hugging Face Tutorial
        • Ch1. Transformer models
        • Ch2. Using Transformers
        • Ch3. Fine-tuning a model with the Trainer API
      • KLUE
      • Pandas
  • TIL : Ops
    • AWS
      • SageMaker
  • TIL : Computer (CS)
    • Error
      • TextEncodeInput must be Union[TextInputSequence, Tuple[InputSequence, InputSequence]]
    • Algorithm
      • Theory
      • Programmers
        • 기능개발
    • ETC
      • Github 커밋 히스토리 삭제
Powered by GitBook
On this page
  • 1. Word Embedding
  • 1.1. Sparse Representation (희소 표현)
  • 1.2. Dense(Distributed) Representations (밀집 표)
  • 1.3. Word2Vec 🎇
  • 1.4. GloVe (Global Vectors for Word Representation)
  • 참고코드 Link
  • Reference

Was this helpful?

  1. TIL : ML
  2. Boostcamp
  3. [U Stage] - NLP

(02강) Word Embedding

One-hot Encoding 이외에 단어를 Embedding 할 수 있는 방법 중 Word2Vec과 GloVe에 대해 소개

1. Word Embedding

단어의 Vector화로 좌표공간에 표현하는 것. 연관성에 따라 유사한 좌표공간에 배치된다.

1.1. Sparse Representation (희소 표현)

  • One-Hot Encoding 을 사용한 방법

    • vocab : {"Jone", "really", "loves", "this", "movie", "Jane", "likes", "song"}

    • {[1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0], ..., [0, 0, 0, 0, 0, 0, 0, 1]}

1.2. Dense(Distributed) Representations (밀집 표)

각각의 속성이 독립적인 차원(One-Hot)으로 나타내지 않게 된다. 대신 우리가 정한 갯수의 차원으로 대상을 대응 시켜 표현하게 된다. 예를 들어 5차원으로 표현하기로 한다면,

  • vocab : {"Jone", "really", "loves", "this", "movie", "Jane", "likes", "song"}

  • {[0.37, -2.11, 2.7, -0.11, 0.65]..., }

위와 같이 표현할 수 있을 것이다. 하지만 위 데이터에서는 여러 속성이 섞여 한 차원을 이루기 때문에 각 차원의 값이 무슨 의미를 가지는 지는 알 수 없다.

Sparse Representation 보다 가지는 장점은 아래와 같다.

  • 고정된 차원으로 불필요한 메모리를 줄일 수 있다.

  • 더 큰 일반화(Generalization)을 가지고 있다. 가령 '강아지'와 '멍멍이'가 서로 비슷한 벡터로 표현되면 '강아지'에 대한 정보가 '멍멍이'에도 일반화 될 수 있다.

위와 같이 단어를 밀집 벡터의 형태로 표현하는 방법을 워드 임베딩 이라고 하며, 그 결과를 임베딩벡터라고도 한다. Word2Vec과 GloVe는 워드 임베딩 방법 중 하나이다.

1.3. Word2Vec 🎇

구글에서 개발한 Word2Vec은 분포 가설(Distributional Hypothesis)을 가정하에 표현한 분산 표현을 따른다. 예를 들어 '강아지'라는 단어가 '귀엽다', '예쁘다' 등의 단어와 자주 발생한다면 분포가설에 맞춰 벡터화 한 해당 단어들은 되면 유사한 값, 근접한 위치에 분포할 것이고 그 단어들은 의미적으로 유사한 단어가 된다는 뜻이다. (인접한 단어들 간에 의미가 비슷할 것이다.)

간단한 인공신경망 모형을 기반으로 학습데이터의 규모가 10억 단어 이상으로 커져도 요구되는 계산량을 낮은 수준으로 유지 할 수 있다는 큰 장점을 가지고 있다. 이는 병렬화(parallelization)를 통해 짧은 시간에 양질의 단어 벡터 표상을 얻을 수 있기 때문이다.

1.3.1. Working Step

  • Sentence : "I study math"

  • Vacabulary : {"I", "study", "math"}

  • Input : "study" [0, 1, 0]

  • Output : "math" [0, 0, 1]

  1. CBoW (Continuous Bag of Words) 주변에 있는 단어들로 중간에 있는 단어를 예측하는 방법

    • Window: 묶음 -> window size 3 ("I", "study") / ("study", "I"), ("study", "math") / ("math", "study")

  2. 예측 Task를 수행하는 2-Layer의 NN을 가지게 된다.

    • Input과 Output의 size 은 단어의 수와 동일하다 (여기서는 3개)

    • hidden layer의 node 수는 hyperparameter로써 word embedding을 수행하는 차원수와 동일하게 설정한다. (2로 세팅한다 해보자)

    • W1W_1W1​은 3차원의 Input을 받아서 2차원인 hidden layer로 보내기에 (3x2) Matrix가 되고, W2W_2W2​는 2차원의 hidden layer로 부터 3차원의 output을 구해야하므로 (2x3) Matrix가 된다. (실제 x와의 곱은 transpose 하여 곱해짐)

    • Softmax loss를 적용하여 W1,W2W1, W2W1,W2의 학습이 이루어 지게 된다.

    • Ground Truth (정답)에 해당하는 값은 inf, 아닌 값은 -inf 일 때, softmax의 결과가 ground truth의 결과와 가장 유사해 진다.

🎇 Skip-gram CBoW와 반대로 중심단어를 보고 어떤 주변 단어가 존재하는지 예측하는 모델이다. 모델의 구성 또한 CBoW의 input과 output이 반대로 된 구성을 가지고 있다.

1.3.2. Word2Vec 시각

wevi: word embedding visual inspector

  • 학습을 진행한 후에 보게 되면 Input의 juice가 drink의 output과 유사하게 나타남을 알 수 있고, 마찬가지로 drink에 속하는 milk의 input 또한 juice의 input과 유사함을 알 수 있다. 따라서 juice와 drink의 내적값이 최대가 될 것이다.

  • input vector와 output vector 중 어느것을 embedding vector로 사용해도 무관하나 보통 input vector를 embedding vector로 사용한다.

  • 유사한 값끼리 뭉쳐있음을 확인할 수 있다.

  • 한국-서울 을 통해 도쿄가 입력되었을때, 일본을 출력할 수 있는 것을 확인할 수 있다.

1.3.3. Application of Word2Vec

  • Word Similarity

  • Machine Translation

  • Part-of-speech tagging

  • Named entity recognition

  • Sentiment analysis

  • Clustering

  • Semantic lexicon building

등 다양한 Task에서 성능향상에 주된 역할을 하였다.

1.4. GloVe (Global Vectors for Word Representation)

  • 각 입력, 출력 단어 쌍들에 대해서 학습데이터에서 한 윈도우 내에서 몇 번 동시에 출현하였는지를 사전에 먼저 계산을 한다.

  • input word의 embedding vector ui u_i ui​와 output word의 embedding vector vj v_j vj​의 내적값에서 한 윈도우내에서 두단어가 동시에 몇번 등장했는지에 대한 값에 log를 취한 값을 뺀 값을 Loss Function으로 사용한다.

    • J(θ)=12∑i,j=1Wf(Pij)(uiTvj−logPij)2 J(\theta) = \frac{1}{2} \sum_{i, j = 1}^{W}{f(P_{ij})(u_i^Tv_j-log{P_{ij}})^2}J(θ)=21​∑i,j=1W​f(Pij​)(uiT​vj​−logPij​)2

  • 중복되는 계산을 줄여줄 수 있다는 장점을 가지고 있고, 보다 적은 데이터에 대해 나은 성능을 가질 수 있다.

참고코드 Link

Reference

Previous(01강) Introduction to NLP, Bag-of-WordsNext(03강) Recurrent Neural Network and Language Modeling

Last updated 3 years ago

Was this helpful?

wevi
Logo2_word2vec.ipynbGoogle Docs
http://www.goldenplanet.co.kr/blog/2021/05/10/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B3%B5%EB%B6%80-%ED%95%9C-%EA%B1%B8%EC%9D%8C-word2vec-%EC%9D%B4%EB%9E%80/