2つの entity (語句?) が与えられた時にそれらがシノニムかどうかを判定する. Siamese Network 的に訓練/予測で対で比較させる.
entity \(e\) について獲得できるコンテキストの集合 \[C = \{ c_0, \ldots, c_P \}\] を集める. 各コンテキスト \(c_p\) は単語の列 \[c_p = ( w_p^0,\ldots,w_p^T )\]
各コンテキスト \(c_p\) を BiLSTM で読ませて特徴ベクトル \(h_p\) を得る. コンテキストの集合 \(C\) から \(H = \{h_1,\ldots,h_P\}\) を得る.
ある自然数 \(d\) によって \(h_p \in \mathbb R^d\) だとする.
エンティティ \(e\) については \(H = \{h_1,\ldots,h_P\}\) が, 別なエンティティ \(k\) については \(G = \{g_1,\ldots,g_Q\}\) が Confluence Context Encoder によって得られたとする.
このときに双方向的にマッチングをしたい.
\(H \to G\) マッチング: 各 \(h_p \in H, g_q \in G\) について \[m_{p \to q} = \dfrac{\exp(h_p W g_q^\top)}{\sum_{p'}\exp(h_{p'} W g_q^\top)}\]
\(W\) は \(\mathbb R^{d \times d}\) なる重み行列. この \(W\) 故にこの \(m\) は非対称.
\(H \leftarrow G\) マッチング: \[m_{p \leftarrow q} = \dfrac{\exp(g_q W h_p^\top)}{\sum_{q'}\exp(g_{q'} W h_p^\top)}\]
これらの2種類の \(m\) は要するに \(HWG^\top\) の softmax として得られる.
さらに一部の context は uninformative であるから, leaky unit に掛ける. これは \(l \in \mathbb R^{1 \times d}\) によって (簡単のためにゼロベクトルに固定する),
\[m_{l \to q} = \dfrac{\exp(l W g_q^\top)}{\exp(l W g_q^\top) + \sum_{p'}\exp(h_{p'} W g_q^\top)}\]
とする. つまり softmax にもう1クラスを追加したもの. さっきの \(m_{p \to q}\) も次のように修正する.
\[m_{p \to q} = \dfrac{\exp(h_p W g_q^\top)}{\exp(l W g_q^\top) + \sum_{p'}\exp(h_{p'} W g_q^\top)}\]
\(H\) を畳み込む.
を重みにして,
実質 Attention?
Siamese または Triplet 的に学習する.
入力のエンティティ \(e,k\) がシノニムである場合とでない場合のための損失関数をそれぞれ次のようにする.
ここで \(s\) は適当な類似度関数. また \([ \cdot ]^+ = \max(0, \cdot)\).
全体としては \(y \in \{0,1\}\) として \[\mathcal L_s = y L_+ + (1-y) L_-\] とする.
エンティティ \(e\) とそれとシノニムである \(k_+\) と, でない \(k_-\) とを用意して, それらから \(\bar{h}, \bar{g}_-, \bar{g}_+\) が得られた時, \[\mathcal L_t = [ s(\bar{h}, \bar{g}_-) - s(\bar{h}, \bar{g}_+) + m ]^+\] とする.