Memperkenalkan PyTorch: Pembelajaran Jauh dalam Pemrosesan Bahasa Alami

gambar Hai, habrozhiteli! Natural Language Processing (NLP) adalah tugas yang sangat penting di bidang kecerdasan buatan. Implementasi yang berhasil memungkinkan produk-produk seperti Amazon Amazon dan Google Translate. Buku ini akan membantu Anda mempelajari PyTorch, perpustakaan pembelajaran yang mendalam untuk Python, salah satu alat terkemuka untuk ilmuwan data dan pengembang perangkat lunak NLP. Delip Rao dan Brian McMahan akan memberi Anda kecepatan dengan NLP dan algoritma pembelajaran yang mendalam. Dan tunjukkan bagaimana PyTorch memungkinkan Anda untuk mengimplementasikan aplikasi yang menggunakan analisis teks.

Dalam buku ini • Grafik komputasi dan paradigma belajar dengan seorang guru. • Dasar-dasar pustaka PyTorch yang dioptimalkan untuk bekerja dengan tensor. • Tinjauan umum konsep dan metode NLP tradisional. • Jaringan saraf proaktif (multilayer perceptron dan lainnya). • Peningkatan RNN dengan memori jangka pendek jangka panjang (LSTM) dan blok perulangan terkontrol. • Prediksi dan model transformasi urutan. • Pola desain sistem NLP yang digunakan dalam produksi.

Kutipan. Kata bersarang dan jenis lainnya


Ketika memecahkan masalah pemrosesan teks dalam bahasa alami, kita harus berurusan dengan berbagai jenis tipe data diskrit. Contoh yang paling jelas adalah kata-kata. Banyak kata (kamus) tentunya. Di antara contoh lain, simbol, label bagian ucapan, entitas bernama, tipe nama entitas, atribut yang terkait dengan penguraian, posisi dalam katalog produk, dll. Faktanya, setiap fitur input diambil dari yang terbatas (atau tidak terbatas, tetapi dihitung) set.

Dasar keberhasilan penerapan pembelajaran dalam di NLP adalah representasi tipe data diskrit (misalnya, kata-kata) dalam bentuk vektor padat. Istilah "representasi pembelajaran" dan "menanamkan" berarti belajar untuk menampilkan / mewakili dari tipe data diskrit ke titik dalam ruang vektor. Jika jenis diskrit adalah kata-kata, maka representasi vektor padat disebut kata embedding. Kita telah melihat contoh metode bersarang berdasarkan jumlah kejadian, misalnya, TF-IDF ("frekuensi istilah adalah frekuensi terbalik dari dokumen") di bab 2. Dalam bab ini, kita akan fokus pada metode bersarang berbasis pelatihan dan metode bersarang berbasis prediksi (lihat artikel oleh Baroni et al. (Baroni et al., 2014]), di mana pelatihan kinerja dilakukan dengan memaksimalkan fungsi objektif untuk tugas belajar tertentu; misalnya, memprediksi kata berdasarkan konteks. Metode investasi berbasis pelatihan saat ini menjadi standar karena penerapannya yang luas dan efisiensi tinggi. Bahkan, penyisipan kata-kata dalam masalah NLP begitu luas sehingga mereka disebut "sriracha of NLP", karena dapat diharapkan bahwa penggunaannya dalam tugas apa pun akan meningkatkan efisiensi solusi. Tetapi nama panggilan ini sedikit menyesatkan, karena, tidak seperti syraci, lampiran biasanya tidak ditambahkan ke model setelah fakta, tetapi merupakan komponen dasarnya.

Dalam bab ini, kita akan membahas representasi vektor dalam kaitannya dengan embeddings kata: metode embedding kata, metode optimasi embedding kata untuk tugas mengajar dengan dan tanpa guru, metode visualisasi embedding visual, dan juga metode kombinasi embedding kata untuk kalimat dan dokumen. Namun, jangan lupa bahwa metode yang dijelaskan di sini berlaku untuk semua jenis diskrit.

Mengapa mengikuti pelatihan investasi?


Dalam bab-bab sebelumnya, kami telah menunjukkan kepada Anda metode yang biasa untuk membuat representasi kata-kata vektor. Yaitu, Anda belajar cara menggunakan representasi kesatuan - vektor dengan panjang yang cocok dengan ukuran kamus, dengan nol di semua posisi, kecuali untuk yang berisi nilai 1 yang sesuai dengan kata tertentu. Selain itu, Anda bertemu dengan representasi dari jumlah kemunculan - vektor dengan panjang yang sama dengan jumlah kata unik dalam model, yang berisi jumlah kemunculan kata dalam kalimat pada posisi yang sesuai. Representasi semacam itu juga disebut representasi distribusional, karena konten / maknanya yang bermakna tercermin oleh beberapa dimensi vektor. Sejarah representasi distributif telah berlangsung selama beberapa dekade (lihat artikel Firth [Firth, 1935]); mereka sangat baik untuk banyak model pembelajaran mesin dan jaringan saraf. Representasi ini dibangun secara heuristik1, dan tidak dilatih tentang data.

Representasi terdistribusi mendapatkan namanya karena kata-kata di dalamnya diwakili oleh vektor padat dari dimensi yang jauh lebih kecil (misalnya, d = 100 bukannya ukuran seluruh kamus, yang dapat urutan gambar ), dan makna serta sifat-sifat lain kata tersebut didistribusikan ke beberapa dimensi dari vektor padat ini.

Representasi padat dimensi rendah yang diperoleh sebagai hasil pelatihan memiliki beberapa keunggulan dibandingkan dengan vektor kesatuan yang mengandung jumlah kemunculan yang kami temui dalam bab-bab sebelumnya. Pertama, pengurangan dimensi efisien secara komputasi. Kedua, representasi berdasarkan jumlah kejadian menyebabkan vektor dimensi tinggi dengan pengkodean berlebihan dari informasi yang sama dalam dimensi yang berbeda, dan kekuatan statistik mereka tidak terlalu besar. Ketiga, terlalu banyak dimensi input data dapat menyebabkan masalah dalam pembelajaran mesin dan optimisasi - sebuah fenomena yang sering disebut kutukan dimensi ( http://bit.ly/2CrhQXm ). Untuk mengatasi masalah ini dengan dimensionalitas, berbagai metode untuk mengurangi dimensi digunakan, misalnya, dekomposisi nilai singular (SVD) dan metode analisis komponen utama (PCA), tetapi, ironisnya, pendekatan ini tidak berskala baik pada dimensi urutan jutaan ( kasus khas dalam NLP). Keempat, representasi yang dipelajari dari (atau dipasang berdasarkan) data khusus untuk masalah secara optimal cocok untuk tugas khusus ini. Dalam kasus algoritma heuristik seperti TF-IDF dan metode reduksi dimensi seperti SVD, tidak jelas apakah fungsi optimalisasi objektif cocok untuk tugas tertentu dengan metode penyematan ini.

Efisiensi investasi


Untuk memahami bagaimana embeddings bekerja, pertimbangkan contoh vektor kesatuan dengan mana matriks berat dalam lapisan linier dikalikan, seperti yang ditunjukkan pada Gambar. 5.1. Dalam bab 3 dan 4, ukuran vektor kesatuan muncul bersamaan dengan ukuran kamus. Vektor disebut kesatuan karena mengandung 1 pada posisi yang sesuai dengan kata tertentu, sehingga menunjukkan keberadaannya.

gambar

Fig. 5.1. Contoh perkalian matriks untuk kasus vektor kesatuan dan matriks bobot lapisan linier. Karena vektor kesatuan berisi semua nol dan hanya satu unit, posisi unit ini memainkan peran operator pilihan ketika mengalikan matriks. Ini ditunjukkan pada gambar sebagai penggelapan sel-sel dari matriks berat dan vektor yang dihasilkan. Meskipun metode pencarian ini berfungsi, metode ini membutuhkan banyak sumber daya komputasi dan tidak efisien, karena vektor kesatuannya dikalikan dengan masing-masing angka dalam matriks bobot dan jumlahnya dihitung dalam baris

Menurut definisi, jumlah baris dari matriks bobot lapisan linear yang menerima vektor kesatuan pada input harus sama dengan ukuran vektor kesatuan ini. Saat mengalikan matriks, seperti yang ditunjukkan pada Gambar. 5.1, vektor yang dihasilkan sebenarnya adalah string yang bersesuaian dengan elemen bukan nol dari vektor kesatuan. Berdasarkan pengamatan ini, Anda dapat melewati langkah multiplikasi dan menggunakan nilai integer sebagai indeks untuk mengekstrak baris yang diinginkan.

Satu catatan terakhir tentang kinerja investasi: terlepas dari contoh pada Gambar 5.1, di mana dimensi matriks bobot bertepatan dengan dimensi vektor kesatuan input, ini jauh dari selalu terjadi. Bahkan, lampiran sering digunakan untuk mewakili kata-kata dari ruang dimensi yang lebih rendah daripada yang diperlukan jika menggunakan vektor kesatuan atau mewakili jumlah kemunculan. Ukuran investasi tipikal dalam artikel ilmiah adalah dari 25 hingga 500 pengukuran, dan pilihan nilai tertentu dikurangi menjadi jumlah memori GPU yang tersedia.

Pendekatan Pembelajaran Lampiran


Tujuan bab ini bukan untuk mengajarkan Anda teknik-teknik khusus untuk menginvestasikan kata-kata, tetapi untuk membantu Anda mengetahui apa investasi itu, bagaimana dan di mana mereka dapat diterapkan, cara terbaik untuk menggunakannya dalam model, dan apa keterbatasan mereka. Faktanya adalah bahwa dalam praktiknya orang jarang harus menulis algoritma pembelajaran baru untuk embeddings kata. Namun, dalam ayat ini kami akan memberikan tinjauan singkat tentang pendekatan modern untuk pelatihan tersebut. Belajar dalam semua metode kata-kata bersarang dilakukan hanya dengan menggunakan kata-kata (yaitu data yang tidak berlabel), tetapi dengan seorang guru. Ini menjadi mungkin karena penciptaan tugas pengajaran tambahan dengan guru, di mana data ditandai secara implisit, karena alasan bahwa representasi yang dioptimalkan untuk menyelesaikan masalah bantu harus menangkap banyak sifat statistik dan linguistik dari corpus teks untuk membawa setidaknya beberapa manfaat. Berikut adalah beberapa contoh tugas pembantu tersebut.

  • Prediksi kata berikutnya dalam urutan kata yang diberikan. Itu juga menyandang nama masalah pemodelan bahasa.
  • Prediksikan kata yang hilang dengan kata-kata yang terletak sebelum dan sesudahnya.
  • Memprediksi kata-kata di dalam jendela tertentu, terlepas dari posisi, untuk kata yang diberikan.

Tentu saja, daftar ini tidak lengkap dan pilihan masalah tambahan tergantung pada intuisi pengembang algoritma dan biaya komputasi. Contohnya termasuk GloVe, Continuous Bag-of-Words (CBOW), Skipgrams, dll. Rinciannya dapat ditemukan di Bab 10 buku Goldberg (Goldberg, 2017), tetapi kami akan secara singkat membahas model CBOW di sini. Namun, dalam kebanyakan kasus cukup menggunakan lampiran kata yang sudah dilatih sebelumnya dan menyesuaikannya dengan tugas yang ada.

Aplikasi praktis dari lampiran kata pra-terlatih


Bagian terbesar dari bab ini, serta sisa buku ini, adalah tentang menggunakan lampiran kata yang sudah dilatih sebelumnya. Pra-dilatih menggunakan salah satu dari banyak metode yang dijelaskan di atas pada badan yang besar - misalnya, seluruh badan Google News, Wikipedia atau Common Crawl1 - lampiran kata dapat diunduh dan digunakan secara bebas. Lebih lanjut dalam bab ini, kami akan menunjukkan cara menemukan dan memuat lampiran ini dengan benar, mempelajari beberapa properti embedding kata dan memberikan contoh penggunaan embeddings kata yang telah dilatih sebelumnya dalam tugas NLP.

Unduh lampiran


Lampiran kata-kata menjadi sangat populer dan tersebar luas sehingga banyak opsi berbeda tersedia untuk diunduh, dari Word2Vec2 yang asli hingga Stanford GloVe ( https://stanford.io/2PSIvPZ ), termasuk FastText3 Facebook ( https://fasttext.cc) / ) dan banyak lainnya. Biasanya, lampiran dikirim dalam format berikut: setiap baris dimulai dengan kata / jenis diikuti oleh urutan angka (mis. Representasi vektor). Panjang urutan ini sama dengan dimensi presentasi (dimensi lampiran). Dimensi investasi biasanya dari urutan ratusan. Jumlah jenis token paling sering sama dengan ukuran kamus dan jumlahnya sekitar satu juta. Misalnya, berikut adalah tujuh dimensi pertama vektor anjing dan kucing dari GloVe.

gambar

Untuk pemuatan dan penanganan lampiran yang efisien, kami menguraikan kelas pembantu PreTrainedEmbeddings (Contoh 5.1). Ini membuat indeks dari semua vektor kata yang disimpan dalam RAM untuk menyederhanakan pencarian cepat dan permintaan tetangga terdekat dengan bantuan paket perkiraan tetangga terdekat, jengkel.

Contoh 5.1. Menggunakan Word Attachment yang sudah terlatih

gambar

gambar

Dalam contoh ini, kami menggunakan embedding kata GloVe. Anda perlu mengunduhnya dan membuat instance kelas PreTrainedEmbeddings, seperti yang ditunjukkan pada Input [1] dari Contoh 5.1.

Hubungan antara Lampiran Kata


Sifat utama dari embedding kata adalah pengkodean hubungan sintaksis dan semantik, yang dimanifestasikan dalam bentuk pola penggunaan kata. Misalnya, kucing dan anjing biasanya dibicarakan dengan sangat mirip (mereka mendiskusikan hewan peliharaan mereka, kebiasaan makan, dll.). Akibatnya, lampiran untuk kata-kata kucing dan anjing jauh lebih dekat satu sama lain daripada lampiran untuk nama-nama hewan lain, misalnya bebek dan gajah.

Ada banyak cara untuk mempelajari hubungan semantik yang dikodekan dalam lampiran kata. Salah satu metode yang paling populer adalah dengan menggunakan tugas analogi (salah satu jenis tugas berpikir logis yang umum dalam ujian seperti SAT):

Word1: Word2 :: Word3: ______

Dalam tugas ini, perlu untuk menentukan yang keempat, mengingat hubungan antara dua yang pertama, dengan tiga kata yang diberikan. Dengan bantuan kata-kata bersarang, masalah ini dapat dikodekan secara spasial. Pertama, kurangi Word2 dari Word1. Vektor perbedaan di antara mereka mengkodekan hubungan antara Word1 dan Word2. Perbedaan ini kemudian dapat ditambahkan ke Slovo3 dan hasilnya akan menjadi vektor yang paling dekat dengan kata keempat yang hilang. Untuk menyelesaikan masalah analogi, cukup dengan menanyakan tetangga terdekat dengan indeks menggunakan vektor yang diperoleh ini. Fungsi yang sesuai ditunjukkan pada Contoh 5.2 melakukan persis apa yang dijelaskan di atas: ia menggunakan aritmatika vektor dan indeks perkiraan tetangga terdekat untuk menemukan elemen yang hilang dalam analogi.

Contoh 5.2. Memecahkan masalah analogi menggunakan embeddings kata

gambar

gambar


Menariknya, dengan menggunakan analogi verbal yang sederhana, orang dapat menunjukkan bagaimana embedding kata dapat menangkap berbagai hubungan semantik dan sintaksis (Contoh 5.3).

Contoh 5.3 Pengodean dengan bantuan embeddings kata dari banyak koneksi linguistik pada contoh tugas pada analogi SAT

gambar

gambar

Meskipun tampaknya koneksi jelas mencerminkan fungsi bahasa, tidak semuanya begitu sederhana. Seperti yang ditunjukkan Contoh 5.4, koneksi dapat didefinisikan secara tidak tepat karena vektor kata ditentukan berdasarkan kemunculan bersama mereka.

Contoh 5.4. Sebuah contoh yang menggambarkan bahaya pengkodean makna kata-kata berdasarkan pada kejadian bersama - kadang-kadang tidak berhasil!

gambar

Contoh 5.5 mengilustrasikan salah satu kombinasi yang paling umum saat mengkode peran gender.

Contoh 5.5 Hati-hati dengan atribut yang dilindungi, seperti jenis kelamin, yang dikodekan oleh lampiran kata. Mereka dapat menyebabkan bias yang tidak diinginkan dalam model masa depan.

gambar

Ternyata cukup sulit untuk membedakan antara pola bahasa dan prasangka budaya yang mengakar. Sebagai contoh, dokter sama sekali tidak selalu laki-laki, dan perawat tidak selalu perempuan, tetapi prasangka semacam itu begitu gigih sehingga tercermin dalam bahasa, dan sebagai hasilnya, dalam kata vektor, seperti ditunjukkan dalam Contoh 5.6.

Contoh 5.6. Prasangka budaya “dijahit” menjadi vektor kata

gambar

Kita tidak boleh lupa tentang kemungkinan kesalahan sistematis dalam investasi, dengan mempertimbangkan pertumbuhan popularitas dan prevalensi mereka dalam aplikasi NLP. Penghapusan kesalahan sistematis dalam kata embedding adalah bidang baru dan sangat menarik dari penelitian ilmiah (lihat artikel oleh Bolukbashi et al. [Bolukbasi et al., 2016]). Kami menyarankan Anda melihat ethicsinnlp.org di mana Anda dapat menemukan informasi terkini tentang etika lintas-bagian dan NLP.

Tentang Penulis


Delip Rao adalah pendiri perusahaan konsultan Joostware yang berbasis di San Francisco yang berspesialisasi dalam pembelajaran mesin dan penelitian NLP. Salah satu pendiri Tantangan Berita Palsu - sebuah inisiatif yang dirancang untuk mempertemukan peretas dan peneliti di bidang AI dalam tugas-tugas pengecekan fakta di media. Delip sebelumnya bekerja pada penelitian NLP terkait dan produk perangkat lunak di Twitter dan Amazon (Alexa).

Brian McMahan adalah peneliti di Wells Fargo, dengan fokus utama pada NLP. Sebelumnya bekerja di Joostware.

»Informasi lebih lanjut tentang buku ini dapat ditemukan di situs web penerbit
» Isi
» Kutipan

Kupon diskon 25% untuk penjaja - PyTorch

Setelah pembayaran versi kertas buku, sebuah buku elektronik dikirim melalui email.

Source: https://habr.com/ru/post/id475488/


All Articles