L'explication de l'algorithme et la mise en œuvre de l'article suivant.
Title: Enhanced LSTM for Natural Language Inference Author: Chen, et al. Year: 2017 URL: https://arxiv.org/abs/1609.06038
Il y a une attention décomposable dans l'algorithme qui trouve la relation entre les deux documents (par exemple, les hypothèses et hypothèses, si elles ont la même signification, etc.) et les performances d'ESIM, qui en est une version améliorée. Cela semble bon, alors j'ai essayé de l'implémenter avec Keras.
L'article ci-dessous traite de Decomposable Attention, le prédécesseur de cet algorithme.
Explication et implémentation de l'algorithme Decomposable Attention
--ESIM est une abréviation pour Enhanced Sequential Inference Model, qui est une version améliorée de Decomposable Attention [^ 2]. --Algorithme de classification qui prend deux documents en entrée
Algorithme complet (extrait de l'article original [^ 1])
--Utilisez Tree-LSTM [^ 12]. (BiLSTM [^ 13] est également acceptable)
Le flux lui-même est le même que l'attention décomposable.
--Assister
Le document d'entrée $ a $ et le document $ b $ sont composés de mots d'une longueur de respectivement $ l_a $ et $ l_b $, et chaque élément est une représentation distribuée (par exemple GloVe [^ 7] ou Word2Vec [^ 8]]. ) Est converti en un vecteur de dimension $ d $.
a = (a_1, ..., a_{l_a})^\mathrm{T} \\
b = (b_1, ..., b_{l_b})^\mathrm{T} \\
Convertir des mots en représentation distribuée (l'expérience utilise GloVe 300 dimensions [^ 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
C'est la même chose que l'attention décomposable.
\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}
Que faites-vous?
--A) .J'ai fait cuire et mangé des pommes --B). J'ai mangé du mikan hier
Quand il y avait deux phrases
je | Est | pomme | À | Cuire | a mangé | |
---|---|---|---|---|---|---|
je | Est | Mandarine | À | - | a mangé |
Il est plus facile de comparer si les éléments similaires à sont triés de manière à être appariés. Les documents sont classés en pondérant les mots susceptibles d'être liés aux deux phrases. (En fait, calcul entre vecteurs)
❏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}
Dans Decomposable Attention, il n'y en avait que deux, $ \ bar {a}, \ tilde {a}, \ bar {b}, \ tilde {b} $, mais dans ESIM, les performances sont améliorées en ajoutant une soustraction et un produit d'élément. Il paraît que
❏Aggregate
v_{a,t} = \mathrm{BiLSTM}(F(m_a)) \\
v_{b,t} = \mathrm{BiLSTM}(F(m_b))
Ici, l'article original propose à la fois les méthodes TreeLSTM [^ 12] et BiLSTM [^ 13], mais dans cet article, BiLSTM est utilisé pour faciliter l'implémentation. La fonction $ F $ est un réseau neuronal feedforward.
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}
Avec Decomposable Attention, c'était seulement $ \ max $, mais c'était difficile à ajuster, donc j'ai ajouté $ \ mathrm {avg} $ également.
Il est basé sur le code [^ 3].
https://gist.github.com/namakemono/b74547e82ef9307da9c29057c650cdf1
References
[^ 1]: Chen, Enhanced LSTM for Natural Language Inference, 2017. (Article original de l'algorithme ESIM) [^ 2]: Parikh, A Decomposable Attention for Natural Language Inference, 2016. (Article original de Decomposable Attention) [^ 3]: Dang, Paires de questions Quora - Modèles DL, 2017 (avec ESIM et code Attention décomposable) [^ 4]: Kaggle, Quora Question Pairs, 2017. (Concours pour juger si les documents sont identiques) [^ 5]: Maximilien @ DAMI, Quora Question Pairs - Solution 1ère place, 2017. (Kaggle-Quora Winner Article) [^ 6]: explosion, spaCy, 2017. (Bibliothèque de traitement du langage naturel) [^ 7]: Pennington et al., Glove: Global vectors for word representation., 2014. (Algorithme de représentation distribuée GloVe Papier original) [^ 8]: Milkolov et al., Optimisation efficace des représentations de mots dans l'espace vectoriel, 2013. (Article original de l'algorithme d'expression distribuée Word2Vec) [^ 9]: Chollet, Keras, 2016. (Keras: Library for Deep Learning) [^ 10]: lystdo, LSTM avec intégration de word2vec, 2017. (Code de version LSTM + Word2Vec Keras disponible) [^ 11]: namakemono, Implémentation d'ESIM, 2017. (Implémentation ESIM) [^ 12]: Tai et al., Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks, 2015. (LSTM in Tree Structure) [^ 13]: Bahdanau, Traduction automatique neuronale en apprenant conjointement à aligner et à traduire, 2014. (Article de traduction automatique, mentionnant BiLSTM)
Recommended Posts