Recurrent Neural Networks memiliki tiga pola arsitektur utama berdasarkan hubungan input-output:
1. One-to-Many: Satu input menghasilkan sekuens output. Contoh: Image Captioning dimana satu gambar (input tunggal) menghasilkan kalimat deskriptif (output sekuensial). Arsitektur ini menggunakan encoder CNN untuk ekstraksi fitur gambar dan decoder RNN untuk pembuatan teks.
2. Many-to-One: Sekuens input menghasilkan satu output. Contoh: Analisis sentimen teks dimana sekuens kata-kata (input) diklasifikasikan menjadi sentimen positif/negatif (output tunggal). Implementasi di Keras menggunakan lapisan SimpleRNN dengan return_sequences=False.
3. Many-to-Many: Terbagi menjadi dua subtipe:
Sinkron: Setiap timestep input memiliki output terkait (e.g., POS Tagging)
Asinkron: Output mulai dihasilkan setelah seluruh input diproses (e.g., Machine Translation)
input_shape=(100, 300): 100 timestep dengan vektor fitur 300 dimensi
Lapisan SimpleRNN secara otomatis mengembalikan hanya output terakhir
Arsitektur Many-to-Many
Dua pendekatan implementasi:
1. Sinkron (Sequence Tagging):
model.add(SimpleRNN(32, return_sequences=True))model.add(TimeDistributed(Dense(10))) # Output untuk setiap timestep
Digunakan untuk tugas seperti penandaan POS dimana setiap kata mendapatkan label.
2. Asinkron (Encoder-Decoder):
Encoder: Memproses seluruh input sequence menjadi context vector
Decoder: Menggunakan context vector untuk menghasilkan output sequence
Bidirectional RNN
Mengkombinasikan dua RNN:
Forward Layer: Memproses data secara kronologis
Backward Layer: Memproses data secara terbalik
Keunggulan:
Mencapture dependensi maju-mundur (e.g., dalam NLP: konteks kata dipengaruhi kata sebelum & sesudah)
Implementasi di Keras:
from keras.layers import Bidirectionalmodel.add(Bidirectional(SimpleRNN(32)))
Summary
RNN memiliki variasi arsitektur utama: one-to-many (generasi sekuens), many-to-one (klasifikasi sekuens), dan many-to-many (translasi/penandaan). Implementasi praktis menggunakan return_sequences untuk kontrol output, sementara Bidirectional RNN meningkatkan kinerja dengan konteks dua arah. Perhitungan parameter bergantung pada jumlah neuron dan dimensi input-output.