Pembelajaran Peringkat Aktif

Dengan posting ini saya membuka seri di mana kolega saya dan saya akan memberi tahu Anda bagaimana ML digunakan dalam Pencarian Mail.ru. Hari ini saya akan menjelaskan bagaimana peringkat diatur dan bagaimana kami menggunakan informasi tentang interaksi pengguna dengan mesin pencari kami untuk membuat mesin pencari lebih baik.

Tugas peringkat


Apa yang dimaksud dengan tugas peringkat? Bayangkan bahwa dalam sampel pelatihan ada sejumlah pertanyaan yang urutan dokumen berdasarkan relevansinya diketahui. Misalnya, Anda tahu dokumen mana yang paling relevan, mana yang paling relevan kedua, dll. Dan Anda perlu memulihkan pesanan ini untuk seluruh populasi. Artinya, untuk semua permintaan dari populasi umum, tempat pertama adalah meletakkan dokumen yang paling relevan, dan yang terakhir - yang paling tidak relevan.

Mari kita lihat bagaimana masalah tersebut diselesaikan di mesin pencari besar.


Kami memiliki indeks pencarian - ini adalah database dari banyak miliaran dokumen. Ketika permintaan datang, kami pertama-tama membuat daftar kandidat untuk peringkat akhir menggunakan model teks sederhana. Opsi termudah adalah mengambil dokumen yang pada prinsipnya mengandung kata-kata dari permintaan. Mengapa langkah ini perlu? Faktanya adalah bahwa tidak mungkin bagi semua dokumen yang tersedia untuk membuat tanda-tanda dan membuat perkiraan model akhir. Setelah kita sudah menghitung tanda-tandanya. Tanda-tanda apa yang bisa kita ambil? Misalnya, jumlah kemunculan kata dari kueri dalam dokumen atau jumlah klik pada dokumen yang diberikan. Anda dapat menggunakan faktor rumit yang dilatih mesin: kami dalam Pencarian menggunakan jaringan saraf memprediksi relevansi dokumen sesuai permintaan dan memasukkan perkiraan ini dengan kolom baru di ruang fitur kami.

Kenapa kita melakukan semua ini? Kami ingin memaksimalkan metrik pengguna sehingga pengguna dapat menemukan hasil yang relevan dalam hasil kami semudah mungkin dan kembali kepada kami sesering mungkin.

Model akhir kami menggunakan ansambel pohon keputusan yang dibangun menggunakan gradient boosting. Ada dua opsi untuk membangun metrik target untuk pelatihan:

  • Kami menciptakan departemen penilai - orang-orang yang terlatih secara khusus kepada siapa kami memberikan pertanyaan dan mengatakan: "Kawan, evaluasi seberapa relevan penerbitan kami." Mereka akan merespons dengan angka yang mengukur relevansi. Mengapa pendekatan ini buruk? Dalam hal ini, kami akan memaksimalkan model sehubungan dengan pendapat orang-orang yang bukan pengguna kami. Kami tidak akan mengoptimalkan untuk metrik yang ingin kami optimalkan.
  • Karena alasan ini, kami menggunakan pendekatan kedua untuk variabel target: kami menunjukkan hasil kepada pengguna, melihat ke dokumen mana mereka lolos, mana yang dilewati. Dan kemudian kita menggunakan data ini untuk melatih model akhir.

Bagaimana masalah peringkat diselesaikan?


Ada tiga pendekatan untuk menyelesaikan masalah peringkat:

  • Searah , itu searah . Kami akan mempertimbangkan relevansi sebagai ukuran absolut dan akan mendenda model untuk perbedaan absolut antara relevansi yang diprediksi dan yang kami ketahui dari sampel pelatihan. Sebagai contoh, penilai memberi dokumen peringkat 3, dan kami akan mengatakan 2, jadi kami mendenda model tersebut dengan 1.
  • Berpasangan , berpasangan. Kami akan membandingkan dokumen satu sama lain. Misalnya, dalam sampel pelatihan ada dua dokumen, dan kami tahu mana yang lebih relevan untuk permintaan ini. Maka kami akan mendenda model jika menempatkan perkiraan lebih rendah dari yang kurang relevan, yaitu, pasangan tersebut diatur secara tidak benar.
  • Listwise . Ini juga didasarkan pada relevansi relatif, tetapi tidak di dalam pasangan: kami peringkat seluruh masalah dengan model dan mengevaluasi hasilnya - jika dokumen yang paling relevan tidak di tempat pertama, kami mendapatkan denda yang besar.

Pendekatan mana yang lebih baik digunakan untuk variabel target kami? Untuk melakukan ini, ada baiknya membahas pertanyaan penting: "dapatkah klik digunakan sebagai ukuran relevansi absolut suatu dokumen?" Itu tidak mungkin, karena mereka bergantung pada posisi dokumen dalam masalah ini. Setelah menerima masalah, Anda kemungkinan besar mengklik dokumen yang akan lebih tinggi, karena bagi Anda tampaknya dokumen pertama lebih relevan.

Bagaimana hipotesis semacam itu dapat diverifikasi? Kami mengambil dua dokumen di bagian atas masalah dan menukarnya. Jika klik adalah ukuran relevansi absolut, maka jumlah mereka hanya akan bergantung pada dokumen itu sendiri, dan bukan pada posisi. Tapi ini tidak benar. Dokumen di atas selalu mendapat lebih banyak klik. Oleh karena itu, klik tidak pernah dapat digunakan sebagai ukuran relevansi absolut. Oleh karena itu, Anda dapat menggunakan salah satu dari keduanya secara berpasangan atau dengan arah daftar.

Kami mengumpulkan dataset


Sekarang kita mengekstrak data untuk set pelatihan. Kami memiliki sesi ini:


Dari empat dokumen, ada klik pada yang kedua dan keempat. Sebagai aturan, orang menonton hasilnya dari atas ke bawah. Anda melihat dokumen pertama, Anda tidak suka, mengklik yang kedua. Kemudian mereka kembali ke pencarian, melihat yang ketiga dan mengklik yang keempat. Jelas, Anda menyukai yang kedua lebih dari yang pertama, dan yang keempat lebih dari yang pertama dan ketiga. Ini adalah pasangan yang kami hasilkan untuk semua permintaan dan kami menggunakan model untuk pelatihan.

Segalanya tampak baik-baik saja, tetapi ada satu masalah: orang hanya mengklik dokumen dari bagian paling atas masalah. Oleh karena itu, jika Anda membuat sampel pelatihan hanya dengan cara ini, maka distribusi di dalamnya akan sama persis dengan sampel uji. Penting untuk menyelaraskan distribusi. Kami melakukan ini dengan menambahkan contoh negatif: ini adalah dokumen yang berada di bawah peringkat, pengguna pasti tidak melihatnya, tetapi kami tahu bahwa itu buruk.


Jadi, kami mendapat skema pelatihan peringkat seperti itu: menunjukkan kepada pengguna hasil, mengumpulkan klik dari mereka, menambahkan contoh negatif untuk menyelaraskan distribusi, dan melatih kembali model peringkat. Dengan demikian, kami memperhitungkan reaksi pengguna terhadap peringkat Anda saat ini, memperhitungkan kesalahan dan meningkatkan peringkat tersebut. Kami mengulangi prosedur ini berkali-kali hingga konvergensi. Penting untuk dicatat bahwa kita mencari tidak hanya oleh web, tetapi juga oleh video, gambar, dan skema yang dijelaskan bekerja dengan baik di semua jenis pencarian. Akibatnya, metrik perilaku tumbuh sangat banyak. Pada iterasi kedua, itu sedikit lebih kecil, pada iterasi ketiga itu bahkan lebih kecil, dan sebagai hasilnya konvergen ke optimum lokal.

Mari kita pikirkan mengapa kita bertemu pada optimum lokal, dan bukan pada optimum global.

Misalkan Anda adalah penggemar sepak bola dan pada malam hari tidak punya waktu untuk menonton pertandingan tim favorit Anda. Bangun di pagi hari dan masukkan nama tim di bilah pencarian untuk mengetahui hasil pertandingan. Lihat tiga dokumen pertama - ini adalah halaman resmi tentang klub, tidak ada informasi berguna. Anda tidak akan membuka seluruh masalah, tidak akan mengambil permintaan lain. Mungkin Anda bahkan mengklik beberapa dokumen yang tidak relevan. Tapi sebagai hasilnya, kesal, tutup SERP dan buka mesin pencari lainnya.



Meskipun masalah ini tidak hanya ditemukan dalam pencarian, itu sangat relevan di sini. Bayangkan sebuah toko online, yang merupakan satu pita besar tanpa kemampuan untuk mengatakan kategori produk mana yang ingin Anda lihat. Inilah yang terjadi dengan hasil pencarian: setelah mengirim permintaan, Anda tidak dapat lagi menjelaskan apa yang benar-benar Anda butuhkan: informasi tentang tim sepak bola atau skor pertandingan terakhir.

Bayangkan bahwa beberapa pria brutal pergi ke toko online yang aneh, yang terdiri dari satu rekaman rekomendasi, dan dalam rekomendasinya dia hanya melihat barang-barang wanita. Mungkin dia bahkan mengklik beberapa gaun, karena dikenakan pada seorang gadis cantik. Kami akan mengirimkan klik ini ke set pelatihan dan memutuskan bahwa pria itu menyukai gaun ini lebih dari sepon. Ketika dia kembali ke sistem kami, dia sudah akan melihat beberapa gaun. Awalnya, kami tidak memiliki produk yang valid untuk pengguna, jadi pendekatan ini tidak akan memungkinkan kami untuk memperbaiki kesalahan ini. Kami berada dalam kondisi lokal yang optimal, di mana orang miskin tidak dapat lagi memberi tahu kami bahwa ia tidak menyukai spons atau pakaian. Seringkali masalah ini disebut masalah umpan balik positif.

Perbaikan lebih lanjut


Bagaimana cara membuat mesin pencari lebih baik? Bagaimana cara keluar dari optimal lokal? Faktor-faktor baru perlu ditambahkan. Misalkan kita membuat faktor yang sangat bagus bahwa, atas permintaan dengan nama tim sepak bola, akan memunculkan dokumen yang relevan, yaitu, hasil pertandingan terakhir. Apa yang bisa menjadi masalah di sini? Jika Anda melatih model pada data lama, pada data offline, maka ambil dataset lama dengan klik dan tambahkan atribut ini di sana. Ini mungkin relevan, tetapi Anda belum menggunakannya di peringkat sebelumnya, dan karena itu orang tidak mengklik pada dokumen-dokumen yang atributnya baik. Itu tidak berkorelasi dengan variabel target Anda, jadi itu tidak akan digunakan oleh model.

Dalam kasus seperti itu, kami sering menggunakan solusi ini: melewati model terakhir, kami memaksa peringkat kami untuk menggunakan fitur ini. Kami secara paksa menunjukkan hasil pertandingan terakhir berdasarkan permintaan dengan nama tim, dan jika pengguna mengkliknya, maka bagi kami ini adalah informasi yang memungkinkan kami untuk memahami bahwa tandanya baik.

Mari kita lihat sebuah contoh. Baru-baru ini kami membuat foto-foto indah untuk dokumen Instagram:



Tampaknya gambar-gambar indah seperti itu harus memuaskan pengguna kami sebanyak mungkin. Jelas, kita perlu membuat tanda bahwa dokumen tersebut memiliki gambar seperti itu. Kami menambah dataset, melatih model pemeringkatan dan melihat bagaimana fitur ini digunakan. Dan kemudian kami menganalisis perubahan dalam metrik perilaku. Mereka sedikit membaik, tetapi apakah ini solusi terbaik?

Tidak, karena untuk banyak permintaan Anda tidak menampilkan gambar yang indah. Anda tidak memberikan kesempatan kepada pengguna untuk menunjukkan bagaimana dia menyukai mereka. Untuk mengatasi masalah ini, untuk beberapa permintaan yang melibatkan memperlihatkan dokumen-dokumen Instagram, dengan paksa melewati model kami menunjukkan gambar-gambar indah dan melihat apakah mereka mengkliknya. Segera setelah pengguna menghargai inovasi, mereka mulai melatih kembali model pada dataset, di mana pengguna memiliki kesempatan untuk menunjukkan pentingnya faktor ini. Setelah prosedur ini, pada dataset baru, faktor mulai digunakan berkali-kali lebih sering dan secara signifikan meningkatkan metrik pengguna.



Jadi, kami memeriksa pernyataan masalah peringkat dan membahas jebakan yang akan menunggu Anda saat mempelajari umpan balik dari pengguna. Hal utama yang harus Anda ambil dari artikel ini: menggunakan umpan balik sebagai target pelatihan, ingatlah bahwa pengguna dapat meninggalkan umpan balik ini hanya jika model saat ini memungkinkannya. Umpan balik semacam itu dapat mempermainkan Anda ketika mencoba membangun model pembelajaran mesin baru.

Source: https://habr.com/ru/post/id461927/


All Articles