AI-For-Beginners/translations/ms/lessons/5-NLP/16-RNN/README.md

8.7 KiB
Raw Blame History

Rangkaian Neural Recurrent

Kuis pra-kuliah

Dalam bagian sebelumnya, kita telah menggunakan representasi semantik yang kaya dari teks dan pengklasifikasi linier sederhana di atas embedding. Apa yang dilakukan arsitektur ini adalah menangkap makna agregat kata-kata dalam sebuah kalimat, tetapi tidak mempertimbangkan urutan kata, karena operasi agregasi di atas embedding menghilangkan informasi ini dari teks asli. Karena model-model ini tidak dapat memodelkan urutan kata, mereka tidak dapat menyelesaikan tugas yang lebih kompleks atau ambigu seperti generasi teks atau menjawab pertanyaan.

Untuk menangkap makna urutan teks, kita perlu menggunakan arsitektur jaringan saraf lain, yang disebut rangkaian neural recurrent, atau RNN. Dalam RNN, kita mengalirkan kalimat kita melalui jaringan satu simbol pada satu waktu, dan jaringan menghasilkan status tertentu, yang kemudian kita kirimkan kembali ke jaringan dengan simbol berikutnya.

RNN

Gambar oleh penulis

Mengingat urutan input token X0,...,Xn, RNN menciptakan urutan blok jaringan saraf, dan melatih urutan ini dari awal hingga akhir menggunakan backpropagation. Setiap blok jaringan mengambil pasangan (Xi,Si) sebagai input, dan menghasilkan Si+1 sebagai hasil. Status akhir Sn atau (output Yn) masuk ke pengklasifikasi linier untuk menghasilkan hasil. Semua blok jaringan berbagi bobot yang sama, dan dilatih dari awal hingga akhir menggunakan satu kali backpropagation.

Karena vektor status S0,...,Sn dikirim melalui jaringan, ia dapat mempelajari ketergantungan berurutan antara kata-kata. Misalnya, ketika kata not muncul di suatu tempat dalam urutan, ia dapat belajar untuk menegasikan elemen tertentu dalam vektor status, yang menghasilkan negasi.

Karena bobot semua blok RNN pada gambar di atas dibagikan, gambar yang sama dapat direpresentasikan sebagai satu blok (di sebelah kanan) dengan loop umpan balik berulang, yang mengirimkan status output jaringan kembali ke input.

Anatomi Sel RNN

Mari kita lihat bagaimana sel RNN sederhana diorganisasi. Ia menerima status sebelumnya Si-1 dan simbol saat ini Xi sebagai input, dan harus menghasilkan status output Si (dan, terkadang, kita juga tertarik pada output lain Yi, seperti dalam kasus dengan jaringan generatif).

Sel RNN sederhana memiliki dua matriks bobot di dalamnya: satu mengubah simbol input (sebut saja W), dan satu lagi mengubah status input (H). Dalam hal ini, output jaringan dihitung sebagai σ(W×Xi+H×Si-1+b), di mana σ adalah fungsi aktivasi dan b adalah bias tambahan.

Anatomi Sel RNN

Gambar oleh penulis

Dalam banyak kasus, token input dikirim melalui lapisan embedding sebelum masuk ke RNN untuk mengurangi dimensi. Dalam hal ini, jika dimensi vektor input adalah emb_size, dan vektor status adalah hid_size - ukuran W adalah emb_size×hid_size, dan ukuran H adalah hid_size×hid_size.

Memori Jangka Panjang Pendek (LSTM)

Salah satu masalah utama RNN klasik adalah masalah gradien yang menghilang. Karena RNN dilatih dari awal hingga akhir dalam satu kali backpropagation, ia mengalami kesulitan dalam menyebarkan kesalahan ke lapisan pertama jaringan, dan dengan demikian jaringan tidak dapat mempelajari hubungan antara token yang jauh. Salah satu cara untuk menghindari masalah ini adalah dengan memperkenalkan manajemen status eksplisit dengan menggunakan yang disebut gerbang. Ada dua arsitektur terkenal dari jenis ini: Memori Jangka Panjang Pendek (LSTM) dan Unit Relay Tergerbang (GRU).

Gambar yang menunjukkan contoh sel memori jangka panjang pendek

Sumber gambar TBD

Jaringan LSTM diorganisasi dengan cara yang mirip dengan RNN, tetapi ada dua status yang diteruskan dari lapisan ke lapisan: status aktual C, dan vektor tersembunyi H. Di setiap unit, vektor tersembunyi Hi digabungkan dengan input Xi, dan mereka mengontrol apa yang terjadi pada status C melalui gerbang. Setiap gerbang adalah jaringan saraf dengan aktivasi sigmoid (output dalam rentang [0,1]), yang dapat dianggap sebagai masker bitwise saat dikalikan dengan vektor status. Ada gerbang berikut (dari kiri ke kanan pada gambar di atas):

  • Gerbang lupa mengambil vektor tersembunyi dan menentukan komponen mana dari vektor C yang perlu kita lupakan, dan mana yang harus diteruskan.
  • Gerbang input mengambil beberapa informasi dari vektor input dan tersembunyi dan menyisipkannya ke dalam status.
  • Gerbang output mengubah status melalui lapisan linier dengan aktivasi tanh, kemudian memilih beberapa komponen menggunakan vektor tersembunyi Hi untuk menghasilkan status baru Ci+1.

Komponen dari status C dapat dianggap sebagai beberapa bendera yang dapat diaktifkan dan dinonaktifkan. Misalnya, ketika kita menemui nama Alice dalam urutan, kita mungkin ingin menganggap bahwa itu merujuk pada karakter perempuan, dan mengangkat bendera dalam status bahwa kita memiliki kata benda perempuan dalam kalimat. Ketika kita lebih lanjut menemui frasa dan Tom, kita akan mengangkat bendera bahwa kita memiliki kata benda jamak. Dengan demikian, dengan memanipulasi status kita, kita dapat menjaga jejak sifat-sifat tata bahasa dari bagian kalimat.

Sumber yang sangat baik untuk memahami bagian dalam LSTM adalah artikel hebat ini Memahami Jaringan LSTM oleh Christopher Olah.

RNN Dua Arah dan Multilapis

Kita telah membahas jaringan berulang yang beroperasi dalam satu arah, dari awal urutan hingga akhir. Ini terlihat alami, karena menyerupai cara kita membaca dan mendengarkan ucapan. Namun, karena dalam banyak kasus praktis kita memiliki akses acak ke urutan input, mungkin masuk akal untuk menjalankan komputasi berulang dalam kedua arah. Jaringan semacam itu disebut RNN dua arah. Ketika berurusan dengan jaringan dua arah, kita memerlukan dua vektor status tersembunyi, satu untuk setiap arah.

Jaringan berulang, baik satu arah maupun dua arah, menangkap pola tertentu dalam urutan, dan dapat menyimpannya ke dalam vektor status atau meneruskannya ke output. Seperti pada jaringan konvolusional, kita dapat membangun lapisan berulang lain di atas yang pertama untuk menangkap pola tingkat tinggi dan membangun dari pola tingkat rendah yang diekstrak oleh lapisan pertama. Ini membawa kita pada gagasan RNN multilapis yang terdiri dari dua atau lebih jaringan berulang, di mana output dari lapisan sebelumnya diteruskan ke lapisan berikutnya sebagai input.

Gambar yang menunjukkan RNN multilapis memori jangka pendek

Gambar dari pos yang luar biasa ini oleh Fernando López

✍️ Latihan: Embedding

Lanjutkan pembelajaran Anda di notebook berikut:

Kesimpulan

Dalam unit ini, kita telah melihat bahwa RNN dapat digunakan untuk klasifikasi urutan, tetapi sebenarnya, mereka dapat menangani banyak tugas lainnya, seperti generasi teks, penerjemahan mesin, dan lainnya. Kita akan mempertimbangkan tugas-tugas tersebut di unit berikutnya.

🚀 Tantangan

Baca beberapa literatur tentang LSTM dan pertimbangkan aplikasinya:

Kuis pasca-kuliah

Tinjauan & Studi Mandiri

Tugas: Notebook

Penafian:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.