-
이전까지는 "Keyphrases를 어떻게 얻을 것인가?"에 대한 논문들에 대해 알아보았다면, 이제는 관점을 바꾸어서 "이미 추출한 Keyphrase들에서 조금 더 영양가 있는 데이터를 뽑아낼 수는 없을까?" 에 대한 논문
-
이때까지 대부분의 NLP 모델, 특히 그 중에서도 NLU에 해당되는 모델들은 단어, 문장, 더 나아가서 문서 자체로까지의 context에 주목하여 semantic한 정보 뿐만 아니라 syntatic한 Representation을 뽑아내었음.
-
허나, 아직까지 이미 뽑아낸 Keyphrase로부터 더 정보를 얻어내는 연구는 없었고, 이에 초점을 맞추어서 연구를 진행
-
이 논문이 의미가 있다고 생각하였는데, 어떤 모델을 새로 만든 것이 아니라 기존의 Pre-trained한 모델 위에 Loss function들을 손봐서 Output을 냈다는 것에 큰 의의가 있음.
-
크게 3가지 질문에 대한 답을 함께 제시하였음.
- 더 좋은 Key-phrase 전개를 할 수 있는 Pre-training objective function이 있습니까?
- 해당 모델은 Span-BERT의 기본꼴을 조금 더 발전시켜서 학습을 진행하였는데, 크게 KBI(Keyphrase Boundary Infilling)과 KRC(Keyphrase Replacement Classification)을 제시하였음
- 앞의 두 objective는 NLU에 초점이 되어 있었다면, 생성을 위해 KeyBart를 제시, 실제 Generating하는데에도 좋은 성과를 보여주는 모델을 제시하였음
- 이렇게 Key-phrase로부터 정보를 가져오게 학습하는 것도 실제 Key-phrase를 뽑아내고 생성할 때 좋은 결과를 이끌어 냅니까?
- 이것이 이 논문에서 가장 자랑스러워(?) 하는 결과이며, 실제 앞의 KBI와 KRC, 그리고 원래 Robert에서 사용했던 MLM을 모두 섞어서 Output을 내보니 생각보다 뛰어난 성능을 보여주었음.
- 현재 Key-phrase에서 SOTA를 보이고 있는 모델보다는 좋은 결과를 이루었음.
- 이외 다른 NLP Task에도 적용할 수 있습니까?
- 사실 대부분의 NLP Task는 Luke가 확 잡고 있는 상황이라 그 정도는 아니지만, 바로 아래의 성능을 보여주고 있음
- (작성자의 생각이지만) 이 논문이 가지고 있는 가장 큰 파워는 "이미 뛰어난 성능을 보이고 있는 Pre-trained 모델의 결과에 추가적으로 몇몇개의 Learing objective를 추가하기만 하면, 훨씬 더 좋은 성과를 보여줄 수 있다"이므로 해당 논문을 발전시켜 Luke 위에 얹으면 새로운 SOTA의 모델이 되지 않을까 생각함.
-
앞에서도 말했듯이 해당 논문에서 사용하는 Loss는 크게 3가지(세부로는 4가지)로 이루어져 있는데, 한 개는 Bert에서 처음 제시된 MLM, 두 개는 KBI, 나머지 하나는 KRC를 사용, 각 로스에는 적당한 Hyperparameter α, β, σ, δ가 배정됨.
-
KBI는 SpanBert의 아이디어를 더 발전시켰음.
- Bert는 가리는 단어가 한 개 였다면, SpanBert에서는 연속으로 여러 개를 가림으로써 성능을 높였음
- 허나, 여러 개를 가릴 때 단어 하나당 토큰 하나를 배정함으로써 각 토큰을 Predict하는 방향으로 진행
- 또한, 가리는 연속된 문장을 고르는 것은 Random을 사용하거나 Heuristic(Zhang et al., 2020)을 사용하였음
- 지금 우리는 Key-phrase에 대한 이해가 우선시 되어야 하므로 이렇게 무작위성을 주지 않고, Key-phrase만을 골라서 Masking하는 식으로 진행
- 또 기존에는 단어의 개수에 대해 미리 정보를 주었다면, 여기서부터는 그것조차 맞추도록 연속된 문장을 단 하나의 Mask로 처리
- 즉, 단어를 맞추는 것이 아닌 어절을 맞추는 문제로 바꾸어서 진행
- 따라서 전에는 오직 단어들과의 차이만 맞추었다면, 이제부터는 얼마나 완성된 어절을 맞추며 그것들이 서로 어떤 연관이 있는지까지 계산함 (논문에서는 Culmative loss라는 용어를 사용하여, 기존에는 각 토큰에 대해 정답을 유추했기 때문에 로스를 각각 계산했다면 이제는 어절에 대해 계산하기 때문에 Loss를 계산할 때 각 단어의 Loss를 total sum한게 Masking의 Loss가 됨)
- KBI에서도 "실제 Key-phrase와 얼마나 연관이 있느냐"와 "단어의 개수가 얼마나 차이나느냐"의 Loss로 나누어서 계산, 전자 같은 경우 SpanBert의 식을 그대로 차용하여 Position Embedding 이후 학습을 진행 / 후자 같은 경우 최대 Token에 제한을 두어 개수에 대한 Cross-entropy를 계산하였음.
-
다음으로는 KRC로, 앞의 작업과는 무관하게 어떤 Key-phrase로 추정되는 어절이 들어왔을 때 이게 진짜로 그 역할을 하는지, 아니면 바뀐 것인지 자체적으로 판단하기를 원함
- 이를 학습하기 위해 전체 데이터셋의 Key-phrase를 모아서, 각 문장마다 랜덤으로 50만개씩 선정
- 이후 정답 라벨을 "해당 요약본이 있으면 1, 그렇지 않으면 0"으로 설정하여 Binary entropy loss를 계산하여 최적화
-
KeyBart에서는 앞의 모델을 Bart처럼 만들어서 사용한 것으로, 실제 Loss도 BART와 동일한 Reconstruction loss를 활용하였음.