Pengenalan Long Short Term Memory (LSTM) dan Gated Recurrent Unit (GRU) – RNN Bagian 2

Di artikel sebelumnya (Pengenalan RNN Bagian 1) kita telah menyinggung permasalahan gradien yang menghilang (vanishing gradient) pada RNN. Pada bagian ini kita akan membahas varian-varian dari RNN yaitu LSTM dan GRU yang didesain untuk memecahkan masalah ini.

LSTM (Long Short Term Memory) adalah jenis modul pemrosesan lain untuk RNN. LSTM diciptakan oleh Hochreiter & Schmidhuber (1997) dan kemudian dikembangkan dan dipopulerkan oleh banyak periset. Seperti RNN, jaringan LSTM (LSTM network) juga terdiri dari modul-modul dengan pemrosesan berulang. Bedanya adalah modul-modul yang membentuk jaringan LSTM adalah modul LSTM:

LSTM
Jaringan LSTM terdiri dari modul LSTM yang dipanggil secara berulang

Modul LSTM (satu kotak hijau) mempunyai pemrosesan yang berbeda dengan modul RNN biasa. Perbedaan lain adalah adanya tambahan sinyal yang diberikan dari satu langkah waktu ke langkah waktu berikutnya, yaitu konteks, direpresentasikan dengan simbol Ct.

Catatan: istilah “konteks” adalah istilah saya sendiri dan belum tentu standard. Istilah-istilah yang sering dipakai untuk konteks adalah cell state dan memory cell.

Pemrosesan dalam LSTM

Sekedar pengingat, pemrosesan dalam satu modul RNN cukup sederhana, hanya ada satu lapis tanh, dan kalau dikehendaki output dari modul itu maka state internal akan dilewatkan pada fungsi aktivasi seperti softmax untuk mendapatkan output ŷt:

RNN Network

st = tanh( U · xt + W · st-1 )
ŷt = softmax( V · s)

Sedangkan modul LSTM mengandung lebih banyak komputasi:

LSTM Network

Walaupun terlihat rumit, namun jangan kuatir semua akan kita bahas dengan detil di bawah ini.

Notasi

Berikut adalah legenda dari notasi-notasi yang dipakai di atas.

Legenda LSTM

Pada diagram di atas, setiap garis membawa seluruh vektor, dari output satu simpul (node) ke input yang lain. Lingkaran merah muda mewakili operasi elemen, seperti penambahan atau perkalian elemen vektor, sedangkan kotak kuning adalah lapis jaringan saraf (mengandung parameter dan bias) yang bisa belajar. Dua garis yang bergabung menandakan penggabungan dua matriks/vektor, sementara garis berpisah menandakan kontennya disalin dan salinannya pergi ke simpul yang berbeda.

Mekanisme Kunci LSTM

Ide kunci dari LSTM adalah jalur yang menghubungkan konteks lama (Ct-1) ke konteks baru (Ct) di bagian atas modul LSTM, seperti tergambar di bawah ini.

LSTM - Key Idea

Konteks Ct disebut juga cell state atau memory cell dalam beberapa artikel. Dengan adanya jalur di atas, suatu nilai di konteks yang lama akan dengan mudah diteruskan ke konteks yang baru dengan sedikit sekali modifikasi, kalau diperlukan.

Konteks adalah sebuah vektor, yang jumlah elemennya kita tentukan sebagai desainer jaringan LSTM. Intuisinya adalah, masing-masing elemen kita harapkan bisa merekam suatu fitur dari input, misalnya dalam pemrosesan bahasa alami untuk bahasa Inggris, suatu elemen merekam gender dari subjek, elemen lain merekam apakah subjek tunggal atau jamak, dsb. Fitur-fitur ini akan ditemukan sendiri oleh LSTM dalam proses latihan.

Ide kunci yang lain adalah adanya gerbang sigmoid (sigmoid gate) yang mengatur seberapa banyak informasi bisa lewat.

LSTM Gate

Untuk suatu input x, output dari gerbang sigmoid adalah σ(A · x + b), dimana A adalah parameter, b adalah bias, keduanya dipelajari dalam proses latihan, dan σ adalah fungsi sigmoid. Keluaran gerbang adalah angka antara nol dan satu; nol artinya informasinya diblok total, sedangkan satu artinya ikutkan keseluruhan informasi.

Keluaran dari gerbang sigmoid akan dikalikan dengan suatu nilai lain untuk mengontrol seberapa banyak nilai tersebut dipakai. Misalnya:

LSTM Gate Usage

Dengan gerbang sigmoid di atas, LSTM bisa mengatur seberapa banyak informasi dari Ct-1 yang diikutkan menjadi Ct.

Penjelasan Langkah Demi Langkah

Langkah pertama dalam LSTM adalah memutuskan informasi apa yang akan dibuang dari konteks Ct-1 , dengan menggunakan gerbang sigmoid yang kita sebut “gerbang lupa” (forget gate, ft). Gerbang ini membaca nilai st-1 dan xt , dan menghasilkan angka antara 0 dan 1 untuk setiap elemen dalam Ct-1. Nilai 1 artinya “benar-benar jaga elemen ini” sementara 0 artinya “benar-benar singkirkan elemen ini.”

LSTM - Forget Gate

Catatan: notasi [st-1, xt] merupakan operasi konkatenasi; artinya kita menambahkan baris dari xt dengan baris dari st-1.

Misalkan dalam contoh model bahasa yang mencoba memprediksi kata berikutnya berdasarkan semua kata sebelumnya:

Jane always greets everyone with smile. Everyone likes ____.

Suatu elemen dalam Ct-1 mungkin menyimpan informasi gender subjek saat ini, sehingga kata ganti yang benar dapat digunakan. Ketika kita melihat subjek baru, maka elemen lama dalam Ct-1 bisa kita lupakan.

Langkah selanjutnya adalah memutuskan informasi baru apa yang akan kita gunakan di Ct. Proses ini memiliki dua bagian. Pertama, gerbang sigmoid yang disebut “gerbang masukan” (input gate, it) memutuskan nilai mana yang akan kita perbarui. Lalu sebuah lapis tanh menghasilkan kandidat vektor konteks baru, t, (dibaca: C tilde). Lalu kita gabungkan keduanya untuk membuat pembaruan ke konteks nanti.

LSTM - Input Gate

Dalam contoh model bahasa kita, kita menambahkan jenis kelamin subjek baru ke konteks, untuk menggantikan elemen yang lama yang kita lupakan.

Sekarang saatnya untuk memperbarui konteks lama Ct-1 ke konteks baru Ct. Kita kalikan konteks lama dengan ft untuk melupakan hal-hal yang kita putuskan untuk dilupakan. Kita kalikan kandidat konteks baru kita t dengan it untuk memutuskan seberapa banyak kita akan menyertakan kandidat konteks baru. Lalu kita tambahkan keduanya.

LSTM - Context Update

Dalam kasus model bahasa, ini adalah tempat kita benar-benar membuang informasi tentang gender subjek lama dan menambahkan informasi baru, seperti yang kita putuskan pada langkah sebelumnya.

Akhirnya, kita perlu memutuskan apa yang akan kita hasilkan. Output ini akan didasarkan pada nilai dalam konteks kita dan dilewatkan ke suatu filter. Pertama, kita jalankan gerbang sigmoid yang kita namakan gerbang output (output gate, ot) untuk memutuskan bagian-bagian apa dari konteks yang akan kita hasilkan. Kemudian, kita lewatkan konteks melalui tanh untuk membuat nilainya menjadi antara −1 dan 1, dan kita kalikan dengan output gerbang sigmoid tadi sehingga kita hanya menghasilkan bagian yang kita putuskan.

LSTM - Output Gate

Untuk contoh model bahasa, ketika kita baru melihat subjek baru, mungkin ingin menyimpan informasi yang relevan untuk menghasilkan kata berikutnya, misalnya apakah subjeknya tunggal atau jamak, informasi gendernya, dsb.

Gated Recurrent Unit (GRU)

LSTM mempunyai banyak sekali varian, misalnya LSTM dengan koneksi lubang intip (peephole connection), LSTM yang menggabungkan gerbang input dengan gerbang lupa, dan sebagainya. Salah satu varian yang populer adalah Gated Recurrent Unit atau disingkat GRU. GRU dimunculkan dalam makalah oleh Cho dkk (2014) dan Chung dkk (2014).

Keutamaan GRU adalah komputasinya lebih sederhana dari LSTM, namun mempunyai akurasi yang setara dan masih cukup efektif untuk menghindari permasalahan gradien yang menghilang.

Pada GRU, pertama kita kalkulasi kandidat konteks t sebagai tanh dari gabungan konteks lama Ct-1 dan input xt. Lalu sebuah gerbang sigmoid dinamakan gerbang update ut  menentukan seberapa banyak konteks yang baru Ct  berasal dari kandidat t dan seberapa banyak dari konteks lama Ct-1 .

GRU

Diagram di atas adalah GRU yang disederhanakan. Untuk komputasi GRU yang lengkap ditambahkan satu gerbang lagi yaitu rt yang dinamakan reset gate atau relevance gate untuk menghitung t . Diagramnya menjadi sedikit lebih rumit.

Full GRU

Manakah dari varian ini yang terbaik? Greff, dkk. (2015) melakukan perbandingan varian populer yang bagus, menemukan bahwa semuanya hampir sama. Jozefowicz, dkk. (2015) menguji lebih dari sepuluh ribu arsitektur RNN, menemukan beberapa yang bekerja lebih baik daripada LSTM pada tugas-tugas tertentu.

Kesimpulan

LSTM adalah arsitektur jaringan saraf yang sangat ampuh untuk memroses data berurut. Hampir semua kemajuan RNN yang kita sebutkan baik di artikel ini atau artikel sebelumnya adalah kemajuan dari penggunaan LSTM atau variannya. Dengan mengetahui RNN dan LSTM maka akan menambah kelengkapan senjata pembelajaran mesin yang kita punyai secara signifikan.

Referensi

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

Blog di WordPress.com.

Atas ↑

%d blogger menyukai ini: