Dengan pertumbuhan dan popularitas platform sosial online, orang dapat tetap terhubung lebih dari sebelumnya melalui alat seperti pesan instan. Namun, hal ini menimbulkan kekhawatiran tambahan tentang ucapan beracun, serta intimidasi dunia maya, pelecehan verbal, atau penghinaan. Moderasi konten sangat penting untuk mempromosikan diskusi online yang sehat dan menciptakan lingkungan online yang sehat. Untuk mendeteksi konten bahasa beracun, para peneliti telah mengembangkan pendekatan pemrosesan bahasa alami (NLP) berbasis pembelajaran yang mendalam. Metode terbaru menggunakan model bahasa pra-terlatih berbasis transformator dan mencapai akurasi deteksi toksisitas yang tinggi.
Dalam aplikasi pendeteksian toksisitas dunia nyata, pemfilteran toksisitas sebagian besar digunakan dalam industri terkait keamanan seperti platform game, di mana model terus-menerus ditantang oleh rekayasa sosial dan serangan permusuhan. Akibatnya, menerapkan model deteksi toksisitas NLP berbasis teks secara langsung dapat menimbulkan masalah, dan tindakan pencegahan diperlukan.
Penelitian telah menunjukkan bahwa model jaringan saraf yang dalam tidak membuat prediksi yang akurat saat menghadapi contoh permusuhan. Ada minat yang berkembang dalam menyelidiki kekokohan permusuhan model NLP. Ini telah dilakukan dengan tubuh serangan musuh yang baru dikembangkan yang dirancang untuk mengelabui terjemahan mesin, penjawab pertanyaan, dan sistem klasifikasi teks.
Dalam postingan ini, kami melatih pengklasifikasi bahasa toksisitas berbasis transformator menggunakan Hugging Face, menguji model terlatih pada contoh permusuhan, lalu melakukan pelatihan permusuhan dan menganalisis pengaruhnya terhadap pengklasifikasi toksisitas terlatih.
Ikhtisar solusi
Contoh permusuhan adalah input yang terganggu dengan sengaja, yang bertujuan untuk menyesatkan model machine learning (ML) ke output yang salah. Pada contoh berikut (sumber: https://aclanthology.org/2020.emnlp-demos.16.pdf), dengan hanya mengubah kata โSempurnaโ menjadi โTanpa Nodaโ, model NLP memberikan prediksi yang benar-benar berlawanan.
Insinyur sosial dapat menggunakan jenis karakteristik model NLP ini untuk mem-bypass sistem penyaringan toksisitas. Untuk membuat model prediksi toksisitas berbasis teks lebih kuat terhadap serangan permusuhan yang disengaja, literatur telah mengembangkan berbagai metode. Dalam posting ini, kami menampilkan salah satunya โ pelatihan permusuhan, dan bagaimana hal itu meningkatkan ketahanan permusuhan model prediksi toksisitas teks.
Pelatihan permusuhan
Contoh permusuhan yang berhasil mengungkap kelemahan model ML korban target, karena model tidak dapat secara akurat memprediksi label dari contoh permusuhan ini. Dengan melatih ulang model dengan kombinasi data pelatihan asli dan contoh musuh yang berhasil, model yang dilatih ulang akan lebih kuat terhadap serangan di masa mendatang. Proses ini disebut pelatihan lawan.
Perpustakaan TextAttack Python
TextAttack adalah pustaka Python untuk menghasilkan contoh permusuhan dan melakukan pelatihan permusuhan untuk meningkatkan ketahanan model NLP. Pustaka ini menyediakan implementasi berbagai serangan permusuhan teks canggih dari literatur dan mendukung berbagai model dan kumpulan data. Kode dan tutorialnya tersedia di GitHub.
Dataset
Grafik Tantangan Klasifikasi Komentar Beracun di Kaggle menyediakan sejumlah besar komentar Wikipedia yang telah diberi label oleh penilai manusia untuk perilaku beracun. Jenis toksisitas adalah:
- racun
- parah_toksik
- cabul
- ancaman
- menghina
- identitas_benci
Dalam postingan ini, kami hanya memprediksi toxic
kolom. Set kereta berisi 159,571 contoh dengan 144,277 contoh tidak beracun dan 15,294 beracun, dan set pengujian berisi 63,978 contoh dengan 57,888 contoh tidak beracun dan 6,090 beracun. Kami membagi set pengujian menjadi validasi dan set pengujian, yang berisi 31,989 contoh masing-masing dengan 29,028 contoh tidak beracun dan 2,961 beracun. Bagan berikut menggambarkan distribusi data kami.
Untuk tujuan demonstrasi, postingan ini secara acak mengambil sampel 10,000 instans untuk pelatihan, dan 1,000 untuk validasi dan pengujian masing-masing, dengan masing-masing set data seimbang pada kedua kelas. Untuk detailnya, lihat kami buku catatan.
Latih pengklasifikasi bahasa beracun berbasis transformator
Langkah pertama adalah melatih pengklasifikasi bahasa beracun berbasis transformator. Kami menggunakan model bahasa DistilBERT terlatih sebagai dasar dan menyempurnakan model pada kumpulan data pelatihan klasifikasi komentar beracun Jigsaw.
Tokenisasi
Token adalah blok bangunan input bahasa alami. Tokenisasi adalah cara memisahkan sepotong teks menjadi token. Token dapat mengambil beberapa bentuk, baik kata, karakter, atau subkata. Agar model memahami teks input, tokenizer digunakan untuk menyiapkan input untuk model NLP. Beberapa contoh tokenisasi termasuk memisahkan string menjadi string token subword, mengonversi string token menjadi ID, dan menambahkan token baru ke kosa kata.
Dalam kode berikut, kami menggunakan tokenizer DistilBERT yang telah dilatih sebelumnya untuk memproses kumpulan data latih dan uji:
Untuk setiap teks input, tokenizer DistilBERT menampilkan empat fitur:
- teks - Masukkan teks.
- label โ Label keluaran.
- masukan_id โ Indeks token urutan input dalam kosakata.
- perhatian_topeng โ Topeng untuk menghindari perhatian pada indeks padding token. Nilai topeng yang dipilih adalah [0, 1]:
- 1 untuk token yang tidak disamarkan.
- 0 untuk token yang disamarkan.
Sekarang setelah kita memiliki kumpulan data token, langkah selanjutnya adalah melatih pengklasifikasi bahasa beracun biner.
Modeling
Langkah pertama adalah memuat model dasar, yang merupakan model bahasa DistilBERT terlatih. Model ini dimuat dengan kelas Transformers Hugging Face AutoModelForSequenceClassification
:
Kemudian kami menyesuaikan hyperparameter menggunakan class TrainingArguments
. Model dilatih dengan ukuran batch 32 pada 10 epoch dengan laju pembelajaran 5e-6 dan langkah pemanasan 500. Model yang dilatih disimpan di model_dir
, yang didefinisikan di awal notebook.
Untuk mengevaluasi kinerja model selama pelatihan, kita perlu menyediakan Trainer
dengan fungsi evaluasi. Di sini kami melaporkan akurasi, skor F1, presisi rata-rata, dan skor AUC.
Grafik Trainer
kelas menyediakan API untuk pelatihan lengkap fitur di PyTorch. Mari kita instantiate Trainer
dengan menyediakan model dasar, argumen pelatihan, dataset pelatihan dan evaluasi, serta fungsi evaluasi:
Setelah Trainer
dibuat instance-nya, kita dapat memulai proses pelatihan:
Saat proses pelatihan selesai, kami menyimpan tokenizer dan memodelkan artefak secara lokal:
Mengevaluasi ketahanan model
Di bagian ini, kami mencoba menjawab satu pertanyaan: seberapa kuat model pemfilteran toksisitas kami terhadap serangan permusuhan berbasis teks? Untuk menjawab pertanyaan ini, kami memilih resep serangan dari perpustakaan TextAttack dan menggunakannya untuk membuat contoh permusuhan yang terganggu untuk mengelabui model penyaringan toksisitas target kami. Setiap resep serangan menghasilkan contoh adversarial teks dengan mengubah input teks seed menjadi sampel teks yang sedikit diubah, sambil memastikan seed dan teks yang terganggu mengikuti batasan bahasa tertentu (misalnya, semantik diawetkan). Jika contoh yang baru dibuat ini menipu model target ke dalam klasifikasi yang salah, serangan itu berhasil; jika tidak, serangan gagal untuk input seed tersebut.
Kekokohan permusuhan model target dievaluasi melalui metrik Attack Success Rate (ASR). ASR didefinisikan sebagai rasio serangan yang berhasil terhadap semua serangan. Semakin rendah ASR, semakin kuat model terhadap serangan musuh.
Pertama, kami mendefinisikan pembungkus model khusus untuk menyatukan tokenisasi dan prediksi model. Langkah ini juga memastikan keluaran prediksi memenuhi format keluaran yang diperlukan oleh pustaka TextAttack.
Sekarang kami memuat model terlatih dan membuat pembungkus model khusus menggunakan model terlatih:
Menghasilkan serangan
Sekarang kita perlu menyiapkan dataset sebagai seed untuk resep serangan. Di sini kami hanya menggunakan contoh-contoh beracun itu sebagai benih, karena dalam skenario dunia nyata, insinyur sosial sebagian besar akan mencoba mengganggu contoh-contoh beracun untuk mengelabui model penyaringan target sebagai jinak. Serangan bisa memakan waktu untuk menghasilkan; untuk tujuan posting ini, kami secara acak mengambil sampel 1,000 sampel pelatihan beracun untuk diserang.
Kami menghasilkan contoh permusuhan untuk kumpulan data uji dan latih. Kami menggunakan contoh uji permusuhan untuk evaluasi ketahanan dan melatih contoh permusuhan untuk pelatihan permusuhan.
Kemudian kami mendefinisikan fungsi untuk menghasilkan serangan:
Pilih resep serangan dan hasilkan serangan:
Catat hasil serangan ke dalam bingkai data Pandas:
Hasil serangan berisi original_text
, perturbed_text
, original_output
, dan perturbed_output
. Ketika perturbed_output
adalah kebalikan dari original_output
, serangan berhasil.
Teks merah melambangkan serangan yang berhasil, dan hijau melambangkan serangan yang gagal.
Mengevaluasi ketahanan model melalui ASR
Gunakan kode berikut untuk mengevaluasi ketahanan model:
Ini mengembalikan yang berikut:
Persiapkan serangan yang berhasil
Dengan semua hasil serangan yang tersedia, kami mengambil serangan yang berhasil dari melatih contoh musuh dan menggunakannya untuk melatih ulang model:
Pelatihan permusuhan
Di bagian ini, kami menggabungkan serangan musuh yang berhasil dari data pelatihan dengan data pelatihan asli, lalu melatih model baru pada kumpulan data gabungan ini. Model ini disebut model terlatih permusuhan.
Simpan model terlatih musuh ke direktori lokal model_dir_AT
:
Mengevaluasi kekokohan model terlatih permusuhan
Sekarang model dilatih secara bermusuhan, kami ingin melihat bagaimana ketangguhan model berubah sesuai:
Kode sebelumnya mengembalikan hasil berikut:
Bandingkan kekokohan model asli dan model terlatih musuh:
Ini mengembalikan yang berikut:
Sejauh ini, kami telah melatih pengklasifikasi bahasa toksisitas biner berbasis DistilBERT, menguji ketahanannya terhadap serangan teks permusuhan, melakukan pelatihan permusuhan untuk mendapatkan pengklasifikasi bahasa toksisitas baru, dan menguji ketahanan model baru terhadap serangan teks permusuhan.
Kami mengamati bahwa model yang dilatih musuh memiliki ASR yang lebih rendah, dengan penurunan 62.21% menggunakan ASR model asli sebagai tolok ukur. Hal ini menunjukkan bahwa model tersebut lebih kuat terhadap serangan musuh tertentu.
Evaluasi kinerja model
Selain kekokohan model, kami juga tertarik untuk mempelajari bagaimana model memprediksi sampel bersih setelah dilatih secara berlawanan. Dalam kode berikut, kami menggunakan mode prediksi batch untuk mempercepat proses evaluasi:
Evaluasi model aslinya
Kami menggunakan kode berikut untuk mengevaluasi model asli:
Angka-angka berikut meringkas temuan kami.
Mengevaluasi model terlatih permusuhan
Gunakan kode berikut untuk mengevaluasi model terlatih permusuhan:
Angka-angka berikut meringkas temuan kami.
Kami mengamati bahwa model terlatih permusuhan cenderung memprediksi lebih banyak contoh sebagai beracun (801 diprediksi sebagai 1) dibandingkan dengan model asli (763 diprediksi sebagai 1), yang mengarah pada peningkatan dalam mengingat kelas beracun dan ketepatan kelas tidak beracun. kelas, dan penurunan presisi kelas beracun dan penarikan kembali kelas tidak beracun. Ini mungkin karena fakta bahwa lebih banyak kelas beracun terlihat dalam proses pelatihan permusuhan.
Kesimpulan
Sebagai bagian dari moderasi konten, pengklasifikasi bahasa toksisitas digunakan untuk memfilter konten beracun dan menciptakan lingkungan online yang lebih sehat. Penyebaran model penyaringan toksisitas di dunia nyata tidak hanya membutuhkan kinerja prediksi yang tinggi, tetapi juga kuat terhadap rekayasa sosial, seperti serangan musuh. Posting ini memberikan proses langkah demi langkah dari melatih pengklasifikasi bahasa toksisitas hingga meningkatkan ketahanannya dengan pelatihan permusuhan. Kami menunjukkan bahwa pelatihan permusuhan dapat membantu model menjadi lebih kuat terhadap serangan sekaligus mempertahankan kinerja model yang tinggi. Untuk informasi lebih lanjut tentang topik yang akan datang ini, kami mendorong Anda untuk menjelajahi dan menguji skrip kami sendiri. Anda dapat mengakses buku catatan di pos ini dari Contoh AWS GitHub repo.
Hugging Face dan AWS mengumumkan kemitraan di awal tahun 2022 yang semakin memudahkan untuk melatih model Hugging Face di SageMaker. Fungsionalitas ini tersedia melalui pengembangan Memeluk Wajah AWS DLC. Wadah ini mencakup Pustaka Hugging Face Transformers, Tokenizers, dan Datasets, yang memungkinkan kami menggunakan sumber daya ini untuk pelatihan dan pekerjaan inferensi. Untuk daftar gambar DLC yang tersedia, lihat Tersedia Gambar Deep Learning Containers. Mereka dipelihara dan diperbarui secara teratur dengan tambalan keamanan.
Anda dapat menemukan banyak contoh cara melatih model Hugging Face dengan DLC berikut ini GitHub repo.
AWS menawarkan layanan AI AWS terlatih yang dapat diintegrasikan ke dalam aplikasi menggunakan panggilan API dan tidak memerlukan pengalaman ML. Sebagai contoh, Amazon Comprehend dapat melakukan tugas NLP seperti pengenalan entitas kustom, analisis sentimen, ekstraksi frasa kunci, pemodelan topik, dan lainnya untuk mengumpulkan wawasan dari teks. Itu dapat melakukan analisis teks pada berbagai bahasa untuk berbagai fiturnya.
Referensi
Tentang Penulis
Yi Xiang adalah Data Scientist II di Amazon Machine Learning Solutions Lab, tempat dia membantu pelanggan AWS di berbagai industri mempercepat adopsi AI dan cloud mereka.
Yanjunqi adalah Ilmuwan Terapan Utama di Lab Solusi Pembelajaran Mesin Amazon. Dia berinovasi dan menerapkan pembelajaran mesin untuk membantu pelanggan AWS mempercepat penerapan AI dan cloud mereka.
- Lanjutan (300)
- AI
- ai seni
- generator seni ai
- punya robot
- Lab Solusi Amazon ML
- kecerdasan buatan
- sertifikasi kecerdasan buatan
- kecerdasan buatan dalam perbankan
- robot kecerdasan buatan
- robot kecerdasan buatan
- perangkat lunak kecerdasan buatan
- Pembelajaran Mesin AWS
- blockchain
- konferensi blockchain
- kecerdasan
- kecerdasan buatan percakapan
- konferensi kripto
- dall's
- belajar mendalam
- google itu
- Mesin belajar
- plato
- plato ai
- Kecerdasan Data Plato
- Permainan Plato
- Data Plato
- permainan plato
- skala ai
- sintaksis
- Petunjuk Teknis
- zephyrnet.dll