[논문 리뷰] PLOTMACHINES: Outline-Conditioned Generation with Dynamic Plot State Tracking

정세영·2021년 8월 18일
0

논문 링크: https://arxiv.org/pdf/2004.14967.pdf

※ 팀 프로젝트에서 논문 리뷰 세미나를 목적으로 작성한 글입니다.


narrative, plot 생성 관련 논문을 리뷰해보고자 한다. 유사한 task로 오픈되어있는 서비스는 있었지만 (네이버 clova, plot generator ...) 개발에 참고할 만한 논문과 깃헙을 오픈한 곳은 별로 없었다. 그래서 일단 후보로 나왔었던 이 논문부터 리뷰해보도록 하겠다.
(이 논문을 읽어보니 가짜 뉴스에 악용될 것을 우려하여 모델을 배포하지 않았다는데, 다른 서비스들도 같은 이유일런지는 모르겠다.)


Introduction

outline : characters, events 등 phrase

outline → story

dynamic memory block을 통해서 plot state 학습!
code 상으로 모델에 bodynum, discourse(intro/body/conclusion) 들어감 → 파트마다 다르게 generate 되도록 (기승전결)


Dataset

plot outlines : plot points (concept, event, phase) 리스트 (un-ordered)

→ 스토리 데이터셋으로부터 extract한 outlines : input
→ 스토리 데이터셋 (existing) : target

Wikiplots(TV shows, ,movies, books), WritingPrompts(Reddit에서 생성된 short story generation dataset), NYTimes(news articles)로부터 데이터 구축

How to Outline Extraciton?

: RAKE (Rapid Automatic Keyword Extraction) (빈도수 기반, domain independent)


PLOTMACHINES

GPT + memory matrix + discourse feature

(human writing styles에 기반한 구조)

outline representation
_kw_\_kw\_ : plot point 구분자

discourse representation
_i_,_b_,_c_\_i\_, \_b\_, \_c\_ : intro, body, conclusion 구분자

preceding context representation
hi1h^{i-1} : average embedding (이전 paragraph words)

memory representation
dd : embedding size, n : maximum number of tokens in outline
KK : outline points (d*n)
DD : topic distribution (d*n)
MM : [K;D][K;D] (d*2n)

Memory cell state

Mji^=tanh(W1Mji1+W2hi1)\hat{M^i_j} = tanh(W_1M^{i-1}_j + W_2h^{i-1})
gji=sigm(W3Mji1+W4hi1)g^i_j = sigm(W_3M^{i-1}_j + W_4h^{i-1})
Mji=(1gji)Mji1+gjiMji^M^i_j = (1 - g^i_j) ○ M^{i-1}_j + g^i_j ○ \hat{M^i_j}

GPT의 원래 self-attention representation + memory와의 attention으로 생성한 representation average


Baseline of Experiment

  • WritingPrompts 논문의 Fusion model
  • static storyline-to-story variant of Plan-and-Write (P&W-Static) 논문의 LSTM-based model
  • GROVER (GPT2-medium와 동일한 규모의 transformer-based 언어 생성 모델)의 finetuned model

※ 모두 delimit formed outline을 input으로

metrics

ROUGE (주로 요약 task에 사용, 중요한 정보가 다 들어갔는지)
BLEU (주로 번역 task에 사용, 예측한 게 맞는지)
self-BLEU : 생성된 document 중 하나를 hypothesis, 즉 정답으로 가정하고 나머지 생성된 모든 document들을 가지고 BLEU를 구해서 average

automatic metrics는 PLOTMACHINES이 잘 나오는데, human evaluation은 엎지락뒤치락하는 듯한 결과

NLG 분야는 evaluation하기가 쉽지 않은데, 다양한 평가를 시도한 것으로 보임

결론 : base GPT 짱, fine-tuning PLOTMACHINES 짱?




Conclusion for us

  1. story로부터 추출한 outline을 input으로 넣어서 paragraph를 생성하는 형태
    테마를 지정하고 등장인물을 인풋으로 받는 우리 기획과 구조가 다르다. 등장인물을 넣어주는건 RAKE 대신 NER로 대체가 가능할까 싶지만, 빈도수 기반의 outline 추출만으로는 제대로 된 테마 반영이 어렵다. 테마를 outline이라고 취급한다면 다른 배경에서 해당 테마 단어가 나오기만 하면 모델은 성공이라고 생각할 것. 테마는 학습 데이터에 의존하지 않을까 생각.
    (등장인물 이름도 사실 매우 낮은 빈도로 등장해서 스토리 생성에는 별 영향을 주지 못할 것으로 예상. 때문에 인풋으로 넣어주기보다 차라리 데이터셋 자체에서 마스킹하는 게 나을 수도.)
    아래는 등장인물에 대한 고민은 우선 배제하고 테마를 지정할 수 있도록 하기 위한 방안들이다.

    1-1. 확보되는 데이터(라벨링은 피하고 싶지만..)를 분류하여 테마별로 개별 모델화 (이렇게 되면 모델 별로 학습시킬만큼 데이터 확보가 안될 수도)

    1-2. 하나의 모델로 진행할 때 훈련시킬 데이터셋의 인풋에 테마를 아예 넣어주거나 (이것 역시 테마 분류 작업 필요) 혹은 데이터 clustering을 진행하여 테마별 대표 phase를 추출해서 고정 (이렇게 되면 한 테마 안에서 굉장히 단조로워질 수 있음)

  2. 모델과 서비스 구조 논의 후 정리된 방향을 토대로 데이터 수집한 후에,
    kogpt2를 기반으로 간단하게 transfer learning을 진행하여 baseline을 살펴보는 게 좋을 것으로 보임

++ 최근 plotmachines를 레퍼런스로 삼은 논문도 나왔음 : https://arxiv.org/pdf/2101.00822.pdf

0개의 댓글