Mengatasi Komentar Beracun dengan Lightning Flash dan Detoksifikasi – Menuju AI — Publikasi AI dan Teknologi Terkemuka di Dunia

Penulis (s): Dolphin Borovec

Awalnya diterbitkan di Towards AI the World’s Leading AI and Technology News and Media Company. Jika Anda sedang membangun produk atau layanan terkait AI, kami mengundang Anda untuk mempertimbangkan untuk menjadi sponsor AI. Di Towards AI, kami membantu menskalakan AI dan startup teknologi. Biarkan kami membantu Anda melepaskan teknologi Anda kepada massa.

YeahIllustration Photo oleh Pavel Danilyuk dari Pexels

Pemrosesan Bahasa Alami

Showcasing membuat model Nature Language Processing (NLP) untuk mendeteksi toksisitas dalam teks biasa dengan Lightning Flash. Kami juga menghadirkan proyek komunitas yang disebut Detoxify, yang menawarkan model HuggingFace yang telah dilatih sebelumnya dengan PytorchLightning.

Posting ini membahas dua metode untuk mengidentifikasi komentar beracun sebagai bagian dari kompetisi Tingkat Keparahan Komentar Beracun ke-4. Metode pertama memanfaatkan model dasar NLP yang kuat yang mudah dilatih dengan Lighting Flash untuk mengklasifikasikan tingkat toksisitas komentar manusia. Bagian kedua menampilkan proyek sumber terbuka, Detoxify, berdasarkan HuggingFace Transformers tetapi dilatih dengan PyTorch Lightning (PL). Selain itu, Detoxify menawarkan untuk menggunakan model mereka yang sudah terlatih yang disimpan sebagai pos pemeriksaan PL.

Komentar beracun didefinisikan sebagai komentar yang kasar, tidak sopan, atau tidak masuk akal yang mungkin membuat pengguna lain meninggalkan diskusi. Subtugas analisis sentimen adalah klasifikasi komentar beracun. [Toxic Comment Detection in Online Discussions]

Tingkat Keparahan Komentar Beracun Jigsaw ini sudah menjadi edisi keempat tentang topik ini. Kompetisi sebelumnya adalah klasifikasi sederhana dan kemudian juga tugas multibahasa dan multilabel.

Jigsaw Rate Tingkat Keparahan Komentar Beracun

Jigsaw challenge edisi tahun ini berbeda karena penyelenggara memperkenalkan sistem evaluasi baru. Penyelenggara memperhatikan bahwa itu menantang dan subjektif untuk mengklasifikasikan komentar apa yang beracun (di atas ambang batas yang dapat diterima). Jadi mereka beralih ke sistem peringkat ketika penyelenggara menyediakan dataset validasi — mengatur dua komentar berdampingan di mana satu lebih beracun daripada yang lain. Lebih alami bagi manusia untuk melakukan peringkat seperti itu daripada memprediksi skor absolut untuk setiap sampel tanpa konteks.

Dasar dengan Lightning Fash

Lightning Flash adalah kotak alat AI praktis yang mencakup domain penting seperti data Tabular, Natural language Processing (NLP), Computer Vision, dan banyak lainnya. Ini menawarkan beberapa tugas umum — klasifikasi biner dan multilabel dan spesifik domain, seperti terjemahan NLP atau Penjawab Pertanyaan.

Untuk kesederhanaan dan sifat dekat dari pemecahan masalah, kami akan memperlakukan tugas sebagai klasifikasi teks sederhana dan kami menggunakan kumpulan data kompetisi sebelumnya. Untuk menyebutkan, penyelenggara itu bahkan mendorong untuk menggunakan kumpulan data masa lalu.

Distribusi label untuk semua tingkat toksisitas dalam kumpulan data edisi ke-2.

Gambar di atas menunjukkan bahwa dataset sangat tidak seimbang dalam mendukung label tidak beracun bahkan kami menggabungkan semua subkategori: beracun, parah_beracun, cabul, ancaman, penghinaan, identitas_benci. Ketika kita membaca beberapa komentar yang diklasifikasikan sebagai tidak beracun, kita dapat merasakan tingkat toksisitas tertentu, yang mencerminkan betapa rumit dan subjektifnya mengevaluasi toksisitas.

Posting ini didasarkan pada contoh Flash dan kernel Kaggle publik terbaru kami:

Komentar beracun dengan Petir⚡Flash

Untuk melatih model, Anda hanya perlu melakukan tiga langkah dasar, mengikuti alur Machine Learning umum: (1) menyiapkan dan memuat kumpulan data, (2) membuat model dengan tulang punggung yang dipilih, dan (3) melatihnya. Kami menunjukkan setiap langkah ini disertai dengan kode yang diambil untuk ilustrasi di baris berikut.

1. Membangun DataModule

Kami akan menggunakan dataset biner bahasa tunggal setelah agregasi semua subkelas toksisitas — sederhananya, di kolom baru yang disebut “apa saja”. Kita juga perlu menentukan model mana yang akan kita gunakan nanti untuk memastikan tokenizer yang sama.

Cuplikan kode untuk membuat DataModule.

Flash terintegrasi langsung dengan hub model HuggingFace sehingga Anda dapat menggunakan model apa pun dari koleksi besar ini. Dalam baseline ini, kami menggunakan model tulang punggung “xlm-roberta-base”.

2. Membuat model

Pembuatan modelnya sangat sederhana. Kami meneruskan nama model dari DataModule yang dibuat, dan jumlah kelas secara otomatis diekstraksi dari kumpulan data yang disediakan.

Cuplikan kode untuk membuat Model dengan DataModule.

Kami mengganti metrik Akurasi default dengan Precision dan skor F1 dari TorchMetrics untuk memantau kinerja dengan lebih baik pada kumpulan data kami yang tidak seimbang.

3. Melatih model

Dengan DataModule dan Model yang dipakai, kita dapat memulai pelatihan. Karena Flash dibangun di atas PyTorch Lightning (PL), Anda dapat menggunakan fitur lengkap Pelatih PL untuk melatih model Anda. Flash memiliki logger Tenrboard bawaan bawaan, yang kami ganti di demo kami dengan CSVLogger karena lebih cocok untuk merencanakan hasil di notebook.

Cuplikan kode untuk melatih model.

Kami mengambil hasil logger dan memplot kemajuan saat pelatihan selesai. Bagan berikut menunjukkan bahwa model pra-pelatihan berkinerja baik dan penyempurnaan kami meningkatkan model secara perlahan. Dalam hal ini, kami dapat mengonfigurasi pengoptimal, kecepatan pembelajaran, dan jadwal untuk meningkatkan konvergensi.

Melacak metrik pelatihan.

Inferensi & prediksi

Karena kompetisi meminta beberapa bentuk peringkat, kami telah memutuskan untuk mengembalikan probabilitas menjadi racun alih-alih label biner karena akan lebih baik menangkap sifat tugas yang diberikan.

Cuplikan kode untuk mengganti format Output.

Flash memudahkan untuk mengubah format output prediksi. Kita dapat mengubah output ke Logits, yang akan menawarkan deskripsi yang lebih detail di kedua ujung rentang probabilitas — jelajahi tails squash oleh sigmoid.

Distribusi probabilitas prediksi persaingan dengan Flash.
Distribusi log prediksi kompetisi dengan Flash.

Skor dasar di papan peringkat dengan tiga varian prediksi adalah:
* biner: 0,509
* probabilitas: 0,696
* log: 0,698

Perlindungan sumber terbuka yang telah dilatih sebelumnya, Detoksifikasi

Jika Anda ingin menggunakan sesuatu di luar kotak hanya untuk inferensi, Anda dapat mencari hub HuggingFase dan menulis kode inferensi ringan untuk menggunakan model ini. Untuk membandingkan kinerja baseline kami, kami mengevaluasinya terhadap model yang telah dilatih sebelumnya dalam proyek Detoxify oleh unitary, yang menggunakan tulang punggung Transformers HuggingFase yang sama dengan baseline Flash kami sebelumnya (“xlm-roberta-base”).

Detoksifikasi: Model & kode terlatih untuk memprediksi komentar beracun pada semua 3 Tantangan Komentar Beracun Jigsaw. Dibangun menggunakan zap Pytorch Lightning dan Transformers pelukan.

Model ini memiliki performa yang sebanding dengan solusi Kaggle teratas menurut papan peringkat publik dari kompetisi Jigsaw ke-3. Notebook demo Kaggle kami untuk edisi keempat ini tersedia untuk umum dengan pos pemeriksaan yang diunduh.

Skor komentar beracun dengan Detoksifikasi yang terlatih

Di beberapa bagian berikut, kami akan merujuk pada penggunaan kernel offline untuk menginstal paket dan mengunduh pos pemeriksaan yang kami jelaskan di posting kami sebelumnya.

Pengajuan Offline Kaggle Mudah Dengan Chaining Kernel

Untuk menyelesaikan masalah pemuatan offline, saya menggunakan garpu pribadi saya dengan perbaikan yang diperlukan: https://github.com/Borda/detoxify

Memuat model yang telah dilatih sebelumnya

Model Detoxify dapat dipakai dengan melewati nama pos pemeriksaan atau memberikan jalur pos pemeriksaan yang diunduh dan menautkan model tersimpan HuggingFace dan definisi tokenizer.

Cuplikan kode untuk membuat model dari pos pemeriksaan.

Inferensi: kumpulkan semua prediksi

Model ini memiliki dukungan bawaan untuk inferensi GPU dan memprediksi skor sebagai perintah satu baris, dipasangkan dengan pemetaan proses panda.

Cuplikan kode untuk menjalankan prediksi.

Dibandingkan dengan prediksi Flash kami sebelumnya, kami dapat melihat bahwa skor mendukung skor beracun.

Distribusi probabilitas prediksi persaingan dengan Detoxify.

Bandingkan pada dataset validasi

Kami akan mendemonstrasikan kinerja pada dataset validasi yang disediakan. Dataset validasi terdiri dari pasangan komentar beracun relatif di mana satu komentar dianggap lebih berbahaya daripada yang lain.

30 ribu pasangan komentar berisi 15 ribu komentar unik dengan analisis keunikan sederhana. Kami memperkirakan setiap komentar unik hanya sekali untuk mengurangi waktu inferensi, menghasilkan prediksi 15rb, bukan prediksi 60rb (2 kolom * 30rb pasang) untuk seluruh kumpulan data.

Cuplikan kode untuk mengekstraksi komentar unik,

Kemudian kami membandingkan skor toksisitas yang diprediksi untuk komentar yang dianggap kurang dan lebih beracun dalam dataset validasi sebagai ukuran biner. Selain itu, karena Detoxify memprediksi skor untuk ketujuh subkategori toksisitas, kami mengevaluasi masing-masing subkategori.

Cuplikan kode untuk mendapatkan skor validasi.

Distribusi skor subkategori sangat erat, dengan skor validasi 0,65 hingga 0,69

skor untuk toksisitas: 0,69356
skor untuk toksisitas_berat: 0,69542
skor untuk cabul: 0.68111
skor untuk identity_attack: 0,65862
skor untuk penghinaan: 0,68025
skor untuk ancaman: 0,65082
skor untuk seksual_eksplisit: 0.66334

Di bawah, kami memplot perbedaan antara skor untuk melihat metrik validasi dalam konteks yang lebih kaya. Jika perbedaan antara dua skor komentar positif, mereka diberi peringkat dengan benar, dan jika negatif, mereka salah.

Menunjukkan perbedaan skor toksisitas pada pasangan validasi. Perbedaan positif mewakili pernyataan yang benar, dan perbedaan negatif berarti salah satu komentar salah dinilai.

Dibandingkan dengan data dasar Flash yang dilatih untuk mengumpulkan semua jenis toksisitas, skor 0,698 menggunakan subkelas toksisitas secara independen tidak meningkat.

Pemikiran tentang kemungkinan perbaikan

Mari kita simpulkan secara singkat dengan beberapa langkah selanjutnya yang mendorong pembaca untuk mencoba dengan kompetisi ini, yang dapat meningkatkan baseline kita dan relatif sederhana untuk diterapkan.

Buat kumpulan data baru dari kumpulan data validasi

Mengingat dataset validasi dari pasangan komentar dan mengetahui bahwa, rata-rata, masing-masing pasangan komentar muncul dalam dataset sekitar tiga kali, kita dapat melakukan pemesanan beberapa minggu dan menskalakannya ke dalam rentang (0, 1) dan menggunakannya sebagai dataset pelatihan baru dengan label lembut.

Pencarian hyperparameter

Seperti halnya model Machine Learning, sangat penting untuk memilih hyperparameter terbaik untuk mendapatkan hasil maksimal dari model tertentu. Dalam kasus integrasi Flash dengan Transformers, kami dapat mengoptimalkan arsitektur model, pengoptimal, penjadwal, kecepatan pembelajaran, tokenizer, dan banyak lagi. Flash Zero CLI mengekspos semua ini dan dapat disapu menggunakan alat pelatihan cloud.

Optimalisasi HyperParameter dengan Grid.ai dan Tanpa Perubahan Kode

Apakah Anda tertarik dengan integrasi PyTorch Lightning yang lebih keren?
Ikuti saya dan bergabunglah dengan komunitas Slack kami yang fantastis!

tentang Penulis

Jirka Borovec meraih gelar Ph.D. di Computer Vision dari CTU di Praha. Dia telah bekerja di Machine Learning dan Data Science selama beberapa tahun di beberapa startup dan perusahaan IT. Dia senang menjelajahi masalah dunia yang menarik, memecahkannya dengan teknik-teknik mutakhir, dan mengembangkan proyek-proyek sumber terbuka.

Mengatasi Komentar Beracun dengan Lightning Flash dan Detoxify awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI