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. Beam Search
  • 1.1. Greedy Decoding
  • 1.2. Beam Search
  • 1.3. Length Penalty
  • 2. BLEU (Bilingual Evaluation Understudy) Score
  • 2.1. Precision and Recall
  • 2.2. BLEU
  • Reference

Was this helpful?

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

(06강) Beam Search and BLEU score

Previous(05강) Sequence to Sequence with AttentionNext(07-08강) Transformer

Last updated 3 years ago

Was this helpful?

문장을 Decoding 하는데에 사용되는 대표적인 알고리즘 Beam Search에 대한 학습 번역된 문장의 평가를 위한 BLEU score에 대한 소개

1. Beam Search

1.1. Greedy Decoding

기본적인 Sequence to Sequence 모델에서의 디코딩 과정이다. Softmax를 통과하여 나온 가장 높은 확률값을 가지는 값을 예측값으로 선정하는 방법이다.

1.2. Beam Search

Greedy Decoding의 경우 [0.41, 0.39, 0.1, 0.1] 와 같이 확률 값이 나온 경우 39%의 예측값을 그냥 포기할 것이 아니라 고려해 주는 것이 좋은 디코딩 방법이 될 것이다에서 생긴 방법이다.

  • 변수 K (Beam Size)를 선정한다. (후보로 선택할 갯수)

score(y1,...,yt)=logPLM(y1,...,yt∣x)=∑i=1tlogPLM(yi∣yi,...,yi−1,x)score(y_1, ..., y_t) = log{P_{LM}(y_1, ..., y_t \mid x)} = \sum_{i=1}^{t}{logP_{LM}(y_i \mid y_i, ..., y_{i-1},x)}score(y1​,...,yt​)=logPLM​(y1​,...,yt​∣x)=∑i=1t​logPLM​(yi​∣yi​,...,yi−1​,x)

  • Normalize by length

    score(y1,...,yt)=1t∑i=1tlogPLM(yi∣yi,...,yi−1,x)score(y_1, ..., y_t) =\frac{1}{t}\sum_{i=1}^{t}{logP_{LM}(y_i \mid y_i, ..., y_{i-1},x)}score(y1​,...,yt​)=t1​∑i=1t​logPLM​(yi​∣yi​,...,yi−1​,x)

  • 위와 같이 확률의 높은 순으로 K개씩 노드를 살려 다음 단어 예측을 진행한다.

  • <eos>를 만난 Beam이 K개가 될 때까지 진행하고, 만들어진 K개의 후보중에 가장 높은 누적 확률을 가진 Beam을 선택하게 된다.

1.3. Length Penalty

확률의 범위는 0~1 사이의 값이다. 이는 누적하여 곱할 수록 0에 수렴하게 된다. 즉 Beam의 길이가 길수록 누적 활률의 값이 작아지게 되는데 이런점을 해소하기 위해 Length Penalty 개념이 생겼다.

s(Y,X)=log(P(Y∣X))lp(Y)+cp(X;Y)lp(Y)=(minlength+∣Y∣)α(minlength+1)αcp(X;Y)=β⋅∑i=1∣X∣log(min(∑j=1∣Y∣pi,j,1.0))s(Y, X) = \frac{log(P(Y \mid X))}{lp(Y)} + cp(X;Y) \\ lp(Y) = \frac{(minlength+\left | Y\right |)^\alpha}{(minlength+1)^\alpha} \\ cp(X;Y) = \beta \cdot \sum_{i=1}^{\left | X \right |}{log(min(\sum_{j=1}^{\left | Y \right |}{p_{i,j}, 1.0}))} s(Y,X)=lp(Y)log(P(Y∣X))​+cp(X;Y)lp(Y)=(minlength+1)α(minlength+∣Y∣)α​cp(X;Y)=β⋅∑i=1∣X∣​log(min(∑j=1∣Y∣​pi,j​,1.0))

  • 보통 α\alphaα값은 1.2 정도를 사용한다.

def _get_length_penelty(self, length, alpha=1.2, min_length=5):
    """
    Calculate length-penalty.
    because shorter sentence usually have bigger probability.
    using alpha = 1.2, min_length = 5 usually.
    """
    return ((min_length + length) / (min_length + 1)) ** alpha
    
    
new_prob = prob / _get_length_penelty(length) # new prob = prob ÷ length penalty​

2. BLEU (Bilingual Evaluation Understudy) Score

BLEU는 기계번역 결과와 사람이 직접 번역한 결과가 얼마나 유사한지 비교하여 번역에 대한 성능을 측정하는 방법이다. 측정 기준은 n-gram에 기반한다.

2.1. Precision and Recall

모델의 성능, 정확도를 판별하기 위해 분류 정확도를 계산한다. Sequence Data의 경우 단어의 일치여부와 위치까지 고려하여야 한다. 예를 들어, I love you / Oh, I love you 라는 문장이 있다면 위치가 일치하지 않아 유사도가 0이 될 것이다. 그러므로 문장의 유사도를 판별하기 위해서는 다른 측정방법이 필요할 것이다.

Reference : Half of my heart is in Havana ooh na na Predicted : Half as my heart is in Obama ooh na

precision=numberOfCorrectWordslengthOfPrediction=79=78precision = \frac{numberOfCorrectWords}{lengthOfPrediction} = \frac{7}{9} = 78%precision=lengthOfPredictionnumberOfCorrectWords​=97​=78

recall=numberOfCorrectWordslengthOfReference=710=70recall = \frac{numberOfCorrectWords}{lengthOfReference} = \frac{7}{10} = 70%recall=lengthOfReferencenumberOfCorrectWords​=107​=70

Fmeasure=precision×recall12(precision+recall)=0.78×0.70.5×(0.78+0.7)=73.78Fmeasure = \frac{precision \times recall}{\frac{1}{2}(precision + recall)} = \frac{0.78 \times 0.7}{0.5 \times (0.78 + 0.7)} = 73.78%Fmeasure=21​(precision+recall)precision×recall​=0.5×(0.78+0.7)0.78×0.7​=73.78 (조화평균)

위 계산법에 문제는 문장의 순서를 고려하지 않았다는 점이다. i go home 과 home i go 를 모두 일치한다고 보기때문이다. 이러한 이슈를 보완하기 위해 BLEU 방법이 고안되었다.

2.2. BLEU

단어의 일치정도 뿐만이 아니라 N-gram을 활용하여 단어 묶음단위를 계산하게 된다.

  • N-gram overlap between machine translation output and reference sentence

  • Compute precision for n-grams of size one to four

  • Add brevity penalty (for too short translations)

BLEU=min(1,lengthOfReferencelengthOfPrediction)(∏i=14precisioni)14BLEU = min(1, \frac{lengthOfReference}{lengthOfPrediction})(\prod_{i=1}^{4}precision_i)^{\frac{1}{4}}BLEU=min(1,lengthOfPredictionlengthOfReference​)(∏i=14​precisioni​)41​

  • Typically computed over the entire corpus, not on single sentences

Reference

Logo[Sooftware 머신러닝] Beam Search (빔서치)네이버 블로그 | Sooftware