Daftar isi:
- Pengantar Perpustakaan Tensor Torch
- Grafik komputasi dan diferensiasi otomatis
- Blok bangunan pembelajaran mendalam: peta affine, non-linearitas, dan tujuan
- Optimasi dan pelatihan
- Membuat komponen jaringan di pytorch
- Contoh: Klasifikasi Tas Tas-Kata Regresi Logistik
- Word Embeddings: Encode Lexical Semantik
- Contoh: Pemodelan Bahasa N-Gram
- Latihan: Tag-of-Word Berkelanjutan untuk Belajar Kata Embeddings
- Pemodelan urutan dan jaringan memori istilah jangka panjang
- Contoh: LSTM untuk penandaan sebagian
- Latihan: menambah tagger LSTM dengan fitur tingkat karakter
- Lanjutan: Toolkit Dinamis, Pemrograman Dinamis, dan BILSTM-CRF
- Contoh: bidang acak bersyarat BI-LSTM untuk pengenalan namanya-entitas
- Latihan: Fungsi kerugian baru untuk penandaan diskriminatif
Apa tutorial ini?
Saya menulis tutorial ini karena, meskipun ada banyak tutorial lain di luar sana, mereka semua tampaknya memiliki satu dari tiga masalah:
- Mereka memiliki banyak konten pada visi komputer dan konvensi, yang tidak relevan untuk sebagian besar NLP (meskipun konvensi telah diterapkan dengan cara keren untuk masalah NLP).
- Pytorch adalah yang baru, dan begitu banyak pembelajaran mendalam untuk tutorial NLP berada dalam kerangka kerja yang lebih tua, dan biasanya tidak dalam kerangka kerja dinamis seperti Pytorch, yang memiliki rasa yang sama sekali berbeda.
- Contohnya tidak bergerak melampaui model bahasa RNN dan menunjukkan hal -hal luar biasa yang dapat Anda lakukan ketika mencoba melakukan prediksi struktur lingusit. Saya pikir ini adalah masalah, karena grafik dinamis Pytorch menjadikan prediksi struktur salah satu kekuatan terbesarnya.
Secara khusus, saya menulis tutorial ini untuk kelas pemrosesan bahasa alami di Georgia Tech, untuk memudahkan ke dalam set masalah yang saya tulis untuk kelas tentang penguraian transisi yang mendalam. Set masalah menggunakan beberapa teknik canggih. Tujuan tutorial ini adalah untuk mencakup dasar -dasarnya, sehingga siswa dapat fokus pada aspek yang lebih menantang dari masalah yang ditetapkan. Tujuannya adalah untuk memulai dengan dasar -dasar dan beralih ke prediksi struktur linguistik, yang saya rasa hampir sama sekali tidak ada dalam tutorial Pytorch lainnya. Dasar -dasar pembelajaran mendalam umum memiliki eksposisi pendek. Topik-topik yang lebih spesifik NLP menerima lebih banyak diskusi mendalam, meskipun saya telah merujuk ke sumber lain ketika saya merasa deskripsi lengkap akan menciptakan kembali roda dan mengambil terlalu banyak ruang.
Set masalah parsing ketergantungan
Seperti disebutkan di atas, berikut adalah set masalah yang melewati penerapan parser ketergantungan berkinerja tinggi di Pytorch. Saya ingin menambahkan tautan di sini karena mungkin berguna, asalkan Anda mengabaikan hal -hal yang khusus untuk kelas. Beberapa catatan:
- Ada banyak kode, jadi awal dari set masalah terutama untuk membuat orang terbiasa dengan cara kode saya mewakili data yang relevan, dan antarmuka yang perlu Anda gunakan. Sisa dari set masalah sebenarnya menerapkan komponen untuk parser. Karena kami belum pernah melakukan pembelajaran mendalam di kelas sebelumnya, saya mencoba memberikan banyak komentar dan petunjuk saat menulisnya.
- Ada tes unit untuk setiap pengiriman, yang dapat Anda jalankan dengan nosetests.
- Karena kami menggunakan masalah ini yang ditetapkan di kelas, tolong jangan memposting secara publik solusi.
- Repo yang sama memiliki beberapa catatan yang menyertakan bagian tentang penguraian ketergantungan reduksi shift-reduce, jika Anda mencari sumber tertulis untuk melengkapi set masalah.
- Tautan di atas mungkin tidak berfungsi jika diturunkan pada awal semester baru.
Referensi:
- Saya belajar banyak tentang prediksi struktur mendalam di EMNLP 2016 dari tutorial tentang Dynet ini, yang diberikan oleh Chris Dyer dan Graham Neubig dari CMU dan Yoav Goldberg dari Bar Ilan University. Dynet adalah paket yang bagus, terutama jika Anda ingin menggunakan C ++ dan menghindari pengetikan dinamis. Latihan BilstM CRF terakhir dan latihan fitur tingkat karakter adalah hal-hal yang saya pelajari dari tutorial ini.
- Buku yang bagus tentang prediksi struktur adalah prediksi struktur linguistik oleh Nuh Smith. Itu tidak menggunakan pembelajaran yang mendalam, tapi tidak apa -apa.
- Buku pembelajaran mendalam terbaik yang saya sadari adalah Deep Learning, yang oleh beberapa kontributor utama ke lapangan dan sangat komprehensif, meskipun tidak ada fokus NLP. Ini gratis secara online, tetapi layak dimiliki di rak Anda.
Latihan:
Ada beberapa latihan dalam tutorial, yang dapat mengimplementasikan model populer (CBOW) atau menambah salah satu model saya. Latihan fitur tingkat karakter terutama sangat tidak sepele, tetapi sangat berguna (saya tidak dapat mengutip angka yang tepat, tetapi saya telah menjalankan percobaan sebelumnya dan biasanya fitur tingkat karakter meningkatkan akurasi 2-3%). Karena mereka bukan latihan sederhana, saya akan segera menerapkannya sendiri dan menambahkannya ke repo.
Saran:
Harap buka masalah GitHub jika Anda menemukan kesalahan atau berpikir ada model tertentu yang akan berguna untuk ditambahkan.