Cara Make Transformers
Transformers ini dimulai dari sebuah paper yang menarik yaitu Attention is All You Need yaitu tahun 2017, Tahun dimana saya baru aja lulus S2. Yang mana matkul yang diajari atau yang saya pelajari adalah machine learning old school. Attention is All you need Sebuah paper yang menjadi latar belakang pengembangan pre Trained model seperti GPT dan BERT.
Dengan mengembangkan preTrained model ini kita jadi lebih hemat waktu, hemat resource dan model kita jauh lebih cerdas. dan Menurut HuggingFace Transformers ini bisa dipake untuk NLP (klasifikasi teks, menjawab pertanyaan, language modeling, code generation) , COmputer Vision (klasifikasi gambar, Deteksi object, segmentasi), Audio (Speech Recognition, klasifikasi audio) , dan multimodal.
Transformers library support pytorch dan Tensorflow
sebelum install transformers install pytorch atau Tensorflow,
pip install torch
#or
pip install tensorflow
Pipeline()
Cara termudah untuk menggunakan pretrained model adalah dengan menggunakan pipeline()
Di transformer kita bisa pake umapa mau NLP =Text classification maka bisa pake pipeline(task=“sentiment-analysis”), kalau mau Text Generation maka pipeline(task=“text-generation”) ah mau Computer Vision berarti contohnya Image Classification maka pipeline(task=“image-classification”) lalu caranya ?
Install Transformers dulu lalu lanjutkan panggil pipeline nya dan pilih modelnya karena ada banyak model di library transformers kali ini kita pakai distilgpt2 karena yang paling ringan
pip install transformers
#ini dia
from transformers import pipeline
classifier = pipeline("sentiment-analysis", model="distilgpt2")
classifier(
["fuck it dude. you are so great.", "asu tenan arek iki","iso jowo juga to","bajingan"]
)
Hasilnya
[{'label': 'POSITIVE', 'score': 0.9998652935028076},
{'label': 'NEGATIVE', 'score': 0.6325151324272156},
{'label': 'POSITIVE', 'score': 0.814788818359375},
{'label': 'NEGATIVE', 'score': 0.5970242023468018}]
Contoh summarization
from transformers import pipeline
summarizer = pipeline("summarization")
summarizer(
"""
Ketika hidup mulai berat, ketika penguasa malah menjadikan Animal Farm sebagai panduan.
Entahlah aku juga bingung, aku tidak tahu aku harus apa, tapi daripada bingung harus berbuat apa, mending berbuat apa yang kita bisa
Memaksimalkan resource yang kupunya untuk bermanfaat bagi sesama, Hidup ini bukan soal keinginan kita, tapi seberapa bermanfaat diri kita terhadap manusia lain
sesuai dengan kapasitas diri sendiri.
Kata Nabi khoirunnas anfauhum linnas yang penting bermanfaat saja. dan juga hari ini harus lebih baik dari hari kemarin (HR Al-Hakim)
Tidak perlu muluk muluk dua hal itu saja dimaksimalkan,
"""
)
Hasilnya
[{'summary_text': ' Ketika hidup mulai berat, ketika penguasa malah menjadikan Animal Farm sebagai panduan . Hidup ini bukan soal keinginan kita, tapi seberapa bermanfaat diri kita terhadap manusia lain .'}][{'summary_text': ' Ketika hidup mulai berat, ketika penguasa malah menjadikan Animal Farm sebagai panduan . Hidup ini bukan soal keinginan kita, tapi seberapa bermanfaat diri kita terhadap manusia lain .'}]
Lalu bagaimana cara kerja dari transformer
1. Input Embedding: Mengubah Kata Menjadi Vektor
Proses dalam arsitektur transformer dimulai dengan input embedding, yaitu langkah mengubah kata-kata dalam teks menjadi representasi numerik yang disebut vektor.
- Apa itu embedding?
Embedding adalah representasi matematis dari kata-kata dalam dimensi tertentu, biasanya dalam bentuk vektor dengan ukuran tetap (contoh: 768 dimensi). Representasi ini memungkinkan model memahami makna kata secara numerik.
Sebagai contoh, dalam kalimat “Saya belajar AI”, kata “Saya”, “belajar”, dan “AI” masing-masing diubah menjadi vektor. Embedding ini mencerminkan makna kata berdasarkan konteks dalam data pelatihan.
2. Positional Embedding: Memahami Urutan Kata
Karena transformer tidak memiliki urutan bawaan seperti RNN (Recurrent Neural Network), model ini membutuhkan mekanisme tambahan untuk memahami posisi kata dalam sebuah kalimat.
- Positional Embedding:
Informasi posisi ditambahkan ke setiap vektor kata, sehingga model tahu di mana kata tersebut berada dalam urutan. Kombinasi ini menghasilkan representasi vektor yang mengandung dua informasi utama:
- Makna kata dari embedding.
- Posisi kata dalam kalimat.
Sebagai contoh, kata pertama “Saya” diberi informasi posisi sehingga berbeda dari kata “Saya” jika berada di posisi terakhir dalam kalimat.
3. Multi-Headed Self-Attention: Memahami Hubungan Antar Kata
Langkah berikutnya adalah multi-headed self-attention, mekanisme inti yang membuat transformer begitu revolusioner.
- Self-Attention memungkinkan model untuk memahami hubungan antara satu kata dengan kata lainnya, baik yang dekat maupun yang jauh dalam kalimat.
- Cara Kerja:
- Setiap kata memiliki tiga komponen: Query (Q), Key (K), dan Value (V).
- Hubungan antar kata dihitung menggunakan dot product antara Query dan Key untuk menghasilkan attention scores.
- Attention scores ini menentukan seberapa penting kata lain terhadap kata yang sedang diproses.
Dengan multi-headed attention, proses ini dilakukan secara paralel menggunakan beberapa “head” untuk menangkap berbagai pola hubungan dalam kalimat, seperti makna semantik dan struktur sintaksis.
4. Normalisasi: Menjaga Stabilitas Nilai
Setelah self-attention, hasilnya dinormalisasi agar nilainya berada dalam rentang yang wajar. Proses ini disebut layer normalization.
- Tujuan:
- Menghindari nilai yang terlalu ekstrem.
- Meningkatkan stabilitas dan efisiensi pelatihan.
5. Feed-Forward Neural Network: Memproses Representasi
Hasil dari mekanisme perhatian kemudian diteruskan ke jaringan neural feed-forward.
- Tujuan Jaringan Neural:
- Memperkuat representasi kata berdasarkan konteks yang diperoleh dari self-attention.
- Menghasilkan keluaran berupa vektor yang lebih kompleks dan abstrak.
Setiap kata kini memiliki representasi yang tidak hanya mencerminkan makna individualnya, tetapi juga hubungannya dengan kata-kata lain dalam kalimat.
6. Output: Representasi yang Siap Digunakan
Hasil akhir dari proses ini adalah representasi numerik untuk setiap kata dalam kalimat.
- Representasi ini dapat digunakan untuk berbagai tugas NLP seperti:
- Klasifikasi teks.
- Penerjemahan bahasa.
- Pencarian jawaban (question answering).