5 poin oleh GN⁺ 2024-01-04 | 1 komentar | Bagikan ke WhatsApp

Encoder

  • Menjelaskan proses mengubah teks menjadi vektor dan proses menambahkan informasi posisi ke embedding yang diperoleh dari sana.
  • Tujuannya adalah menghasilkan embedding yang menangkap informasi makna dari teks masukan.

1. Embedding teks

  • "Hello World" diubah menjadi vektor untuk membuat embedding.
  • Untuk setiap token, nilai acak diberikan untuk membentuk vektor.

2. Encoding posisi

  • Encoding posisi ditambahkan ke embedding untuk menambahkan informasi posisi kata.
  • Menggunakan vektor tetap untuk memberikan pola angka yang unik namun konsisten pada setiap posisi.

3. Menggabungkan encoding posisi dan embedding

  • Encoding posisi dan embedding dijumlahkan untuk membuat matriks baru yang akan digunakan sebagai masukan encoder.

Self-attention

  • Menjelaskan attention, yaitu mekanisme yang memungkinkan model berfokus pada bagian tertentu dari masukan.
  • Dengan menggunakan multi-head attention, model dapat secara bersamaan berfokus pada informasi dalam berbagai ruang representasi.

4.1 Definisi matriks

  • Mendefinisikan matriks K, V, dan Q untuk setiap head attention.

4.2 Menghitung key, query, dan value

  • Mengalikan embedding masukan dengan matriks bobot untuk menghitung matriks key, query, dan value.

4.3 Perhitungan attention

  • Menghitung hasil kali dot antara query dan setiap vektor key, lalu membagi hasilnya dengan akar kuadrat dari dimensi vektor key.
  • Menerapkan fungsi softmax untuk memperoleh bobot attention.
  • Mengalikan setiap vektor value dengan bobot attention.

Feed-forward layer

  • Pada encoder, terdapat jaringan saraf feed-forward setelah layer self-attention.
  • Jaringan ini menggunakan dua transformasi linear dan fungsi aktivasi ReLU.

5.1 Layer feed-forward dasar

  • Layer linear pertama memperluas dimensi masukan, lalu setelah fungsi aktivasi ReLU diterapkan, layer linear kedua mengecilkan dimensi kembali ke ukuran semula.

5.2 Menggabungkan seluruh proses encoder

  • Menuliskan blok encoder dalam kode yang mencakup multi-head attention dan layer feed-forward.

5.3 Koneksi residual dan normalisasi layer

  • Koneksi residual adalah menambahkan masukan layer ke keluarannya, sedangkan normalisasi layer adalah teknik untuk menormalkan masukan layer.

Opini GN⁺

  • Artikel ini menjelaskan matematika yang rumit dengan cara yang disederhanakan untuk membantu pemahaman matematis tentang model Transformer.
  • Secara khusus, artikel ini membantu memahami cara kerja mekanisme self-attention dan jaringan saraf feed-forward.
  • Dengan menunjukkan bagaimana teknik seperti koneksi residual dan normalisasi layer berkontribusi pada stabilitas dan kinerja jaringan saraf, artikel ini memberikan wawasan tentang cara mengatasi masalah pembelajaran pada jaringan saraf dalam.

1 komentar

 
GN⁺ 2024-01-04
Komentar Hacker News
  • "Misteri" transformer adalah bahwa di setiap layer, alih-alih urutan linear dari bobot statis dan nilai, ia menggunakan 3 matriks berbeda yang diperoleh melalui perkalian bobot terlatih dari input yang sama, lalu mengalikan matriks-matriks itu satu sama lain. Ini memungkinkan lebih banyak pemrosesan paralel, tetapi rumus attention sangat terbatas karena bersifat statis.

    • Sulit melihat kemajuan lebih lanjut sampai ada cara untuk menggeneralisasi graph komputasi menjadi parameter yang bisa dipelajari.
    • Dengan metode gradien yang ada, tidak jelas apakah itu mungkin dalam arti tradisional, karena efek kekacauan di mana perubahan kecil bisa menyebabkan perubahan besar pada performa.
    • Mungkin perlu ada sesuatu seperti algoritma genetika atau PSO yang terjadi di dalamnya.
  • Jika menginginkan pendekatan yang lebih kering, formal, dan ringkas, lihat "The Transformer Model in Equations" karya John Thickstun. Seluruh isinya muat dalam satu halaman dengan notasi matematika standar.

  • Saat membaca tulisannya, muncul pertanyaan.

    • Vektor yang sesuai dengan "Hello" dan "World" terlihat acak, tetapi juga tampak memiliki pola.
    • Ingin tahu apakah pengulangan angka 2 di dalam vektor punya arti, atau apakah keseluruhan set-nya yang unik.
  • Ingin mencari paper atau artikel tentang mengapa transformer tetap bisa menangani kata atau subword/token yang tidak ada di dataset pelatihan, meskipun ia bekerja hanya sebagai "prediktor token berikutnya".

    • Misalnya, saat membuat tabel di pandas dengan kolom "sdsfs_ff" dan "fsdf_value", atau saat membuat contoh yang tidak ada di dataset pelatihan lalu meminta LLM menghasilkan output serupa.
    • Akan bagus juga jika ada tautan yang membahas positional embedding. Belum mendapat jawaban yang memuaskan tentang penggunaan sinus/cosinus dan (perkalian vs perbandingan).
  • Tutorial transformer mungkin adalah tutorial monad yang baru. Ini konsep yang sulit dipahami, tetapi seperti banyak hal lain di ilmu komputer, kita harus bersusah payah memahaminya dan berlatih dengan contoh.

  • Saya tahu beberapa katanya.

  • Sebagai seseorang yang pernah menulis ANN dari nol tanpa menggunakan TensorFlow, penjelasan ini tetap membingungkan.

    • Ketika saya meminta ChatGPT menjelaskan cara memodifikasi ANN dasar untuk mengimplementasikan self-attention tanpa memakai istilah matriks atau vektor, ia memberikan penjelasan yang sangat sederhana.
    • Saya lebih suka memikirkan semuanya dalam hal node, bobot, dan layer. Matriks dan vektor membuat lebih sulit mengaitkan apa yang sebenarnya terjadi di dalam ANN.
    • Cara yang biasa saya pakai untuk menulis ANN adalah setiap node input berupa skalar, tetapi algoritma feed forward tampak seperti perkalian vektor-matriks karena semua node input dikalikan dengan bobot lalu dijumlahkan.
  • Saya suka situs web Quarto. Saya melihat lebih banyak pengguna Python memakainya untuk publikasi.

  • Di langkah 7 decoder, saya penasaran apakah seharusnya Z_encoder_decoder = layer_norm(Z_encoder_decoder + Z) diganti menjadi Z_encoder_decoder = layer_norm(Z_encoder_decoder + Z_self_attention), dan apakah di langkah 8 decoder ada layer_norm yang terlewat.

  • Ingin tahu apakah LLM menggunakan jaringan saraf, dan apa yang sebenarnya membentuk "neuron". Maksudnya, apakah ada struktur kode yang mendasari neuron, atau ini "sekadar" matematika yang kompleks.