dukim's blog

[WK06-Day028][21.09.09.Thu] 팀 결성, BLEU Score 추가 학습, Beam Search HF 구현체 뜯기 본문

Boostcamp AI Tech 2th

[WK06-Day028][21.09.09.Thu] 팀 결성, BLEU Score 추가 학습, Beam Search HF 구현체 뜯기

eliza.dukim 2021. 9. 12. 20:37

Intro

  • 수요일 저녁 팀원을 찾습니다 뜨고 나서 만 하루 정도만에 팀 결성을 완료
  • 오늘 피어세션은 BLEU 스코어와 Beam Search에 대해 애매했던 부분을 바로 잡을 수 있었던 시간이었다.
  • 강의 수강은 이미 마쳤고, 오늘 Seq2Seq과 Attention에 대한 발표를 준비하면서 강의 수강 시간을 보낸 뒤, 피어세션 시간에 학습 내용을 공유하였다.

학습 내용

  • 강의 수강 완료로 생략

피어세션

블로그 추천

BLEU Score에 대한 질문 답변

beam search에서 중간에 토큰을 만나 종료된 hypothesis가 있을 경우, 나머지 beam search 과정에서는 계속 $k-1$개의 후보를 보는가?

강의에는 없었던 개념 Clipping

  • BLEU에서 1-gram으로 precision을 구할 때 모델이 예측된 단어들에서 동일 단어를 중복되어 있는 경우, 정답 문장 내에 포함된 해당 단어의 최대 갯수까지만 카운트한다(자세한 내용은 김동화님의 BLEU Score 포스팅 참고)

ROUGE(Recall-Oriented Understudy for Gisting Evaluation)

  • 강의 초반에 BLEU 설명 전에 제시된 Precision과 Recall 만을 이용한 평가방법으로 Chin-Yew Lin에 의해 제안된 summarization task의 성능 평가 지표
  • 강의에서 소개된 기본 개념 외에도 ROUGE-N, ROUGE-L, ROUGE-S 등 다른 지표들도 존재
  • 고현웅님 블로그, 예시를 통한 ROUGE 성능 지표의 이해

Further Question) BLEU score가 번역 문장 평가에 있어서 갖는 단점은 무엇이 있을까요?

  • Human Evaluation과 다르다는 점
    • 사람은 n-gram을 카운트해서 번역이 잘 되었음을 평가하지 않는다.
    • 다른 의미적인 표현이 있을 수 있다.(의미론적 문장 유사관계)
    • 낮은 BLEU로 나타난 문장들이 더 인간적인 경우가 많았다.
  • BLEU Score를 개선하는 더 나은 평가 방법에 대한 연구
    • BLEURT : 예측 문장의 벡터와 타겟 문장의 벡터의 유사도를 이용해 생성된 문장의 품질을 평가하는 방법(참고)
    • BERTScore : LM을 이용한 평가 방법

Beam Search hugging face 구현체 작동 과정 확인하기

  • 진명훈님께서 라이브러리를 뜯어보시면서 파악한 내용으로 같이 뜯어보길 권장
  • modeling_utils.pyPreTrainModel 클래스에서 GenerationMixin 클래스를 상속 받는데, 이 클래스가 문장 생성과 관련된 기능이 담긴 클래스
  • 해당 클래스는 generation_utils.py에 위치하여 greedy search, sampling, beam search, beam sampling, grouping 등 생성과 관련된 옵션 존재
  • 디버깅 툴에서 generation_utils.pygenerate 메서드에 중단점 걸어두고 실행시켜 각 과정 확인하기

학습 회고

  • 생성과 관련된 지표는 아직도 정리가 덜 되었다. 생성 모델의 평가지표에 대한 것들을 정리할 필요가 있다.
Comments