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

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

중요한 것은 pgen인데, 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 λ와 함께 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