Text Generation Evaluation 02 - NLL(oracle)

 (negative log-likelihood with oracle)

  • 은 SeqGAN에서 소개가 되었다. (처음인지는 잘 모르겠지만, 애초에 SeqGAN이 의미있는 NTG 첫 논문이기는 함..)
  • 이는 true data로 평가를 하는 것은 아니고 임의로 만든 데이터로 평가를 한다는 것이다.
  • 왜냐하면 true data로 평가한다면, real senetence가 "나는 집에 가고 싶다"이고 generated sentence가 "나는 내 방에 가고 싶은 마음이 든다."라고 생각해보자.
  • 그렇다면 generated sentence는 잘 생성된 것인가? 사실 의미는 유사하지만 앞서 포스팅한 BLEU와 같은 score을 이용하면 상당히 낮다.
  • 지금까지도 generated sentence을 automatic evaluation 하는 데에는 이러한 어려운 점이 있겠지만, 은 이러한 문제점을 줄이고자 하는 것이다.
  • 과정을 한 번 살펴보자.
    • true data는 아니지만, 학습 데이터를 임의로 생성한다.
    • 여러 방법이 있을 수 있겠지만, SeqGAN에서는 랜덤 초기화를 한 RNNLM으로 무작위로 아무런 문장(실제로 문법도 틀리고 의미도 없는)을 만들어 낸다.
    • 이 중 일부분을 학습데이터와 평가 데이터로 나눈다.
    • 학습 데이터로 NLG 모델을 학습한다.
    • 학습된 NLG 모델에 평가 데이터를 집어넣어 문장을 생성한다.
    • 평가데이터와 생성데이터간의 NLL 값을 계산한다.
  • 이것이 무슨 의미가 있을까?
    • 만들어낸 학습 및 평가데이터는 실제 같은 분포를 가진다.
    • 그 분포가 실제로 의미가 진짜로 존재하는 문장을 생성하는 분포는 아니지만, 랜덤 초기한 RNN의 분포일 것이다.
    • 어찌되었든, NLG 모델이 결국은 학습 데이터의 분포를 학습하는 것이다.
    • 이것으로 학습된 NLG 모델로 inference을 하면 결국 학습 데이터와 같은 분포를 띄는 평가 데이터를 생성하는 것이다.
    • 즉 생성 데이터가 얼마나 평가 데이터의 분포를 유사하게 만들어 내는지를 NLL로 척도를 매기는 방법이다.
    • 이렇게 함으로써 얻을 수 있는 것은 학습과 평가데이터가 같은 분포를 가지게 함으로써 있다.
    • Real 학습/평가 데이터는 실제 분포가 다를 수도 있고 OOV등, 못보는 token들이 존재할 수도 있는 등 여러 문제점이 있을 것이다.
    • 하지만 이 방법은 학습/평가의 분포가 같을 것이고 의미론적인 부분을 배제하는 점도 하나의 장점이라고 생각한다.
  • 완벽한 방법인가?
    • 당연히 아닐 것이다.
    • 실제 의미론적인 부분을 배제하고 평가하는 것이 장점일 수도 있겠지만, 배제하기 때문에 진짜 데이터에 잘 적용이 될 지는 미지수다.
    • 개인적으로는 단지 하나의 척도일 뿐이라고 생각한다.

댓글