Repositori ini berisi implementasi dari beberapa makalah terpenting untuk menjawab pertanyaan. Implementasinya dalam bentuk tutorial dan kira -kira anotasi dari makalah tersebut. Repositori ini mungkin bermanfaat bagi mereka yang mengetahui dasar -dasar pembelajaran mendalam dan NLP, ingin memulai dengan membaca makalah yang sedikit kompleks dan melihat bagaimana mereka diimplementasikan. Repositori ini juga mengasumsikan beberapa keakraban dengan dasar -dasar Pytorch, meskipun saya telah mencoba yang terbaik untuk memecah semuanya secara sederhana.
Menjawab pertanyaan adalah tugas penting berdasarkan kecerdasan sistem NLP dan AI secara umum dapat dinilai. Sistem QA diberikan paragraf pendek atau konteks tentang beberapa topik dan ditanya beberapa pertanyaan berdasarkan bagian tersebut. Jawaban atas pertanyaan -pertanyaan ini adalah rentang konteks, yaitu mereka tersedia secara langsung dalam bagian tersebut. Untuk melatih model seperti itu, kami menggunakan dataset pasukan.
Buku catatan bernama "Pipa preprocessing NLP untuk QA" berisi semua kode preprocessing yang telah saya tulis. Kode preprocessing tidak menggunakan perpustakaan tingkat tinggi dan saya telah menulis semua fungsi dari awal. Ini hanya menggunakan spacy untuk tokenisasi. Fungsi yang diimplementasikan di sini umum untuk banyak tugas NLP dan karenanya mungkin berguna bagi seseorang yang baru memulai. Misalnya: Membuat kosa kata, matriks berat untuk embeddings pretrained, dataset/datasoaders dll. Di belakang, menggunakan beberapa perpustakaan tingkat tinggi seperti TorchText akan menjadi ide yang lebih baik dan saya saat ini sedang mengerjakan hal yang sama.
Semua buku catatan didasarkan pada pendekatan ini. Pada akhirnya, membangun jaring saraf adalah tentang bekerja dengan tensor. Mengetahui bentuk dan isi setiap tensor adalah sesuatu yang saya temukan sangat berguna saat belajar. Oleh karena itu, setelah setiap baris kode, saya telah mengomentari bentuk tensor dan perubahan yang terjadi karena transformasi dalam kode. Ini membuat proses memahami apa yang terjadi di jaring saraf lebih intuitif.
Saya tidak memiliki akses tak terbatas ke GPU yang lebih cepat. Model -model di bawah ini telah dilatih dengan menyewa GPU di Vast.ai. Saya menggunakan GTX 1080 Ti untuk sebagian besar percobaan saya.
Dalam buku catatan pertama, kami menerapkan model yang relatif sederhana yang melibatkan LSTM multi-lapisan dan perhatian bilinear. Detail dan intuisi setiap lapisan/komponen dijelaskan sebelum melompat ke kode. Model ini sangat mirip dengan yang dibahas dalam makalah ini dan juga memiliki penulis pertama yang sama: Danqi Chen. Model kedua juga dikenal sebagai "pembaca Stanfor yang penuh perhatian". Model yang diimplementasikan dalam buku catatan sedikit canggih dari ini. Hasil pada set dev yang diperoleh adalah:
| Zaman | Em | F1 |
|---|---|---|
| 5 | 56.4 | 68.2 |
Saya akan melatih ini lebih banyak untuk meningkatkan hasil dan akan segera memperbaruinya.
Selanjutnya, kami beralih ke kertas yang sedikit lebih kompleks. Makalah ini meningkatkan hasil yang diperoleh dari makalah sebelumnya. Model yang diimplementasikan di sini tidak seperti yang sebelumnya adalah arsitektur hierarkis multi-tahap yang mewakili konteks dan kueri di berbagai tingkat granularitas. Makalah ini juga melibatkan kekambuhan karena secara luas menggunakan LSTM dan mekanisme perhatian tanpa memori yang bersifat dua arah. Buku catatan ini membahas secara rinci tentang beberapa teknik NLP penting seperti embeddings karakter , jaringan jalan raya . Hasil di set dev:
| Zaman | Em | F1 |
|---|---|---|
| 5 | 60.4 | 70.1 |
Akhirnya, kami menjauh dari kekambuhan dan hanya menggunakan perhatian dan konvolusi diri. Makalah ini menarik inspirasi dari "perhatian adalah yang Anda butuhkan". Motivasi utama di balik desain model adalah: Convolution menangkap struktur lokal teks, sementara perhatian diri mempelajari interaksi global antara setiap pasangan kata. Tutorial ini menjelaskan topik-topik seperti perhatian diri , dan konvolusi yang dapat dipisahkan secara mendalam . Hasil di set dev:
| Zaman | Em | F1 |
|---|---|---|
| 3 | * | 36.6 |
Saya saat ini melatih model ini. Saat ini saya kekurangan waktu dan saya tidak memiliki akses ke GPU yang lebih cepat. Melatih ini untuk 1 zaman membutuhkan waktu sekitar 1 jam di GTX 1080 Ti.
Saya bukan ahli. Motif utama saya di balik proyek ini adalah belajar tentang domain NLP. Jika Anda menemukan kesalahan konseptual atau konyol, silakan buat masalah dan saya akan mencoba yang terbaik untuk memperbaikinya dengan cepat. Kontribusi lain juga diterima. Jika Anda melatih model apa pun dan mendapatkan hasil yang lebih baik, silakan buat PR. Jika Anda tertarik untuk menerapkan lebih banyak makalah di domain ini dan ingin menambahkannya ke repositori ini, saya akan dengan senang hati membantu. Meskipun saat ini saya kekurangan waktu, saya akan secara aktif mempertahankan repositori ini.