Natural Language Processing, atau NLP, adalah bidang dalam artificial intelligence di mana mesin memiliki kemampuan untuk memahami data teks. Penelitian NLP telah ada sejak lama, tetapi baru-baru ini menjadi lebih populer dengan diperkenalkannya big data dan kekuatan komputasi yang lebih tinggi.
Dengan semakin berkembangnya bidang NLP, banyak peneliti mencoba meningkatkan kemampuan mesin untuk memahami data teks dengan lebih baik. Melalui banyak progres, banyak teknik diusulkan dan diterapkan dalam bidang NLP ini.
Artikel ini akan membandingkan berbagai teknik untuk memproses data teks dalam bidang NLP. Artikel ini akan berfokus pada diskusi tentang RNN, Transformers, dan BERT karena sering digunakan dalam penelitian. Mari kita bahas satu per satu.
Recurrent Neural Network (RNN)
Recurrent Neural Network atau RNN dikembangkan pada tahun 1980 tetapi baru akhir-akhir ini mendapatkan perhatian dalam bidang NLP. RNN adalah tipe khusus dalam family neural network yang digunakan untuk data berurutan (sequential data) atau data yang tidak dapat independen satu sama lain. Contoh data berurutan adalah deret waktu (time series), audio, atau data kalimat teks, pada dasarnya segala jenis data dengan urutan yang bermakna.
RNN berbeda dengan feed-forward neural networks reguler karena mereka memproses informasi secara berbeda. Dalam feed-forward neural networks, informasi diproses mengikuti layer-layer. Namun, RNN menggunakan siklus loop pada input informasi sebagai pertimbangan. Untuk memahami perbedaannya, mari lihat gambar di bawah ini.
Seperti yang terlihat pada gambar, model RNN mengimplementasikan siklus loop selama pemrosesan informasi. RNN akan mempertimbangkan input data saat ini dan data sebelumnya ketika memproses informasi. Itulah mengapa model ini cocok untuk jenis data berurutan apa pun.
Jika kita mengambil contoh pada data teks, bayangkan kita mempunyai kalimat “I wake up at 7 AM”, dan kita menggunakan kata ini sebagai input. Dalam feed-forward neural network, saat kita mencapai kata “up”, model akan melupakan kata “I”, “wake”, dan “up”. Namun, RNN akan menggunakan setiap output untuk setiap kata dan mengulanginya kembali sehingga model tidak akan lupa.
Dalam bidang NLP, RNN sering digunakan dalam banyak aplikasi teks, seperti klasifikasi teks dan pembuatan teks. RNN sering digunakan dalam aplikasi tingkat kata seperti Part of Speech tagging, next-word generation, dan lain sebagainya.
Melihat lebih dalam pada data teks dengan RNN, ada banyak jenis RNN. Misalnya, gambar di bawah ini adalah tipe many-to-many.
Pada gambar di atas, kita dapat melihat bahwa output untuk setiap langkah (time-step dalam RNN) diproses satu langkah pada satu waktu, dan setiap iterasi selalu mempertimbangkan informasi sebelumnya.
Jenis RNN lain yang digunakan dalam banyak aplikasi NLP adalah tipe encoder-decoder (Sequence-to-Sequence). Struktur ini ditunjukkan dalam gambar di bawah ini.
Struktur ini memperkenalkan dua bagian yang digunakan dalam model. Bagian pertama disebut Encoder, yang merupakan bagian yang menerima urutan data dan membuat representasi baru berdasarkan itu. Representasi ini akan digunakan dalam bagian kedua model, yaitu decoder.
Dengan struktur ini, panjang input dan output tidak harus sama. Contoh penggunaannya adalah terjemahan bahasa, yang sering tidak memiliki panjang yang sama antara input dan output.
Ada berbagai manfaat menggunakan RNN untuk memproses data natural language, termasuk:
RNN dapat digunakan untuk memproses input teks tanpa batasan panjang.
Model ini menggunakan bobot yang sama di semua time steps, yang memungkinkan neural network menggunakan parameter yang sama di setiap langkah.
Dengan memiliki memori input sebelumnya membuat RNN cocok untuk data berurutan apa pun.
Namun, ada beberapa kelemahan juga:
RNN rentan terhadap gradien yang menghilang dan meledak. Ini terjadi ketika hasil gradien adalah nilai mendekati nol (menghilang), menyebabkan network weight hanya diperbarui dalam jumlah kecil, atau hasil gradien sangat signifikan (meledak), memberikan network weight yang tidak realistis yang sangat besar pada jaringan.
Waktu pelatihan yang lama karena sifat berurutan dari model ini.
Memori jangka pendek, berarti model mulai melupakan ketika semakin lama model tersebut dilatih. Ada perluasan dari RNN yang disebut LSTM untuk mengatasi masalah ini.
Transformers
Transformers adalah arsitektur model NLP yang mencoba memecahkan tugas sequence-to-sequence yang sebelumnya dihadapi dalam RNN. Seperti yang disebutkan sebelumnya, RNN memiliki masalah dengan memori jangka pendek. Semakin panjang input, semakin besar kemungkinan model tersebut melupakan informasinya. Inilah mengapa attention mechanism dapat membantu memecahkan masalah tersebut.
Attention mechanism diperkenalkan dalam paper dari Bahdanau et al. (2014) untuk memecahkan masalah input panjang, terutama dengan tipe encoder-decoder dari RNN. Saya tidak akan menjelaskan attention mechanism secara detail. Pada dasarnya, ini adalah layer yang memungkinkan model fokus pada bagian penting dari input model saat memiliki prediksi output. Misalnya, kata input “Clock” akan berkorelasi tinggi dengan “Jam” dalam bahasa Indonesia jika tugasnya adalah untuk menerjemahkan.
Model transformers diperkenalkan oleh Vaswani et al. (2017). Arsitekturnya terinspirasi oleh encoder-decoder RNN dan dibangun dengan attention mechanism di dalam pikiran dan tidak memproses data secara berurutan. Keseluruhan model transformers terstruktur seperti gambar di bawah ini.
Dalam struktur di atas, transformers meng-encode urutan vektor data ke dalam embedding kata dengan encoding posisional yang ada sambil menggunakan decoding untuk mentransformasikan data ke bentuk asli. Dengan attention mechanismn yang ada, encoding dapat diberikan importance sesuai dengan input.
Transformers memiliki beberapa keuntungan dibandingkan dengan model lainnya, termasuk:
Proses paralelisasi meningkatkan kecepatan pelatihan dan inferensi.
Mampu memproses input yang lebih panjang, yang menawarkan pemahaman yang lebih baik terhadap konteks.
Tetapi, masih ada beberapa kelemahan pada model transformers:
Pemrosesan komputasi tinggi dan permintaan yang tinggi.
Attention mechanism mungkin memerlukan teks untuk dibagi karena batas panjang yang dapat ditangani.
Konteks bisa hilang jika pembagian dilakukan dengan salah.
BERT
BERT, atau Bidirectional Encoder Representations from Transformers, adalah model yang dikembangkan oleh Devlin et al. (2019) yang melibatkan dua langkah (pre-training dan fine-tuning) untuk membuat model. Jika dibandingkan, BERT adalah tumpukan transformer encoder (BERT Base memiliki 12 layer sedangkan BERT Large memiliki 24 layer).
Pengembangan model BERT secara keseluruhan dapat dilihat pada gambar di bawah ini.
Tugas pre-training memulai pelatihan model secara bersamaan, dan begitu selesai, model dapat disesuaikan (fine-tuned) untuk berbagai tugas downstream (tanya-jawab, klasifikasi, dan lain-lain).
BERT istimewa karena merupakan model unsupervised bidirectional language pertama yang pre-trained pada data teks. BERT sebelumnya telah dilatih pada keseluruhan Wikipedia dan book corpus, yang terdiri lebih dari 3000 juta kata.
BERT dianggap sebagai model bidireksional karena tidak membaca input data secara berurutan (dari kiri ke kanan atau sebaliknya), tetapi encoder transformer membaca seluruh rangkaian kata secara bersamaan.
Berbeda dengan directional models, yang membaca input teks secara berurutan (kiri ke kanan atau kanan ke kiri), encoder Transformer membaca seluruh urutan kata secara bersamaan. Itulah sebabnya model ini dianggap bidireksional dan memungkinkan model untuk memahami seluruh konteks dari data input.
Untuk mencapai bidireksional, BERT menggunakan dua teknik:
Mask Language Model (MLM) — Teknik masking kata. Teknik ini akan menyembunyikan 15% kata input dan mencoba memprediksi kata yang di-mask berdasarkan kata yang tidak di-mask.
Next Sentence Prediction (NSP) — BERT mencoba mempelajari hubungan antara kalimat. Model memiliki pasangan kalimat sebagai input data dan mencoba memprediksi apakah kalimat berikutnya ada dalam dokumen asli.
Ada beberapa keuntungan menggunakan BERT dalam bidang NLP, diantaranya:
BERT mudah digunakan untuk pre-trained berbagai tugas NLP downstream.
Bidireksional membuat BERT memahami konteks teks dengan lebih baik.
Ini adalah model populer yang mendapat banyak dukungan dari komunitas.
Meskipun demikian, masih ada beberapa kelemahan, diantaranya:
Membutuhkan daya komputasi yang tinggi dan waktu pelatihan yang lama untuk fine-tuning beberapa tugas downstream.
Model BERT mungkin menghasilkan model besar yang memerlukan penyimpanan yang lebih besar.
BERT lebih baik digunakan untuk tugas-tugas kompleks karena peforma untuk tugas-tugas sederhana tidak jauh berbeda dibandingkan dengan menggunakan model yang lebih sederhana.
Kesimpulan
NLP telah menjadi lebih popular baru-baru ini, dan banyak penelitian telah difokuskan pada meningkatkan aplikasinya. Dalam artikel ini, kita membahas tiga teknik NLP yang sering digunakan:
RNN
Transformers
BERT
Setiap teknik memiliki kelebihan dan kelemahan masing-masing, tetapi secara keseluruhan, kita dapat melihat model berkembang dengan lebih baik.
Comments