-
ROUGE머신러닝 및 딥러닝 2021. 7. 16. 21:40
ROUGE가 요약 모델의 성능을 평가 하는 방법
- Recall-Oriented Understudy for Gisting Evaluation 의 준말
- 텍스트 요약, 기계번역 등 자연어 생성 모델의 성능 평가 지표
- 시스템 요약(모델 생성 요약):
- 참조 요약(Gold standard, 대개 사람이 직접 만든 요약):
- 만약 모델의 성능 평가를 위해 개별 단어 에만 집중한다면 모델이 생헝한 시스템요약과 사람이 만들어 놓은 참조 요약 간 겹치는 단어는 단 6개 뿐이다. 그러나 이 6이라는 숫자는 성능 지표(metric)로 바로 사용하기에 적합하지 않은 수이다. 따라서 정략적 지표로 사용할 수 있는 값을 얻기 위해 6이라는 숫자를 이용해 Recall 과 Precision 을 계산해야 한다.
ROUGE에서의 Precision과 Recall의 의미
- ROUGE에서 Precison 과 Recall 은 아주 단순한 방법을 통해 구할 수 있다. Recall 은 Gold standard(참조 요약본)를 구성하는 단어 중 몇개의 단어가 시스템 요약본의 단어들과 겹치는지를 보는 점수이다. unigram 을 하나의 단어로 사용한다면, ROUGE에서의 Recall 은 다음과 같이 계산될 수 있다.
- 이를 앞서 살펴본 예제로 생각해보면 Recall 의 점수는 다음과 같다.
- 만약 모델이 무척 긴 문장을 생성했다고 가정해보자. 그러면 정답 과 상관없더라도 정답 의 단어 대부분을 포함할 가능성이 커지기 때문이다.
- 이 점수는 정답 내 모든 unigram 이 모델이 생성한 시스템 요약본에 등장했다는 것을 의미한다. 언뜻보기에는 무척 좋은 점수처럼 느껴 질 수 있지만
- 이를 해결 하기위해 Precision을 계산할 필요가 있다. Precision은 Recall과 반대로 모델이 생성한 텍스트 와 정답과 겹치는 단어들이 얼마나 많이 존재하는지를 보고자 하는것이다.
- 위 예제에 대해 Precision을 계산하자면, Precision은 모델이 생성한 문장을 구성하는 7개 단어중 6개의 단어만 정답과 연관있는 단어로 보게 된다. 그리고 이에 따라 다음과 같은 점수를 가지게 된다.
다른 예시
the tiny little cat was found under the big funny bad
이제 Precision 의 점수는 다음과 같아진다.
그렇게 좋은 결과를 보이지 않는다. 만약 간결한 요약문을 생성해내야 하는 상황이라면 Precision 은 아주 좋은 성능 지표로 사용될 수 있다. 그러나 위의 예시의 경우, 모델이 생헝한 텍스트 가 문장 내에 불필요한 단어가 너무 많이 존재하기 때문에 좋은 점수를 받을 수 없게 된다.
따라서보다 정확한 모델의 성능평가를 위해선 Precision 과 Recall을 모두 계산한 후, F-Measure 를 측정하는것이 바람직하다.
F-Measure
- F-Measure는 precision과 recall의 조화평균이다. 이것이 가장 바람직하게 ROUGE 점수를 계산한것이라고 할 수 있겠다.
기타 ROUGE 지표들에 대한 간략한 설명
- ROUGE-N : unigram, bigram, trigram 등 문장간 중복되는 n-gram을 비교하는 지표
- ROUGE-L : LCS 기법을 이용해 최장 길이로 매칭되는 문자열을 측정한다. LCS의 장점으로는 ROUGE-2 와 같이 단어들의 연속적 매칭을 요구하지 않고, 어떻게든 문자열 내에서 발생하는 매칭을 측정하기 때문에 보다 유연한 성능 비교가 가능하다는 점이다.
- Reference : police killed the gunman.
- System-1 : police kill the gunman
- System-2 : the gunman kill police
- ROUGE-N : System-1 = System-2 ("police", "the gunman")
- ROUGE-L:
- System-1 = 3/4("police the gunman")
- System-2 = 2/4("the gunman")
- ROUGE-S : 특정 Window size 가 주어졌을 때, Window size 내에 위치하는 단어쌍들을 묶어 해당 단어쌍들이 얼마나 중복되게 나타나는 지를 측정한다. 때문에 해당 기법을 Skip-gram Co-occurrence 기법이라 부르기도 한다.
- 예를 들어, Skip-bigram 은 최대 2칸 내에 존재하는 단어들을 쌍으로 묶어, 해당 쌍들이 참조 문장과 생성 문장간 얼마나 중복되는게 나타나는지를 측정하는 것이다.
- e.g.) "cat in the hat" 이라는 문장이 있다고 해보자
- 해당 문장에서 발생할 수 있는 Skip-bigram 은 "cat in", "cat the", "cat hat", "in the", "in hat", "the hat" 이 된다.
결론
그래서 ROUGE가 도대체 뭔데?
- ROUGE는 위에 설명한 것이 다 ROUGE이다. 즉 ROUGE는 하나의 점수가 아니다. ROUGE-recall, ROUGE-precision, ROUGE-f1 등등 여러가지 ROUGE 점수가 있다. 이 중 적당한 것을 골라 사용하면 된다.
'머신러닝 및 딥러닝' 카테고리의 다른 글
클라우드 환경에서 딥러닝 모델을 띄울 때 주의해야 할점과 나의 환경 (0) 2021.08.31 BlenderBot 2.0 : An open source chatbot that builds long-term memory and searches the internet (0) 2021.07.19 서브워드 토크나이저 (0) 2021.01.23 Pytorch에서는 왜 항상 optimizer.zero_grad()를 해줄까? (0) 2021.01.17 Batch Normalization은 왜 사용하는 것일까? (0) 2021.01.17