Die Algorithmuserklärung und Implementierung des folgenden Dokuments.
Title: Enhanced LSTM for Natural Language Inference Author: Chen, et al. Year: 2017 URL: https://arxiv.org/abs/1609.06038
Was ist die Geschichte? Der Algorithmus enthält Decomsable Attention, das die Beziehung zwischen den beiden Dokumenten (z. B. Annahmen und Hypothesen, ob sie dieselbe Bedeutung haben usw.) und der Leistung von ESIM, einer verbesserten Version davon, ermittelt. Scheint gut zu sein, also habe ich versucht, es mit Keras zu implementieren.
Der folgende Artikel befasst sich mit Decomposable Attention, dem Vorgänger dieses Algorithmus.
Erklärung und Implementierung des Decomposable Attention-Algorithmus
--ESIM ist eine Abkürzung für Enhanced Sequential Inference Model, eine verbesserte Version von Decomposable Attention [^ 2].
Ganzer Algorithmus (zitiert aus dem Originalpapier [^ 1])
--Verwenden Sie Tree-LSTM [^ 12]. (BiLSTM [^ 13] ist ebenfalls akzeptabel) --Verwenden Sie beim Vergleich Unterschiede und Elementprodukte. --Verwenden Sie während der Aggregation sowohl das durchschnittliche Pooling als auch das maximale Pooling.
Der Ablauf selbst entspricht dem von Decomposable Attention.
--Besuchen
Das Eingabedokument $ a $ und das Dokument $ b $ bestehen aus Wörtern mit einer Länge von $ l_a $ bzw. $ l_b $, und jedes Element ist eine verteilte Darstellung (z. B. GloVe [^ 7] oder Word2Vec [^ 8]]. ) Wird in einen $ d $ -Dimensionsvektor konvertiert.
a = (a_1, ..., a_{l_a})^\mathrm{T} \\
b = (b_1, ..., b_{l_b})^\mathrm{T} \\
Konvertieren Sie Wörter in verteilte Darstellung (Experiment verwendet 300-dimensionales GloVe [^ 7])
\bar{a}_i = \mathrm{BiLSTM}(a, i),\quad \forall i \in \left\{1,...,l_a\right\} \\
\bar{b}_j = \mathrm{BiLSTM}(b, j),\quad \forall j \in \left\{1,...,l_b\right\} \\
❏Attend
Dies entspricht der zerlegbaren Aufmerksamkeit.
\begin{align}
e_{ij} &= \bar{a}_i^\mathrm{T}\bar{b}_j \\
\tilde{a}_i &= \sum_{j=1}^{l_b} \frac{\exp(e_{ij})}{\sum_{k=1}^{l_a}\exp(e_{kj})} \bar{b}_j, \quad \forall i \in \left\{1,...,l_a\right\} \\
\tilde{b}_j &= \sum_{i=1}^{l_a} \frac{\exp(e_{ij})}{\sum_{k=1}^{l_b}\exp(e_{ik})} \bar{a}_i, \quad \forall j \in \left\{1,...,l_b\right\} \\
\end{align}
Was machst du?
Ich habe Äpfel gebacken und gegessen --B) Ich habe gestern Mikan gegessen
Als es zwei Sätze gab
ich | Ist | Apfel | Zu | Backen | aß | |
---|---|---|---|---|---|---|
ich | Ist | Mandarine | Zu | - | aß |
Es ist einfacher zu vergleichen, ob die ähnlichen Elemente so sortiert sind, dass sie gepaart sind. Die Dokumente werden durch Gewichtung der Wörter angeordnet, die wahrscheinlich mit den beiden Sätzen zusammenhängen. (Tatsächlich Berechnung zwischen Vektoren)
❏Compare
\begin{align}
m_a &= (\bar{a}, \tilde{a}, \bar{a}-\tilde{a}, \bar{a} \odot \tilde{a})^\mathrm{T} \\
m_b &= (\bar{b}, \tilde{b}, \bar{b}-\tilde{b}, \bar{b} \odot \tilde{b})^\mathrm{T} \\
\end{align}
In Decomposable Attention gab es nur zwei, $ \ bar {a}, \ tilde {a}, \ bar {b}, \ tilde {b} $, aber in ESIM wird die Leistung durch Hinzufügen von Subtraktion und Elementprodukt verbessert. Es scheint, dass
❏Aggregate
v_{a,t} = \mathrm{BiLSTM}(F(m_a)) \\
v_{b,t} = \mathrm{BiLSTM}(F(m_b))
In der Originalarbeit werden sowohl TreeLSTM [^ 12] - als auch BiLSTM [^ 13] -Methoden vorgeschlagen. In diesem Artikel wird BiLSTM jedoch zur Vereinfachung der Implementierung verwendet. Die Funktion $ F $ ist ein vorwärts gerichtetes neuronales Netz.
v_{a,\mathrm{ave}} = \sum_{i=1}^{l_a}\frac{v_{a,i}}{l_a}, \quad
v_{a,\max} = \max_{i=\left\{1,..l_a\right\}}\frac{v_{a,i}}{l_a}, \\
v_{b,\mathrm{ave}} = \sum_{j=1}^{l_b}\frac{v_{b,i}}{l_b}, \quad
v_{b,\max} = \max_{j=\left\{1,..l_b\right\}}\frac{v_{b,j}}{l_b}, \\
v = (v_{a,\mathrm{ave}}, v_{a,\max}, v_{b,\mathrm{ave}}, v_{b,\max})^\mathrm{T}
Mit Decomposable Attention war es nur $ \ max $, aber es war schwierig anzupassen, also habe ich auch $ \ mathrm {avg} $ hinzugefügt.
Es basiert auf dem Code [^ 3].
https://gist.github.com/namakemono/b74547e82ef9307da9c29057c650cdf1
References
[^ 1]: Chen, Enhanced LSTM for Natural Language Inference, 2017. (Originalarbeit des ESIM-Algorithmus) [^ 2]: Parikh, Eine zerlegbare Aufmerksamkeit für die Schlussfolgerung natürlicher Sprache, 2016. (Originalartikel von Decomposable Attention) [^ 3]: Dang, Quora Question Pairs - DL-Modelle, 2017. (mit ESIM- und Decomposable Attention-Code) [^ 4]: Kaggle, Quora Question Pairs, 2017. (Wettbewerb um die Beurteilung, ob die Dokumente gleich sind) [^ 5]: Maximilien @ DAMI, Lösung für Quora-Fragenpaare - 1. Platz, 2017. (Kaggle-Quora-Gewinner Artikel) [^ 6]: Explosion, spaCy, 2017. (Bibliothek zur Verarbeitung natürlicher Sprache) [^ 7]: Pennington et al., Handschuh: Globale Vektoren für die Wortrepräsentation., 2014. (Algorithmus für verteilte Repräsentation GloVe Original Papier) [^ 8]: Milkolov et al., Effiziente Optimierung von Wortrepräsentationen im Vektorraum, 2013. (Originalarbeit des Algorithmus für verteilte Ausdrücke Word2Vec) [^ 9]: Chollet, Keras, 2016. (Keras: Bibliothek für tiefes Lernen) [^ 10]: lystdo, LSTM mit word2vec-Einbettungen, 2017. (LSTM + Word2Vec Keras-Versionscode verfügbar) [^ 11]: namakemono, Implementierung von ESIM, 2017. (ESIM-Implementierung) [^ 12]: Tai et al., Verbesserte semantische Darstellungen aus baumstrukturierten Langzeit-Kurzzeitgedächtnisnetzwerken, 2015. (LSTM in Tree Structure) [^ 13]: Bahdanau, Neuronale maschinelle Übersetzung durch gemeinsames Lernen des Ausrichtens und Übersetzens, 2014. (Papier für maschinelle Übersetzung unter Erwähnung von BiLSTM)