Dalam repositori ini kami melatih tiga model bahasa di corpus Canonical Penn Treebank (PTB). Korpus ini dibagi menjadi satu set pelatihan dan validasi masing -masing sekitar 929K dan 73K token. Kami menerapkan (1) model trigram tradisional dengan interpolasi linier, (2) model bahasa probabilistik saraf seperti yang dijelaskan oleh (Bengio et al., 2003), dan (3) sebuah unit saraf berulang (RNN) yang terdaftar dengan unit memori jangka panjang (LSTM) (Zaremba et al., 2015). Kami juga bereksperimen dengan serangkaian modifikasi pada model LSTM dan mencapai kebingungan 92,9 pada set validasi dengan model multi-layer.
Dalam Tugas Klasifikasi Sentimen Sentimen Treebank Stanford, kami diberi kumpulan kalimat yang diambil dari ulasan film. Setiap kalimat telah ditandai sebagai positif, negatif, atau netral; Kami mengikuti (Kim, 2014) dalam menghilangkan contoh -contoh netral dan merumuskan tugas sebagai keputusan biner antara kalimat positif dan negatif.
Untuk setiap varian model, kami memformalkan prediksi
untuk test case
sebagai

Di mana
adalah fungsi aktivasi,
adalah bobot kami yang terpelajar,
adalah vektor fitur kami untuk input
, Dan
adalah vektor bias. Perhatikan bahwa dalam set masalah ini, 

untuk semua
Karena kami hanya mempertimbangkan input sentimen positif dan negatif dalam dataset SST-2. Kami menggunakan Pytorch untuk semua implementasi model, dan semua model dilatih untuk 10 zaman masing-masing menggunakan batch ukuran 10, tingkat pembelajaran 1E-4, Adam Optimizer, dan fungsi kerugian kemungkinan log negatif. Satu -satunya pengecualian untuk pengaturan ini adalah untuk Bayes naif multinomial, yang sesuai dengan satu zaman dengan parameter pembelajaran
= 1.0.
Membiarkan 

Jadilah vektor hitungan fitur untuk kasus pelatihan
dengan label klasifikasi
.
adalah himpunan fitur, dan
mewakili jumlah kemunculan fitur
dalam kasus pelatihan
. Tentukan vektor hitungan
sebagai
=
+
, untuk parameter smoothing
. Kami mengikuti Wang dan Manning dalam binarisasi penghitungan;
= 
. Berkenaan dengan Persamaan (1),
adalah rasio log-count antara jumlah contoh positif dan negatif,
= log (
/
) Di mana
Dan
adalah jumlah kasus pelatihan positif dan negatif dalam dataset pelatihan,
adalah jumlah kejadian input
, Dan
adalah fungsi indikator biner yang memetakan
ke 1 jika lebih besar dari 0 dan 0 sebaliknya. Kami hanya menganggap unigram sebagai fitur.
Kita belajar berat dan bias matriks
Dan
sedemikian untuk mengoptimalkan

Di mana
adalah
-Kektor dimensi yang mewakili jumlah unigram tas-of-word untuk setiap sampel pelatihan. Dalam implementasi kami, kami mewakili
Dan
dengan satu lapisan yang terhubung sepenuhnya, yang memetakan langsung ke lapisan output dua unit di bawah aktivasi sigmoid.
Dalam arsitektur cbow, setiap kata dalam input kalimat dengan panjang kata
dipetakan ke a
Vektor embedding -dimensional. Vektor embedding untuk semua kata dirata -rata untuk menghasilkan vektor fitur tunggal
Itu mewakili seluruh input. Secara khusus,

Di mana 

Dan 

, Dan
=
untuk semua
adalah dimensi dari penyematan kalimat dan embeddings kata. Pengkodean ini
kemudian diteruskan ke satu lapisan yang sepenuhnya terhubung sepenuhnya yang memetakan langsung ke dua unit output, mewakili kelas output, di bawah aktivasi Softmax.
Membiarkan 

jadilah
vektor kata -dimensi sesuai dengan
Kata -TH dalam kalimat input. Setelah memadukan semua kalimat dalam batch input dengan panjang yang sama
, Di mana
adalah kalimat panjang maksimum dari semua kalimat dalam batch, setiap kalimat kemudian diwakili sebagai

Di mana
adalah operasi gabungan. Membiarkan
mewakili gabungan kata -kata
,
, ...,
. Dalam jaringan saraf konvolusional, kami menerapkan operasi konvolusi 

dengan ukuran filter
Untuk menghasilkan fitur, di mana ukuran filter secara efektif ukuran jendela kata untuk berkumpul. Membiarkan
menjadi fitur yang dihasilkan oleh operasi ini. Kemudian

Di mana
adalah istilah bias dan
adalah fungsi unit linier yang diperbaiki (RELU). Menerapkan ukuran panjang filter
Di semua jendela yang mungkin dari kata -kata dalam kalimat input kami menghasilkan peta fitur

Dalam implementasi kami, kami menghidupkan ukuran filter 

dan kemudian menggabungkan fitur masing -masing
menjadi satu vektor. Kami menerapkan operasi pengumpulan max-over-time (Collobert et al, 2011) untuk vektor peta fitur gabungan ini, dilambangkan
, dan dapatkan
= MAX (
). Kami kemudian menerapkan putus sekolah dengan
= 0,50 hingga
Sebagai pengukuran regularisasi terhadap overfitting, masukkan ini ke lapisan yang sepenuhnya terhubung dan menghitung softmax di atas output.
Akhirnya, kami juga menerapkan serangkaian modifikasi pada arsitektur CNN untuk memberikan sedikit peningkatan kinerja pada dataset SST-2. Dalam implementasi ini, kami menggunakan vektor pra-terlatih sarung tangan Stanford (Pennington et al., 2014), kami membuat perubahan ini:
Mengikuti (Kim, 2014), kami menggunakan dua salinan tabel embedding kata selama langkah-langkah konvolusi dan pemecahan maksimal-satu yang non-statis, atau diperbarui selama pelatihan sebagai modul reguler dalam model, dan yang lain dihilangkan dari pengoptimal dan dipertahankan sebagai statis selama pelatihan. Di lintasan depan model, dua set embeddings ini digabungkan bersama -sama di sepanjang dimensi "saluran", dan kemudian diteruskan ke tiga lapisan konvolusional sebagai tensor tunggal, dengan dua nilai untuk masing -masing 300 dimensi dalam model sarung tangan.
Setelah memproduksi vektor fitur gabungan yang mewakili fitur-fitur yang dikelilingi maks dari tiga kernel konvolusional, kami cukup menambahkan jumlah kata non-padded dari input sebagai dimensi tambahan tunggal, menghasilkan tensor 301-dimensi yang kemudian dipetakan ke output 2 unit. Dari sudut pandang teknik, kami menemukan bahwa ini sedikit meningkatkan kinerja pada dataset SST-2, di mana, rata-rata, kalimat positif sedikit lebih lama dari yang negatif-19,41 kata versus 19,17. Tidak jelas apakah ini akan berlaku di berbagai set data, atau jika spesifik untuk SST-2. (Meskipun juga tidak sepenuhnya jelas bahwa itu tidak, dan tampaknya menyiratkan pertanyaan corpus-linguistik yang menarik-adalah kalimat "positif" umumnya lebih lama dari yang "negatif"?)
Selain dua perubahan yang dijelaskan di atas, kami juga bereksperimen dengan berbagai modifikasi lain pada arsitektur CNN, termasuk:
Menggabungkan model CBOW dengan arsitektur CNN dengan menggabungkan vektor CNN maxpooled dengan vektor CBOW rata -rata sebelum memetakan ke unit output akhir.
Menggantikan embeddings sarung tangan dengan embeddings googlenews (Mikolov et al., 2013). Gagasan ini berasal dari pemikiran bahwa mungkin ada beberapa kekhususan domain yang berguna untuk PTB karena embeddings ini dilatih pada artikel berita.
Diimplementasikan “multi-channel” embeddings seperti yang dijelaskan oleh (Kim, 2014) dalam konteks arsitektur CNN. Alih-alih hanya menggunakan satu lapisan embeddings yang diperbarui selama pelatihan, matriks bobot pra-terlatih disalin menjadi dua lapisan embedding terpisah: satu yang diperbarui selama pelatihan, dan satu lagi yang dihilangkan dari pengoptimal dan dibiarkan tetap tidak berubah selama pelatihan. Selama kata-kata lulus ke depan, indeks dipetakan ke setiap tabel secara terpisah, dan kemudian kedua tensor digabungkan sepanjang dimensi embedding untuk menghasilkan tensor embedding tunggal, 600-dimensi untuk setiap token.
Bereksperimen dengan pendekatan yang berbeda untuk batching. Alih -alih memodelkan corpus sebagai urutan tunggal yang tidak terputus selama pelatihan (seperti dengan BPTTIterator Torchtext), kami mencoba membagi korpus menjadi kalimat individu dan kemudian menghasilkan kasus pelatihan terpisah untuk setiap token dalam setiap kalimat. Misalnya, untuk kalimat "Saya suka kucing hitam" kami menghasilkan lima konteks:
A. “ <SOS> i”
B. “ <SOS> saya suka”
C. “ <SOS> Saya suka hitam”
D. “ <SOS> Saya suka kucing hitam”
e. “ <SOS> Saya suka kucing hitam <EOS> ”
Dan model dilatih untuk memprediksi token terakhir dalam setiap konteks pada langkah waktu t dari token t -1 pertama. Kami menggunakan fungsi Pytorch's pack_padded_sequence untuk menangani input panjang variabel ke LSTM. Secara praktis, ini menarik karena memudahkan untuk merekayasa berbagai fitur yang lebih luas dari konteks sebelum kata -misalnya, menjadi mudah untuk mengimplementasikan LSTM dua arah dengan melewati lewat ke depan dan ke belakang atas konteks T -1, yang, sepengetahuan kita, akan sulit atau tidak mungkin di bawah rezim pelatihan asli yang ditegakkan oleh BPTTIterator . Kami menyadari setelah mencoba ini, bahwa itu tidak akan pernah kompetitif dengan representasi kontinu BPTTIterator dari korpus karena kalimat dalam korpus dikelompokkan berdasarkan artikel –- dan dengan demikian juga pada tingkat tematik / konseptual. Ini berarti bahwa model dapat mempelajari informasi yang berguna melintasi batasan kalimat tentang jenis kata apa yang harus terjadi selanjutnya.
Bereksperimen dengan strategi regularisasi yang berbeda, seperti memvariasikan persentase putus sekolah, menerapkan putus sekolah ke lapisan embedding awal, dll.
Tak satu pun dari perubahan ini meningkat pada lapisan tunggal awal, 1000 unit LSTM. Model berkinerja terbaik kami adalah yang dijelaskan dalam Bagian 3.4. Kemarahan yang kami capai dengan masing -masing model Bagian 3 kami dijelaskan pada Tabel 1.
| Model | Kebingungan |
|---|---|
| Trigram interpolasi linier | 178.03 |
| Model Bahasa Saraf (5-gram) | 162.2 |
| 1-lapis LSTM | 101.5 |
| 3-lapis LSTM + Koneksi | 92.9 |
Meskipun LSTM multi-layer dengan koneksi mengalahkan baseline LSTM sederhana, kami tidak dapat mereplikasi kinerja kebingungan validasi 78.4 yang dijelaskan oleh (Zaremba et al., 2015) menggunakan korpus yang sama dan arsitektur serupa. Yaitu, saat menggunakan konfigurasi yang dijelaskan dalam makalah (arsitektur 2-layer, 650- dan 1500 unit), model kami overfit dalam 5-6 zaman, bahkan ketika menerapkan putus sekolah dengan cara yang cocok dengan pendekatan yang dijelaskan dalam kertas. Sebaliknya, (Zaremba et al., 2015) menyebutkan pelatihan sebanyak 55 zaman.)
Kami melatih empat kelas model - model trigram tradisional dengan interpolasi linier, dengan bobot yang dipelajari oleh maksimalisasi ekspektasi; model bahasa jaringan saraf sederhana berikut (Bengio et al., 2003); garis dasar LSTM tunggal; dan ekstensi untuk model ini yang menggunakan tiga lapisan dengan ukuran berbeda, melewatkan koneksi untuk dua lapisan pertama, dan regularisasi seperti yang dijelaskan oleh (Zaremba et al., 2015). Model akhir mencapai kebingungan 92,9, dibandingkan dengan 78,4 dan 82,7 yang dilaporkan oleh (Zaremba et al., 2015) menggunakan hyperparameters yang kira -kira setara.
Y. Bengio, R. Ducharme, P. Vincent, C. Jauvin. “Model Bahasa Probabilistik Saraf.” Jurnal Penelitian Pembelajaran Mesin 3, Halaman 1137–1155. 2003.
D. Jurafsky. “Pemodelan Bahasa: Pengantar N-Grams.” Kuliah. Universitas Stanford CS124. 2012.
Y. Kim. "Jaringan Saraf Konvolusional untuk Klasifikasi Kalimat." Prosiding Konferensi 2014 tentang metode empiris dalam pemrosesan bahasa alami (EMNLP), halaman 1746–1751. 2014.
T. Mikolov, K. Chen, G. Corrado, J. Dean. “Estimasi Efisien Representasi Kata di Ruang Vektor.” ARXIV Preprint ARXIV: 1301.3781. 2013.
J. Pennington, R. Socher, C. Manning. “Sarung Tangan: Vektor Global untuk Representasi Kata.” Prosiding Konferensi 2014 tentang metode empiris dalam pemrosesan bahasa alami (EMNLP), halaman 1532-1543. 2014.
W. Zaremba, I. Sutskever, O. Vinyals. 2015. “Regregiglek Network Recurrent.” ARXIV Preprint ARXIV: 1409.2329. 2015.