R-net
- Implementasi TensorFlow dari R-NET: Pemahaman membaca mesin dengan jaringan pencocokan sendiri. Proyek ini dirancang khusus untuk dataset pasukan.
- Jika Anda memiliki pertanyaan, silakan hubungi Wenxuan Zhou ([email protected]).
Persyaratan
Ada banyak masalah yang diketahui yang disebabkan oleh penggunaan versi perangkat lunak yang berbeda. Silakan periksa versi Anda sebelum membuka masalah atau mengirim email kepada saya.
Umum
- Python> = 3.4
- unzip, wget
Paket Python
- TensorFlow-GPU> = 1.5.0
- Spacy> = 2.0.0
- TQDM
- Ujson
Penggunaan
Untuk mengunduh dan melakukan preprocess data, jalankan
# download SQuAD and Glove
sh download.sh
# preprocess the data
python config.py --mode prepro
Parameter hiper disimpan dalam config.py. Untuk men -debug/melatih/menguji model, jalankan
python config.py --mode debug/train/test
Untuk mendapatkan skor resmi, jalankan
python evaluate-v1.1.py ~ /data/squad/dev-v1.1.json log/answer/answer.json
Direktori default untuk file log Tensorboard adalah log/event
Lihat rilis untuk model terlatih.
Implementasi terperinci
- Kertas asli menggunakan perhatian aditif, yang mengkonsumsi banyak memori. Proyek ini mengadopsi perhatian multiplikatif yang disajikan dalam perhatian adalah semua yang Anda butuhkan.
- Proyek ini mengadopsi dropout variasional yang disajikan dalam aplikasi putus sekolah secara teoritis dari jaringan saraf berulang.
- Untuk memecahkan masalah degradasi pada RNN yang ditumpuk, output dari setiap lapisan digabungkan untuk menghasilkan output akhir.
- Ketika kerugian pada set dev meningkat dalam periode tertentu, tingkat pembelajaran dibagi dua.
- Selama prediksi, proyek mengadopsi metode pencarian yang disajikan dalam pemahaman mesin menggunakan Match-LSTM dan Jawaban Pointer.
- Untuk mengatasi masalah efisiensi, implementasi ini menggunakan metode bucketing (dikontribusikan oleh Xiongyifan) dan Cudnngru. Metode bucketing dapat mempercepat pelatihan, tetapi akan menurunkan skor F1 sebesar 0,3%.
Pertunjukan
Skor
| Em | F1 |
|---|
| kertas asli | 71.1 | 79.5 |
| proyek ini | 71.07 | 79.51 |


Waktu pelatihan (s/it)
| Warga asli | Native + Bucket | Cudnn | Cudnn + Bucket |
|---|
| E5-2640 | 6.21 | 3.56 | - | - |
| Titan x | 2.56 | 1.31 | 0.41 | 0.28 |
Ekstensi
Pengaturan ini dapat meningkatkan skor tetapi tidak digunakan dalam model secara default. Anda dapat menyalakan pengaturan ini di config.py .
- Embedding karakter sarung tangan pretrained. Dikontribusikan oleh Yanghanxy.
- Embedding fasttext. Disumbangkan oleh Xiongyifan. Dapat meningkatkan F1 sebesar 1% (dilaporkan oleh Xiongyifan).