Panduan visual intuitif untuk memahami NLP mutakhir

GPT-3, BERT, XLNet, semuanya merupakan teknologi terkini dalam pemrosesan bahasa alami (NLP) — dan semuanya menggunakan komponen arsitektur khusus yang disebut Transformer.

Tidak diragukan lagi, transformator adalah salah satu perkembangan terbesar dalam AI dalam dekade terakhir – membawa kita semakin dekat ke masa depan umat manusia yang tak terbayangkan.

Meskipun demikian, terlepas dari popularitasnya, trafo mungkin tampak membingungkan pada awalnya. Hal ini tampaknya terjadi karena banyak 'pengenalan' trafo yang kehilangan konteks yang sama pentingnya dengan pemahaman arsitektur model trafo itu sendiri.

Bagaimana seseorang bisa diharapkan untuk memahami konsep transformator tanpa terlebih dahulu memahami perhatian dan dari mana perhatian itu berasal? Itu tidak mungkin.

Itulah motif penulisan artikel ini. Kami akan secara intuitif memahami mekanisme sistem ini dengan menjelajahi aliran informasi secara visual melalui model Transformer — menyentuh matematika di balik keajaiban tersebut.

Kami akan membahas:

Attention
- Attention vs Recurrence
Positional Encoding
Self-Attention
Multi-Head Attention

Perhatian

Mekanisme perhatian sudah ada sebelum transformator dan pada awalnya digunakan untuk meningkatkan NLP mutakhir sebelumnya — jaringan saraf berulang (RNN).

Awalnya, RNN ini berbagi informasi melalui satu titik kontak, yang berarti tidak ada koneksi langsung antara sebagian besar unit masukan dan keluaran yang mengakibatkan kemacetan informasi dan terbatasnya kinerja untuk ketergantungan jangka panjang.

Dua lapisan jaringan saraf sederhana yang terhubung erat telah ditambahkan — satu untuk pembuat enkode yang menggunakan semua nilai masukan — dan yang lainnya untuk dekoder, yang akan meneruskan status tersembunyi langkah waktu saat ini ke operasi perhatian [1].

Operasi perhatian menghasilkan skor 'penyelarasan', yang digabungkan ke keadaan tersembunyi dekoder — dan operasi softmax dilakukan untuk menghasilkan probabilitas keluaran.

Informasi diteruskan antara RNN dan encoder-decoder melalui tensor kueri, kunci, dan nilai. Kueri dikirimkan dari status tersembunyi decoder, sedangkan tensor nilai kunci dikirimkan dari status tersembunyi encoder.

Jika representasi kata ditemukan memiliki kesamaan (kesejajaran) yang tinggi, operasi perhatian akan memberikan skor tinggi — dan representasi kata yang memiliki kesamaan rendah akan diberi skor rendah.

Mekanisme ini menghasilkan perilaku yang disebut perhatian, dimana unit-unit di lapisan keluaran dapat fokus pada unit-unit tertentu yang relevan di lapisan masukan.

Perhatian vs Pengulangan

Sebelum transformator dan perhatian, kami memiliki RNN. Jaringan-jaringan ini sangat cocok untuk tugas-tugas bahasa berkat kekambuhan mereka.

Pengulangan ini memungkinkan jaringan saraf untuk mencatat apakah sebuah kata ada dalam suatu urutan dan mempertimbangkan kata-kata di sekitarnya – dan bahkan kata-kata yang jauh sebelum atau sesudahnya. Karena itu, nuansa bahasa manusia bisa terwakili dengan lebih baik.

Namun, mekanisme perhatian baru ini terbukti sangat ampuh. Cukup kuat untuk makalah tahun 2017 berjudul Attention Is All You Need untuk memperkenalkan model tanpa pengulangan, menggantikannya seluruhnya dengan perhatian [2] — model transformator pertama.

Tiga mekanisme membuat perhatian bekerja tanpa perlu diulangi lagi — (1) pengkodean posisi, (2) perhatian multi-kepala, dan (3) perhatian diri.

Pengkodean Posisi

Seperti yang telah kami sebutkan, sebelum transformator, NLP mutakhir adalah RNN — khususnya, RNN yang menggunakan unit memori jangka pendek panjang (LSTM).

Secara alami, jaringan ini mampu mempertimbangkan urutan kata dengan meneruskan status keluaran dari satu unit (di t-1) ke status masukan dari unit berikutnya (di t).

Model transformator tidak berurutan seperti RNN, sehingga diperlukan metode baru untuk menyimpan semantik sekuensial yang sekarang hilang yang sebelumnya memungkinkan kita mempertimbangkan urutan kata — dan bukan hanya keberadaannya.

Untuk menjaga informasi posisi kata, pengkodean posisi ditambahkan ke penyematan kata sebelum memasuki mekanisme perhatian.

Pendekatan yang dilakukan pada makalah Attention Is All You Need adalah menghasilkan fungsi sinusoidal yang berbeda untuk setiap dimensi pada dimensi embedding.

Ingat sebelum kita mengatakan word2vec memperkenalkan konsep merepresentasikan sebuah kata sebanyak angka dalam vektor 50 hingga 100 dimensi? Di sini, di Vaswani dkk. kertas, mereka menggunakan ide yang sama tetapi untuk mewakili posisi sebuah kata.

Namun, kali ini — daripada menghitung nilai vektor menggunakan model ML, nilai tersebut dihitung menggunakan fungsi sinusoidal yang dimodifikasi.

Setiap indeks vektor diberi fungsi sinus-kosinus-sinus bergantian (indeks 0 adalah sinus; indeks 1 adalah kosinus). Selanjutnya, ketika nilai indeks meningkat dari nol menuju d (dimensi penyematan), frekuensi fungsi sinusoidal menurun.

Efek akhirnya seperti jam dengan banyak jarum. Setiap token yang kami masukkan adalah satu langkah maju. Jarum pertama (indeks 0, sinus) mulai menunjuk pada 12 dan berputar sepanjang jam delapan kali dalam 100 langkah waktu untuk mencapai akhir urutan kita.

Jarum jam berikutnya (indeks 1, kosinus) mulai menunjuk pada 6 dan berputar mengelilingi jam sedikit kurang dari delapan kali (katakanlah 7,98 kali) selama 100 langkah waktu.

Rotasi ini (frekuensi) berkurang seiring bertambahnya jumlah indeks dimensi penyematan. Saat mencapai indeks akhir (512dalam makalah A. Vaswani et al.), jarum jam akan bergerak dari jam 12 menjadi 0,001 detik melewati 12 selama 100 langkah waktu.

Merencanakan 512 jarum jam ini sebagai sinusoidal terlihat seperti ini:

Jika kita menghentikan jam pada satu langkah waktu, posisi 20, pengkodean posisi kita untuk langkah waktu tersebut adalah vektor dari semua nilai yang ditunjuk oleh jarum jam.

Kita dapat mengambil plot sinusoidal yang sulit diatur dari atas ke dalam peta panas yang lebih mudah dipahami:

Kita dapat melihat frekuensi yang lebih tinggi pada dimensi penyematan yang lebih rendah (kiri), menurun seiring dengan meningkatnya dimensi penyematan. Di sekitar dimensi 24, frekuensinya telah berkurang sedemikian rupa sehingga kita tidak lagi melihat perubahan apa pun pada gelombang sinus-kosinus (bergantian) yang tersisa.

Terakhir, pengkodean posisi ini ditambahkan ke kata embeddings.

Untuk menjumlahkan kedua vektor ini, keduanya harus memiliki jumlah dimensi yang sama. Vaswani dkk. menggunakan vektor penyematan 512 untuk penyematan kata dan posisi [2].

Perhatian Diri

Sebelumnya kita menghitung perhatian menggunakan lapisan masukan dan keluaran model — perhatian mandiri memungkinkan kita menggunakan salah satu saja.

Jadi, sebelum nilai Key dan V diekstraksi dari encoder masukan dan Query dari keadaan tersembunyi keluaran — sekarang kita mendapatkan ketiganya dari satu array penyematan input.

Perhatian diri memungkinkan masukan berinteraksi satu sama lain - artinya kita dapat mengkodekan 'keselarasan' antar kata dalam masukan yang sama. Misalnya:

Gambar pertama (kiri) menunjukkan perhatian kata 'itu' terfokus pada 'hewan' sedangkan kata terakhirnya adalah 'lelah'. Saat kata terakhir diubah menjadi 'lebar', perhatian 'itu' mengalihkan fokus ke 'jalanan'.

Hubungan antara kata-kata ini dikodekan ke dalam tensor ketika melewati unit perhatian diri.

Perhatian normal hanya akan melakukan operasi ini antara urutan masukan dan keluaran — seperti yang ditunjukkan dalam peta panas di atas.

Perhatian Multi-Kepala

Perhatian multi-head merupakan faktor penting dalam keberhasilan trafo pertama. Tanpanya, hasil menunjukkan kinerjanya lebih buruk dibandingkan pendahulunya [2].

Setelah kami menghasilkan tensor penyematan kata pengkodean posisi - kami meneruskannya ke unit perhatian multi-kepala. Bagian 'multi-head' berarti kita sebenarnya menjalankan beberapa unit perhatian diri secara paralel.

Setelah beberapa unit perhatian memproses tensor kami secara paralel, hasilnya digabungkan, diubah ukurannya melalui unit linier — dan diteruskan ke langkah berikutnya.

Kini, kekuatan dalam menggunakan perhatian multi-head berasal dari penyertaan beberapa subruang perwakilan sekaligus. Hal ini memungkinkan satu subruang mengidentifikasi hubungan antara itu dan lelah, dan subruang lainnya mengidentifikasi hubungan antara itu dan anjing .

Perhatian multi-head bukan merupakan persyaratan dalam model transformator. BERT — salah satu model NLP paling kuat di dunia, menyusun unit perhatian satu kepala dan unit umpan maju secara seri — tetapi tidak menggunakan perhatian multi-kepala [4].

Itu saja untuk pengenalan tentang transformator ini. Kami telah membahas:

  • RNN dan mekanisme encoder-decoder
  • Perhatian pada encoder-decoder
  • Perhatian dan transformator
  • Pengkodean posisi
  • Perhatian multi-kepala
  • Perhatian pada diri sendiri

Semua ini adalah konsep yang sangat abstrak dan mungkin sulit untuk dipahami. Namun, mereka membentuk dasar dari standar modern NLP dan memberikan hasil yang benar-benar tingkat lanjut sehingga layak untuk diluangkan waktu.

Saya harap artikel ini membantu Anda lebih memahami konsep-konsep ini dan bagaimana mereka cocok satu sama lain dalam sebuah Transformer. Jika Anda ingin lebih banyak, saya memposting tutorial pemrograman/ML di YouTube di sini!

Jika Anda memiliki pertanyaan, ide, atau saran — hubungi melalui Twitter atau di komentar di bawah.

Terima kasih sudah membaca!

Referensi

[1] D. Bahdanau dkk., Terjemahan Mesin Neural dengan Belajar Bersama untuk Menyelaraskan dan Menerjemahkan (2015), ICLR

[2] A. Vaswani dkk., Perhatian Adalah Yang Anda Butuhkan (2017), NeurIPS

[3] J. Uszkoreit, Transformer: Arsitektur Jaringan Neural Baru untuk Pemahaman Bahasa (2017), Blog Google AI

[4] J. Devlin dkk., BERT: Pra-pelatihan Transformator Dua Arah Mendalam untuk Pemahaman Bahasa (2019), ACL

[5] J. Alammar, Transformator Bergambar (2018), GitHub

[6] I. Sutskever dkk., Pembelajaran Urutan ke Urutan dengan Jaringan Syaraf Tiruan (2014), NeurIPS

[7] K. Cho dkk., Mempelajari Representasi Frasa menggunakan RNN Encoder-Decoder untuk Terjemahan Mesin Statistik (2014), EMNLP

🤖 Diskon 70% untuk Kursus NLP Dengan Transformers

Jika Anda ingin lebih memahami asal usul transformator selama dekade terakhir NLP, saya akan membahasnya di artikel ini:



*Semua gambar dibuat oleh penulis kecuali dinyatakan lain