논문명: Neural Text Generation with Unlikelihood Training
논문 링크: https://openreview.net/forum?id=SJeYe0NtvH
아이디어만 정리합니다.
그동안 generation decode 관련 글을 많이 써서 정리하는데, 다만 2020년이라 지금 봤을 때 그렇게 대단한 것 같진 않네요. 특히 Constrastive Search 와 역할이 유사한 느낌이 듭니다.
핵심
- 원래는 이렇게 Next Token Generation 을 통해 학습한다.
- 문제는 다음 단어만 맞추다보니까, 반복해서 똑같은 토큰을 생성하는 문제가 있다.
- 예시: 나는 네가 좋아 좋아 좋아 좋아 좋아 좋아 좋아
- Unlikelihood loss: 이게 핵심인데, C 만 이해하면 된다.
- C: 모델이 직전까지 생성한 문장을 의미한다
예시
- 정답: "나는 네가 좋아. 너를 사랑해"
- 모델이 여태까지 생성한 문장: "나는 네가 좋아. 너를"
- 다음에 생성해야 할 토큰: 사랑해
- 이때 사랑해라는 단어를 기존 loss 를 통해 학습하되, 직전에 생성한 C = [나는, 네가, 좋아, 너를] 는 생성할 확률을 떨어뜨린다.
직관
- 지금까지 생성한 문장의 토큰들은 한번 썼으니까 확률을 떨어뜨리자
관련 포스팅
https://heygeronimo.tistory.com/34
https://heygeronimo.tistory.com/36
https://heygeronimo.tistory.com/41