Pengoperasian pembelajaran mesin di Mail.ru Mail

Pengoperasian pembelajaran mesin di Mail.ru Mail

Berdasarkan pidato saya di Highload++ dan DataFest Minsk 2019.

Bagi banyak orang saat ini, surat merupakan bagian integral dari kehidupan online. Dengan bantuannya, kami melakukan korespondensi bisnis, menyimpan segala macam informasi penting terkait keuangan, pemesanan hotel, pemesanan, dan banyak lagi. Pada pertengahan tahun 2018, kami merumuskan strategi produk untuk pengembangan email. Seperti apa seharusnya surat modern?

Surat harus ой, yaitu membantu pengguna menavigasi peningkatan volume informasi: memfilter, menyusun, dan menyediakannya dengan cara yang paling nyaman. Dia harusnya berguna, memungkinkan Anda menyelesaikan berbagai tugas langsung di kotak surat Anda, misalnya, membayar denda (sayangnya, fungsi yang saya gunakan). Dan pada saat yang sama, tentu saja, email harus memberikan perlindungan informasi, memotong spam dan melindungi dari peretasan, yaitu menjadi aman.

Area-area ini menentukan sejumlah masalah utama, banyak di antaranya dapat diselesaikan secara efektif menggunakan pembelajaran mesin. Berikut adalah contoh fitur yang sudah ada yang dikembangkan sebagai bagian dari strategi - satu fitur untuk setiap arah.

  • Balasan Cerdas. Mail memiliki fitur balasan cerdas. Jaringan saraf menganalisis teks surat, memahami makna dan tujuannya, dan sebagai hasilnya menawarkan tiga opsi respons yang paling tepat: positif, negatif, dan netral. Hal ini membantu menghemat waktu secara signifikan saat menjawab surat, dan juga sering kali merespons dengan cara yang tidak standar dan lucu.
  • Mengelompokkan emailterkait dengan pesanan di toko online. Kami sering berbelanja online, dan biasanya toko dapat mengirim beberapa email untuk setiap pesanan. Misalnya, dari AliExpress, layanan terbesar, banyak surat masuk untuk satu pesanan, dan kami menghitung bahwa dalam kasus terminal jumlahnya bisa mencapai hingga 29. Oleh karena itu, dengan menggunakan model Pengenalan Entitas Bernama, kami mengekstrak nomor pesanan dan informasi lain dari teks dan kelompokkan semua huruf dalam satu utas. Kami juga menampilkan informasi dasar tentang pesanan dalam kotak terpisah, yang memudahkan pengerjaan dengan jenis email ini.

    Pengoperasian pembelajaran mesin di Mail.ru Mail

  • Antiphishing. Phishing adalah jenis email penipuan yang sangat berbahaya, yang dengannya penyerang mencoba mendapatkan informasi keuangan (termasuk kartu bank pengguna) dan login. Surat-surat tersebut meniru surat asli yang dikirimkan oleh layanan, termasuk secara visual. Oleh karena itu, dengan bantuan Computer Vision, kami mengenali logo dan gaya desain surat dari perusahaan besar (misalnya, Mail.ru, Sber, Alfa) dan mempertimbangkannya bersama dengan teks dan fitur lainnya dalam pengklasifikasi spam dan phishing kami .

Pembelajaran mesin

Sedikit tentang pembelajaran mesin di email secara umum. Mail adalah sistem yang sarat muatan: rata-rata 1,5 miliar surat per hari melewati server kami untuk 30 juta pengguna DAU. Sekitar 30 sistem pembelajaran mesin mendukung semua fungsi dan fitur yang diperlukan.

Setiap huruf melewati seluruh jalur klasifikasi. Pertama kami memotong spam dan meninggalkan email yang bagus. Pengguna seringkali tidak memperhatikan kerja antispam, karena 95-99% spam bahkan tidak masuk ke folder yang sesuai. Pengenalan spam adalah bagian yang sangat penting dari sistem kami, dan yang paling sulit, karena di bidang anti-spam terdapat adaptasi yang konstan antara sistem pertahanan dan serangan, yang memberikan tantangan rekayasa berkelanjutan bagi tim kami.

Selanjutnya kita pisahkan huruf dari manusia dan robot. Email dari orang-orang adalah yang paling penting, jadi kami menyediakan fitur seperti Smart Reply untuk mereka. Surat dari robot dibagi menjadi dua bagian: transaksional - ini adalah surat penting dari layanan, misalnya konfirmasi pembelian atau reservasi hotel, keuangan, dan informasi - ini adalah iklan bisnis, diskon.

Kami percaya bahwa email transaksional sama pentingnya dengan korespondensi pribadi. Surat-surat itu harusnya sudah dekat, karena kita sering kali perlu segera mencari informasi tentang pesanan atau reservasi tiket pesawat, dan kita menghabiskan waktu mencari surat-surat ini. Oleh karena itu, demi kenyamanan, kami secara otomatis membaginya menjadi enam kategori utama: perjalanan, pemesanan, keuangan, tiket, registrasi, dan terakhir, denda.

Surat informasi adalah kelompok terbesar dan mungkin kurang penting, yang tidak memerlukan tanggapan segera, karena tidak ada perubahan signifikan dalam kehidupan pengguna jika dia tidak membaca surat tersebut. Di antarmuka baru kami, kami membaginya menjadi dua rangkaian pesan: jejaring sosial dan buletin, sehingga secara visual membersihkan kotak masuk dan hanya menyisakan pesan-pesan penting yang terlihat.

Pengoperasian pembelajaran mesin di Mail.ru Mail

Eksploitasi

Banyaknya sistem menyebabkan banyak kesulitan dalam pengoperasiannya. Bagaimanapun, model mengalami penurunan seiring berjalannya waktu, seperti halnya perangkat lunak apa pun: fitur rusak, mesin gagal, kode menjadi bengkok. Selain itu, data terus berubah: data baru ditambahkan, pola perilaku pengguna diubah, dll., sehingga model tanpa dukungan yang tepat akan bekerja semakin buruk seiring berjalannya waktu.

Kita tidak boleh lupa bahwa semakin dalam pembelajaran mesin menembus kehidupan pengguna, semakin besar dampaknya terhadap ekosistem, dan akibatnya, semakin banyak kerugian finansial atau keuntungan yang dapat diterima para pelaku pasar. Oleh karena itu, di semakin banyak area, pemain beradaptasi dengan cara kerja algoritme ML (contoh klasiknya adalah periklanan, penelusuran, dan antispam yang telah disebutkan).

Selain itu, tugas pembelajaran mesin memiliki kekhasan: perubahan apa pun, bahkan yang kecil sekalipun, dalam sistem dapat menghasilkan banyak pekerjaan dengan model: bekerja dengan data, pelatihan ulang, penerapan, yang dapat memakan waktu berminggu-minggu atau berbulan-bulan. Oleh karena itu, semakin cepat perubahan lingkungan tempat model Anda beroperasi, semakin banyak upaya yang diperlukan untuk mempertahankannya. Sebuah tim dapat menciptakan banyak sistem dan merasa senang karenanya, namun kemudian menghabiskan hampir seluruh sumber dayanya untuk memelihara sistem tersebut, tanpa peluang untuk melakukan sesuatu yang baru. Kami pernah menghadapi situasi seperti ini di tim antispam. Dan mereka membuat kesimpulan yang jelas bahwa dukungan perlu diotomatisasi.

Otomasi

Apa yang bisa diotomatisasi? Sebenarnya hampir semuanya. Saya telah mengidentifikasi empat area yang menentukan infrastruktur pembelajaran mesin:

  • pengumpulan data;
  • pelatihan tambahan;
  • menyebarkan;
  • pengujian & pemantauan.

Jika lingkungan tidak stabil dan terus berubah, seluruh infrastruktur di sekitar model menjadi jauh lebih penting daripada model itu sendiri. Ini mungkin merupakan pengklasifikasi linier lama yang bagus, tetapi jika Anda memberinya fitur yang tepat dan mendapatkan umpan balik yang baik dari pengguna, ini akan bekerja jauh lebih baik daripada model Tercanggih dengan semua fiturnya.

Lingkaran Umpan Balik

Siklus ini menggabungkan pengumpulan data, pelatihan tambahan, dan penerapan - pada kenyataannya, seluruh siklus pembaruan model. Mengapa ini penting? Lihat jadwal pendaftaran melalui pos:

Pengoperasian pembelajaran mesin di Mail.ru Mail

Pengembang pembelajaran mesin telah menerapkan model anti-bot yang mencegah bot mendaftar di email. Grafik turun ke nilai yang hanya tersisa pengguna sebenarnya. Semuanya bagus! Namun empat jam berlalu, bot mengubah skripnya, dan semuanya kembali normal. Dalam implementasi ini, pengembang menghabiskan waktu satu bulan untuk menambahkan fitur dan melatih ulang model, namun pelaku spam mampu beradaptasi dalam empat jam.

Agar tidak terlalu menyakitkan dan tidak harus mengulang semuanya nanti, pertama-tama kita harus memikirkan seperti apa putaran umpan baliknya dan apa yang akan kita lakukan jika lingkungan berubah. Mari kita mulai dengan mengumpulkan data - ini adalah bahan bakar untuk algoritme kami.

Pengumpulan data

Jelas bahwa untuk jaringan saraf modern, semakin banyak data, semakin baik, dan data tersebut sebenarnya dihasilkan oleh pengguna produk. Pengguna dapat membantu kami dengan menandai data, namun kami tidak dapat menyalahgunakannya, karena suatu saat pengguna akan bosan menyelesaikan model Anda dan akan beralih ke produk lain.

Salah satu kesalahan paling umum (di sini saya merujuk ke Andrew Ng) adalah terlalu fokus pada metrik pada dataset pengujian, dan bukan pada umpan balik dari pengguna, yang sebenarnya merupakan ukuran utama kualitas pekerjaan, sejak kami membuat suatu produk bagi penggunanya. Jika pengguna tidak memahami atau tidak menyukai pekerjaan model, maka semuanya akan hancur.

Oleh karena itu, pengguna harus selalu dapat memilih dan harus diberikan alat untuk memberikan umpan balik. Jika menurut kami surat terkait keuangan telah sampai di kotak surat, kami perlu menandainya sebagai “keuangan” dan menggambar tombol yang dapat diklik pengguna dan mengatakan bahwa ini bukan keuangan.

Kualitas umpan balik

Mari kita bicara tentang kualitas masukan pengguna. Pertama, Anda dan pengguna dapat memasukkan arti berbeda ke dalam satu konsep. Misalnya, Anda dan manajer produk Anda menganggap “keuangan” berarti surat dari bank, dan pengguna menganggap surat dari nenek tentang pensiunnya juga mengacu pada keuangan. Kedua, ada pengguna yang suka menekan tombol tanpa logika apa pun. Ketiga, pengguna mungkin salah dalam mengambil kesimpulan. Contoh mencolok dari praktik kami adalah penerapan pengklasifikasi Spam Nigeria, jenis spam yang sangat lucu di mana pengguna diminta mengambil beberapa juta dolar dari kerabat jauh yang tiba-tiba ditemukan di Afrika. Setelah menerapkan pengklasifikasi ini, kami memeriksa klik “Bukan Spam” pada email tersebut, dan ternyata 80% di antaranya adalah spam yang menarik dari Nigeria, yang menunjukkan bahwa pengguna bisa sangat mudah tertipu.

Dan jangan lupa bahwa tombol-tombol tersebut tidak hanya dapat diklik oleh orang-orang, tetapi juga oleh semua jenis bot yang berpura-pura menjadi browser. Jadi umpan balik mentah tidak baik untuk pembelajaran. Apa yang dapat Anda lakukan dengan informasi ini?

Kami menggunakan dua pendekatan:

  • Masukan dari ML tertaut. Misalnya, kita memiliki sistem anti-bot online, yang, seperti saya sebutkan, membuat keputusan cepat berdasarkan sejumlah tanda yang terbatas. Dan ada sistem kedua yang lambat yang bekerja setelah kejadian tersebut. Ini memiliki lebih banyak data tentang pengguna, perilakunya, dll. Hasilnya, keputusan yang paling tepat dibuat; oleh karena itu, keputusan tersebut memiliki akurasi dan kelengkapan yang lebih tinggi. Anda dapat mengarahkan perbedaan pengoperasian sistem ini ke yang pertama sebagai data pelatihan. Oleh karena itu, sistem yang lebih sederhana akan selalu berusaha mendekati kinerja sistem yang lebih kompleks.
  • Klik klasifikasi. Anda cukup mengklasifikasikan setiap klik pengguna, mengevaluasi validitas dan kegunaannya. Kami melakukan ini di email antispam, menggunakan atribut pengguna, riwayatnya, atribut pengirim, teks itu sendiri, dan hasil pengklasifikasi. Hasilnya, kami mendapatkan sistem otomatis yang memvalidasi masukan pengguna. Dan karena sistem ini perlu dilatih ulang lebih jarang, cara kerjanya dapat menjadi dasar bagi semua sistem lainnya. Prioritas utama dalam model ini adalah presisi, karena melatih model pada data yang tidak akurat memiliki konsekuensi.

Saat kami membersihkan data dan melatih lebih lanjut sistem ML kami, kami tidak boleh melupakan penggunanya, karena bagi kami, ribuan, jutaan kesalahan pada grafik adalah statistik, dan bagi pengguna, setiap bug adalah sebuah tragedi. Selain fakta bahwa pengguna harus hidup dengan kesalahan produk Anda, setelah menerima umpan balik, ia berharap situasi serupa akan dihilangkan di masa mendatang. Oleh karena itu, ada baiknya untuk selalu memberikan pengguna tidak hanya kesempatan untuk memilih, tetapi juga untuk memperbaiki perilaku sistem ML, dengan membuat, misalnya, heuristik pribadi untuk setiap klik umpan balik; dalam kasus email, ini bisa berupa kemampuan untuk memfilter surat tersebut menurut pengirim dan judul untuk pengguna ini.

Anda juga perlu membangun model berdasarkan beberapa laporan atau permintaan dukungan dalam mode semi-otomatis atau manual sehingga pengguna lain tidak mengalami masalah serupa.

Heuristik untuk pembelajaran

Ada dua masalah dengan heuristik dan kruk ini. Pertama, jumlah kruk yang terus bertambah sulit dipertahankan, apalagi kualitas dan kinerjanya dalam jangka panjang. Masalah kedua adalah kesalahan mungkin tidak sering terjadi, dan beberapa klik untuk melatih model lebih lanjut tidak akan cukup. Tampaknya kedua dampak yang tidak berhubungan ini dapat dinetralisir secara signifikan jika pendekatan berikut diterapkan.

  1. Kami membuat kruk sementara.
  2. Kami mengirimkan data darinya ke model, yang secara berkala memperbarui dirinya sendiri, termasuk data yang diterima. Di sini tentunya heuristik harus memiliki akurasi yang tinggi agar tidak mengurangi kualitas data dalam set pelatihan.
  3. Kemudian kami mengatur pemantauan untuk memicu kruk, dan jika setelah beberapa waktu kruk tidak berfungsi lagi dan tertutup seluruhnya oleh model, maka Anda dapat melepasnya dengan aman. Kini permasalahan tersebut sepertinya tidak akan terjadi lagi.

Jadi pasukan kruk sangat berguna. Yang penting pelayanan mereka bersifat mendesak dan tidak permanen.

Pelatihan tambahan

Pelatihan ulang adalah proses menambahkan data baru yang diperoleh sebagai hasil umpan balik dari pengguna atau sistem lain, dan melatih model yang sudah ada berdasarkan data tersebut. Mungkin ada beberapa masalah dengan pelatihan tambahan:

  1. Model tersebut mungkin tidak mendukung pelatihan tambahan, tetapi hanya belajar dari awal.
  2. Tidak ada satupun dalam buku alam yang tertulis bahwa pelatihan tambahan tentunya akan meningkatkan kualitas pekerjaan di bidang produksi. Seringkali yang terjadi justru sebaliknya, yaitu hanya kemunduran yang mungkin terjadi.
  3. Perubahan tidak dapat diprediksi. Ini adalah poin yang agak halus yang telah kami identifikasi sendiri. Meskipun model baru dalam pengujian A/B menunjukkan hasil yang serupa dibandingkan model saat ini, bukan berarti model tersebut akan bekerja dengan cara yang sama. Pekerjaan mereka mungkin berbeda hanya satu persen, yang mungkin membawa kesalahan baru atau mengembalikan kesalahan lama yang sudah diperbaiki. Baik kami maupun pengguna sudah mengetahui cara menghadapi kesalahan saat ini, dan ketika sejumlah besar kesalahan baru muncul, pengguna mungkin juga tidak memahami apa yang terjadi, karena ia mengharapkan perilaku yang dapat diprediksi.

Oleh karena itu, hal terpenting dalam pelatihan tambahan adalah memastikan bahwa model tersebut ditingkatkan, atau setidaknya tidak memburuk.

Hal pertama yang terlintas dalam pikiran ketika kita berbicara tentang pelatihan tambahan adalah pendekatan Pembelajaran Aktif. Apa artinya ini? Misalnya, pengklasifikasi menentukan apakah email terkait dengan keuangan, dan di sekitar batasan keputusannya, kami menambahkan contoh contoh berlabel. Ini berfungsi dengan baik, misalnya, dalam periklanan, di mana terdapat banyak masukan dan Anda dapat melatih modelnya secara online. Dan jika hanya ada sedikit umpan balik, maka kita mendapatkan sampel yang sangat bias dibandingkan dengan distribusi data produksi, yang menjadi dasar tidak mungkin untuk mengevaluasi perilaku model selama operasi.

Pengoperasian pembelajaran mesin di Mail.ru Mail

Faktanya, tujuan kami adalah melestarikan pola lama, model yang sudah dikenal, dan memperoleh pola baru. Kontinuitas penting di sini. Model tersebut, yang sering kali kami luncurkan dengan susah payah, sudah berfungsi, sehingga kami dapat fokus pada performanya.

Berbagai model digunakan dalam email: pohon, linier, jaringan saraf. Untuk masing-masingnya, kami membuat algoritme pelatihan tambahan kami sendiri. Dalam proses pelatihan tambahan, kami tidak hanya menerima data baru, tetapi juga sering kali fitur baru, yang akan kami perhitungkan dalam semua algoritme di bawah ini.

Model linier

Misalkan kita mempunyai regresi logistik. Kami membuat model kerugian dari komponen berikut:

  • LogLoss pada data baru;
  • kami mengatur bobot fitur-fitur baru (kami tidak menyentuh yang lama);
  • kita juga belajar dari data lama untuk melestarikan pola lama;
  • dan, mungkin, yang paling penting: kami menambahkan Regularisasi Harmonik, yang menjamin bahwa bobot tidak akan banyak berubah dibandingkan model lama sesuai norma.

Karena setiap komponen Kerugian memiliki koefisien, kita dapat memilih nilai optimal untuk tugas kita melalui validasi silang atau berdasarkan persyaratan produk.

Pengoperasian pembelajaran mesin di Mail.ru Mail

Деревья

Mari beralih ke pohon keputusan. Kami telah menyusun algoritma berikut untuk pelatihan pohon tambahan:

  1. Produksi menjalankan hutan dengan 100-300 pohon, yang dilatih berdasarkan kumpulan data lama.
  2. Pada akhirnya kami menghapus M = 5 buah dan menambahkan 2M = 10 buah baru, dilatih pada seluruh kumpulan data, tetapi dengan bobot yang tinggi untuk data baru, yang secara alami menjamin perubahan bertahap dalam model.

Tentu saja, seiring berjalannya waktu, jumlah pohon meningkat pesat, dan pohon tersebut harus dikurangi secara berkala agar dapat memenuhi waktunya. Untuk melakukan ini, kami menggunakan Distilasi Pengetahuan (KD) yang sekarang ada di mana-mana. Secara singkat tentang prinsip pengoperasiannya.

  1. Kami memiliki model "kompleks" saat ini. Kami menjalankannya pada kumpulan data pelatihan dan mendapatkan distribusi probabilitas kelas pada output.
  2. Selanjutnya, kami melatih model siswa (dalam hal ini model dengan pohon lebih sedikit) untuk mengulangi hasil model menggunakan distribusi kelas sebagai variabel target.
  3. Penting untuk dicatat di sini bahwa kami tidak menggunakan markup kumpulan data dengan cara apa pun, dan oleh karena itu kami dapat menggunakan data arbitrer. Tentu saja, kami menggunakan sampel data dari aliran pertarungan sebagai sampel pelatihan untuk model siswa. Dengan demikian, set pelatihan memungkinkan kami memastikan keakuratan model, dan sampel aliran menjamin performa serupa pada distribusi produksi, sehingga mengimbangi bias set pelatihan.

Pengoperasian pembelajaran mesin di Mail.ru Mail

Kombinasi kedua teknik ini (menambahkan pohon dan mengurangi jumlahnya secara berkala menggunakan Penyulingan Pengetahuan) memastikan pengenalan pola baru dan kesinambungan penuh.

Dengan bantuan KD, kami juga melakukan operasi berbeda pada fitur model, seperti menghapus fitur dan mengatasi celah. Dalam kasus kami, kami memiliki sejumlah fitur statistik penting (menurut pengirim, hash teks, URL, dll.) yang disimpan dalam database, yang cenderung gagal. Model tersebut, tentu saja, belum siap untuk perkembangan peristiwa seperti itu, karena situasi kegagalan tidak terjadi di set pelatihan. Dalam kasus seperti itu, kami menggabungkan teknik KD dan augmentasi: saat melatih sebagian data, kami menghapus atau menyetel ulang fitur yang diperlukan, dan kami mengambil label asli (keluaran dari model saat ini), dan model siswa belajar mengulangi distribusi ini. .

Pengoperasian pembelajaran mesin di Mail.ru Mail

Kami memperhatikan bahwa semakin serius manipulasi model yang terjadi, semakin besar persentase sampel thread yang diperlukan.

Penghapusan fitur, operasi paling sederhana, hanya memerlukan sebagian kecil alur, karena hanya beberapa fitur yang berubah, dan model saat ini dilatih pada set yang sama - perbedaannya minimal. Untuk menyederhanakan model (mengurangi jumlah pohon beberapa kali), diperlukan 50 hingga 50. Dan untuk menghilangkan fitur statistik penting yang akan sangat mempengaruhi kinerja model, diperlukan lebih banyak aliran untuk meratakan pekerjaan model. model baru yang tahan kelalaian pada semua jenis huruf.

Pengoperasian pembelajaran mesin di Mail.ru Mail

Teks Cepat

Mari beralih ke FastText. Izinkan saya mengingatkan Anda bahwa representasi (Penyematan) suatu kata terdiri dari penjumlahan penyematan kata itu sendiri dan seluruh huruf N-gramnya, biasanya trigram. Karena trigramnya bisa cukup banyak, Bucket Hashing digunakan, yaitu mengubah seluruh ruang menjadi peta hash tetap tertentu. Hasilnya, diperoleh matriks bobot dengan dimensi lapisan dalam per jumlah kata + ember.

Dengan pelatihan tambahan, tanda-tanda baru muncul: kata-kata dan trigram. Tidak ada hal signifikan yang terjadi dalam pelatihan tindak lanjut standar dari Facebook. Hanya bobot lama dengan entropi silang yang dilatih ulang pada data baru. Dengan demikian, fitur-fitur baru tidak digunakan; tentu saja, pendekatan ini memiliki semua kelemahan yang dijelaskan di atas terkait dengan ketidakpastian model dalam produksi. Itu sebabnya kami sedikit memodifikasi FastText. Kami menambahkan semua bobot baru (kata dan trigram), memperluas seluruh matriks dengan entropi silang, dan menambahkan regularisasi harmonik dengan analogi dengan model linier, yang menjamin perubahan signifikan pada bobot lama.

Pengoperasian pembelajaran mesin di Mail.ru Mail

CNN

Jaringan konvolusional sedikit lebih rumit. Jika lapisan terakhir di CNN telah selesai, tentu saja Anda dapat menerapkan regularisasi harmonis dan menjamin kontinuitas. Namun jika pelatihan tambahan untuk seluruh jaringan diperlukan, maka regularisasi tersebut tidak dapat lagi diterapkan pada semua lapisan. Namun, ada opsi untuk melatih penyematan pelengkap melalui Triplet Loss (artikel asli).

Kerugian Tiga Kali Lipat

Dengan menggunakan tugas anti-phishing sebagai contoh, mari kita lihat Triplet Loss secara umum. Kami mengambil logo kami, serta contoh positif dan negatif dari logo perusahaan lain. Kami meminimalkan jarak antara yang pertama dan memaksimalkan jarak antara yang kedua, kami melakukan ini dengan celah kecil untuk memastikan kekompakan kelas yang lebih besar.

Pengoperasian pembelajaran mesin di Mail.ru Mail

Jika kita melatih jaringan lebih lanjut, maka ruang metrik kita berubah total, dan menjadi tidak kompatibel sama sekali dengan yang sebelumnya. Ini adalah masalah serius dalam masalah yang menggunakan vektor. Untuk mengatasi masalah ini, kami akan menggabungkan embeddings lama selama pelatihan.

Kami telah menambahkan data baru ke set pelatihan dan melatih model versi kedua dari awal. Pada tahap kedua, kami melatih jaringan kami lebih lanjut (Finetuning): pertama lapisan terakhir selesai, dan kemudian seluruh jaringan dicairkan. Dalam proses pembuatan triplet, kami hanya menghitung sebagian embeddings menggunakan model terlatih, sisanya - menggunakan model lama. Oleh karena itu, dalam proses pelatihan tambahan, kami memastikan kompatibilitas ruang metrik v1 dan v2. Versi unik dari regularisasi harmonik.

Pengoperasian pembelajaran mesin di Mail.ru Mail

Seluruh arsitektur

Jika kita mempertimbangkan seluruh sistem menggunakan antispam sebagai contoh, maka model-model tersebut tidak terisolasi, tetapi bersarang di dalam satu sama lain. Kami mengambil gambar, teks, dan fitur lainnya, menggunakan CNN dan Fast Text kami mendapatkan penyematan. Selanjutnya, pengklasifikasi diterapkan di atas penyematan, yang memberikan skor untuk berbagai kelas (jenis huruf, spam, keberadaan logo). Sinyal dan rambu sudah memasuki hutan pepohonan untuk pengambilan keputusan akhir. Pengklasifikasi individu dalam skema ini memungkinkan interpretasi yang lebih baik dari hasil sistem dan melatih ulang komponen secara lebih spesifik jika terjadi masalah, daripada memasukkan semua data ke dalam pohon keputusan dalam bentuk mentah.

Pengoperasian pembelajaran mesin di Mail.ru Mail

Oleh karena itu, kami menjamin kesinambungan di setiap tingkatan. Di tingkat bawah dalam CNN dan Fast Text kami menggunakan regularisasi harmonik, untuk pengklasifikasi di tengah kami juga menggunakan regularisasi harmonik dan kalibrasi laju untuk konsistensi distribusi probabilitas. Nah, peningkatan pohon dilatih secara bertahap atau menggunakan Penyulingan Pengetahuan.

Secara umum, mempertahankan sistem pembelajaran mesin bersarang seperti itu biasanya menyusahkan, karena komponen apa pun di tingkat yang lebih rendah akan menyebabkan pembaruan pada keseluruhan sistem di atasnya. Namun karena dalam pengaturan kami, setiap komponen sedikit berubah dan kompatibel dengan komponen sebelumnya, seluruh sistem dapat diperbarui sedikit demi sedikit tanpa perlu melatih ulang seluruh struktur, sehingga dapat didukung tanpa beban tambahan yang serius.

Menyebarkan

Kami telah membahas pengumpulan data dan pelatihan tambahan untuk berbagai jenis model, jadi kami beralih ke penerapannya ke lingkungan produksi.

pengujian A/B

Seperti yang saya katakan sebelumnya, dalam proses pengumpulan data, kami biasanya mendapatkan sampel yang bias, sehingga tidak mungkin untuk mengevaluasi performa produksi model. Oleh karena itu, saat penerapan, model harus dibandingkan dengan versi sebelumnya untuk memahami keadaan sebenarnya, yaitu melakukan pengujian A/B. Faktanya, proses peluncuran dan analisis grafik cukup rutin dan dapat diotomatisasi dengan mudah. Kami meluncurkan model kami secara bertahap ke 5%, 30%, 50%, dan 100% pengguna, sambil mengumpulkan semua metrik yang tersedia mengenai respons model dan masukan pengguna. Dalam kasus beberapa outlier yang serius, kami secara otomatis mengembalikan model, dan untuk kasus lain, setelah mengumpulkan jumlah klik pengguna yang cukup, kami memutuskan untuk meningkatkan persentasenya. Hasilnya, kami menghadirkan model baru ke 50% pengguna secara otomatis, dan peluncuran ke seluruh audiens akan disetujui oleh seseorang, meskipun langkah ini dapat diotomatisasi.

Namun, proses pengujian A/B menawarkan ruang untuk pengoptimalan. Faktanya adalah bahwa setiap pengujian A/B memerlukan waktu yang cukup lama (dalam kasus kami, pengujian ini memerlukan waktu 6 hingga 24 jam tergantung pada jumlah masukan), yang membuatnya cukup mahal dan dengan sumber daya yang terbatas. Selain itu, persentase aliran yang cukup tinggi untuk pengujian diperlukan untuk mempercepat keseluruhan waktu pengujian A/B (merekrut sampel yang signifikan secara statistik untuk mengevaluasi metrik dengan persentase kecil dapat memakan waktu yang sangat lama), sehingga membuat jumlah slot A/B sangat terbatas. Jelasnya, kami hanya perlu menguji model yang paling menjanjikan, yang cukup banyak kami terima selama proses pelatihan tambahan.

Untuk mengatasi masalah ini, kami melatih pengklasifikasi terpisah yang memprediksi keberhasilan pengujian A/B. Untuk melakukan hal ini, kami mengambil statistik pengambilan keputusan, Presisi, Perolehan Kembali, dan metrik lainnya pada set pelatihan, pada set yang ditangguhkan, dan pada sampel dari aliran sebagai fitur. Kami juga membandingkan model dengan model yang sedang diproduksi, dengan heuristik, dan mempertimbangkan Kompleksitas model. Dengan menggunakan semua fitur ini, pengklasifikasi yang dilatih berdasarkan riwayat pengujian mengevaluasi model kandidat, dalam kasus kami ini adalah hutan pepohonan, dan memutuskan model mana yang akan digunakan dalam pengujian A/B.

Pengoperasian pembelajaran mesin di Mail.ru Mail

Pada saat penerapan, pendekatan ini memungkinkan kami meningkatkan jumlah pengujian A/B yang berhasil beberapa kali lipat.

Pengujian & Pemantauan

Anehnya, pengujian dan pemantauan tidak membahayakan kesehatan kita; sebaliknya, justru meningkatkan kesehatan dan membebaskan kita dari stres yang tidak perlu. Pengujian memungkinkan Anda mencegah kegagalan, dan pemantauan memungkinkan Anda mendeteksinya tepat waktu untuk mengurangi dampaknya terhadap pengguna.

Penting untuk dipahami di sini bahwa cepat atau lambat sistem Anda akan selalu melakukan kesalahan - hal ini disebabkan oleh siklus pengembangan perangkat lunak apa pun. Pada awal pengembangan sistem selalu terdapat banyak bug hingga semuanya beres dan tahap utama inovasi selesai. Namun seiring berjalannya waktu, entropi berdampak buruk, dan kesalahan muncul lagi - karena degradasi komponen di sekitar dan perubahan data, yang saya bicarakan di awal.

Di sini saya ingin mencatat bahwa sistem pembelajaran mesin apa pun harus dipertimbangkan dari sudut pandang keuntungannya sepanjang siklus hidupnya. Grafik di bawah menunjukkan contoh cara kerja sistem untuk menangkap jenis spam yang jarang terjadi (garis pada grafik mendekati nol). Suatu hari, karena atribut cache yang salah, dia menjadi gila. Untungnya, tidak ada pemantauan terhadap pemicuan yang tidak normal; akibatnya, sistem mulai menyimpan surat dalam jumlah besar ke folder “spam” di batas pengambilan keputusan. Meskipun konsekuensinya telah diperbaiki, sistem ini telah melakukan kesalahan berkali-kali sehingga tidak akan membuahkan hasil bahkan dalam lima tahun. Dan ini merupakan kegagalan total dari sudut pandang siklus hidup model.

Pengoperasian pembelajaran mesin di Mail.ru Mail

Oleh karena itu, hal sederhana seperti monitoring dapat menjadi kunci dalam kehidupan seorang model. Selain metrik standar dan jelas, kami mempertimbangkan distribusi respons dan skor model, serta distribusi nilai fitur utama. Dengan menggunakan divergensi KL, kita dapat membandingkan distribusi saat ini dengan distribusi historis atau nilai dalam pengujian A/B dengan aliran lainnya, yang memungkinkan kita melihat anomali dalam model dan mengembalikan perubahan pada waktu yang tepat.

Dalam kebanyakan kasus, kami meluncurkan sistem versi pertama kami menggunakan heuristik atau model sederhana yang kami gunakan sebagai pemantauan di masa depan. Misalnya, kami memantau model NER dibandingkan dengan model reguler untuk toko online tertentu, dan jika cakupan pengklasifikasi turun dibandingkan dengan model tersebut, maka kami memahami alasannya. Penggunaan heuristik lain yang berguna!

Hasil

Mari kita bahas kembali ide-ide utama artikel ini.

  • Dek Fib. Kami selalu memikirkan pengguna: bagaimana dia akan menerima kesalahan kami, bagaimana dia dapat melaporkannya. Jangan lupa bahwa pengguna bukanlah sumber masukan murni untuk model pelatihan, dan hal ini perlu diselesaikan dengan bantuan sistem ML tambahan. Jika tidak mungkin mengumpulkan sinyal dari pengguna, maka kami mencari sumber umpan balik alternatif, misalnya sistem yang terhubung.
  • Pelatihan tambahan. Hal utama di sini adalah kesinambungan, jadi kami mengandalkan model produksi saat ini. Kami melatih model baru agar tidak jauh berbeda dengan model sebelumnya karena regularisasi harmonis dan trik serupa.
  • Menyebarkan. Penerapan otomatis berdasarkan metrik sangat mengurangi waktu penerapan model. Memantau statistik dan distribusi pengambilan keputusan, jumlah pengguna yang jatuh adalah wajib untuk tidur nyenyak dan akhir pekan yang produktif.

Saya harap ini membantu Anda meningkatkan sistem ML Anda lebih cepat, memasarkannya lebih cepat, dan menjadikannya lebih andal dan mengurangi stres.

Sumber: www.habr.com

Tambah komentar