End-to-end Neural Coreference Resolution Summary
End-to-end Neural Coreference Resolution Summary
오랜만에 올리는 이번 포스팅 글에서는 영어권 상호참조해결에서 멘션 탐지와 상호참조해결을 동시에 해결하고, state-of-the-art performance를 달성한 논문인 "End-to-end Neural Coreference Resolution"에 대해 소개하려고 한다.
이 논문을 소개하기 전에 간단히 상호참조해결이 무엇인지에 대해 설명하려한다. 상호참조해결이란 자연어로 이루어진 문서에서 나타나는 명사구들에 대해 서로 같은 개체(Entity)를 나타내는지에 대한 표현들을 찾는 작업을 일컫는다. 자연 언어 문서에서 명사구들이 같은 개체를 나타내면서도, 축약어나 대명사, 지시 관형사를 포함하는 명사구와 같이 다른 형태로 등장하는 경우가 있기 때문에 이는 문서 요약, 질의 응답, 또는 지식 추출과 같은 작업에 사용될 수 있다.
예를 들어,
"LG V30 모델은 LG 전자에서 내놓은 스마트폰이다. V30은 LG전자의 플래그쉽 모델인 LG V 시리즈의 2017년 신작이다. 그 핸드폰은 독일 베를린의 미리암 호텔에서 LG V30 Unveiling Event 행사를 통해 공개되었다."
라는 문장에서
[LG_V30]과 [V30]과 [그 핸드폰]이라는 세 개의 명사구는 [LG_V30] 이라는 같은 개체를 나타내는 명사구들이다. 이를 통해 개체명 탐지와 연결을 통해 연결되지 않은 명사구들에 대해서, 상호참조해결을 통해 서로 상응하는 명사구들을 발견하면 [LG_V30]이 LG V 시리즈의 2017년 신작이고, [LG_V30]이 독일 베를린의 미리암 호텔에서 공개되었다는 사실을 알 수 있다.
기존 논문에서는 직접 만든 멘션 탐지 (즉, 상호참조의 대상이 될 명사구)나 어떠한 문법적 분석기와 같은 다른 모델없이 word token만으로 state-of-the-art performance를 보여주었다는 데 큰 의미가 있다.
1. Model
$$P(y_1, ..., y_N) = \Pi_{i=1}^N P(y_i|D) = \Pi_{i=1}^N \frac{exp(s(i,y_i)}{\Sigma_{y \in \mathcal{Y}(i)} exp(s(i,y))} $$
이 때, $\mathcal{Y}(i) = \{ \epsilon, 1, ..., i-1\} $로, i번째 멘션에 대해서 나올 수 있는 후보 선행사들에 대해서 확률을 확인하는 방식이다. $\epsilon$과 같은 경우 dummy 선행사를 의미하는데, 이 경우는 멘션이 선행사를 가지고 있지 않는 것을 의미한다. 혹은 해당 멘션이 개체 맨션이 아닐 경우를 의미한다.
즉 다시 정리해서 설명해보자면, 이 모델에서는 확률 분포 $P(y_1, ..., y_N | D)$가 올바른 clustering을 생성하도록 만든다. 이 때, i번째 멘션이 올바른 clustering을 형성할 수 있도록 선행사와의 상호점수 확률이 최대화되도록 하는게 핵심이다.
상호 참조 점수는 다음과 같이 계산된다:
$$s(i,j) = \begin{cases} 0 && j = \epsilon \\ s_m(i) + s_m(j) + s_a(i,j) && j \neq \epsilon \end{cases} $$
이 때, $s_m(i)$는 span i에 대한 점수로 span i가 멘션인지에 대한 점수를 의미하며, $s_a(i, j)$는 span i의 선행사가 span j인 점수를 의미한다.
확률을 계산하는 방법은 대강 위와 같았고, 이러한 점수를 구하기 위해서는 총 두 가지의 step이 필요하다.
Step 1) 각 span이 진짜 개체 멘션일 점수
Step 2) span i와 span j간에 상호참조할 점수 = span i의 선행사가 span j일 점수
<Step 1>
Step 1은 단어들을 조합해서 만들어진 후보 구들이 진짜 개체 멘션인지에 대해 알아내는 단계이다. 이 논문에서는 요새 가장 많이 쓰인다는 Bi-LSTM 기법의 embedding representation을 이용하여 단어들의 span 표현을 만들어냈다. $(x^*)$
이렇게 만들어진 단어 span 표현은 연속적인 단어들의 합으로 span representation을 만든다. 예를 들어 각 단어 {General, Electric, said, the, Postal, Service}등에 대해 연속적인 단어들로 후보 span들을 다음과 같이 만들 수 있다:
{General, Electric, said, the, Postal, Service}
{General Electric, Electric said, said the, the Postal, Postal Service}
{General Electric said, Electric said the, said the Postal, the Postal Service}
{General Electric said the, Electric said the Postal, said the Postal Service}
{General Electric said the Postal, Electric said the Postal Service}
{General Electric said the Postal Service}
문제는 다음과 같이 만들어진 span들이 실제 개체인지 확인할 수 없다. 그렇기 때문에 Span representation을 만들어서 실제 개체인지 확인해보려 한다. span representation은 다음과 같이 만들어진다:
$$ g_i = [x^*_{\text{START}(i)} , x^*_{\text{END}(i)}, \hat{x}_i, \phi(i) ] $$
$x^*_{\text{START}(i)}$는 i번째 span의 맨 첫번째 단어의 representation을 의미하고, $x^*_{\text{END}(i)}$는 i번째 span의 맨 끝 단어의 representation을 의미한다. 이 둘을 대표적으로 넣는 이유는 흔히 개체 멘션이 되는 경우는 맨 첫 단어가 명사이거나 맨 끝 단어가 명사이어야 하기 때문이다. 또한, span에서의 중심어를 알아볼 수 있도록 word representation에 기반한 head attention 기법을 이용한다. head attention을 통해서 span representation이 중심어와 되도록 유사한 representation을 갖도록 한다.
$$ \alpha_t = \omega_{\alpha} \cdot FFNN_{\alpha}(x^*_t) $$
$$ a_{i,t} = \frac{exp(\alpha_t)}{\sum_{k=\text{START}(i)}^{\text{END}(i)} exp(\alpha_k)} $$
$$ \hat{x}_i = \sum_{t=\text{START}(i)}^{\text{END}(i)} a_{i,t} \cdot x_t$$
또한, span representation에서 언급된 $\phi(i)$는 span i의 크기를 의미하는 feature vector를 말한다.
<Step 2>
$$ s_m(i) = \omega_m \cdot FFNN_{m}(g_i) $$
$$ s_a(i,j) = \omega_a \cdot FFNN_{a}([g_i, g_j, g_i \circ g_j, \phi(i,j)]) $$
Step 2에서는 span representation를 이용해 상호참조 점수를 구한다. 이 때, mention 점수는 span representation을 feed-forward neural network를 통해 구한다.
상호참조 점수 (선행사 점수)도 span representation들을 feed forward neural network를 통해 구한다는 것을 알 수 있다.
그림에서 살펴보면 the company의 선행사가 General Electric일 점수, the Postal Service일 점수, 그리고 선행사가 없을 점수 등 여러 조합을 통해 나오는 점수들을 softmax를 통하여 구한다는 것을 확인할 수 있다.
2. Learning
학습 데이터에서, clustering 정보만 있다. 즉, 나머지 hand-engineered feature는 없다는 뜻이다. 여기서 선행사는 clustering 정보에서 가장 끝에 있는, 즉 clustering {1, 2, 3, ..., i-1, i}에 대해 i의 선행사는 i-1이라는 것으로 설정하여 gold clustering을 통해 올바른 선행사가 학습되;도록 다음과 같은 marginal log-likelihood 기법을 사용한다:
$$ log \prod^N_{i=1} \sum_{\hat{y} \in \mathcal{Y}(i) \cap GOLD(i)} P(\hat{y}) $$
GOLD(i)는 span i를 포함하고 있는 gold cluster를 의미하며, span i가 선행사가 없을 경우 혹은 gold cluster에 포함되지 않을 경우 $GOLD(i) = \{ \epsilon \} $과 같이 설정된다. 해당하는 objective function을 최적화하는 것으로 span들은 올바르게 pruning된다. 시작 pruning이 처음에는 무작위방식이지만, 점차 positive update하게 된다. 이는 mention scores $s_m$이 pruning을 위하여 사용되기 때문이다.\
3. Results
실험을 통해 나온 모델의 결과값은 다음과 같다.
먼저 모델의 앙상블 기법을 통해 나온 결과값이 이전 상호참조해결 대상 논문들보다 매우 좋은 결과를 보여준다는 것을 확인하였다.
또한, 해당하는 모델에서 각각의 feature들이 어떠한 영향을 기치는지에 대해 나온 결과표이다.
만약 oracle mention을 대입한 경우, 결과값이 매우 좋아진다는 것을 확인할 수 있었다. (oracle mention과 같은 경우에는 상호참조해결이 대상되는 gold mention들을 미리 label한 mention이라 할 수 있겠다.)
4. 정리
해당 논문에서는 요새 NLP에서 유행하는 Bi-LSTM representation을 이용하여 어떠한 hand-engineered feature없이 end-to-end 기법을 이용하여 상호참조해결 부분에서 좋은 결과를 보여준 논문이였다.
물론 pruning 단계에서 약점이 존재하여 시간이 매우 오래걸린다는 단점이 있지만, 해당하는 단점을 해결한 논문이 발표되었다. (Higher-order Coreference Resolution with Coarse-to-fine Inference) 매우 강력한 모델임에는 틀림없고, 이 기법을 통한 Argument Identification이던지, Entity Linking과 같은 다른 분야에도 사용하는 것을 알 수 있다. 즉 NLP를 하는 사람이라면 꼭 알아야 할 논문이라고 생각한다.
댓글
댓글 쓰기