Neural networks berulang atau RNN adalah neural networks dalam yang dilatih pada data berurutan atau deret waktu untuk membuat model machine learning (ML) yang dapat membuat prediksi atau kesimpulan berurutan berdasarkan input berurutan.
RNN dapat digunakan untuk memprediksi tingkat banjir harian berdasarkan data banjir, pasang surut, dan data meteorologi harian sebelumnya. Tetapi RNN juga dapat digunakan untuk memecahkan masalah ordinal atau temporal seperti penerjemahan bahasa, pemrosesan bahasa alami (NLP), analisis sentimen, pengenalan ucapan, dan pemberian teks pada gambar.
Seperti neural networks tradisional, seperti neural networks feedforward dan neural networks convolutional (CNN), neural networks berulang menggunakan data pelatihan untuk belajar. Mereka dibedakan berdasarkan “memori” mereka karena mereka mengambil informasi dari input sebelumnya untuk mempengaruhi input dan hasil saat ini.
Sementara jaringan pembelajaran mendalam tradisional mengasumsikan bahwa input dan hasil independen satu sama lain, hasil neural networks berulang bergantung pada elemen sebelumnya dalam urutan. Meskipun peristiwa masa depan juga akan membantu dalam menentukan hasil dari urutan yang diberikan, recurrent neural networks searah tidak dapat menjelaskan peristiwa ini dalam prediksi mereka.
Mari kita ambil sebuah idiom, seperti “feeling under the weather,“ yang biasanya digunakan ketika seseorang sakit, untuk membantu kita dalam menjelaskan RNN. Agar idiom masuk akal, perlu diekspresikan dalam urutan spesifik itu. Akibatnya, jaringan berulang perlu memperhitungkan posisi setiap kata dalam idiom, dan mereka menggunakan informasi tersebut untuk memprediksi kata berikutnya dalam urutan.
Setiap kata dalam frasa "feeling under the weather" membentuk sebuah urutan, di mana urutan tersebut memiliki arti yang bergantung pada susunannya. RNN melacak konteks dengan mempertahankan hidden state pada setiap langkah waktu. Loop masukan dibuat dengan meneruskan status tersembunyi dari langkah satu kali ke langkah berikutnya. Status tersembunyi berfungsi sebagai memori yang menyimpan informasi tentang input sebelumnya. Pada setiap langkah waktu, RNN memproses input saat ini (misalnya, sebuah kata dalam kalimat) bersama dengan keadaan tersembunyi dari langkah waktu sebelumnya. Hal ini memungkinkan RNN untuk "mengingat" data sebelumnya dan menggunakannya untuk memengaruhi hasil saat ini.
Karakteristik lain yang membedakan jaringan recurrent adalah bahwa mereka berbagi parameter di setiap lapisan jaringan. Sementara jaringan feedforward memiliki bobot yang berbeda pada setiap node-nya, recurrent neural networks memiliki parameter bobot yang sama dalam setiap lapisan jaringan. Konon, bobot ini masih disesuaikan melalui proses backpropagation dan gradien descent untuk memfasilitasi pembelajaran penguatan.
Jaringan neural networks menggunakan algoritme perambatan maju dan perambatan balik melalui waktu (BPTT) untuk menentukan gradien (atau turunannya), yang sedikit berbeda dengan perambatan balik tradisional karena algoritme ini khusus untuk data berurutan. Prinsip-prinsip BPTT sama dengan backpropagation tradisional, di mana model melatih dirinya sendiri dengan menghitung kesalahan dari lapisan hasil ke lapisan input. Perhitungan ini memungkinkan kita untuk menyesuaikan dan menyesuaikan parameter model dengan tepat. BPTT berbeda dengan pendekatan tradisional karena BPTT menjumlahkan kesalahan pada setiap langkah waktu, sedangkan jaringan feedforward tidak perlu menjumlahkan kesalahan karena tidak berbagi parameter di setiap lapisan.
Fungsi aktivasi adalah fungsi matematika yang diterapkan pada hasil setiap lapisan neuron dalam jaringan untuk memperkenalkan nonlinieritas dan memungkinkan jaringan mempelajari pola yang lebih kompleks dalam data. Tanpa fungsi aktivasi, RNN hanya akan menghitung transformasi linear dari input, sehingga tidak mampu menangani masalah nonlinear. Nonlinieritas sangat penting untuk mempelajari dan memodelkan pola yang kompleks, terutama dalam tugas-tugas seperti NLP, analisis deret waktu, dan prediksi data berurutan.
Fungsi aktivasi mengontrol keluaran neuron dengan membatasi nilainya dalam rentang tertentu (misalnya, 0 hingga 1 atau -1 hingga 1). Ini membantu mencegah nilai yang terlalu besar atau terlalu kecil selama proses propagasi maju dan mundur. Dalam RNN, fungsi aktivasi diterapkan di setiap langkah waktu untuk memperbarui status tersembunyi. Fungsi ini mengatur bagaimana jaringan memproses input saat ini dan menggabungkannya dengan status tersembunyi sebelumnya.
Fungsi aktivasi umum (digambarkan setelah ini) meliputi:
Fungsi Sigmoid digunakan untuk menafsirkan hasil sebagai probabilitas atau mengendalikan gerbang yang menentukan jumlah informasi yang disimpan atau dilupakan. Namun, fungsi ini rentan terhadap masalah gradien yang menghilang (gradien vanishing), yang dapat menghambat pembelajaran pada jaringan yang lebih dalam.
Fungsi Tanh (Tangent Hiperbolik), sering digunakan karena menghasilkan hasil yang berpusat di sekitar nol, sehingga memungkinkan aliran gradien yang lebih stabil dan memudahkan pembelajaran dependensi jangka panjang.
ReLU (Rectified Linear Unit) dapat menyebabkan masalah dengan gradien yang meledak karena sifatnya yang tidak terbatas. Namun, varian seperti Leaky ReLU dan Parametric ReLU telah digunakan untuk mengurangi beberapa masalah ini.
Untuk melihat lebih dekat cara kerja RNN, lihat penyelaman mendalam neural networks kami.
Jaringan feedforward memetakan input dan hasil satu-ke-satu, dan meskipun kami telah memvisualisasikan jaringan neural networks dengan cara ini dalam diagram sebelum ini, jaringan ini tidak memiliki batasan ini. Sebaliknya, input dan hasil mereka dapat bervariasi, dan berbagai jenis RNN digunakan untuk berbagai contoh penggunaan, seperti pembuatan musik, klasifikasi sentimen, dan penerjemahan mesin. Varian arsitektur neural networks yang populer meliputi:
Versi dasar RNN, di mana hasil pada setiap langkah waktu bergantung pada input saat ini dan status tersembunyi dari langkah sebelumnya, sering mengalami masalah gradien yang menghilang. Hal ini membuatnya sulit untuk mempelajari pola dengan dependensi jangka panjang. Namun, RNN tetap efektif untuk tugas-tugas sederhana dengan ketergantungan jangka pendek, seperti memprediksi kata berikutnya dalam kalimat pendek atau memperkirakan nilai berikutnya dalam deret waktu sederhana.
RNN sangat cocok untuk tugas yang memproses data berurutan secara real-time, seperti mendeteksi anomali dari data sensor dalam waktu singkat. Model ini menerima input satu per satu dan segera membuat prediksi berdasarkan informasi terbaru.
Sementara RNN searah hanya dapat diambil dari input sebelumnya untuk membuat prediksi tentang kondisi saat ini, RNN dua arah, atau BRNN, menarik data masa depan untuk meningkatkan keakuratannya. Kembali ke contoh "feeling under the weather", model yang didasarkan pada BRNN dapat memprediksi dengan lebih baik bahwa kata kedua dalam frasa tersebut adalah "under" jika ia mengetahui bahwa kata terakhir dalam urutan tersebut adalah “weather.”
LSTM adalah arsitektur RNN yang populer, yang diperkenalkan oleh Sepp Hochreiter dan Juergen Schmidhuber sebagai solusi untuk masalah gradien yang hilang. Karya ini membahas masalah ketergantungan jangka panjang. Artinya, jika keadaan sebelumnya yang memengaruhi prediksi saat ini tidak berada di masa lalu yang dekat, model RNN mungkin tidak dapat dengan tepat memrediksi keadaan saat ini.
Sebagai contoh, katakanlah kita ingin memprediksi kata-kata yang dicetak miring, "Alice alergi terhadap kacang. Dia tidak bisa makan selai kacang.” Konteks alergi kacang dapat membantu kita mengantisipasi bahwa makanan yang tidak bisa dimakan mengandung kacang-kacangan. Namun, jika konteksnya adalah beberapa kalimat sebelumnya, maka akan menyulitkan atau bahkan mustahil bagi RNN untuk menghubungkan informasi tersebut.
Untuk mengatasi hal ini, jaringan LSTM memiliki “sel” di lapisan tersembunyi neural networks, yang memiliki 3 gerbang: gerbang input, gerbang hasil, dan gerbang lupa. Gerbang ini mengendalikan aliran informasi yang dibutuhkan untuk memprediksi hasil dalam jaringan. Misalnya, jika kata ganti jenis kelamin, seperti ”dia”, diulang beberapa kali dalam kalimat sebelumnya, Anda dapat mengecualikannya dari status sel.
GRU mirip dengan LSTM karena GRU juga berfungsi untuk mengatasi masalah memori jangka pendek dari model RNN. Alih-alih menggunakan “keadaan sel“ untuk mengatur informasi, ia menggunakan keadaan tersembunyi, dan alih-alih 3 gerbang, ia memiliki 2: gerbang reset dan gerbang pembaruan. Mirip dengan gerbang dalam LSTM, gerbang reset dan pembaruan mengontrol berapa banyak dan informasi mana yang harus disimpan.
Karena arsitekturnya yang lebih sederhana, GRU lebih efisien secara komputasi dan membutuhkan lebih sedikit parameter dibandingkan LSTM. Hal ini membuat GRU lebih cepat dilatih dan seringkali lebih cocok untuk aplikasi real-time atau lingkungan dengan sumber daya terbatas.
Metode ini umumnya digunakan untuk tugas urutan-ke-urutan, seperti penerjemahan mesin. Encoder mengubah urutan input menjadi vektor dengan panjang tetap (konteks), yang kemudian digunakan oleh decoder untuk menghasilkan hasil. Namun, keterbatasan panjang tetap pada vektor konteks dapat menjadi kendala, terutama saat menangani input yang panjang.
Penggunaan RNN dalam kecerdasan buatan telah menurun, terutama karena munculnya arsitektur seperti model transformator, namun RNN tetap relevan. RNN secara tradisional populer untuk pemrosesan data sekuensial seperti deret waktu dan pemodelan bahasa, karena kemampuannya menangani dependensi temporal.
Penurunan penggunaan RNN disebabkan oleh kelemahannya dalam menghadapi masalah gradien yang menghilang dan meledak, serta munculnya model transformator seperti BERT dan GPT. Transformator lebih efektif dalam menangkap dependensi jarak jauh, lebih mudah dioptimalkan, dan memberikan kinerja lebih baik dalam tugas seperti NLP, pengenalan suara, dan perkiraan deret waktu.
Meskipun demikian, RNN masih digunakan dalam situasi tertentu, terutama ketika sifat berurutan dan mekanisme memorinya bermanfaat. Model ini tetap relevan di lingkungan dengan sumber daya terbatas atau untuk tugas yang membutuhkan pemrosesan data secara bertahap.
Bagi yang ingin bereksperimen dengan contoh penggunaan RNN, Keras sebagai pustaka sumber terbuka yang kini terintegrasi dalam TensorFlow, menyediakan antarmuka Python yang intuitif. API-nya dirancang untuk kemudahan penggunaan dan kustomisasi, memungkinkan pengguna membuat lapisan sel RNN dengan perilaku khusus sesuai kebutuhan.
Latih, validasi, lakukan tuning, dan terapkan AI generatif, model dasar, dan kemampuan machine learning dengan IBM watsonx.ai, studio perusahaan generasi berikutnya untuk pembangun AI. Bangun aplikasi AI dalam waktu singkat, dengan sedikit data.
Gunakan AI di bisnis Anda dalam perpaduan antara keahlian AI terdepan di industri dari IBM dan portofolio solusi Anda.
Temukan kembali alur kerja dan operasi yang penting dengan menambahkan AI untuk memaksimalkan pengalaman, pengambilan keputusan secara real-time, dan nilai bisnis.