Artikel ini menggunakan beberapa gambar animasi untuk menjelaskan mekanisme perhatian dengan jelas. Artikel ini juga membagikan empat arsitektur NMT yang telah muncul dalam lima tahun terakhir, dan juga memberikan penjelasan intuitif tentang beberapa konsep dalam artikel tersebut.
Dipilih dari TowardsDataScience, Penulis: Raimi Karim, partisipasi: Xuan high road.
Selama beberapa dekade, terjemahan mesin statistik telah mendominasi model terjemahan sampai munculnya terjemahan mesin saraf (NMT). NMT adalah metode terjemahan mesin yang muncul yang mencoba membangun dan melatih satu jaringan neural besar yang membaca teks masukan dan mengeluarkan terjemahan.
Penelitian perintis awal NMT berasal dari tiga makalah Kalchbrenner dan Blunsom (2013), Sutskever et al. (2014) dan Cho. Et al. (2014b). Diantaranya, kerangka yang lebih dikenal adalah urutan-ke-urutan ( seq2seq) belajar. Artikel ini menjelaskan cara membangun perhatian berdasarkan kerangka kerja seq2seq.
Gambar 0.1: seq2seq, panjang urutan input adalah 4
Dalam seq2seq, ide awalnya adalah membuat dua jaringan saraf berulang (RNN) membentuk arsitektur encoder-decoder: encoder membaca kata-kata masukan satu per satu untuk mendapatkan representasi vektor dimensi tetap, dan kemudian RNN (decoder) lainnya didasarkan pada masukan ini Ekstrak kata keluaran satu per satu.
Gambar 0.2: seq2seq, panjang urutan input 64
Masalah dengan seq2seq adalah bahwa satu-satunya informasi yang diterima decoder dari encoder adalah "status tersembunyi encoder terakhir" (dua node merah pada Gambar 0.1), yang merupakan representasi vektor yang mirip dengan ringkasan numerik dari urutan input. Oleh karena itu, untuk teks masukan yang panjang (Gambar 0.2), tidak masuk akal jika kita masih ingin dekoder menggunakan hanya representasi vektor ini (harap "cukup meringkas urutan masukan") untuk menghasilkan terjemahan. Hal ini dapat menyebabkan bencana lupa. Ada 100 kata di bagian ini. Bisakah Anda segera menerjemahkannya ke bahasa lain?
Jika kita tidak bisa melakukannya, maka kita tidak boleh terlalu kasar pada decoder. Jika Anda memberikan representasi vektor setiap langkah waktu pembuat enkode kepada decoder, bukan hanya satu representasi vektor, dapatkah Anda mendapatkan hasil terjemahan yang lebih baik?
Perkenalkan mekanisme perhatian.
Gambar 0.3: Memperkenalkan mekanisme perhatian sebagai antarmuka antara encoder dan decoder. Di sini, langkah waktu decoder pertama adalah informasi yang diterima dari encoder sebelum kata terjemahan pertama diberikan
Perhatian adalah antarmuka antara encoder dan decoder, yang memberikan decoder informasi tentang status tersembunyi dari setiap encoder (kecuali status merah tersembunyi di Gambar 0.3). Dengan pengaturan ini, model dapat secara selektif fokus pada bagian berguna dari urutan masukan untuk mempelajari keselarasan di antara mereka. Ini membantu model memproses kalimat masukan yang panjang secara efektif.
Definisi perataan: perataan berarti mencocokkan segmen teks asli dengan segmen terjemahan yang sesuai.
Gambar 0.4: Penyelarasan kata dalam bahasa Prancis "la" didistribusikan dalam urutan masukan, tetapi terutama pada empat kata berikut: "the", "European", "Economic" dan "Area". Ungu tua berarti skor perhatian yang lebih tinggi. (Sumber: https://distill.pub/2016/augmented-rnns/#attentional-interfaces)
Ada dua jenis mekanisme perhatian di. Jenis perhatian yang menggunakan semua status tersembunyi pembuat enkode juga disebut perhatian global. Perhatian lokal hanya menggunakan sebagian dari status tersembunyi pembuat enkode. Artikel ini terutama memperkenalkan perhatian global, jadi setiap referensi ke "perhatian" dalam artikel ini mengacu pada "perhatian global".
Artikel ini menggunakan bentuk animasi saat menjelaskan mekanisme perhatian sehingga kita dapat memahaminya dengan lebih baik tanpa memahami rumus matematika. Dalam kasus ini, penulis akan membagikan 4 arsitektur NMT yang telah muncul dalam 5 tahun terakhir, dan juga akan memberikan penjelasan intuitif tentang beberapa konsep dalam artikel ini.
1. Ikhtisar perhatian
Sebelum memahami perhatian, harap pahami prinsip di balik tugas penerjemahan menggunakan model seq2seq.
Prinsip seq2seq: penerjemah membaca teks bahasa Jerman dari awal sampai akhir. Setelah membaca, mulailah menerjemahkan teks ke dalam bahasa Inggris kata demi kata. Jika kalimatnya sangat panjang, mungkin ia lupa dengan konten sebelumnya.
Ini adalah model seq2seq sederhana. Berikut ini akan diperkenalkan langkah-langkah perhitungan lapisan perhatian dari model seq2seq + perhatian. Berikut ini adalah prinsip intuitif model tersebut.
Prinsip seq2seq + perhatian: penerjemah membaca teks bahasa Jerman dari awal sampai akhir dan mencatat kata kuncinya, lalu menerjemahkan teks tersebut ke dalam bahasa Inggris. Saat menerjemahkan setiap kata Jerman, penerjemah akan menggunakan kata kunci yang direkam.
Dengan memberikan skor untuk setiap kata, perhatian memberikan perhatian yang berbeda ke kata yang berbeda. Kemudian gunakan softmax untuk melakukan penjumlahan berbobot pada status tersembunyi encoder untuk mendapatkan vektor konteks. Realisasi lapisan perhatian dapat dibagi menjadi 4 langkah.
Langkah 0: Bersiap untuk menyembunyikan status.
Pertama, siapkan status tersembunyi decoder pertama (merah) dan semua status tersembunyi pembuat enkode yang tersedia (hijau). Dalam contoh, ada 4 status tersembunyi pembuat enkode dan status tersembunyi dari dekoder saat ini.
Gambar 1.0: Mempersiapkan perhatian
Langkah 1: Dapatkan skor dari setiap status tersembunyi pembuat enkode.
Skor (skalar) diteruskan melalui fungsi penilaian (juga disebut fungsi penilaian penyelarasan atau model penyelarasan). Dalam contoh ini, fungsi penilaian adalah perkalian titik antara status tersembunyi dari decoder dan encoder.
Lihat Lampiran A untuk berbagai fungsi penilaian.
Gambar 1.1: Dapatkan poin
* decoder_hidden * = * skor encoder_hidden * --------------------- 15 (= 10 × 0 + 5 × 1 + 10 × 1, hasil kali titik) 601535Dalam contoh di atas, kami memperoleh skor perhatian tinggi 60 untuk status tersembunyi pembuat enkode. Artinya kata berikutnya yang akan diterjemahkan akan sangat dipengaruhi oleh status tersembunyi pembuat enkode ini.
Langkah 2: Jalankan semua skor melalui lapisan softmax.
Kami menempatkan skor di lapisan softmax, dan jumlah skor softmax (skalar) adalah 1. Skor softmax ini mewakili distribusi perhatian.
Gambar 1.2: Dapatkan skor softmax
* skor skor encoder_hidden ^ * ----------------------------- 150 601 150 350Perhatikan bahwa berdasarkan skor skor softmax ^, distribusi perhatian harus sesuai yang diharapkan. Faktanya, angka-angka ini bukan biner, tetapi angka floating point antara 0 dan 1.
Langkah 3: Kalikan status tersembunyi setiap pembuat enkode dengan skor softmax.
Dengan mengalikan hidden state tiap encoder dengan skor softmax (skalar), diperoleh vektor alignment atau vektor label. Inilah tepatnya bagaimana keselarasan terjadi.
Gambar 1.3: Dapatkan vektor perataan
* skor skor encoder_hidden ^ keselarasan * ---------------------------------------- 150 601 150 350Di sini, kita melihat bahwa penyelarasan status tersembunyi dari semua pembuat enkode kecuali untuk dikurangi menjadi 0 karena skor perhatian yang rendah. Artinya, kata yang diterjemahkan pertama harus cocok dengan kata masukan yang disematkan.
Langkah 4: Jumlahkan vektor perataan.
Tambahkan vektor alignment untuk menghasilkan vektor konteks. Vektor konteks adalah informasi agregat dari vektor kesejajaran pada langkah sebelumnya.
Gambar 1.4: Dapatkan vektor konteks
* skor skor encoder_hidden ^ keselarasan * ---------------------------------------- 150 601 150 350 * konteks * = =Langkah 5: Masukkan vektor konteks ke dalam decoder
Caranya tergantung dari desain arsitekturnya. Nanti, dalam contoh di Bagian 2a, 2b, dan 2c, kita akan melihat bagaimana arsitektur yang berbeda menggunakan vektor konteks di dekoder.
Gambar 1.5: Masukkan vektor konteks ke dalam decoder
Pada titik ini, semua langkah sudah selesai. Contoh animasi ditunjukkan pada gambar:
Gambar 1.6: Mekanisme perhatian
Bagaimana mekanisme perhatian bekerja?
Jawaban: Propagasi mundur, ya, propagasi mundur! Backpropagation akan berusaha semaksimal mungkin untuk memastikan bahwa outputnya sama dengan nilai sebenarnya. Ini dicapai dengan mengubah fungsi bobot dan penilaian (jika ada) di RNN. Bobot ini akan memengaruhi status tersembunyi pembuat enkode dan dekoder yang tersembunyi, sehingga memengaruhi skor perhatian.
2. Perhatikan contoh
Pada bagian sebelumnya, kita telah mempelajari tentang arsitektur seq2seq dan seq2seq + attention. Dalam subbagian berikut, kita akan mempelajari tiga arsitektur NMT perhatian berbasis seq2seq lainnya. Demi kelengkapan, artikel ini juga menambahkan nilai BLEU-kriteria mereka untuk mengevaluasi kalimat yang dihasilkan ke kalimat referensi.
2a. Bahdanau et.al (2015)
Artikel realisasi perhatian ini adalah karya perintis di bidang perhatian. Penulis menggunakan kata "align" pada makalah "Neural Machine Translation by Learning to Jointly Align and Translate", yang artinya penyesuaian akan secara langsung mempengaruhi bobot skor saat melatih model. Berikut detail dari arsitekturnya:
Encoder adalah unit siklik berpagar dua arah (maju + mundur) (BiGRU). Dekoder adalah GRU, dan status awal tersembunyi adalah vektor yang dimodifikasi dari status tersembunyi terakhir dari GRU penyandi balik terbalik (tidak ditampilkan pada gambar di bawah).
Fungsi penilaian di lapisan perhatian adalah additive / concat.
Input dari langkah decoder berikutnya adalah rangkaian antara output langkah waktu decoder sebelumnya (merah muda) dan vektor konteks dari langkah waktu saat ini (hijau tua).
Gambar 2a: NMT dari Bahdanau et.al. Encoder adalah BiGRU, decoder adalah GRU
Arsitektur ini telah memperoleh nilai BLEU sebesar 26,75 pada kumpulan data terjemahan Inggris WMT'14.
Seq2seq + arsitektur perhatian dengan encoder dua arah:
Penerjemah A mencatat kata kunci saat membaca teks bahasa Jerman. Penerjemah B (yang memainkan peran lebih lanjut karena dapat membaca dari belakang ke depan) membaca teks Jerman yang sama dari belakang ke depan, dan juga menuliskan kata kuncinya. Kedua penerjemah secara teratur "mengkomunikasikan" setiap kata yang mereka baca. Setelah membaca teks bahasa Jerman lengkap, penerjemah B bertanggung jawab untuk menerjemahkan kalimat bahasa Jerman ke dalam bahasa Inggris kata demi kata sesuai dengan "hasil komunikasi" dan kata kunci komprehensif yang telah mereka pilih bersama.
Penerjemah A adalah RNN maju, dan penerjemah B adalah RNN mundur.
2b. Luong et. Al (2015)
Penulis "Pendekatan Efektif untuk Terjemahan Mesin Saraf Berbasis Perhatian" menyederhanakan dan mempromosikan arsitektur Bahdanau:
- Encoder adalah jaringan dua lapis memori jangka pendek (LSTM). Dekoder juga memiliki arsitektur yang sama, dan status awal tersembunyi adalah status tersembunyi terakhir dari pembuat enkode. Fungsi penilaian yang digunakan dalam percobaan mereka adalah (i) aditif / concat, (ii) perkalian titik, (iii) berbasis lokasi, dan (iv) "umum". Kaskade antara keluaran dari langkah waktu dekoder saat ini dan vektor konteks dari langkah waktu saat ini adalah masukan ke jaringan saraf maju umpan untuk mendapatkan keluaran akhir (merah muda) dari langkah waktu dekoder saat ini.
Gambar 2b: NMT Luong et.al. Encoder dan decoder keduanya 2-layer LSTM
Dalam set data Inggris-Jerman WMT'15, model memperoleh nilai BLEU 25,9.
Seq2seq + arsitektur perhatian dengan encoder bertumpuk 2 lapisan:
Penerjemah A mencatat kata kunci saat membaca teks bahasa Jerman. Demikian pula, penerjemah B (lebih mahir dari A) juga akan membaca teks Jerman yang sama dan menuliskan kata kunci pada waktu yang sama. Penerjemah tingkat rendah A melapor kepada penerjemah B ketika ia membaca setiap kata. Setelah membaca, mereka akan menerjemahkan kalimat ke dalam bahasa Inggris kata demi kata sesuai dengan kata kunci komprehensif yang mereka pilih bersama.
2c. Terjemahan Mesin Saraf Google (GNMT)
Sebagian besar dari kita kurang lebih telah menggunakan Google Translate, jadi kita harus berbicara tentang GNMT yang diimplementasikan oleh Google pada tahun 2016. GNMT adalah kombinasi dari dua contoh pertama (terutama terinspirasi oleh contoh pertama).
Encoder terdiri dari 8 LSTM, yang pertama adalah dua arah (keluarannya bertingkat), dan ada koneksi sisa antara keluaran dari lapisan yang berurutan (mulai dari lapisan ketiga). Dekoder adalah tumpukan independen dari 8 LSTM searah.
Fungsi scoring yang digunakan adalah additive / concat, sama seperti.
Demikian pula, masukan dari langkah dekoder berikutnya adalah kaskade antara keluaran langkah waktu dekoder sebelumnya (merah muda) dan vektor konteks (hijau tua) dari langkah waktu saat ini.
Gambar 2c: NMT yang Diterjemahkan Google. Koneksi lompat ditunjukkan oleh panah melengkung. Catatan: Unit LSTM hanya menampilkan status dan input tersembunyi, bukan input status unit
Model ini mencapai nilai BLEU 38,95 pada kumpulan data Inggris-Prancis WMT'14, dan nilai BLEU 24,17 pada kumpulan data Inggris-Jerman WMT'14.
GNMT: seq2seq + attention dengan 8 encoder bertumpuk (+ koneksi sisa + dua arah)
8 penerjemah disusun dari A, B ke H dari atas ke bawah. Setiap penerjemah membaca teks Jerman yang sama. Untuk setiap kata, penerjemah A dan B "membagikan" temuan mereka, penerjemah B meningkatkannya dan "membagikannya" dengan C-ulangi proses ini hingga mencapai penerjemah H. Selain itu, saat membaca teks bahasa Jerman, penerjemah H akan mencatat kata kunci yang relevan berdasarkan apa yang diketahuinya dan informasi yang diterimanya.
Setelah setiap penerjemah membaca teks Jerman, Penerjemah A akan mulai menerjemahkan kata pertama. Pertama, ia kembali ke memori aslinya, lalu membagikan jawaban dengan B, dan B menyempurnakan jawaban dan membagikannya dengan C-mengulangi proses ini hingga mencapai penerjemah H. Penerjemah H menulis kata terjemahan pertama berdasarkan kata kunci yang dia catat dan jawaban yang dia dapatkan. Ulangi operasi ini sampai semua terjemahan selesai.
3. Ringkasan
Artikel ini menjelaskan arsitektur berikut:
- seq2seqseq2seq + attention seq2seq dengan encoder dua arah + attention seq2seq dengan encoder bertumpuk dua lapis + attention GNMT: seq2seq + attention dengan 8 encoder bertumpuk (+ koneksi dua arah + residual)
Lampiran: Fungsi penilaian
Berikut adalah beberapa fungsi penilaian yang ditulis oleh Lilian Weng. Artikel ini menyebutkan produk addictive / concat dan dot. Ide dari fungsi penilaian yang melibatkan operasi perkalian titik (perkalian titik, kemiripan kosinus, dll.) Adalah untuk mengukur kemiripan antara dua vektor. Untuk fungsi penilaian jaringan neural feedforward, idenya adalah membiarkan model mempelajari bobot dan terjemahan penyelarasan.
Gambar A0: Ringkasan grafis dari fungsi penilaian
Gambar A1: Ringkasan rumus fungsi penilaian
Transfer dari: https://zhuanlan.zhihu.com/p/56704058
- Sebagian besar suku bunga pasar uang naik, suku bunga obligasi masih menghadapi tekanan penyesuaian dalam jangka pendek dan menengah
- Bagaimana menjelaskan model Markov yang tersembunyi dengan contoh-contoh yang sederhana dan mudah dimengerti?
- Pelajar China bunuh diri di American Airlines School Classmate: Guru menghukum dan menyalahgunakan hukuman fisik seperti mereka di penjara