Traffine I/O

Bahasa Indonesia

2023-03-05

Memahami Logits dalam BERT

Apa itu Logits dalam BERT

Logits adalah istilah matematika yang digunakan dalam pembelajaran mesin dan kecerdasan buatan. Dalam konteks model BERT, logits adalah keluaran mentah dari jaringan saraf sebelum diubah menjadi probabilitas.

Dengan kata lain, logits adalah nilai yang dihasilkan oleh lapisan akhir model BERT yang mewakili derajat keyakinan algoritma bahwa kata atau frasa tertentu termasuk ke dalam kategori tertentu. Kategori-kategori ini dapat berupa tag bagian dari pidato (misalnya kata benda, kata kerja, kata sifat) hingga tugas-tugas yang lebih kompleks seperti analisis sentimen, menjawab pertanyaan, dan pengenalan entitas bernama.

Model BERT menghasilkan logits dengan memproses data masukan melalui serangkaian Transformer yang menganalisis konteks dan makna teks. Logits kemudian dimasukkan ke dalam fungsi softmax, yang mengubahnya menjadi probabilitas yang dapat digunakan untuk membuat prediksi.

Logits penting dalam model BERT karena mereka memungkinkan algoritma untuk membuat prediksi yang lebih nuansa dan akurat dengan mempertimbangkan probabilitas dari berbagai kategori. Mereka juga menyediakan cara bagi model untuk belajar dan meningkatkan kinerjanya seiring waktu dengan menyesuaikan bobot jaringan saraf berdasarkan akurasi prediksi yang dibuat dari logits.

Bagaimana Logits Bekerja dalam BERT

Dalam model BERT, logits adalah keluaran mentah dari jaringan saraf sebelum diubah menjadi probabilitas. Berikut adalah penjelasan lebih rinci tentang bagaimana logits bekerja dalam BERT:

  1. Masukan
    Model BERT mengambil data teks masukan dan memecahkannya menjadi unit-unit yang lebih kecil yang disebut subword. Subword ini kemudian dimasukkan ke dalam jaringan saraf untuk dianalisis.

  2. Transformer
    Subword-subword tersebut diproses melalui serangkaian lapisan transformer yang menganalisis konteks dan makna dari teks. Transformer dapat belajar dan merepresentasikan hubungan antara kata-kata dan frasa-frasa yang berbeda dalam teks.

  3. Logits
    Hasil keluaran dari lapisan transformer terakhir adalah sekumpulan logits. Setiap logit merepresentasikan tingkat keyakinan model bahwa subword tertentu termasuk ke dalam kategori tertentu. Sebagai contoh, suatu logit mungkin merepresentasikan probabilitas bahwa suatu subword tertentu adalah nomina atau verba.

  4. Softmax
    Logits kemudian dilewatkan melalui fungsi softmax, yang menormalisasi logits dan mengubahnya menjadi probabilitas. Ini berarti bahwa jumlah semua probabilitas untuk satu set logits tertentu akan sama dengan 1.

  5. Prediksi
    Probabilitas yang dihasilkan oleh fungsi softmax dapat digunakan untuk membuat prediksi tentang teks. Sebagai contoh, jika model BERT digunakan untuk analisis sentimen, probabilitas dapat digunakan untuk memprediksi apakah kalimat tertentu memiliki sentimen positif atau negatif.

Secara keseluruhan, logits adalah bagian penting dari model BERT karena memungkinkan algoritma untuk membuat prediksi yang lebih kompleks dan akurat dengan mempertimbangkan probabilitas kategori yang berbeda. Mereka juga memberikan cara bagi model untuk belajar dan meningkatkan performanya seiring waktu dengan menyesuaikan bobot jaringan saraf berdasarkan akurasi prediksi yang dihasilkan dari logits.

Bagaimana cara mendapatkan Logits

Untuk mendapatkan logits dari model BERT menggunakan Python, Anda dapat menggunakan pustaka PyTorch. Berikut ini adalah contoh potongan kode yang menunjukkan cara mendapatkan logits dari BERT:

python
import torch
from transformers import BertTokenizer, BertModel

# Load BERT pre-trained model and tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')

# Example text to analyze
text = "The quick brown fox jumps over the lazy dog"

# Tokenize input text
input_ids = torch.tensor([tokenizer.encode(text, add_special_tokens=True)])

# Get logits from BERT model
with torch.no_grad():
    outputs = model(input_ids)
    logits = outputs[0] # or outputs.logits

# Print logits
print(logits)

Pada contoh ini, pertama-tama kita mengimpor library yang diperlukan, termasuk library PyTorch, tokenizer BERT, dan model BERT.

Selanjutnya, kita menentukan contoh teks untuk dianalisis dan mengonversinya menjadi token menggunakan tokenizer BERT. Tensor input_ids yang dihasilkan berisi subword yang sudah di-tokenisasi.

Terakhir, kita memberikan tensor input_ids ke model BERT dan mengekstrak logits menggunakan pernyataan outputs[0]. Logits kemudian dicetak ke konsol.

Perhatikan bahwa pernyataan torch.no_grad() digunakan untuk menonaktifkan perhitungan gradien selama inferensi, yang mempercepat proses dan mengurangi penggunaan memori.

Perbedaan Antara output.logits dan output[0]

Pada model BERT, baik output.logits maupun output[0] dapat digunakan untuk mengakses logits, yaitu nilai output mentah dari layer akhir jaringan saraf. Namun, ada sedikit perbedaan antara kedua metode tersebut.

Atribut output.logits adalah atribut bernama dari objek output yang dikembalikan oleh model BERT. Objek ini berisi baik logits maupun nilai loss yang dihitung selama pelatihan. Oleh karena itu, jika Anda hanya perlu mengakses logits, menggunakan output.logits bisa lebih ringkas dan kurang rentan terhadap kesalahan.

Di sisi lain, output[0] adalah akses berbasis indeks ke elemen pertama tuple yang dikembalikan oleh model BERT. Tuple ini berisi logits sebagai elemen pertamanya dan nilai loss sebagai elemen keduanya. Oleh karena itu, jika Anda perlu mengakses baik logits maupun nilai loss, menggunakan output[0] bisa lebih nyaman.

Dalam praktiknya, kedua metode tersebut valid dan menghasilkan hasil yang sama. Pilihan antara keduanya tergantung pada preferensi pribadi dan kasus penggunaan yang spesifik.

Referensi

https://huggingface.co/docs/transformers/main_classes/output
https://towardsdatascience.com/how-to-use-bert-from-the-hugging-face-transformer-library-d373a22b0209

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!