1. Recurrent Neural Network
Pada IF3012 – Pembelajaran Mesin
Program Studi Teknik Informatika
Jurusan Teknologi Produksi dan Industri
Institut Teknologi Sumatera
2022
1
2. Outline Perkuliahan
• Sequence data: time-series data, symbolic sequence data,
biological sequences
• Recurrent Neural Network (RNN)
• Bidirectional RNNs, Deep Recurrent Networks
• Backpropagation Through Time (BPTT)
• Long Short Term Memory (LSTM)
• Gated Recurrent Unit (GRU)
2
4. Time Series Data
Contoh-contoh data sekuensial dan penerapannya:
• Rangkaian kata-kata dalam penerjemahan bahasa;
• Sinyal audio dalam pengenalan suara;
• Nada-nada dalam sintesa musik
• Rangkaian kata-kata dalam klasifikasi sentimen;
• Deret DNA dalam pemrosesan rangkaian DNA;
• Rangkaian gambar-gambar (frame) pada pengenalan aktivitas video;
• Kata-kata dalam pengenalan nama entitas;
4
5. Time Series Data
5
Hidayat, Y., Sutijo, B., Bon, A. T., & Supian, S. (2016). Indonesian financial data modeling and forecasting by using
econometrics time series and neural network. Global Journal of Pure and Applied Mathematics, 12(4), 3745-3757.
● Pada time-series
data, rangkaian
data terdiri dari
urutan data
numerik yang
panjang, dan
direkam pada
interval waktu yang
sama.
● Data bulanan
inflasi di Indonesia
Januari 2009 sd
April 2015 (Hidayat
dkk., 2016)
6. Symbolic Sequence Data
6
Tan dkk. (2004): https://slideplayer.com/slide/778153/
● Data urutan simbolik terdiri dari urutan panjang peristiwa atau data nominal,
yang biasanya tidak diamati pada interval waktu yang sama.
● Browsing history:
● Sequence of books checked out at library:
7. Next Number Model
Input: 1239
1239 + 1 → 1240
● Alternatif 1: Model Regresi: y=x+1
● Alternatif 2: Model RNN meniru
manusia 9+1=10, digit terakhir
hasil adalah 0, lalu 1 dijumlahkan
ke digit sebelumnya dst.
7
8. Recurrent Neural Network
• Recurrent neural network (RNN) merupakan jaringan saraf yang menangkap
informasi secara dinamis dalam data yang bersifat sequential, melalui hubungan
secara berkala dari node di hidden layer. Arsitektur jenis ini dapat
mengklasifikasikan data sequential.
• Tidak seperti Forward Neural Network lainnya, RNN dapat mempertahankan status
konteks dan bahkan menyimpan, mempelajari, dan mengungkapkan informasi
terkait dalam ruang konteks dengan panjang berapa pun.
• Berbeda dari traditional neural network, arsitektur ini tidak dibatasi pada batasan
ruang, tetapi juga mendukung rangkaian waktu.
• Dengan kata lain, terdapat sisi antara hidden layer saat ini dan hidden layer pada
momen berikutnya.
• RNN banyak digunakan dalam skenario yang berkaitan dengan deretan data,
seperti data video, data audio dan data kalimat.
8
9. Recurrent Neural Network
xt merupakan beberapa nilai masukan,
A adalah bagian dari RNN dan ht
merupakan nilai keluaran
9
• Dikenal pada akhir tahun 1980-an
• Topologi yang berguna, jika
urutan data adalah penting
(sequential data)
q Setiap neuron atau unit dapat
menggunakan memori internalnya
untuk menyimpan informasi tentang
input sebelumnya.
10. RNN : Neuron Dependent
• RNN memiliki loop di dalamnya yang memungkinkan informasi dibawa
melintasi neuron saat membaca input. RNN tidak dapat mengandalkan
input saja dan harus menggunakan koneksi berulangnya untuk melacak
konteks untuk mencapai tugas ini.
• Neuron dependent → komputasi bergantung pada komputasi sebelumnya
10
13. FFNN v.s. RNN Sequential Data
13
• FFNN : Tidak terdapat konsep apapun dari urutan waktu diantara data
• RNN : Terdapat urutan waktu diantara data. Kita akan menginput X1 terlebih dahulu
kemudian memasukkan X2 ke hasil komputasi X1. Jadi dengan cara yang sama, X3
dihitung dengan hasil dari tahap komputasi X2.
14. RNN: Parameter Sharing
14
• Recurrent neural network dapat
dianggap sebagai banyak salinan
dari jaringan yang sama, masing-
masing meneruskan pesan ke
penerusnya.
• Berbagi parameter lebih baik
daripada menggunakan parameter
berbeda per posisi: lebih sedikit
parameter untuk diestimasi,
digeneralisasi ke berbagai panjang
dari arsitektur neural network.
• Wx, Wh, Wy
19. Contoh Penerapan RNN Character-Level Language Model (LM)
19
• Language model: model untuk memprediksi huruf/karakter selanjutnya
yang mempertimbangkan semua huruf/karakter sebelumnya
• Vocabulary: 4 huruf yang mungkin “h”, ”e”, ”l”, “o”
q Encode setiap karakter ke dalam data vektor menggunakan 1-of-k encoding
(one-hot encoding): h: <1,0,0,0>; e: <0,1,0,0>; l: <0,0,1,0>; o: <0,0,0,1>
• Training seq. “hello” merepresentasikan 4 separate instances:
q <h,e>: probabilitas muncul huruf “e” ketika diberikan konteks “h”,
q <he,l>: “l” seharusnya muncul ketika diberikan konteks “he”,
q <hel,l>: “l” seharusnya juga muncul ketika diberikan konteks “hel”,
q <hell,o>: “o” seharusnya muncul ketika diberikan konteks “hell”.
20. Language Model: RNN Topology & Weights
20
• Topology RNN: 4-Dimensi dari input dan output
layers, serta digunakan sebuah hidden layer
dengan 3 units (neurons)
• Inisialisasi:
q W_xh: matrix 3x4 (hidden neurons x input dimension)
q W_hy: matrix 4x3 (output neurons x hidden neurons)
q W_hh: matrix 1x1
q Bias xh: matrix 1x1
q Bias hy: matrix 1x1
q h(t-1)=h(0)=s0=<0,0,0>
X (4 dimension)
21. Language Model: Forward Phase
21
• t=1 (input “h”: x1=<1,0,0,0>):
q h1=f(W_xh*x1 + W_hh*h0 + b)
=<0.3, -0.1, 0.9>
q o1=argmax(softmax(W_hy*s1))
=argmax(sofmax(1.0,2.2,-
3.0,4.1))=”o”, seharusnya ”e”
• t=3 dan t=4 menerima input “l”
yang sama x3=x4=<0,0,1,0>
tetapi o3≠o4.
28. Backpropagation Through Time (BPTT)
BPPT Learning Algoritma merupakan suatu perpanjangan dari backpropagation
standar yang melakukan gradient descent pada jaringan RNN yang telah dibuka.
1. Forward pass: dapatkan output pada urutan saat ini
2. Backward pass:
q Hitung cross entropy error (negative log-likelihood dari y) menggunakan output pada
urutan saat ini (ȳ=ȳ1..ȳn) dan output dengan urutan data yang sebenarnya (y=y1..yn)
q E(ȳ,y) = – ∑ ȳt log(yt) dengan Et(ȳt,yt) = – ȳt log(yt)
q Untuk jaringan yang telah dibuka, gradien dihitung untuk setiap langkah waktu
sehubungan dengan parameter bobot
3. Sekarang bobotnya sama untuk semua langkah waktu, gradien dapat
digabungkan bersama untuk semua langkah waktu. Bobot kemudian diperbarui
untuk recurrent neuron dan dense layer.
28
32. Truncated BPTT
• Truncated BPTT dikembangkan untuk mengurangi kompleksitas komputasi dari setiap
pembaruan parameter dalam recurrent neural network.
• Truncated BPTT membagi umpan maju dan mundur menjadi satu set operasi umpan
maju/mundur yang lebih kecil. Panjang spesifik dari segmen umpan maju/mundur ini
adalah parameter yang ditetapkan oleh pengguna.
• Dengan panjang Truncated BPTT = 4. Misalkan pada langkah waktu 10, jaringan perlu
menyimpan beberapa informasi dari langkah waktu 0 untuk membuat prediksi yang
akurat.
q Dalam BPTT standar, ini baik-baik saja: gradien dapat mengalir mundur sepanjang jaringan
yang terbuka, dari waktu 10 ke waktu 0.
q Dalam Truncated BPTT, ini bermasalah: gradien dari langkah waktu 10 tidak mengalir
kembali cukup jauh menyebabkan pembaruan parameter yang diperlukan yang akan
menyimpan informasi yang diperlukan.
q Pengorbanan ini biasanya sepadan, dan (selama panjang BPTT yang terpotong diatur
dengan tepat), BPTT yang terpotong bekerja dengan baik dalam praktiknya.
32
33. RNN : Arsitektur
• One to Many : image captioning, document/
• Many to One : text classification/sentiment analysis
• Many to Many : machine translation, video frame classification,
POS tagging, voice recognition
33
fixed-
sized
input
vector xt
fixed-
sized
output
vector
ot
RNN
state
st
35. RNN untuk Mesin Translasi Jerman-Inggris
• Terjemahan Mesin: input adalah
urutan kata dalam bahasa sumber
(misalnya bahasa Jerman). Output
adalah urutan kata dalam bahasa
target (misalnya bahasa Inggris).
• Perbedaan utama adalah bahwa
output kita hanya dimulai setelah
kita melihat input yang lengkap,
karena kata pertama dari kalimat
yang kita terjemahkan mungkin
memerlukan informasi yang
diambil dari urutan input yang
lengkap.
35
36. RNN untuk Sequence Tagging
• Input adalah urutan kata, dan output adalah urutan tag POS untuk
setiap kata.
36
37. Recurrent Neural Network: Analisis Sentimen
• Klasifikasi sentimen level kalimat:
qone to one (without RNN, fixed-sized input vector xt → fixed-sized output vector ot),
atau
qmany to one (sequence of fixed-sized input vector xt → fixed-sized output vector ot)
• Klasifikasi sentimen level aspek:
qMany to many (synced sequence of fixed-sized input vector xt and ot)
37
38. Contoh RNN pada Keras
38
from keras.preprocessing import sequence
from keras.layers import Embedding
from keras import models
from keras import layers
model = models.Sequential()
maxlen = 500
embed_dim = 20
model.add(Embedding(jum_vocab+1,embed_dim,input_length=maxlen))
model.add(layers.SimpleRNN(32))
model.add(layers.Dense(3, activation='softmax'))
model.compile(optimizer="adam",
loss='categorical_crossentropy',
metrics=['accuracy'])
39. Bidirectional RNNs
• Dalam banyak aplikasi, kita ingin
menampilkan prediksi y(t) yang mungkin
bergantung pada seluruh urutan input.
Misalnya: artikulasi bersama dalam
pengenalan suara, tetangga kanan
dalam POS tagging, dll.
• Bidirectional RNN menggabungkan RNN
yang bergerak maju melalui waktu mulai
dari awal urutan dengan RNN lain yang
bergerak mundur melalui waktu mulai
dari akhir urutan.
39
43. Vanishing Gradient Problem
• Masing-masing bobot jaringan saraf menerima pembaruan yang sebanding
dengan turunan parsial dari error function sehubungan dengan bobot saat ini di
setiap iterasi pelatihan.
• Dalam beberapa kasus, gradien akan semakin kecil, secara efektif mencegah
bobot berubah nilainya.
q Dalam kasus terburuk, ini dapat sepenuhnya menghentikan jaringan saraf dari
pelatihan lebih lanjut.
• Contoh:
q fungsi aktivasi seperti fungsi tangen hiperbolik memiliki gradien dalam rentang (0, 1),
dan backpropagation menghitung gradien dengan aturan rantai.
q Ini memiliki efek mengalikan n dari angka-angka kecil ini untuk menghitung gradien
lapisan "depan" dalam jaringan lapisan-n
ü gradien (error signal) menurun secara eksponensial dengan n
43
44. Long Short Term Memory (LSTM) Network
• Diperkenalkan oleh Hochreiter & Schmidhuber (1997), LSTM secara eksplisit
dirancang untuk menghindari masalah ketergantungan jangka panjang.
• Jenis khusus RNN. Dalam RNN standar, modul berulang akan memiliki
struktur yang sangat sederhana, seperti lapisan tanh tunggal. Modul
berulang dalam LSTM berisi empat lapisan yang saling berinteraksi.
44
45. LSTM Unit
• Cell state ct seperti conveyor belt. Ini berjalan lurus
ke bawah seluruh rantai, dengan hanya
beberapa interaksi linier kecil. Sangat mudah bagi
informasi untuk mengalir begitu saja tanpa
berubah.
• Gerbang adalah cara opsional untuk membiarkan
informasi lewat. Lapisan sigmoid mengeluarkan
angka antara nol dan satu, menjelaskan berapa
banyak dari setiap komponen yang harus dilewati.
Nilai nol berarti "jangan biarkan apa pun lewat",
sedangkan nilai satu berarti "biarkan semuanya
lewat!"
45
46. LSTM Unit: Forget Gate Layer
Forget gate layer: untuk memutuskan informasi apa yang akan kita buang dari cell
state. Itu terlihat di ht−1 dan xt, dan menampilkan angka antara 0 dan 1 untuk
setiap angka dalam cell state Ct−1. Nilai 1 mewakili "sepenuhnya simpan ini"
sementara nilai 0 mewakili "sepenuhnya singkirkan ini."
46
47. LSTM Unit: Input Gate & Tanh Layer
Untuk memutuskan informasi baru apa yang akan kita simpan dalam cell
state.
• Input gate layer memutuskan nilai mana yang akan kita perbarui;
• Tanh layer menciptakan vektor nilai kandidat baru, Ct, yang dapat
ditambahkan ke state.
47
48. LSTM Unit: Update Ct−1 into Ct
• Kalikan Ct−1 * ft, lupakan hal-hal yang telah diputuskan untuk dilupakan
sebelumnya.
• Tambahkan it * Ct, nilai kandidat baru, yang diskalakan berdasarkan
seberapa banyak kita memutuskan untuk memperbarui setiap state value.
48
49. LSTM Unit: Output ht
• Output ht akan didasarkan pada Ct, tetapi akan menjadi versi yang difilter. Jalankan
lapisan sigmoid yang memutuskan bagian mana dari status sel yang akan dihasilkan.
Kemudian, masukkan Ct melalui tanh (untuk mendorong nilai menjadi antara -1 dan 1)
dan kalikan dengan output dari gerbang sigmoid, sehingga kita hanya menampilkan
bagian yang kita putuskan.
49
50. Contoh LSTM pada Keras
50
from keras.preprocessing import sequence
from keras.layers import Embedding
from keras import models
from keras import layers
model = models.Sequential()
maxlen = 500
embed_dim = 20
model.add(Embedding(jum_vocab+1,embed_dim,input_length=maxlen))
model.add(layers.LSTM(32))
model.add(layers.Dense(3, activation='softmax'))
model.compile(optimizer="adam",
loss='categorical_crossentropy',
metrics=['accuracy'])
51. Gated Recurrent Unit (GRU)
• Sebagai varian dari LSTM, GRU
menggabungkan Forget Gate dan Input
Gate ke dalam Update Gate tunggal.
• Hal ini menggabungkan cell state dan
hidden state dan juga menggabungkan
perubahan lainnya.
• Sebagai varian populer, model terakhir ini
lebih sederhana daripada Model LSTM
standar.
q [] menunjukkan proses concatenation;
q * menunjukkan proses perkalian elemen;
q . menunjukkan perkalian matriks.
51