Hampir semua sistem rekomendasi mengalami kesulitan dengan konten baru atau langka - karena hanya sebagian kecil pengguna yang berinteraksi dengannya. Dalam laporannya di
Yandex Inside, Daniil Burlakov berbagi serangkaian trik yang digunakan dalam rekomendasi Musik dan merinci model populer Singular Value Decomposition (SVD).
Plus, kami memiliki pemain seperti itu yang disebut komposer dan biasanya diletakkan oleh pemegang hak cipta seperti penggemar. Hanya Mozart yang "mencatat" lebih dari satu juta komposisi.
- Halo semuanya! Nama saya Daniil Burlakov, saya memimpin tim rekomendasi dalam Layanan Media. Hari ini saya ingin berbicara tentang beberapa masalah yang kami pecahkan ketika kami menangani rekomendasi dalam Musik.
Kami memiliki tim yang luar biasa yang membuat rekomendasi tidak hanya untuk Yandex.Music, tetapi juga untuk semua Layanan Media: ini adalah Kinopoisk, Poster. Kami memecahkan lebih banyak masalah teknis daripada rekomendasi.

Hari ini saya ingin berbicara tentang produk utama Yandex.Music, produk kami yang paling penting dan favorit adalah daftar putar cerdas, yang, mungkin, banyak dari Anda tahu dan mendengarkan.

Saya akan membahas secara singkat daftar putar seperti apa mereka dan konten apa yang kami isi dengannya.
Daftar putar hari itu disusun sebagai serangkaian trek yang akan dibangun untuk Anda setiap hari sehingga Anda dapat mengunduh dan mendengarkannya bahkan di tempat yang tidak ada Internet. Tapi itu akan bagus untuk Anda, itu akan bersama Anda, dan itu harus diperbarui setiap hari dan mengandung sesuatu yang baru. Apa yang cocok untukmu?
Deja Vu adalah daftar putar yang lebih menarik. Ini diperbarui seminggu sekali, dan akan ada lagu yang tidak pernah Anda dengarkan, dan artis yang secara praktis Anda tidak tahu atau tidak tahu sama sekali. Premiere - pilihan produk baru dari artis Anda yang mungkin Anda sukai.

Produk kedua adalah Yandex.Radio. Pada 2015, diluncurkan, kami terus mengembangkannya.
Idenya adalah untuk memungkinkan pengguna untuk mendapatkan aliran musik audio yang dipersonalisasi tanpa melakukan apa pun. Bahkan, saya menekan satu tombol dan mendapatkan aliran luar biasa yang tidak akan pernah berakhir dan akan menyenangkan Anda selama berjam-jam. Itu, tidak seperti daftar putar, sudah dapat ditandai. Anda dapat, misalnya, menyalakan radio berdasarkan genre - musik rock atau latar belakang, jika Anda tidak ingin terganggu selama bekerja. Atau aliran audio yang sepenuhnya dipersonalisasi - apa yang kita sebut radio "On Your Wave".

Masalah apa yang kita hadapi ketika kita membuat rekomendasi ini? Kami dihadapkan pada dua masalah utama, cukup khas untuk sebagian besar sistem rekomendasi. Ini adalah pengguna dingin yang baru saja datang ke layanan kami dan tentang siapa kami masih tidak tahu apa-apa, dan konten keren. Ini tidak hanya mencakup trek yang telah muncul baru-baru ini, tetapi juga sejumlah besar trek langka. Katalog Yandex.Music berisi lebih dari 50 juta lagu, banyak di antaranya belum didengarkan oleh pengguna mana pun. Oleh karena itu, timbul masalah: meskipun trek keluar cukup lama, sayangnya, kami mungkin tidak tahu apa-apa tentang trek ini dan tidak memiliki statistik apa pun.
Kedua masalah tersebut secara khusus diperburuk dan menjadi sangat penting bagi kami, karena Yandex.Music menjadi layanan internasional dan mulai pergi ke banyak negara. Saat memasuki setiap negara, konten lokal dari negara ini menjadi, pertama-tama, sangat penting. Jelas bahwa ketika Anda memasuki negara baru, mengabaikan musik lokal agak tidak menyenangkan. Perlu untuk merekomendasikan, merekomendasikannya dengan tepat dan memahami struktur musik internal ini. Faktanya, di Rusia tidak ada yang mendengarkan musik Israel, dan ada sangat sedikit statistik tentang itu, bahkan jika kita memiliki konten ini.
Mari kita bahas masalah ini. Mari kita mulai dengan masalah pengguna dingin. Bagaimana bisa diselesaikan?

Solusi paling sederhana pertama adalah tidak merekomendasikan apa pun kepada pengguna yang dingin. Memang, solusinya sangat sederhana, Anda bisa bertanya tentang preferensi eksplisit. Ini adalah banyak penyihir yang dapat diberikan kepada pengguna.
sebelum pengguna menerima daftar putar pertamanya pada hari itu, kami meminta pengguna untuk pergi melalui penyihir seperti itu, menunjukkan preferensi, seperangkat genre, dan artis yang ia inginkan.
Sebagai akibatnya, daftar putar pertama pengguna menjadi sangat berarti, cocok untuk pengguna, dan kemungkinan besar, dari daftar putar pertama, pengguna akan jatuh cinta padanya.
Sayangnya, pendekatan ini tidak selalu bisa dilakukan.

Produk kedua kami, Yandex.Radio, dikandung sebagai produk yang tidak memerlukan upaya dari pengguna. Dia hanya ingin datang dan menyalakan musik tanpa melakukan apa-apa. Selain itu, Yandex.Radio tertanam dalam banyak sistem lain, seperti Yandex.Drive, di mana agak aneh dan tidak nyaman untuk sekadar memaksa pengguna untuk duduk di dalam mobil, klik pada beberapa jenis penyihir jika ia pertama kali sampai di sana.
Karena itu, kami pergi ke arah lain. Kami mulai dengan rekomendasi, katakanlah, untuk pengguna rata-rata, sehingga sebagian besar pengguna dari trek pertama mendapatkan kesenangan maksimal dan mereka menyukai musik. Dan kami memberikan personalisasi yang sangat cepat. Berbeda dengan daftar putar yang Anda terima dan dia bersama Anda sepanjang hari, semua dari 60 lagu Anda. Dan jika, misalnya, kami tidak menebak dengan fakta bahwa genre favorit Anda adalah musik populer (yang akan menjadi tebakan yang bagus untuk permulaan), maka semua 60 lagu tidak akan mengenai Anda, dan itu akan menjadi sedih, dan kemungkinan besar, besok Anda tidak akan menebaknya. kembali.
Namun, jika kami menempatkan trek pertama musik populer di radio, dan Anda mengatakan bahwa Anda tidak ingin mendengarkannya, kami akan langsung mempersonalisasi trek berikutnya untuk Anda dan menawarkan sesuatu yang lain, misalnya, rock atau genre lain.
Sebenarnya, pada kenyataannya, kedua solusi ini menutup masalah pengguna dingin sampai tingkat tertentu.
Bagaimana masalah konten dapat diselesaikan dengan analogi? Solusi nomor satu, serta tentang pengguna, bukan untuk merekomendasikan konten keren. Tapi di sini, tidak seperti pengguna, konten itu sendiri tidak akan mengambil dan tidak akan memanas. Dengan demikian, masalahnya adalah jika kita sendiri tidak mengumpulkan statistik tentang dia, maka produk baru dari artis yang baru saja dirilis tidak akan dikirimkan, dan pengguna yang belum melihat berita artis mereka kemungkinan besar akan marah.

Situasi serupa dengan konten internasional. Kami pergi ke negara baru, dan tidak merekomendasikannya, sebenarnya mengabaikan konten ini, jelas, tidak cocok untuk kami.
Solusi kedua, jika kita bertindak sepenuhnya dengan analogi, merekomendasikannya entah bagaimana rata-rata. Analogi yang paling sederhana adalah dengan membuka konten ini untuk semua orang dalam satu baris atau merekomendasikannya sebagai musik populer. Dengan opsi untuk merekomendasikan, secara rata-rata, umumnya tidak terlalu jelas apa itu musik rata-rata. Ini dapat disebut musik populer secara paksa, tetapi hampir tidak dapat dikatakan bahwa semua musik sangat mirip satu sama lain sehingga terlihat seperti musik populer. Karena itu, jika Anda menemukan komposisi Beethoven di antara musik populer, kebanyakan orang tidak akan senang menerimanya. Karena itu, solusi ini juga tidak cocok untuk kita.

Apa lagi yang ada tentang trek? Seiring dengan trek itu sendiri, banyak metadata datang kepada kita dari pemegang hak cipta, seperti genre lagu, artis, album dan tahun rilis. Ayo pergi. Bagaimana mereka bisa digunakan? Misalnya sebuah genre. Genre adalah informasi yang baik yang memungkinkan kita untuk menebak lebih atau kurang. Sebagai contoh, ini memecahkan masalah dengan Beethoven atau chanson yang mungkin secara tidak sengaja muncul di seseorang di radio: kita tahu genre trek, dan tidak mungkin bahwa kita akan menyelipkannya pada orang-orang yang tidak cocok dengannya.
Namun sayangnya, ia tidak mengizinkan untuk membangun rekomendasi yang baik, karena konsep genre itu sendiri cukup subyektif, dan tidak memungkinkan untuk membangun rekomendasi yang baik atas dasar itu. Secara alami, ada banyak subgenre dalam genre, dan itulah yang dikirim oleh pemegang hak cipta kepada kami.

Masalah kedua adalah bahwa orang biasa biasanya dapat menyebutkan selusin genre, sementara pemegang hak cipta mengirimkan ribuan genre kepada kami, dan ini adalah masalah yang cukup besar untuk entah bagaimana mengelompokkan mereka, menemukan yang serupa di antara mereka, dan seterusnya. Sayangnya, masalah ini tidak selalu diselesaikan.
Kemudian, jelas, ada masalah dengan fakta bahwa, sayangnya, pemegang hak cipta sering bingung dan membuat kesalahan. Dan kami memiliki masalah dan laporan berkala yang kami kumpulkan trek yang populer di radio rock, dan pemegang hak cipta menempatkan genre rock di atasnya. Dengan analogi, kami mengumpulkan jazz dan stasiun radio lainnya. Dan kami secara teratur meminta laporan pengguna untuk diperbaiki, karena trek dengan kesalahan telah terbang ke stasiun radio ini.
Saya ingin menawarkan Anda untuk menebak genre lagu tersebut.
Ini bukan soundtrack. Ini logam. Dan kami memiliki masalah besar ketika mereka mengirimkan markup seperti itu kepada kami.
Saya mengusulkan untuk pergi ke bagian berikutnya dan berbicara tentang pemain trek. Saya sudah mengatakan bahwa ada masalah, bahwa artis baru, trek atau album baru keluar, dan itu harus direkomendasikan. Khususnya, informasi tentang artis akan selalu menyelamatkan kita. Kami tahu bahwa pengguna mendengarkan artis ini, dan kami dapat merekomendasikannya kepadanya. Jadi kita lakukan. Namun, ada juga kesulitannya. Misalnya, jika kami tidak tahu apa-apa tentang artis itu sendiri atau pengguna tidak mendengarkannya, informasi bahwa lagu ini memiliki artis ini dan itu tidak memberi tahu kami apa-apa. Begitu pula dengan trek langka. Ada lagu langka dari artis langka, kami mengetahui bahwa sekarang lagu langka ini miliknya. Sayangnya, sekali lagi tidak ada banyak informasi yang memungkinkannya untuk direkomendasikan kepada orang lain yang tidak terbiasa dengan pekerjaannya.

Masalah kedua adalah cover dan remix. Sekali lagi, pemegang hak cipta yang jahat campur tangan di sini dan sering membuat kesalahan. Khususnya, ketika kami memiliki trek asli dan sampulnya, pemegang hak cipta sering tidak repot-repot untuk menamai trek ini dengan cara yang berbeda, untuk menandakan bahwa salah satunya adalah remix atau bahkan hanya menempatkan artis yang berbeda di dalamnya, ketika itu.
Saya ingin menawarkan dua lagu untuk memahami betapa berbedanya suara untuk lagu yang disebut sama persis. Jadi, kita mendapatkan dua lagu yang bisa disebut serupa, mereka memiliki ritme yang relatif sama, teks yang relatif sama, tetapi mereka berbeda. Dan bagi kami itu adalah satu dan jalur yang sama, karena namanya, artis dan yang lainnya persis sama.
Plus, kami memiliki pemain jahat yang disebut komposer dan biasanya diletakkan oleh pemegang hak cipta seperti penggemar. Hanya Mozart yang "mencatat" lebih dari satu juta komposisi. Jelas bagi pecinta musik klasik ini tidak mungkin. Jika pengguna mengatakan bahwa ia menyukai Mozart, maka kami memiliki jutaan trek, berbagai pertunjukan ulang melodi klasik standar. Akibatnya, kita hampir tidak bisa berbuat apa-apa.

Saya ingin memberi tahu Anda lebih lanjut bagaimana masalah ini dapat diselesaikan, tetapi untuk permulaan, mari kita bersantai persyaratan kami. Kami ingin merekomendasikan trek yang tidak didengarkan oleh siapa pun, dan sekarang mari kita pikirkan tentang cara merekomendasikan trek yang jarang. Penyaringan kolaboratif datang ke bantuan kami di sini. Bagaimana cara kerjanya dan apa yang kita dapatkan pada akhirnya?
Untuk memulai, kita perlu membuat matriks peringkat pengguna, di mana akan ada pengguna di garis, akan ada trek di kolom, di persimpangan kolom dan garis akan ada peringkatnya. Jelas bahwa untuk sebagian besar matriks kita tidak tahu umpan balik pengguna, pengguna tidak dapat mendengarkan seluruh katalog kami bahkan dekat.

Dengan matriks ini, kami ingin pengguna dan trek untuk mengasosiasikan vektor yang kecil, cukup pendek sehingga produk skalar dari vektor pengguna dan vektor item akan memprediksi peringkat pengguna dengan baik. Jadi, kami mendapatkan itu untuk setiap item dan untuk setiap pengguna, kami harus menemukan dua vektor sehingga produk akhir mereka akan memprediksi perkiraan kami. Misalnya, jika dalam kasus ini kita akan mengatakan bahwa pengguna menyukai trek - itu adalah 1, jika tidak menyukainya - 0. Dan dalam kasus ini kita benar-benar dapat menerapkan teknik standar, dekomposisi SVD, dan mendapatkan vektor optimal untuk pengguna dan untuk trek.

Apa yang ini berikan pada kita? ini memberi kita nilai tambah besar berikutnya. Untuk sebagian besar pendekatan, kami tidak dapat mengatakan bahwa kedua trek serupa jika tidak ada yang mendengarkan bersama. Biasanya sebagian besar pendekatan didasarkan pada fakta bahwa kami memiliki beberapa pengguna yang berinteraksi dengan item A dan B, dan kami melihat bahwa mereka mirip sebagai akibat dari ini. Pemfilteran kolaboratif dalam bentuk SVD memungkinkan kita melakukan ini bahkan jika tidak ada pengguna yang mendengarkan dua lagu secara bersamaan. Mereka memungkinkan kita untuk mengevaluasinya dengan cukup baik. Ini adalah nilai tambah pertama.
Apa yang ini berikan pada kita? Memiliki vektor trek, kami dapat merekomendasikannya ke lingkaran orang yang lebih luas, dan merekomendasikan trek yang kurang populer. Dan plus utama, kami masih mendapatkan representasi vektor trek, yang sangat nyaman untuk digunakan, dengan mana Anda dapat dengan cepat mencari trek serupa.

Namun, ini tidak menyelesaikan semua masalah kita. kami hanya sedikit memindahkan bilah untuk jumlah trek yang dapat kami rekomendasikan. Jika kami membuat grafik jumlah pengguna yang mendengarkan pemain, mengurutkan pemain berdasarkan popularitas mereka, kami akan melihat bahwa jutaan pengguna mendengarkan pemain berkinerja terbaik di layanan kami. Jika kita sudah melihat posisi 10 ribu seniman ini, hanya akan ada seribu pengguna. Jika kita melihat artis ke 50.000, hanya akan ada seratus pengguna. Jelas bahwa jejaknya hanya akan memiliki puluhan pengguna yang mendengarkannya, yang pada kenyataannya membuatnya tidak mungkin untuk merekomendasikan mereka, karena vektor SVD untuk trek tersebut akan sangat tidak stabil dan tidak akan berfungsi.
Bagaimana kita bisa mencoba menyelesaikan ini? Apa yang kita inginkan?
Kami ingin mengambil beberapa trek langka yang baru yang tidak kami ketahui, misalnya, trek langka dari Israel, dan kami ingin mendapatkan semacam representasi vektor untuknya, yang akan sangat mirip dengan vektor SVD kami, yang sangat nyaman untuk bekerja dengan dan membuat rekomendasi.
Satu-satunya hal yang tidak kami pertimbangkan adalah audio dari lagu ini sendiri. Berkat audio, kami dapat merekomendasikan trek. Bagaimana kita, menggunakan trek audio, mendapatkan vektor SVD. hal pertama yang ingin kita lakukan adalah konversi kecil.

Apa itu audio? Anda dapat membayangkan grafik tegangan. Bagaimanapun, ini adalah satu set angka satu dimensi, yang agak tidak nyaman untuk dikerjakan, itu sangat besar dan panjang, itu tidak masuk akal dalam dirinya sendiri. Tetapi kita dapat memeriksa spektrumnya, membuat transformasi Fourier pada dirinya, sangat singkat, untuk melihat seberapa banyak dia tampak seperti jenis sinusoid tertentu. Betapa dia terlihat seperti semacam sinusoid. Dan lihat berapa banyak sinusoid dalam grafik ini, dan lakukan hal yang sama untuk masing-masing frekuensi.
Jika kita melakukan ini untuk seluruh trek secara keseluruhan, tentu saja, kita akan mendapatkan beberapa informasi, tetapi sangat sedikit, itu akan mengatakan sangat sedikit, karena, misalnya, transisi antar bagian trek sangat penting untuk musik, sedangkan dalam spektrum kita akan untuk memiliki dalam bentuk tidak langsung pada perubahan dalam frekuensi yang sangat besar, yang harus berhubungan dengan detik, ke menit, dan ini cukup nyaman dan buruk disajikan dalam bentuk spektrum.
Karena itu, kami melangkah lebih jauh dan memotong lintasan menjadi potongan-potongan kecil. Di setiap bagian kami melakukan transformasi seperti itu. Sebagai hasilnya, kami mendapatkan gambar seperti itu, saya menggambarnya dalam bentuk tiga dimensi, sehingga lebih terlihat bahwa kami telah mengerahkan frekuensi dalam pesawat tepat waktu, dan tinggi - energi yang pada saat itu dalam waktu berada dalam frekuensi ini. Dan mereka mendapat apa yang disebut spektrogram.
Bagaimana kita, menggunakan spektrogram ini, mendapatkan vektor SVD? Jawabannya di zaman kita cukup dangkal: mari kita ambil jaringan saraf dan latih untuk memprediksi vektor SVD.

Jadi kami melakukannya. Apa yang kami pilih sebagai pelatihan? Lagu-lagu SVD yang vektornya kita tahu pasti. Kami secara khusus memilih trek populer yang umpan baliknya cukup besar sehingga vektor SVD sudah benar-benar sepi, dan kami dapat dengan jelas menghitungnya. Dan - mereka melatih jaringan saraf untuk memprediksi vektor-vektor ini.
Apa yang kita dapatkan pada akhirnya? Jaringan yang dapat mengambil trek apa pun dan memprediksi vektor SVD-nya. Kami mendapat solusi yang sangat sederhana yang bekerja dengan sangat baik.
Saya ingin menunjukkan contoh sepasang trek yang kami tarik. Salah satu trek ini cukup populer, dan vektor SVD-nya dapat dikenali dengan cukup akurat, dan yang kedua sangat tidak populer. Saya ingin menyarankan menebak trek mana yang kurang populer dan mana yang lebih populer.
Lagu pertama:
Lagu kedua:
Jawabannya
Lagu pertama lebih populer. Jika Anda melihat jumlah pendengar yang tahu tentang lagu ini dan dapat menemukannya sendiri, tanpa bantuan rekomendasi, maka lagu pertama dapat ditemukan oleh lebih dari 1000 pengguna, dan yang kedua - hanya 10. Dan bagaimana kami menerapkan teknologi kami, kami tidak bisa bahkan mencoba untuk merekomendasikan lagu ini, karena tidak ada yang melekat pada rekomendasi. Kami hanya bisa menawarkannya kepada 10 pengguna ini.
Ketika kami menerapkan ini dalam produksi, kami mendapat banyak umpan balik yang bagus. Salah satu daftar putar, "Deja Vu," di mana kami harus menyematkan trek yang tidak didengarkan pengguna, mengatur penemuan untuk pengguna, telah meningkat secara signifikan setelah kami dapat menerapkan teknologi ini.

Tentu saja, kami menerapkan ini ketika memasuki negara baru dan juga menerima banyak ulasan positif. Mereka mencatat bahwa daftar putar tahu cara mempersonalisasikan dengan baik. Selain itu, para editor di Israel cukup terkejut bahwa layanan Rusia di Israel tidak merekomendasikan artis Rusia dalam jumlah besar, tetapi musik lokal dan musik internasional.

Tentang angka yang berhasil kami capai. Yang paling penting, kami ingin mencapai jumlah produk baru untuk pengguna dalam aliran audio, sehingga akan menjadi lebih beragam. , . , : . . . 1,5% . , . , - , , . , , .
: . , , , . . Terima kasih atas perhatian anda