while (1): study();

[논문 리뷰] Get To The Point: Summarization with Pointer-Generator Networks 본문

논문 리뷰

[논문 리뷰] Get To The Point: Summarization with Pointer-Generator Networks

전국민실업화 2022. 1. 6. 00:49
728x90

링크:https://arxiv.org/abs/1704.04368

 

Get To The Point: Summarization with Pointer-Generator Networks

Neural sequence-to-sequence models have provided a viable new approach for abstractive text summarization (meaning they are not restricted to simply selecting and rearranging passages from the original text). However, these models have two shortcomings: th

arxiv.org


1.  Introduction

문서 요약 태스크에는 Extractive한 방법과, Abstractive한 방법이 있습니다. 전자는 말 그대로 단어장에서 추출하는 방식이고, 후자는 새로 re-phrasing할 수 있는 조금 더 고차원의 메서드입니다. 그만큼 구현하기도 쉽지 않아서 실제로는 잘못된 출력, 생략된 출력 등의 문제가 발생하곤 합니다. 특히 seq2seq 기반 모델은 출력의 무의미한 중복이 자주 발생합니다. 또한 OOV에도 취약합니다.

Pointer-generator 모델은 기존 Pointer network와 seq2seq의 생성 능력을 결합하여, 생성하되 모르면 입력에서 copy해올 수 있는 방식의 문서 요약 모델을 제안합니다.

 

2. Our Models

Pointer-generator 모델

기본적으로 Seq2seq attentional model과 상당히 유사합니다. 인코더는 입력을 받아 디코더에 hidden state를 넘겨주며, 디코더는 auto-regressive하게 단어를 생성합니다. 디코더의 매 타임스탭은 인코더의 모든 타임스탭 출력에 대해 Attention연산하여 context vector를 만듭니다. 이때 badanau's attention을 사용합니다.

Badanau's attention

$a^{t}$가 디코더의 해당 타임스탭에서 인코더의 어떤 타임스탭에 집중해야 하는지를 나타내는 점수역할을 합니다. 내부적으로는 $W_{h}h_{i} + W_{s}s_{t}$가 계산되는데, 인코더의 hidden state와 디코더의 hidden state를 동일한 벡터공간에 사상했을 때 두 벡터간 거리의 개념을 나타냅니다. 직관적으로는 더하는게 아니라 빼야 맞을 것만 같은데 말이죠.

중요한 것은 $p_{gen}$인데, context vector와 decoder의 input, output를 이용하여 계산합니다.

p gen

결과적으로 이는 각 정보를 하나의 실수로 압축하는데, 해당 타임스탭의 단어를 생성해야 할지, 혹은 복사해야 할지 기준이 되는 soft switch 역할을 합니다. 

final distribution

모델의 출력의 분포는 위와 같이 계산됩니다. 생성해야 할 경우 원래 vocabulary의 확률 분포를 더 많이, 복사해야할 경우는 attention distribution을 더 많이 보게 됩니다. 사실 두 확률 분포의 단어장과 차원이 달라서, 이를 해결하기 위해서 저자들은 소스코드에서 make_final_dist라는 메서드를 따로 만들어 사용하고 있습니다. tensorflow로 작성된 코드를 확인하시려면 아래 링크를 이용하세요.


링크:GitHub - abisee/pointer-generator: Code for the ACL 2017 paper "Get To The Point: Summarization with Pointer-Generator Networks"

 

GitHub - abisee/pointer-generator: Code for the ACL 2017 paper "Get To The Point: Summarization with Pointer-Generator Networks"

Code for the ACL 2017 paper "Get To The Point: Summarization with Pointer-Generator Networks" - GitHub - abisee/pointer-generator: Code for the ACL 2017 paper "Get To The Point: Summ...

github.com


아까 언급했듯이 seq2seq는 repetition이 자주 발생합니다. 이를 방지하기 위해서 coverage vector를 도입합니다.

coverage vector

한 타임스탭의 coverage vector는 이전까지 attention weight의 합으로 이루어집니다. 지금까지 어떤 타임스탭을 많이 참고했는지에 대한 정보입니다. 이를 활용하여 모델의 objective function을 다음과 같이 정의할 수 있습니다.

loss function

즉 target word에 대한 negative log likelihood에, scaling factor $\lambda$와 함께 coverage loss를 추가한 꼴입니다. coverage loss는 현재 타임스탭의 attention weight와 coverage vector를 비교하며, 이전까지 많이 뽑은 단어를 현재 타임스탭에서 집중하지 않을수록 손실이 낮아집니다. 결과적으로 attention이 조금 더 골고루 분포하는 효과를 얻을 수 있겠죠.

 

5. Experiments

Experiments result

기존에 제시됐던 모델이나, 저자들이 baseline으로 사용했던 seq2seq attentional model에 비하면 월등하게 높은 ROGUE score를 확인할 수 있습니다. 눈에 띄는 것은 coverage vector를 활용했을 때 발생하는 효용인데, seq2seq 모델의 고질적인 repetition 문제가 어느정도 해결됨으로써 엄청나게 높은 성능을 거둘 수 있는 것이 확인되었습니다.

728x90
Comments