Net R
- Une implémentation TensorFlow de R-Net: Compréhension de la lecture des machines avec les réseaux d'auto-correspondance. Ce projet est spécialement conçu pour l'ensemble de données d'escouade.
- Si vous avez une question, veuillez contacter Wenxuan Zhou ([email protected]).
Exigences
Il y a eu beaucoup de problèmes connus causés par l'utilisation de différentes versions logicielles. Veuillez vérifier vos versions avant d'ouvrir des problèmes ou de m'envoyer un e-mail.
Général
- Python> = 3,4
- dézip, wget
Packages python
- Tensorflow-gpu> = 1.5.0
- Spacy> = 2.0.0
- tqdm
- ujson
Usage
Pour télécharger et prétraiter les données, exécuter
# download SQuAD and Glove
sh download.sh
# preprocess the data
python config.py --mode prepro
Les paramètres hyper sont stockés dans config.py. Pour déboguer / former / tester le modèle, exécuter
python config.py --mode debug/train/test
Pour obtenir le score officiel, courez
python evaluate-v1.1.py ~ /data/squad/dev-v1.1.json log/answer/answer.json
Le répertoire par défaut du fichier journal de Tensorboard est log/event
Voir la version du modèle formé.
Implémentation détaillée
- Le papier d'origine utilise l'attention additive, qui consomme beaucoup de mémoire. Ce projet adopte l'attention multiplicative à l'échelle présentée dans l'attention est tout ce dont vous avez besoin.
- Ce projet adopte l'abandon variationnel présenté dans une application théoriquement fondée de l'abandon dans les réseaux de neurones récurrents.
- Pour résoudre le problème de dégradation dans RNN empilé, les sorties de chaque couche sont concaténées pour produire la sortie finale.
- Lorsque la perte sur les développeurs augmente dans une certaine période, le taux d'apprentissage est divisé par deux.
- Pendant la prédiction, le projet adopte la méthode de recherche présentée dans la compréhension de la machine à l'aide de Match-LSTM et du pointeur de réponse.
- Pour résoudre le problème de l'efficacité, cette implémentation utilise la méthode de seau (apportée par XionGyifan) et CudnnGru. La méthode de seau peut accélérer l'entraînement, mais réduira le score F1 de 0,3%.
Performance
Score
| Em | F1 |
|---|
| papier d'origine | 71.1 | 79.5 |
| ce projet | 71.07 | 79.51 |


Temps de formation (s / it)
| Indigène | Seau natif + | Bouton | CUDNN + seau |
|---|
| E5-2640 | 6.21 | 3.56 | - | - |
| Titan X | 2.56 | 1.31 | 0,41 | 0,28 |
Extensions
Ces paramètres peuvent augmenter le score mais non utilisés dans le modèle par défaut. Vous pouvez activer ces paramètres dans config.py .
- Caractère de gant pré-entraîné incorporer. Contribué par Yanghanxy.
- Incorporation de texte rapide. Contribué par Xiongyifan. Peut augmenter le F1 de 1% (rapporté par Xiongyifan).