Yandex membuka teknologi pembelajaran mesin CatBoost. Perbandingan perpustakaan pembelajaran mendalam menggunakan contoh masalah pengelasan digit tulisan tangan

Dari segi sejarah, rangkaian saraf tiruan, sepanjang sejarah lebih setengah abad mereka, telah mengalami kedua-dua tempoh peningkatan pesat dan peningkatan perhatian orang ramai, serta tempoh keraguan dan sikap acuh tak acuh yang mengikutinya. Apabila masa yang baik, nampaknya saintis dan jurutera bahawa mereka akhirnya menemui teknologi sejagat yang boleh menggantikan manusia dalam sebarang tugas kognitif. Seperti cendawan selepas hujan, pelbagai model baru rangkaian saraf muncul, dan terdapat perdebatan sengit antara pengarang mereka, ahli matematik profesional, tentang tahap biologi yang lebih besar atau lebih rendah model yang mereka cadangkan. Ahli biologi profesional memerhati perbincangan ini dari luar, secara berkala memecahkan dan berseru "Ya, ini tidak berlaku dalam alam semula jadi!" – dan tanpa banyak kesan, kerana ahli matematik rangkaian saraf mendengar ahli biologi, sebagai peraturan, hanya apabila fakta ahli biologi konsisten dengan teori mereka sendiri. Walau bagaimanapun, dari masa ke masa, kumpulan tugas secara beransur-ansur terkumpul yang mana rangkaian saraf menunjukkan prestasi yang lemah dan semangat orang ramai menjadi reda.

Hari ini, rangkaian saraf kembali ke puncak kemasyhuran mereka berkat penciptaan kaedah pra-latihan tanpa pengawasan berdasarkan Mesin Bolzmann Terhad (RBM), yang memungkinkan untuk melatih rangkaian saraf dalam (iaitu dengan lebih besar, pada susunan berpuluh ribu, bilangan neuron) dan kejayaan rangkaian saraf dalam dalam masalah praktikal pertuturan dan pengecaman imej. Contohnya, pengecaman pertuturan dalam Android dilaksanakan menggunakan rangkaian saraf dalam. Berapa lama ini akan bertahan dan sejauh mana rangkaian neural dalam akan memenuhi jangkaan yang diletakkan pada mereka tidak diketahui.
Sementara itu, selari dengan semua pertikaian, arus dan aliran saintifik, komuniti pengguna rangkaian saraf jelas menyerlah - mempraktikkan jurutera perisian yang berminat dalam aspek gunaan rangkaian saraf, keupayaan mereka untuk belajar daripada data yang dikumpul dan menyelesaikan masalah pengecaman. Banyak masalah klasifikasi dan ramalan praktikal dikendalikan dengan cantik oleh model rangkaian Multilayer Perceptron (MLP) dan Radial Basis Function (RBF) yang direka bentuk dengan baik, agak kecil. Rangkaian saraf ini telah diterangkan berkali-kali, saya akan mengesyorkan buku-buku berikut, dalam urutan simpati peribadi saya untuk mereka: Osovsky, Bishop, Khaikin; Terdapat juga kursus yang bagus tentang Coursera dan sumber yang serupa.

Walau bagaimanapun, bagi pendekatan umum untuk menggunakan rangkaian saraf dalam amalan, ia pada asasnya berbeza daripada pendekatan pembangunan deterministik biasa "diprogramkan, ia berfungsi, ia bermakna ia sentiasa berfungsi." Rangkaian saraf adalah model kebarangkalian sifatnya, dan pendekatan terhadapnya harus berbeza sama sekali. Malangnya, ramai pengaturcara baharu teknologi pembelajaran mesin secara amnya dan rangkaian saraf khususnya membuat ralat sistem apabila bekerja dengan mereka, kecewa dan berputus asa dengan perkara itu. Idea untuk menulis risalah ini pada Habr timbul selepas berkomunikasi dengan pengguna rangkaian saraf yang kecewa - pengaturcara yang sangat baik, berpengalaman, yakin diri.

Berikut ialah senarai peraturan dan kesilapan biasa saya apabila menggunakan rangkaian saraf.

1. Jika ada kemungkinan untuk tidak menggunakan rangkaian saraf, jangan gunakannya.
Rangkaian saraf membolehkan anda menyelesaikan masalah jika mustahil untuk mencadangkan algoritma dengan berulang kali (atau sangat berulang) melihat data dengan mata anda. Contohnya, jika terdapat banyak data, ia tidak linear, bising dan/atau bersaiz besar.

2. Kerumitan rangkaian saraf mestilah mencukupi dengan kerumitan tugas.
Komputer peribadi moden (contohnya, Core i5, 8 GB RAM) memungkinkan untuk melatih rangkaian saraf dalam masa yang selesa menggunakan sampel puluhan ribu contoh, dengan dimensi data input sehingga ratusan. Sampel yang besar merupakan cabaran untuk rangkaian saraf dalam yang disebutkan di atas, yang dilatih pada GPU berbilang pemproses. Model-model ini sangat menarik, tetapi berada di luar fokus artikel habr ini.

3. Data latihan mestilah representatif.
Sampel latihan harus sepenuhnya dan komprehensif mewakili fenomena yang diterangkan dan termasuk pelbagai situasi yang mungkin. Adalah baik untuk mempunyai banyak data, tetapi itu sendiri tidak selalu membantu. Terdapat jenaka yang meluas dalam bulatan sempit apabila seorang ahli geologi datang kepada pengecam, meletakkan sekeping mineral di hadapannya dan memintanya untuk membangunkan sistem untuk mengenali bahan tersebut menggunakannya. "Bolehkah saya mendapatkan lebih banyak contoh data?" - tanya pengecam. "Sudah tentu!" - pakar geologi menjawab, mengeluarkan beliung dan membelah kepingan mineralnya kepada beberapa bahagian lagi. Seperti yang anda fahami, operasi sedemikian tidak akan berguna - sampel yang dipertingkatkan sedemikian tidak mengandungi sebarang maklumat baharu.

4. Campurkan pilihan.
Selepas vektor data input dan output telah dikumpulkan, jika ukuran adalah bebas antara satu sama lain, tukar susunan vektor dalam apa jua cara. Ini penting untuk pembahagian sampel yang betul ke dalam Latihan/Ujian/Pengesahan dan semua kaedah latihan sampel demi sampel.

5. Normalkan dan pusatkan data.
Untuk perceptron berbilang lapisan, dan untuk banyak model lain, nilai data input mesti terletak dalam julat [-1;1]. Sebelum menyuap mereka ke rangkaian saraf, tolak purata daripada data dan bahagikan semua nilai dengan nilai maksimum.

6. Bahagikan sampel kepada Train, Test dan Validation.
Kesilapan utama pemula adalah untuk memastikan ralat minimum dalam operasi rangkaian saraf pada sampel latihan, pada masa yang sama melatih semula ia, dan kemudian berharap untuk kualiti yang sama baik pada data sebenar baharu. Ini amat mudah dilakukan jika terdapat sedikit data (atau semuanya daripada satu bahagian). Hasilnya boleh menjadi sangat mengecewakan: rangkaian saraf akan menyesuaikan sebanyak mungkin kepada sampel dan akan kehilangan fungsinya pada data sebenar. Untuk mengawal kebolehan generalisasi model anda, bahagikan semua data kepada tiga sampel dalam nisbah 70: 20: 10. Latih dalam Kereta Api, semak kualiti model pada Ujian secara berkala. Untuk penilaian akhir yang tidak berat sebelah – Pengesahan.
Teknik pengesahan silang, apabila Train and Test dijana beberapa kali secara rawak daripada data yang sama, boleh berbahaya dan memberi gambaran palsu tentang kualiti sistem yang baik - contohnya, jika data diambil daripada sumber yang berbeza dan ini adalah kritikal. Gunakan Pengesahan yang betul!

7. Guna regularisasi.
Regularisasi ialah teknik yang membolehkan anda mengelakkan latihan berlebihan rangkaian saraf semasa latihan, walaupun terdapat sedikit data. Jika anda menemui kotak pilihan dengan perkataan ini, pastikan anda menyemaknya. Tanda rangkaian saraf yang terlalu terlatih ialah nilai pemberat yang besar, mengikut susunan ratusan dan ribuan; rangkaian saraf sedemikian tidak akan berfungsi secara normal pada data baharu yang sebelum ini tidak kelihatan

8. Tidak perlu melatih semula rangkaian neural dalam talian.
Idea untuk melatih semula rangkaian saraf secara kekal sepanjang masa pada data masuk baru adalah betul dengan sendirinya; dalam sistem biologi sebenar ini adalah apa yang berlaku. Kami belajar setiap hari dan jarang menjadi gila. Walau bagaimanapun, untuk rangkaian saraf tiruan konvensional pada peringkat pembangunan teknikal semasa, amalan ini berisiko: rangkaian boleh melatih berlebihan atau menyesuaikan diri dengan data terkini yang diterima - dan kehilangan kebolehan generalisasinya. Agar sistem dapat digunakan secara praktikal, rangkaian saraf perlu: 1) melatih, 2) menguji kualiti pada sampel ujian dan pengesahan, 3) memilih pilihan rangkaian yang berjaya, menetapkan pemberatnya dan 4) menggunakan saraf terlatih. rangkaian dalam amalan, pemberat dalam proses tidak mengubah penggunaan.

9. Gunakan algoritma pembelajaran baharu: Levenberg-Marquardt, BFGS, Kecerunan Konjugat, dsb.
Saya amat yakin bahawa melaksanakan pembelajaran penyebaran belakang adalah tugas suci setiap orang yang bekerja dengan rangkaian saraf. Kaedah ini adalah yang paling mudah, agak mudah untuk diprogramkan dan membolehkan anda mengkaji secara menyeluruh proses pembelajaran rangkaian saraf. Sementara itu, backpropagation telah dicipta pada awal 70-an dan menjadi popular pada pertengahan 80-an abad yang lalu; sejak itu, kaedah yang lebih maju telah muncul yang boleh meningkatkan kualiti pembelajaran dengan ketara. Lebih baik menggunakannya.

10. Latih rangkaian neural dalam MATLAB dan persekitaran mesra pengguna yang serupa.
Jika anda bukan seorang saintis yang membangunkan kaedah baharu untuk melatih rangkaian saraf, tetapi seorang pengaturcara yang berlatih, saya tidak akan mengesyorkan pengekodan prosedur untuk melatih rangkaian saraf sendiri. Terdapat sejumlah besar pakej perisian, terutamanya dalam MATLAB dan Python, yang membolehkan anda melatih rangkaian saraf, sambil mengawal proses latihan dan ujian menggunakan alat visualisasi dan penyahpepijatan yang mudah. Nikmati warisan kemanusiaan! Saya secara peribadi suka pendekatan "latihan dalam MATLAB dengan perpustakaan yang baik - laksanakan model terlatih dengan tangan" pendekatan; ia agak berkuasa dan fleksibel. Pengecualian ialah pakej STATISTICA, yang mengandungi kaedah lanjutan untuk melatih rangkaian saraf dan membolehkan anda menjananya dalam bentuk kod program dalam C, mudah untuk dilaksanakan.

Dalam artikel seterusnya, saya merancang untuk menerangkan secara terperinci kitaran perindustrian penuh untuk menyediakan rangkaian saraf yang dilaksanakan berdasarkan prinsip yang diterangkan di atas, digunakan untuk tugas pengiktirafan dalam produk perisian komersial.

Semoga berjaya!

kesusasteraan

Hinton G., Deng L., Yu D., Dahl G., Mohamed A., Jaitly N., Senior A., ​​​​Vanhoucke V., Nguyen P., Sainath T. dan Kingsbury B. Deep Neural Networks for Acoustic Pemodelan dalam Pengecaman Pertuturan, Majalah Pemprosesan Isyarat IEEE, Vol. 29, No. 6, 2012, hlm. 82 – 97.
Ciresan D., Meier U., Masci J dan Schmidhuber J. Rangkaian Neural Dalam Berbilang lajur untuk Klasifikasi Tanda Lalu Lintas. Rangkaian Neural, Vol. 34, Ogos 2012, ms. 333 – 338
S. Osovsky. Rangkaian saraf untuk pemprosesan maklumat - trans. daripada bahasa Poland. M.: Kewangan dan Perangkaan, 2002. – 344 p.
Bishop C.M. Pengecaman Corak dan Pembelajaran Mesin. Springer, 2006 – 738 p.
S. Khaikin. Rangkaian saraf: kursus lengkap. Williams, 2006.

Kali ini saya memutuskan untuk mengkaji rangkaian saraf. Saya dapat memperoleh kemahiran asas dalam perkara ini sepanjang musim panas dan musim luruh tahun 2015. Dengan kemahiran asas, saya maksudkan bahawa saya boleh mencipta rangkaian saraf mudah sendiri dari awal. Anda boleh mencari contoh dalam repositori GitHub saya. Dalam artikel ini, saya akan memberikan beberapa penjelasan dan berkongsi sumber yang mungkin berguna dalam kajian anda.

Langkah 1. Neuron dan kaedah suapan hadapan

Jadi apakah itu "rangkaian saraf"? Mari kita tunggu dengan ini dan berurusan dengan satu neuron dahulu.

Neuron adalah seperti fungsi: ia mengambil beberapa nilai sebagai input dan mengembalikan satu.

Bulatan di bawah mewakili neuron buatan. Ia menerima 5 dan mengembalikan 1. Input ialah jumlah tiga sinaps yang disambungkan ke neuron (tiga anak panah di sebelah kiri).

Di sebelah kiri gambar kita melihat 2 nilai input (dalam warna hijau) dan satu offset (dalam warna coklat).

Data input boleh menjadi perwakilan berangka dua sifat yang berbeza. Sebagai contoh, apabila membuat penapis spam, mereka boleh bermaksud kehadiran lebih daripada satu perkataan yang ditulis dalam HURUF BESAR dan kehadiran perkataan "Viagra".

Nilai input didarab dengan apa yang dipanggil "berat", 7 dan 3 (diserlahkan dengan warna biru).

Sekarang kami menambah nilai yang terhasil dengan offset dan mendapatkan nombor, dalam kes kami 5 (diserlahkan dengan warna merah). Ini adalah input neuron buatan kita.

Kemudian neuron melakukan beberapa pengiraan dan menghasilkan nilai output. Kami mendapat 1 kerana nilai bulat sigmoid pada titik 5 ialah 1 (kita akan bercakap tentang fungsi ini dengan lebih terperinci kemudian).

Jika ini adalah penapis spam, fakta bahawa output 1 bermakna bahawa teks telah ditandakan sebagai spam oleh neuron.

Ilustrasi rangkaian saraf dari Wikipedia.

Jika anda menggabungkan neuron-neuron ini, anda akan mendapat rangkaian neural yang menyebarkan secara langsung - prosesnya dari input ke output, melalui neuron yang disambungkan oleh sinaps, seperti dalam gambar di sebelah kiri.

Langkah 2. Sigmoid

Selepas anda menonton pelajaran Welch Labs, adalah idea yang baik untuk menyemak Minggu 4 kursus pembelajaran mesin Coursera mengenai rangkaian saraf untuk membantu anda memahami cara ia berfungsi. Kursus ini mendalami matematik dan berdasarkan Octave, manakala saya lebih suka Python. Oleh kerana itu, saya melangkau latihan dan mendapat semua pengetahuan yang diperlukan daripada video.

Sigmoid hanya memetakan nilai anda (pada paksi mendatar) kepada julat dari 0 hingga 1.

Keutamaan pertama saya ialah mengkaji sigmoid, kerana ia telah digambarkan dalam banyak aspek rangkaian saraf. Saya sudah mengetahui sesuatu tentangnya dari minggu ketiga kursus yang disebutkan di atas, jadi saya menonton video dari sana.

Tetapi anda tidak akan pergi jauh dengan video sahaja. Untuk pemahaman yang lengkap, saya memutuskan untuk mengekodnya sendiri. Jadi saya mula menulis pelaksanaan algoritma regresi logistik (yang menggunakan sigmoid).

Ia mengambil masa sehari penuh, dan hasilnya hampir tidak memuaskan. Tetapi tidak mengapa, kerana saya tahu bagaimana semuanya berfungsi. Kod boleh dilihat.

Anda tidak perlu melakukan ini sendiri, kerana ia memerlukan pengetahuan khusus - perkara utama ialah anda memahami cara sigmoid berfungsi.

Langkah 3. Kaedah penyebaran balik

Memahami bagaimana rangkaian saraf berfungsi dari input ke output tidaklah begitu sukar. Adalah lebih sukar untuk memahami cara rangkaian saraf belajar daripada set data. Prinsip yang saya gunakan dipanggil

Hai semua!

Dalam artikel ini saya akan bercakap tentang cara baru yang selesa untuk memprogram dalam Python.

Ini kurang seperti pengaturcaraan dan lebih seperti mencipta artikel (laporan/demonstrasi/penyelidikan/contoh): anda boleh memasukkan teks penerangan biasa di antara blok kod Python. Hasil daripada melaksanakan kod bukan sahaja nombor dan teks (seperti yang berlaku dengan konsol apabila bekerja dengan Python), tetapi juga graf, rajah, gambar...

Contoh dokumen yang boleh anda buat:

Nampak cool? Adakah anda ingin membuat dokumen yang sama? Maka artikel ini adalah untuk anda!

Rangkaian saraf dicipta dan dilatih terutamanya dalam Python. Oleh itu, adalah sangat penting untuk mempunyai pemahaman asas tentang cara menulis program di dalamnya. Dalam artikel ini saya akan bercakap secara ringkas dan jelas tentang konsep asas bahasa ini: pembolehubah, fungsi, kelas dan modul.

Bahan ini bertujuan untuk orang yang tidak biasa dengan bahasa pengaturcaraan.

Mula-mula anda perlu memasang Python. Kemudian anda perlu memasang persekitaran yang mudah untuk menulis program dalam Python. Portal ini didedikasikan untuk dua langkah ini.

Jika semuanya dipasang dan dikonfigurasikan, anda boleh mulakan.

Rangkaian saraf mesti ditulis dalam beberapa bahasa pengaturcaraan. Terdapat banyak daripada mereka, tetapi saya mengesyorkan (dan menggunakan dalam buku teks dan artikel) bahasa Python. kenapa?

  1. Ia sangat mudah untuk dipelajari
  2. Sebilangan besar perpustakaan siap sedia
  3. Apabila anda melihat program, anda serta-merta melihat algoritma yang ia laksanakan
  4. Kebanyakan pakar pembelajaran mesin menggunakan Python dan kebanyakan perpustakaan juga dicipta khusus untuk bahasa pengaturcaraan ini

Dalam bahagian sebelumnya, kami belajar cara mengira perubahan isyarat apabila melalui rangkaian saraf. Kami berkenalan dengan matriks, produk mereka dan memperoleh formula mudah untuk pengiraan.

Dalam bahagian 6 terjemahan saya menyiarkan 4 bahagian buku sekaligus. Kesemua mereka menumpukan kepada salah satu topik terpenting dalam bidang rangkaian saraf - kaedah perambatan balik. Anda akan belajar mengira ralat semua neuron dalam rangkaian saraf hanya berdasarkan ralat rangkaian akhir dan berat sambungan.

Bahannya rumit, jadi jangan ragu untuk bertanya soalan anda di forum.

Anda boleh memindahkan.

Selamat membaca!

Dalam Bahagian 5 terjemahan saya mengemukakan 3 bahagian yang berkaitan dengan makna.

Pertama, kami secara peribadi akan mengira output rangkaian saraf dua lapisan. Kemudian kita akan berkenalan dengan matriks dan produknya. Menggunakan pengetahuan yang diperoleh, kami akan memperoleh formula mudah untuk mengira penukaran isyarat dalam rangkaian saraf. Dan di bahagian terakhir kita akan menyemak formula yang diperolehi dalam amalan, mengira output rangkaian saraf tiga lapisan.

Anda boleh memindahkan.

Selamat membaca!

Bahagian 4 terjemahan sudah siap!

Mari kita berhenti berdebar-debar dan beralih terus ke topik buku - rangkaian saraf.

Dalam bahagian terjemahan ini, kita akan melihat rangkaian saraf biologi dan membandingkannya dengan komputer tradisional. Kami kemudiannya akan membina model neuron tiruan dan akhirnya bergerak terus ke rangkaian saraf tiruan.

Anda boleh memindahkan.

Selamat membaca!

Bahagian ketiga terjemahan!

Artikelnya tidaklah panjang sangat. Ia hanya meliputi satu bahagian buku. Matlamatnya adalah untuk menunjukkan bahawa setiap kaedah mempunyai batasannya. Artikel membincangkan had pengelas linear. Konsep fungsi logik dan masalah XOR juga diperkenalkan.

Anda boleh memindahkan.

Selamat membaca!

Dalam artikel ini saya akan bercakap tentang penjana muzik menarik yang berfungsi pada rangkaian saraf. Penjana dipanggil Amper. Dengan bantuannya, mana-mana orang, walaupun seseorang yang jauh dari mengarang gubahan, boleh secara bebas mencipta melodi yang unik dan menggunakannya untuk tujuan mereka sendiri.

Di sini, sebagai contoh, adalah rangkaian saraf yang dibangunkan untuk saya.

Yandex telah memperkenalkan algoritma carian baharu berdasarkan rangkaian saraf. Menurut pakar, ini sepatutnya membantu syarikat meningkatkan penerajunya dalam pasaran Rusia daripada pesaing utamanya - Google

Internet Rusia yang memegang Yandex telah memperkenalkan algoritma carian baharu berdasarkan rangkaian saraf. Ini diumumkan oleh ketua perkhidmatan perkaitan perkhidmatan, Alexander Safronov. Algoritma baharu, yang dipanggil "Korolyov," mencari bukan sahaja dengan kata kunci, tetapi juga dengan makna, dan jawapan yang lebih tepat diberikan kepada soalan yang rumit, jelas seorang wakil Yandex.

Pada tahun 2016, Yandex memperkenalkan algoritma Palekh, yang dalam masa nyata membandingkan maksud pertanyaan yang jarang dan unik serta tajuk halaman web, walaupun mereka tidak mempunyai kata kunci biasa. Sebagai contoh, apabila bertanya "lukisan di mana langit berputar", enjin carian akan dapat mengembalikan "Malam Berbintang" Van Gogh. Tidak seperti Palekh, Korolev dapat menganalisis keseluruhan halaman, serta makna pertanyaan yang membawa pengguna lain kepadanya.

Ketua jabatan carian Yandex, Andrei Styskin, memberikan satu lagi contoh permintaan yang kompleks: "sebuah filem tentang ruang di mana seorang bapa berkomunikasi dengan anak perempuannya melalui tangan kedua." Dalam kes ini, permintaan itu tidak mengandungi kata kunci, tetapi algoritma carian dapat memahami bahawa kita bercakap tentang filem "Interstellar," kata Styskin.

Menurut wakil perkhidmatan itu, rangkaian saraf mampu belajar sendiri, jadi lebih ramai pengguna mencari dalam enjin carian, lebih tepat hasilnya. Platform penyumberan ramai terbuka Yandex.Toloka, yang dilancarkan pada 2014, akan digunakan untuk ujian. Pada asasnya, ini adalah perkhidmatan di mana sesiapa sahaja boleh mengambil bahagian dalam menguji produk Yandex, memberi mereka penilaian dan meninggalkan komen. Ini membolehkan syarikat menambah baik perkhidmatannya dan pengguna menerima ganjaran kewangan untuk ini. Pada masa ini, lebih daripada 1 juta pengguna berdaftar di Yandex.Toloka.

"Masalah dengan rangkaian saraf ialah ia sangat perlahan dan tidak boleh digunakan untuk bekerja dengan sejumlah besar teks dalam masa nyata," kata Igor Ashmanov, pengasas dan rakan kongsi pengurusan Ashmanov and Partners. "Jika Yandex benar-benar dapat melibatkan rangkaian saraf dalam mengindeks keseluruhan volum Runet, ini menarik, ini adalah satu kejayaan yang agak serius dari sudut pandangan teknologi." Sejauh mana algoritma baharu akan meningkatkan kualiti carian dan sama ada ia akan memperbaikinya pada dasarnya masih perlu dianalisis, kata Ashmanov.

Pesaing utama Yandex, Google, menurut ketua Ashmanov and Partners, belum lagi secara rasmi mengumumkan pengenalan rangkaian saraf ke dalam algoritma cariannya. “Google mampu untuk menetapkan faktor kedudukan secara berbeza dan bereksperimen lebih lama dalam bidang ini tanpa memperkenalkan teknologi baharu dalam carian, semata-mata kerana syarikat itu mempunyai lebih banyak pengaturcara dan sumber,” kata pakar itu.​


Kejar dan memintas

Menurut penganalisis VTB Capital Vladimir Bespalov, versi baharu enjin carian Rusia adalah satu langkah untuk mengekalkan bahagian Yandex dalam pasaran. "Aplikasi mudah alih Carian yang dikemas kini, algoritma enjin carian baharu - semua ini akan membantu Yandex menstabilkan dan meningkatkan bahagiannya dalam pasaran carian," kata pakar itu. — Kesannya tidak akan dirasai serta-merta, tetapi penurunan dalam pertanyaan carian dalam jangka panjang mungkin memberi kesan yang kurang baik pada prestasi masa hadapan. Carian ialah produk utama Yandex; pendapatan utama syarikat ialah pengiklanan, yang terikat dengan carian.

Keputusan FAS boleh membantu Yandex mengekalkan kedudukannya dalam carian mudah alih, ingat Bespalov. Pada April tahun ini, jabatan itu memeterai perjanjian penyelesaian dengan pesaing utama syarikat Rusia itu dalam pasaran carian, Google. Menurutnya, gergasi Internet Amerika itu akan mempertimbangkan semula perjanjian dengan pengeluar telefon pintar Android di Rusia dan membenarkan pengguna memilih perkhidmatan carian Google alternatif sebagai yang utama pada peranti mereka.

Pada akhir suku kedua tahun ini, bahagian Yandex dalam pasaran carian di Rusia berjumlah 54.3%, seperti yang dilaporkan oleh Yandex N.V. (syarikat induk Yandex) dalam laporan kewangannya dengan merujuk kepada perkhidmatan analitiknya sendiri Yandex.Radar. Sehingga 31 Julai, menurut Yandex.Radar, Google menduduki 40.36% dalam kalangan enjin carian di Rusia. Menurut LiveInternet, secara purata dalam tempoh tiga bulan terakhir di kalangan enjin carian, Yandex mendahului dengan bahagian 51.1%, Google mempunyai 43.9%. Yandex N.V. tidak mendedahkan hasil daripada carian, tetapi arahan "carian dan portal" membawa syarikat itu 20.135 bilion rubel, iaitu 22% lebih daripada tempoh yang sama pada 2016.

"Versi revolusioner carian Matrixnet sebelum ini membenarkan Yandex melepaskan diri daripada Google dan meningkatkan bahagiannya hampir 10 mata peratusan. Selama setengah tahun. Ini adalah contoh yang jelas tentang bagaimana penggunaan teknologi terobosan membawa kepada hasil perniagaan yang jelas walaupun dalam pasaran yang begitu kompleks seperti pasaran carian,” kata Alexander Laryanovsky, rakan kongsi pengurusan sekolah dalam talian Skyeng dan bekas pengarah pembangunan antarabangsa di Yandex.

Menurut Tatyana Danielyan, timbalan pengarah untuk penyelidikan dan pembangunan kumpulan syarikat ABBYY, pengenalan algoritma carian baharu juga mungkin mengubah kedudukan (urutan tapak dipaparkan dalam hasil carian). Walau bagaimanapun, ini akan menjadi kelebihan untuk tapak itu sendiri, katanya: "Pengguna akan lebih berkemungkinan melawat halaman yang benar-benar memenuhi keperluan mereka dan penukaran tapak boleh meningkat dengan ketara."

  • Python,
  • Pembelajaran mesin,
  • Teknologi carian
  • Hari ini Yandex telah mengeluarkan perpustakaan CatBoostnya sendiri, dibangunkan dengan mengambil kira pengalaman bertahun-tahun syarikat dalam bidang pembelajaran mesin, menjadi sumber terbuka. Dengan bantuannya, anda boleh melatih model secara berkesan mengenai data heterogen, termasuk yang sukar diwakili dalam bentuk nombor (contohnya, jenis awan atau kategori produk). Kod sumber, dokumentasi, penanda aras dan alatan yang diperlukan telah pun diterbitkan di GitHub di bawah lesen Apache 2.0.

    CatBoost ialah kaedah pembelajaran mesin baharu berdasarkan peningkatan kecerunan. Ia sedang dilaksanakan dalam Yandex untuk menyelesaikan masalah penarafan, ramalan dan cadangan bangunan. Selain itu, ia telah pun digunakan sebagai sebahagian daripada kerjasama dengan Pertubuhan Penyelidikan Nuklear Eropah (CERN) dan pelanggan industri Yandex Data Factory. Jadi bagaimana CatBoost berbeza daripada analog sumber terbuka yang lain? Mengapa meningkatkan dan bukan kaedah rangkaian saraf? Bagaimanakah teknologi ini berkaitan dengan Matrixnet yang sudah diketahui? Dan apa kaitan kucing dengannya? Hari ini kita akan menjawab semua soalan ini.

    Istilah "pembelajaran mesin" muncul pada tahun 50-an. Istilah ini merujuk kepada percubaan untuk mengajar komputer untuk menyelesaikan masalah yang mudah bagi manusia, tetapi sukar untuk memformalkan cara untuk menyelesaikannya. Hasil daripada pembelajaran mesin, komputer boleh mempamerkan tingkah laku yang tidak direka secara eksplisit ke dalamnya. Dalam dunia moden, kita menemui hasil pembelajaran mesin berkali-kali setiap hari, ramai di antara kita tanpa mengetahuinya. Ia digunakan untuk membina suapan pada rangkaian sosial, senarai "produk serupa" di kedai dalam talian, apabila mengeluarkan pinjaman di bank dan menentukan kos insurans. Teknologi pembelajaran mesin digunakan untuk mencari wajah dalam foto atau banyak penapis foto. Untuk yang terakhir, dengan cara ini, rangkaian saraf biasanya digunakan, dan ia ditulis dengan kerap sehingga mungkin terdapat pendapat yang salah bahawa ini adalah "peluru perak" untuk menyelesaikan masalah apa-apa kerumitan. Tetapi itu tidak benar.

    Rangkaian saraf atau peningkatan kecerunan

    Malah, pembelajaran mesin sangat berbeza: terdapat sejumlah besar kaedah yang berbeza, dan rangkaian saraf hanyalah salah satu daripadanya. Ini digambarkan oleh keputusan pertandingan pada platform Kaggle, di mana kaedah yang berbeza menang dalam pertandingan yang berbeza, dan kemenangan peningkatan kecerunan dalam kebanyakannya.

    Rangkaian saraf sangat baik dalam menyelesaikan masalah tertentu - contohnya, yang anda perlukan untuk bekerja dengan data homogen. Data homogen terdiri daripada, sebagai contoh, imej, bunyi atau teks. Dalam Yandex, mereka membantu kami lebih memahami pertanyaan carian, mencari gambar yang serupa di Internet, mengecam suara anda dalam Navigator dan banyak lagi. Tetapi ini bukan semua tugas untuk pembelajaran mesin. Terdapat satu lapisan cabaran serius yang tidak dapat diselesaikan oleh rangkaian saraf sahaja - ia memerlukan peningkatan kecerunan. Kaedah ini amat diperlukan di mana terdapat banyak data dan strukturnya adalah heterogen.

    Sebagai contoh, jika anda memerlukan ramalan cuaca yang tepat, di mana sejumlah besar faktor diambil kira (suhu, kelembapan, data radar, pemerhatian pengguna dan banyak lagi). Atau jika anda perlu menilai hasil carian secara kualitatif - inilah yang mendorong Yandex untuk membangunkan kaedah pembelajaran mesinnya sendiri.

    Matrixnet

    Enjin carian pertama tidak secanggih sekarang. Malah, pada mulanya ia hanyalah carian perkataan - terdapat sangat sedikit tapak sehingga tidak terdapat banyak persaingan di antara mereka. Kemudian terdapat lebih banyak halaman, dan ia menjadi perlu untuk menentukan kedudukannya. Pelbagai komplikasi mula diambil kira - kekerapan perkataan, tf-idf. Kemudian terdapat terlalu banyak halaman pada mana-mana topik, kejayaan penting pertama berlaku - mereka mula mengambil kira pautan.

    Tidak lama kemudian Internet menjadi penting secara komersial, dan ramai penipu kelihatan cuba memperdayakan algoritma mudah yang wujud pada masa itu. Dan penemuan penting kedua berlaku - enjin carian mula menggunakan pengetahuan mereka tentang tingkah laku pengguna untuk memahami halaman mana yang bagus dan mana yang tidak.

    Kira-kira sepuluh tahun yang lalu, minda manusia tidak lagi mencukupi untuk memikirkan cara menentukan kedudukan dokumen. Anda mungkin perasan bahawa bilangan hasil yang ditemui untuk hampir mana-mana pertanyaan adalah besar: beratus-ratus ribu, selalunya berjuta-juta hasil. Kebanyakannya tidak menarik, tidak berguna, hanya menyebut perkataan pertanyaan secara rawak, atau secara amnya adalah spam. Untuk menjawab permintaan anda, anda perlu segera memilih sepuluh teratas daripada semua hasil yang ditemui. Menulis program yang melakukan ini dengan kualiti yang boleh diterima telah menjadi di luar kuasa pengaturcara manusia. Peralihan seterusnya telah berlaku - enjin carian mula aktif menggunakan pembelajaran mesin.

    Kembali pada tahun 2009, Yandex memperkenalkan kaedah Matrixnet mereka sendiri, berdasarkan peningkatan kecerunan. Kita boleh mengatakan bahawa kedudukan dibantu oleh kecerdasan kolektif pengguna dan "kebijaksanaan orang ramai." Maklumat tentang tapak dan tingkah laku orang ditukar kepada banyak faktor, setiap satunya digunakan oleh Matrixnet untuk membina formula kedudukan. Malah, formula ranking kini ditulis oleh mesin. Ngomong-ngomong, kami juga menggunakan hasil rangkaian saraf sebagai faktor individu (contohnya, ini adalah cara algoritma Palekh berfungsi, yang kita bincangkan tahun lepas).

    Ciri penting Matrixnet ialah ia tahan terhadap overfitting. Ini membolehkan anda mengambil kira banyak faktor kedudukan dan pada masa yang sama melatih jumlah data yang agak kecil, tanpa rasa takut bahawa mesin akan menemui corak yang tidak wujud. Kaedah pembelajaran mesin lain sama ada membenarkan anda membina formula yang lebih mudah dengan faktor yang lebih sedikit atau memerlukan sampel latihan yang lebih besar.

    Satu lagi ciri penting Matrixnet ialah formula kedudukan boleh dikonfigurasikan secara berasingan untuk kelas pertanyaan yang agak sempit. Contohnya, tingkatkan kualiti carian hanya untuk pertanyaan tentang muzik. Pada masa yang sama, kedudukan untuk kelas pertanyaan lain tidak akan merosot.

    Ia adalah Matrixnet dan kelebihannya yang membentuk asas CatBoost. Tetapi mengapa kita perlu mencipta sesuatu yang baru sama sekali?

    Hampir mana-mana kaedah moden berdasarkan peningkatan kecerunan berfungsi dengan nombor. Walaupun input anda ialah genre muzik, jenis awan atau warna, data ini masih perlu diterangkan dalam bahasa nombor. Ini membawa kepada herotan intipati mereka dan potensi penurunan dalam ketepatan model.

    Mari kita tunjukkan ini menggunakan contoh primitif dengan katalog produk di kedai. Produk mempunyai hubungan yang sedikit antara satu sama lain, dan tiada corak di antara mereka yang membolehkan mereka dipesan dan memberikan nombor yang bermakna kepada setiap produk. Oleh itu, dalam situasi ini, setiap produk hanya diberikan id bersiri (contohnya, mengikut program perakaunan kedai). Susunan nombor ini tidak bermakna apa-apa, tetapi algoritma akan menggunakan susunan ini dan membuat kesimpulan palsu daripadanya.

    Pakar pembelajaran mesin yang berpengalaman boleh menghasilkan cara yang lebih bijak untuk menukar ciri kategori kepada nombor, tetapi pra-pemprosesan sedemikian akan menyebabkan kehilangan beberapa maklumat dan akan membawa kepada kemerosotan dalam kualiti penyelesaian akhir.

    Itulah sebabnya penting untuk mengajar mesin berfungsi bukan sahaja dengan nombor, tetapi juga dengan kategori secara langsung, corak yang antaranya akan dikenal pasti secara bebas, tanpa "bantuan" manual kami. Dan CatBoost telah direka oleh kami untuk berfungsi dengan baik di luar kotak dengan kedua-dua ciri berangka dan kategori. Terima kasih kepada ini, ia menunjukkan prestasi pembelajaran yang lebih baik apabila bekerja dengan data heterogen daripada penyelesaian alternatif. Ia boleh digunakan dalam pelbagai bidang - daripada perbankan kepada industri.

    By the way, nama teknologi itu berasal dari Categorical Boosting. Dan tiada seekor kucing pun dicederakan semasa pembangunan.

    Penanda aras

    Kita boleh bercakap untuk masa yang lama tentang perbezaan teori perpustakaan, tetapi lebih baik untuk menunjukkannya dalam amalan sekali. Untuk kejelasan, kami membandingkan prestasi perpustakaan CatBoost dengan analog terbuka XGBoost, LightGBM dan H20 pada set set data awam. Dan inilah hasilnya (lebih kecil lebih baik): https://catboost.yandex/#benchmark

    Oleh itu, kami tidak mahu menjadi tidak berasas, bersama-sama dengan perpustakaan, penerangan tentang proses perbandingan, kod untuk melancarkan perbandingan kaedah dan bekas dengan versi terpakai semua perpustakaan disiarkan dalam sumber terbuka. Mana-mana pengguna boleh mengulangi percubaan di rumah atau pada data mereka sendiri.

    CatBoost dalam amalan

    Kaedah baharu telah pun diuji pada perkhidmatan Yandex. Ia digunakan untuk menambah baik hasil carian, menyusun suapan pengesyoran Yandex.Zen, dan untuk mengira ramalan cuaca dalam teknologi Meteum - dan dalam semua kes ia menunjukkan dirinya lebih baik daripada Matrixnet. Pada masa hadapan, CatBoost akan bekerja pada perkhidmatan lain. Kami tidak akan berhenti di sini - lebih baik untuk memberitahu anda dengan segera tentang Large Hadron Collider (LHC).

    CatBoost juga telah menemui aplikasi dalam rangka kerjasama dengan Pertubuhan Penyelidikan Nuklear Eropah. LHC mengendalikan pengesan LHCb, yang digunakan untuk mengkaji asimetri jirim dan antijirim dalam interaksi quark cantik berat. Untuk mengesan dengan tepat zarah berbeza yang dikesan dalam eksperimen, terdapat beberapa bahagian khusus dalam pengesan, setiap satunya menentukan sifat khas zarah tersebut. Tugas yang paling sukar dalam kes ini ialah menggabungkan maklumat daripada bahagian pengesan yang berlainan ke dalam pengetahuan teragregat yang paling tepat tentang zarah. Di sinilah pembelajaran mesin datang untuk menyelamatkan. Menggunakan CatBoost untuk menggabungkan data, para saintis berjaya meningkatkan ciri kualiti penyelesaian akhir. Keputusan CatBoost adalah lebih baik daripada yang diperoleh menggunakan kaedah lain.

    Bagaimana untuk mula menggunakan CatBoost?

    Untuk bekerja dengan CatBoost, cuma pasangkannya pada komputer anda. Perpustakaan ini menyokong sistem pengendalian Linux, Windows dan macOS serta tersedia dalam bahasa pengaturcaraan Python dan R. Yandex juga telah membangunkan program visualisasi