Yandex telah membuat alternatif kepada rangkaian saraf tersedia untuk umum. Yandex membuka teknologi pembelajaran mesin CatBoost

Dari segi sejarah, rangkaian saraf tiruan telah mengalami tempoh kenaikan dan penurunan pesat dalam sejarah lebih separuh abad mereka. peningkatan perhatian masyarakat, dan tempoh keraguan dan sikap acuh tak acuh yang mengikuti mereka. DALAM Masa yang baik Nampaknya para saintis dan jurutera 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. Dengan ramai tugas amali Pengelasan dan ramalan berfungsi dengan baik dengan model Multilayer Perceptron (MLP) yang direka bentuk dengan baik dan rangkaian Fungsi Asas Radial (RBF) yang 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 umum dan rangkaian saraf khususnya melakukannya ralat sistem apabila bekerja dengan mereka, mereka menjadi kecewa dan meninggalkan 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 saya dan kesilapan tipikal penggunaan 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.
Moden komputer peribadi(contohnya, Core i5, 8 GB RAM) membolehkan anda 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 menjadi licik dan memberi gambaran palsu tentang kualiti yang baik operasi sistem - contohnya, jika data diambil dari 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 berat yang besar, mengikut susunan ratusan dan ribuan; rangkaian saraf sedemikian tidak akan berfungsi secara normal pada data baharu yang tidak kelihatan sebelum ini

8. Tidak perlu melatih semula rangkaian neural dalam talian.
Idea untuk melatih semula rangkaian saraf secara kekal sepanjang masa pada data masuk baharu adalah betul dengan sendirinya; dalam sistem biologi sebenar, inilah yang berlaku. Kami belajar setiap hari dan jarang menjadi gila. Walau bagaimanapun, untuk rangkaian saraf tiruan konvensional pada peringkat moden Dalam pembangunan teknikal, amalan ini berisiko: rangkaian mungkin melatih semula 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 "kereta api dalam MATLAB dengan perpustakaan yang baik - laksanakan model terlatih dengan tangan"; 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 pengecaman 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 penuh. Williams, 2006.

Kruchinin Dmitry, Dolotov Evgeniy, Kustikova Valentina, Druzhkov Pavel, Kornyakov Kirill

pengenalan

Pada masa ini, pembelajaran mesin adalah bidang yang sedang berkembang secara aktif. kajian saintifik. Ini disebabkan oleh kedua-dua keupayaan untuk mengumpul dan memproses data dengan lebih cepat, lebih tinggi, lebih kuat, lebih mudah dan lebih murah, dan pembangunan kaedah untuk mengenal pasti daripada data ini undang-undang yang mana proses fizikal, biologi, ekonomi dan lain-lain berlaku. Dalam beberapa masalah, apabila undang-undang sedemikian agak sukar untuk ditentukan, pembelajaran mendalam digunakan.

Pembelajaran yang mendalam mengkaji kaedah untuk memodelkan abstraksi peringkat tinggi dalam data menggunakan pelbagai transformasi tak linear berjujukan, yang biasanya diwakili sebagai rangkaian saraf tiruan. Hari ini, rangkaian saraf berjaya digunakan untuk menyelesaikan masalah seperti peramalan, pengecaman corak, pemampatan data dan beberapa yang lain.

Perkaitan topik pembelajaran mesin dan, khususnya, pembelajaran mendalam disahkan oleh penampilan biasa artikel di topik ini on Habré: Artikel ini ditumpukan kepada analisis perbandingan beberapa alat perisian pembelajaran mendalam, yang mana Kebelakangan ini sejumlah besar muncul. Alat ini termasuk perpustakaan perisian, sambungan bahasa pengaturcaraan dan bahasa bebas, membenarkan penggunaan algoritma siap sedia untuk mencipta dan melatih model rangkaian saraf. Alat pembelajaran mendalam sedia ada mempunyai fungsi yang berbeza dan memerlukan tahap pengetahuan dan kemahiran yang berbeza daripada pengguna. Memilih alat yang betul adalah tugas penting yang membolehkan anda mencapai hasil yang diinginkan dalam masa yang paling singkat dan dengan usaha yang kurang.

Artikel ini memberikan gambaran ringkas tentang alat untuk mereka bentuk dan melatih model rangkaian saraf. Tumpuan adalah pada empat perpustakaan: Caffe, Pylearn2, Torch dan Theano. Keupayaan asas perpustakaan ini dipertimbangkan dan contoh penggunaannya diberikan. Kualiti dan kelajuan operasi perpustakaan dibandingkan apabila membina topologi rangkaian neural yang sama untuk menyelesaikan masalah pengelasan. nombor tulisan tangan(set data MNIST digunakan sebagai set latihan dan ujian). Percubaan juga dibuat untuk menilai kemudahan penggunaan perpustakaan yang dipersoalkan dalam amalan.

Set Data MNIST

Seterusnya, pangkalan data MNIST () imej digit tulisan tangan akan digunakan sebagai set data yang dikaji. Imej dalam pangkalan data ini mempunyai resolusi 28x28 dan disimpan dalam format skala kelabu. Nombor berpusat pada imej. Seluruh pangkalan data dibahagikan kepada dua bahagian: latihan, yang terdiri daripada 50,000 imej, dan ujian, yang terdiri daripada 10,000 imej.

Alat perisian untuk menyelesaikan masalah pembelajaran mendalam

Terdapat banyak alat perisian yang tersedia untuk menyelesaikan masalah pembelajaran mendalam. Dalam anda boleh mencari perbandingan umum fungsi yang paling terkenal, di sini kami membentangkan maklumat am tentang sebahagian daripada mereka (). Enam perpustakaan perisian pertama melaksanakan julat terluas kaedah pembelajaran mendalam. Pembangun menyediakan peluang untuk mencipta rangkaian saraf bersambung sepenuhnya (FC NN), rangkaian saraf konvolusi (CNN), pengekod automatik (AE) dan mesin Boltzmann terhad (RBM). Ia adalah perlu untuk memberi perhatian kepada perpustakaan yang tinggal. Walaupun mereka mempunyai kurang fungsi, dalam beberapa kes kesederhanaan mereka membantu mencapai produktiviti yang lebih besar.

Jadual 1. Keupayaan perisian pembelajaran mendalam

# Nama Bahasa O.C. FC NN CNN A.E. R.B.M.
1 DeepLearnToolbox Matlab Windows, Linux + + + +
2 Theano Ular sawa Windows, Linux, Mac + + + +
3 Pylearn2 Ular sawa Linux, Vagrant + + + +
4 Deepnet Ular sawa Linux + + + +
5 Deepmat Matlab ? + + + +
6 obor Lua,C Linux, Mac OS X, iOS, Android + + + +
7 Darch R Windows, Linux + - + +
8 Kafe e C++, Python, Matlab Linux, OS X + + - -
9 nnForge C++ Linux + + - -
10 CXXNET C++ Linux + + - -
11 Cuda-convnet C++ Linux, Windows + + - -
12 Cuda CNN Matlab Linux, Windows + + - -

Berdasarkan maklumat yang diberikan dan cadangan pakar, empat perpustakaan telah dipilih untuk pertimbangan selanjutnya: - salah satu perpustakaan yang paling matang dan lengkap dari segi fungsi, dan - digunakan secara meluas oleh masyarakat. Setiap perpustakaan dipertimbangkan mengikut pelan berikut:
  1. Maklumat latar belakang ringkas.
  2. Ciri teknikal (OS, bahasa pengaturcaraan, kebergantungan).
  3. Kefungsian.
  4. Contoh membentuk rangkaian regresi logistik.
  5. Latihan dan penggunaan model yang dibina untuk pengelasan.
Selepas menyemak perpustakaan yang disenaraikan, ia dibandingkan pada beberapa konfigurasi rangkaian ujian.

Perpustakaan Kafe



Caffe telah dibangunkan sejak September 2013. Pembangunan bermula dengan Yangqing Jia semasa pengajiannya di University of California di Berkeley. Sejak itu, Caffe telah disokong secara aktif oleh The Berkeley Vision and Learning Center (BVLC) dan komuniti pembangun di GitHub. Perpustakaan ini diedarkan di bawah lesen BSD 2-Clause.

Caffe dilaksanakan menggunakan bahasa pengaturcaraan C++, dengan pembungkus Python dan MATLAB tersedia. Sistem pengendalian yang disokong secara rasmi ialah Linux dan OS X, dan terdapat juga port tidak rasmi ke Windows. Caffe menggunakan perpustakaan BLAS (ATLAS, Intel MKL, OpenBLAS) untuk pengiraan vektor dan matriks. Bersama-sama ini, kebergantungan luaran termasuk glog, gflags, OpenCV, protoBuf, boost, leveldb, lampin, hdf5, lmdb. Untuk mempercepatkan pengiraan, Caffe boleh dijalankan pada GPU menggunakan keupayaan asas teknologi CUDA atau perpustakaan primitif pembelajaran mendalam cuDNN.

Pembangun kafe menyokong keupayaan untuk mencipta, melatih dan menguji rangkaian neural yang bersambung sepenuhnya dan konvolusi. Data input dan transformasi diterangkan oleh konsep lapisan. Bergantung pada format storan, jenis lapisan data sumber berikut boleh digunakan:

  • DATA - mentakrifkan lapisan data dalam format leveldb dan lmdb.
  • HDF5_DATA - lapisan data dalam format hdf5.
  • IMAGE_DATA ialah format ringkas yang menganggap bahawa fail tersebut mengandungi senarai imej dengan label kelas.
  • dan lain lain.
Transformasi boleh ditentukan menggunakan lapisan:
  • INNER_PRODUCT ialah lapisan bersambung sepenuhnya.
  • KONVOLUSI - lapisan berbelit.
  • POOLING - lapisan pengumpulan spatial.
  • Normalisasi Respons Setempat (LRN) - lapisan normalisasi setempat.
Seiring dengan ini, apabila menjana transformasi, mereka boleh digunakan pelbagai fungsi pengaktifan.
  • Bahagian positif (Unit Linear Diperbetulkan, ReLU).
  • Fungsi sigmoid (SIGMOID).
  • Hiperbola tangen (TANH).
  • Nilai mutlak (ABSVAL).
  • Eksponen (KUASA).
  • Fungsi kemungkinan log normal binomial (BNLL).
Lapisan terakhir model rangkaian saraf mesti mengandungi fungsi ralat. Perpustakaan mempunyai fungsi berikut:
  • Ralat Mean-Square (MSE).
  • Kehilangan engsel.
  • Fungsi kehilangan logistik.
  • Fungsi perolehan maklumat.
  • Kehilangan entropi silang sigmoid.
  • Fungsi Softmax. Mengitlak entropi silang sigmoidal kepada kes lebih daripada dua kelas.
Pelbagai kaedah pengoptimuman digunakan dalam proses model latihan. Pembangun kafe menyediakan pelaksanaan beberapa kaedah:

Dalam perpustakaan Caffe, topologi rangkaian saraf, data awal dan kaedah latihan ditentukan menggunakan fail konfigurasi dalam format prototxt. Fail mengandungi penerangan data input (latihan dan ujian) dan lapisan rangkaian saraf. Mari kita pertimbangkan peringkat membina fail sedemikian menggunakan contoh rangkaian "regresi logistik" (). Dalam perkara berikut, kami akan menganggap bahawa fail itu dipanggil linear_regression.prototxt dan terletak dalam direktori examples/mnist.
nasi. 2. Struktur rangkaian saraf

Perpustakaan Pylearn2


Pylearn2 ialah perpustakaan yang dibangunkan di makmal LISA di Universiti Montreal sejak Februari 2011. Mempunyai kira-kira 100 pembangun di GitHub. Perpustakaan ini diedarkan di bawah lesen BSD 3-Klausa.

Pylearn2 dilaksanakan dalam Python, kini menyokong sistem pengendalian Linux, dan juga boleh dijalankan pada mana-mana sistem pengendalian menggunakan mesin maya, kerana pembangun menyediakan pembungkus yang dikonfigurasikan persekitaran maya berdasarkan Vagrant. Pylearn2 ialah superset perpustakaan Theano. Selain itu diperlukan PyYAML, PIL. Untuk mempercepatkan pengiraan, Pylearn2 dan Theano menggunakan Cuda-convnet, yang dilaksanakan dalam C++/CUDA, yang memberikan peningkatan ketara dalam kelajuan.

Pylearn2 menyokong keupayaan untuk mencipta rangkaian neural yang bersambung sepenuhnya dan konvolusi, pelbagai jenis autoencoders (Contractive Auto-Encoders, Denoising Auto-Encoders) dan mesin Boltzmann terhad (Gaussian RBM, RBM spike-and-slab). Beberapa fungsi ralat disediakan: entropi silang, kemungkinan log. Tersedia kaedah berikut latihan:

Dalam pustaka Pylearn2, rangkaian saraf ditentukan menggunakan penerangannya dalam fail konfigurasi dalam format YAML. Fail YAML ialah cara yang mudah dan pantas untuk mensiri objek kerana ia direka menggunakan teknik pengaturcaraan berorientasikan objek.

Perpustakaan Obor


Torch ialah perpustakaan pengkomputeran saintifik dengan sokongan meluas untuk algoritma pembelajaran mesin. Dibangunkan oleh Institut Penyelidikan Idiap, Universiti New York dan NEC Laboratories America, sejak 2000, diedarkan di bawah lesen BSD.

Perpustakaan dilaksanakan di Lua menggunakan C dan CUDA. Bahasa skrip cepat Lua digabungkan dengan teknologi SSE, OpenMP, CUDA membenarkan Torch menunjukkan kelajuan yang baik berbanding perpustakaan lain. hidup masa ini Sistem pengendalian Linux, FreeBSD, Mac OS X disokong. Modul utama juga berfungsi pada Windows. Kebergantungan Torch termasuk imagemagick, gnuplot, nodejs, npm dan lain-lain.

Perpustakaan terdiri daripada satu set modul, setiap satu bertanggungjawab untuk pelbagai peringkat bekerja dengan rangkaian saraf. Jadi, sebagai contoh, modul nn menyediakan konfigurasi rangkaian saraf (takrif lapisan dan parameternya), modul optima mengandungi pelaksanaan pelbagai kaedah pengoptimuman yang digunakan untuk latihan, dan gnplot menyediakan keupayaan untuk menggambarkan data (membina graf, memaparkan imej, dll.). Memasang modul tambahan membolehkan anda mengembangkan fungsi perpustakaan.

Obor membolehkan anda membuat rangkaian saraf yang kompleks menggunakan mekanisme kontena. bekas ialah kelas yang menggabungkan komponen rangkaian saraf yang diisytiharkan ke dalam satu konfigurasi biasa, yang kemudiannya boleh dipindahkan ke prosedur latihan. Komponen rangkaian saraf bukan sahaja boleh disambungkan sepenuhnya atau lapisan konvolusi, tetapi juga fungsi pengaktifan atau ralat, serta bekas siap pakai. Torch membolehkan anda membuat lapisan berikut:

  • Lapisan bersambung sepenuhnya (Linear).
  • Fungsi pengaktifan: tangen hiperbolik (Tanh), pemilihan minimum (Min) atau maksimum (Max), fungsi softmax (SoftMax) dan lain-lain.
  • Lapisan konvolusi: konvolusi (Konvolusi), penipisan (SubSampling), pengumpulan spatial (MaxPooling, AveragePooling, LPPooling), normalisasi perbezaan (SubtractiveNormalization).
Fungsi ralat: Mean Square Error (MSE), CrossEntropy, dsb.

Kaedah pengoptimuman berikut boleh digunakan semasa latihan:

Mari kita lihat proses mengkonfigurasi rangkaian saraf dalam Torch. Mula-mula anda perlu mengisytiharkan bekas, kemudian menambah lapisan padanya. Susunan anda menambah lapisan adalah penting kerana... keluaran lapisan (n-1) akan menjadi input bagi lapisan ke-n.
regresi = nn.Sequential() regresi:add(nn.Linear(784,10)) regresi:add(nn.SoftMax()) loss = nn.ClassNLLCriterion()
Menggunakan dan melatih rangkaian saraf:

  1. Memuatkan data input X. Fungsi torch.load(path_to_ready_dset) membolehkan anda memuatkan set data yang telah disediakan sebelumnya dalam format teks atau binari. Biasanya, ini ialah jadual Lua yang terdiri daripada tiga medan: saiz, data dan label. Jika tiada set data sedia, anda boleh menggunakan fungsi bahasa Lua standard (contohnya, io.open(nama fail [, mod])) atau fungsi daripada pakej perpustakaan Torch (contohnya, image.loadJPG(nama fail)).
  2. Menentukan tindak balas rangkaian untuk data input X:
    Y = regresi: hadapan(X)
  3. Pengiraan fungsi ralat E = loss(Y,T), dalam kes kami ini adalah fungsi kemungkinan.
    E = kerugian:ke hadapan(Y,T)
  4. Pengiraan kecerunan mengikut algoritma perambatan belakang.
    dE_dY = kerugian:ke belakang(Y,T) regresi:ke belakang(X,dE_dY)
Sekarang mari kita susun semuanya. Untuk melatih rangkaian saraf di perpustakaan Torch, anda perlu menulis gelung latihan anda sendiri. Di dalamnya, isytiharkan fungsi khas (penutupan) yang akan mengira tindak balas rangkaian, menentukan nilai ralat dan mengira semula kecerunan, dan lulus penutupan ini kepada fungsi keturunan kecerunan untuk mengemas kini berat rangkaian.
-- Cipta pembolehubah khas: berat rangkaian saraf dan kecerunannya w, dE_dw = regresi:getParameters() local eval_E = function(w) dE_dw:zero() -- Kemas kini kecerunan setempat Y = regresi:forward(X) local E = loss : forward(Y,T) local dE_dY = loss:backward(Y,T) regresi:backward(X,dE_dY) return E, dE_dw end -- Kemudian dalam gelung latihan kita panggil optim.sgd(eval_E, w, optimState)
dengan optimState ialah parameter penurunan kecerunan (learningRate, momentum, weightDecay, dsb.). Anda boleh menonton keseluruhan kitaran latihan.

Adalah mudah untuk melihat bahawa prosedur pengisytiharan, seperti prosedur latihan, mengambil masa kurang daripada 10 baris kod, yang menunjukkan kemudahan penggunaan perpustakaan. Pada masa yang sama, perpustakaan membolehkan anda bekerja dengan rangkaian saraf pada tahap yang agak rendah.

Menyimpan dan memuatkan rangkaian terlatih dijalankan menggunakan fungsi khas:
torch.save(path, regresi) net = torch.load(path)
Setelah dimuatkan, rangkaian boleh digunakan untuk klasifikasi atau latihan tambahan. Jika anda perlu mengetahui kelas mana elemen sampel itu dimiliki, maka anda hanya perlu melintasi rangkaian dan mengira output:
hasil = bersih: hadapan (sampel)
Contoh yang lebih kompleks boleh didapati dalam bahan latihan perpustakaan.

Perpustakaan Theano


Theano ialah lanjutan daripada bahasa Python yang membolehkan anda menilai dengan cekap ungkapan matematik yang mengandungi tatasusunan berbilang dimensi. Perpustakaan itu mendapat namanya sebagai penghormatan kepada isteri ahli falsafah Yunani kuno dan ahli matematik Pythagoras - Theano (atau Theano). Theano telah dibangunkan di makmal LISA untuk menyokong perkembangan pesat algoritma pembelajaran mesin.

Pustaka dilaksanakan dalam Python dan disokong pada sistem pengendalian sistem Windows, Linux dan Mac OS. Theano termasuk pengkompil yang menterjemah ungkapan matematik yang ditulis dalam Python ke dalam kod C atau CUDA yang cekap.

Theano menyediakan set asas alat untuk mengkonfigurasi rangkaian saraf dan melatihnya. Ia adalah mungkin untuk melaksanakan multilayer sepenuhnya rangkaian yang bersambung(Perceptron Berbilang Lapisan), Rangkaian Neural Konvolusi (CNN), Rangkaian Neural Berulang (RNN), Pengekod Auto dan Mesin Boltzmann Terhad. Pelbagai fungsi pengaktifan juga disediakan, khususnya, sigmoid, fungsi softmax, cross-entropy. Semasa latihan, keturunan kecerunan kelompok (Batch SGD) digunakan.

Mari kita lihat konfigurasi rangkaian saraf di Theano. Untuk kemudahan, kami akan melaksanakan kelas LogisticRegression(), yang akan mengandungi pembolehubah - parameter boleh dilatih W, b dan fungsi untuk bekerja dengan mereka - mengira tindak balas rangkaian (y = softmax(Wx + b)) dan fungsi ralat. Kemudian, untuk melatih rangkaian saraf, kami mencipta fungsi train_model. Untuk itu, adalah perlu untuk menerangkan kaedah yang menentukan fungsi ralat, peraturan untuk mengira kecerunan, kaedah menukar berat rangkaian saraf, saiz dan lokasi sampel kumpulan mini (imej itu sendiri dan jawapannya. untuk mereka). Setelah semua parameter telah ditentukan, fungsi tersebut disusun dan dihantar ke gelung latihan.


nasi. 3. Gambar rajah kelas untuk melaksanakan rangkaian saraf dalam Theano

Pelaksanaan perisian kelas

kelas LogisticRegression(objek): def __init__(self, input, n_in, n_out): # y = W * x + b # mengisytiharkan pembolehubah, tentukan jenis, bilangan input dan output sendiri.W = theano.shared(# mulakan pemberat awal kepada nilai sifar=numpy.zeros((n_in, n_out), dtype=theano.config.floatX), name="W", borrow=True) self.b = theano.shared(value=numpy.zeros(( n_out,), dtype=theano.config.floatX), name="b", borrow=True) # tambah fungsi pengaktifan softmax, output rangkaian berubah y_pred self.p_y_given_x = T.nnet.softmax(T.dot(input, self.W) + self.b) self.y_pred = T.argmax(self.p_y_given_x, axis=1) self.params = # takrifkan fungsi ralat def negative_log_likelihood(self, y): return -T.mean(T. log(self.p_y_given_x )) # x - disuapkan ke input rangkaian # set imej (minibatch) disusun dalam baris dalam matriks x # y - respons rangkaian kepada setiap sampel x = T.matrix("x") y = T.ivector("y") # buat model regresi logistik setiap imej MNIST mempunyai saiz pengelas 28*28 = LogisticRegression(input=x, n_in=28 * 28, n_out=10) # nilai fungsi ralat yang kita ada cuba meminimumkan semasa kos latihan = classifier.negative_log_likelihood(y) # untuk mengira kecerunan, anda perlu memanggil fungsi Theano - grad g_W = T.grad(cost=cost, wrt=classifier.W) g_b = T.grad(cost =kos, wrt=pengelas.b) # tentukan peraturan untuk mengemas kini kemas kini pemberat rangkaian saraf = [(pengelas.W, pengelas.W - kadar_pembelajaran * g_W), (pengelas.b, pengelas.b - kadar_pembelajaran * g_b)] # susun fungsi latihan, pada masa hadapan ia akan dipanggil dalam gelung latihan train_model = theano.function(inputs =, outputs=cost, updates=updates, givens=( x: train_set_x, y: train_set_y ))


Untuk cepat simpan dan memuatkan parameter rangkaian saraf, anda boleh menggunakan fungsi daripada pakej cPickle:
import cPickle save_file = open("path", "wb") cPickle.dump(classifier.W.get_value(borrow=True), save_file, -1) cPickle.dump(classifier.b.get_value(borrow=True), save_file , -1) save_file.close() file = open("path") classifier.W.set_value(cPickle.load(save_file), borrow=True) classifier.b.set_value(cPickle.load(save_file), borrow=True )
Adalah mudah untuk melihat bahawa proses mencipta model dan menentukan parameternya memerlukan penulisan kod yang besar dan bising. Perpustakaan adalah tahap rendah. Adalah mustahil untuk tidak memperhatikan fleksibilitinya, serta keupayaan untuk melaksanakan dan menggunakan komponen anda sendiri. Laman web rasmi perpustakaan mempunyai sejumlah besar bahan pendidikan mengenai pelbagai topik.

Perbandingan perpustakaan menggunakan contoh tugas mengelaskan digit tulisan tangan

Infrastruktur ujian

Semasa eksperimen untuk menilai prestasi perpustakaan, infrastruktur ujian berikut telah digunakan:
  1. Ubuntu 12.04, Intel Core i5-3210M @ 2.5GHz (percubaan CPU).
  2. Ubuntu 14.04, Intel Core i5-2430M @ 2.4GHz + NVIDIA GeForce GT 540M (percubaan GPU).
  3. GCC 4.8, NVCC 6.5.

Topologi rangkaian dan parameter latihan

Eksperimen pengiraan telah dijalankan pada rangkaian neural bersambung sepenuhnya dan konvolusi struktur berikut:

Semua pemberat dimulakan secara rawak mengikut undang-undang pengedaran seragam dalam julat (−6/(n_in + n_out), 6/(n_in + n_out)), di mana n_in, n_out ialah bilangan neuron pada input dan output lapisan , masing-masing. Parameter keturunan kecerunan stokastik (SGD) dipilih untuk menjadi nilai berikut: kadar pembelajaran - 0.01, momentum - 0.9, pereputan berat - 5e-4, saiz kelompok - 128, bilangan lelaran maksimum - 150.

Keputusan eksperimen

Masa latihan rangkaian saraf yang diterangkan sebelum ini ( , ) menggunakan empat perpustakaan yang dipertimbangkan dibentangkan di bawah (

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 meletakkan persekitaran yang selesa 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 gunakan dalam buku teks dan artikel) dengan tepat bahasa sawa. 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 didedikasikan untuk salah satu yang paling topik penting 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 sedia!

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 juga diperkenalkan fungsi logik dan masalah XOR.

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.

Mari kita pertimbangkan rangkaian saraf impuls: ciri, prospek dan kelebihan, terima kasih kepada generasi ke-2 yang berjaya diganti.

Sesiapa sahaja yang mengikuti kemajuan semasa dalam analisis data telah mendengar tentang penggunaan rangkaian saraf tiruan generasi kedua dalam pembelajaran mesin. Rangkaian ini biasanya disambungkan sepenuhnya, menerima dan mengeluarkan nilai yang berubah secara berterusan. Walaupun rangkaian saraf telah membuat penemuan, ia tidak sepadan secara biologi dengan struktur neuron sebenar dan mekanisme pemprosesan maklumat dalam otak manusia.

Rangkaian saraf nadi: prinsip operasi

Rangkaian saraf spiking (SNN) lebih dekat dengan fisiologi semula jadi. Rangkaian saraf spiking merapatkan jurang antara neurosains dan pembelajaran mesin dengan menggunakan model neuron yang realistik secara biologi untuk memproses maklumat.

Rangkaian neural spiking pada asasnya berbeza daripada rangkaian neural generasi kedua yang digunakan oleh penganalisis data. Rangkaian sedemikian, bukannya menukar nilai secara berterusan dari semasa ke semasa, beroperasi dengan peristiwa diskret yang berlaku pada titik masa tertentu. Rangkaian menerima satu siri denyutan pada input dan menghasilkan denyutan pada output.


Contoh isyarat pada tiga neuron rangkaian saraf nadi

Dalam neuron sebenar, penghantaran impuls ditentukan oleh persamaan pembezaan yang sepadan dengan proses biofizikal pembentukan potensi pada membran neuron. Sebaik sahaja potensi mencapai nilai tertentu, neuron bertindak balas terhadap ini dengan menghantar impuls, dan membran memperoleh potensi asalnya.


Potensi membran neuron semasa penghantaran isyarat

Pelbagai model digunakan untuk menerangkan proses tersebut. Menukar rangkaian saraf juga berbeza daripada rangkaian generasi kedua kerana ia kurang koheren dan lebih spesifik dalam topologi.

Rangkaian Neural Spike: Jarak dan Masa

Pada pandangan pertama, pendekatan SNN mungkin kelihatan seperti satu langkah ke belakang - daripada gambar analog yang berterusan, kepada yang berdenyut, binari. Walau bagaimanapun, kelebihan SNN ialah pendekatan nadi membolehkan anda mengendalikan data, dengan mengambil kira jarak antara neuron dan tempoh perambatan isyarat, iaitu, dalam konteks ruang dan masa. Disebabkan ini, rangkaian SNN adalah lebih sesuai untuk memproses data daripada penderia sebenar.

Aspek spatial mencerminkan fakta bahawa neuron disambungkan terutamanya kepada jiran terdekat mereka, dan dengan itu serpihan input diproses secara berasingan.

Aspek masa sepadan dengan fakta bahawa impuls latihan datang bersama pelbagai kelewatan, dan maklumat yang kita "hilang" apabila bergerak dari isyarat berterusan kepada isyarat berdenyut sebenarnya disimpan dalam maklumat tentang kelewatan denyutan relatif antara satu sama lain. Ini membolehkan anda memproses data sementara secara semula jadi tanpa kerumitan tambahan. Neuron spike telah terbukti sebagai unit pengkomputeran yang lebih berkuasa daripada neuron buatan tradisional.

Masalah untuk kegunaan praktikal

Memandangkan SNN secara teorinya adalah rangkaian saraf yang lebih berkuasa daripada rangkaian generasi kedua, adalah menghairankan mengapa kita tidak melihatnya digunakan secara meluas. Masalah utama dalam penggunaan praktikal SNN ialah latihan. Walaupun terdapat kaedah pembelajaran biologi tanpa pengawasan (unsupervised), seperti Hebbian dan STDP, masih tidak diketahui. kaedah yang berkesan pembelajaran SNN yang menyediakan lebih banyak prestasi tinggi daripada rangkaian generasi kedua.

Disebabkan masalah dengan pembezaan pancang, SNN tidak boleh dilatih menggunakan keturunan kecerunan tanpa kehilangan maklumat temporal yang tepat tentang pancang. Oleh itu, untuk menggunakan SNN secara berkesan untuk masalah dunia sebenar, adalah perlu untuk membangunkan kaedah pembelajaran diselia yang sesuai. Ini adalah tugas yang sukar - memandangkan realisme biologi rangkaian ini, ia memerlukan pemahaman yang tepat tentang bagaimana otak manusia belajar.

Satu lagi, lebih dekat kepada penyelesaian, masalah terletak pada komponen perkakasan. Mensimulasikan SNN pada perkakasan standard adalah tugas yang memakan masa, kerana ia memerlukan simulasi persamaan pembezaan. Perkakasan neuromorfik, seperti IBM TrueNorth, bertujuan untuk menyelesaikan masalah ini dengan mensimulasikan neuron menggunakan perkakasan khusus yang sepadan dengan diskret dan jarang rangkaian saraf biologi.

Prospek pembangunan

Masa depan SNN masih tidak jelas. Di satu pihak, mereka adalah pengganti semula jadi rangkaian saraf moden. Sebaliknya, SNN masih jauh daripada alat praktikal untuk kebanyakan tugas. Sudah terdapat aplikasi kehidupan sebenar SNN untuk pemprosesan imej dan audio masa nyata, tetapi literatur pada aplikasi praktikal masih terhad.

Kebanyakan penerbitan mengenai SNN adalah sama ada secara teori atau menunjukkan prestasi yang tidak memuaskan untuk masalah moden. Memandangkan janji melampau bidang ini, banyak kumpulan saintifik sedang berusaha untuk menyelesaikan masalah ini.

Yandex telah memperkenalkan algoritma carian baharu berdasarkan rangkaian saraf. Menurut pakar, ini sepatutnya membantu syarikat meningkat pasaran Rusia jurang daripada pesaing utama - 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 permintaan yang jarang dan unik serta tajuk halaman web, walaupun mereka tidak mempunyai persamaan. kata kunci. 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 arah 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 untuk ini ganjaran tunai. 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 - 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 bulan April tahun ini, jabatan itu memeterai perjanjian penyelesaian dengan pesaing utama syarikat Rusia pada pasaran carian- Google. Menurutnya, gergasi Internet Amerika itu akan mempertimbangkan semula perjanjian dengan pengeluar telefon pintar Android di Rusia dan membenarkan pengguna memilih sebagai yang utama pada peranti mereka alternatif Google perkhidmatan carian.

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% di 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."