Pembelajaran Mesin dan Pengembangan Seluler

Sebagai aturan, seorang ilmuwan data memiliki gagasan samar pengembangan ponsel, dan pengembang aplikasi seluler tidak terlibat dalam pembelajaran mesin. Andrei Volodin , seorang insinyur di Prisma AI, tinggal di persimpangan dua dunia ini dan memberi tahu tuan rumah podcast Podlodka apa itu.

Memanfaatkan momen ini, Stas Tsyganov (Tutu.ru) dan Gleb Novik (Tinkoff Bank), pertama, menegaskan sekali dan untuk semua bahwa tidak ada yang melatih jaringan saraf pada perangkat mobile . Dan juga menemukan bahwa dalam pembelajaran mesin, sayangnya, tidak ada penyihir; membahas teknik-teknik modern seperti pembelajaran dalam, pembelajaran penguatan, dan jaringan kapsul.

Akibatnya, karena Podlodka adalah acara audio tentang pengembangan seluler, mereka mendatanginya dan mengetahui cara kerjanya untuk perangkat seluler.

Berikutnya adalah versi teks dari percakapan ini, dan entri podcast ada di sini .

Tentang Andrei Volodin, cocos2d dan Fiber2d


GLEB: Tolong beri tahu kami sedikit tentang diri Anda. Apa yang kamu lakukan

ANDREW: Saya adalah seorang pengembang seluler, tetapi sangat sedikit dalam pengembangan iOS klasik. Tanggung jawab saya praktis tidak termasuk bekerja dengan UIKit. Saya adalah pengembang utama mesin game Cocos2d yang cukup populer di GitHub. Saat ini, saya seorang insinyur GPU di Prisma. Tanggung jawab saya meliputi integrasi jaringan saraf pada kartu video dan bekerja dengan augmented reality, khususnya, dengan VR-kit.

GLEB: Keren! Sangat menarik tentang cocos2d. Sejauh yang saya tahu, kerangka kerja ini muncul sejak lama.

ANDREW: Ya, sekitar 2009.

GLEB: Anda menggunakannya sejak awal?

ANDREW: Tidak. Saya menjadi pengembang utama hanya pada tahun 2015. Sebelum itu, saya adalah kontributor Core. Agportable, yang mendanai pembangunan, bangkrut, orang-orang yang menerima uang untuk pembangunan pergi, dan saya menjadi pemimpin. Sekarang saya adalah administrator di forum, membantu pendatang baru dengan beberapa masalah, beberapa versi terakhir telah dirilis oleh saya. Artinya, saya adalah pemelihara utama saat ini.

GLEB: Tapi apakah cocos2d masih hidup?

ANDREW: Kemungkinan besar tidak, terutama karena fakta bahwa itu ditulis dalam Objective-C, dan ada banyak warisan. Sebagai contoh, saya mendukung beberapa mainan lama saya yang ditulis dengan penggunaannya, pengembang lain - proyek warisan saya. Mesin saat ini Anda bisa mendengar tentang Fiber2d. Ini juga proyek saya.

Fiber2d adalah mesin game Swift pertama yang porting ke Android. Kami meluncurkan game yang sepenuhnya ditulis dalam Swift di iOS dan Android. Tentang ini, juga dapat ditemukan di Github. Ini adalah tonggak berikutnya dalam pengembangan komunitas cocos2d.

Tentang pembelajaran mesin di jari


GLEB: Mari kita mulai bergerak secara bertahap menuju topik kita hari ini. Hari ini kita akan berbicara tentang pembelajaran mesin dan segala sesuatu di sekitarnya - terhubung dan tidak terhubung dengan ponsel. Pertama, mari kita cari tahu tentang apa pembelajaran mesin. Kami akan mencoba menjelaskan sebanyak mungkin dengan jari, karena tidak semua pengembang seluler terbiasa dengannya. Bisakah Anda memberi tahu kami apa itu?

ANDREW: Berdasarkan definisi klasik, pembelajaran mesin adalah pencarian pola dalam kumpulan data . Contoh klasik adalah jaringan saraf, yang sekarang sangat populer. Diantaranya ada jaringan yang berkaitan dengan klasifikasi. Contoh sederhana dari tugas klasifikasi adalah untuk menentukan apa yang ditunjukkan pada gambar: ada beberapa jenis gambar, dan kami ingin memahami apa itu: seekor anjing, kucing atau sesuatu yang lain.

Menulis ini dengan kode standar sangat sulit karena tidak jelas bagaimana melakukan ini. Oleh karena itu, model matematika digunakan, yang disebut pembelajaran mesin. Mereka didasarkan pada fakta bahwa undang-undang tertentu diekstraksi dari sejumlah besar contoh, dan kemudian, dengan menggunakan undang-undang ini, dimungkinkan untuk membuat prediksi dengan akurasi pada contoh-contoh baru yang tidak ada dalam kumpulan data asli. Singkatnya, ini singkatnya.

GLEB: Oleh karena itu, apakah belajar cerita tentang mengubah model menggunakan set data pelatihan?

ANDREW: Selama pelatihan, model, sebagai suatu peraturan, tetap konstan. Yaitu, Anda memilih beberapa jenis arsitektur dan mempelajarinya. Jika kita mengambil contoh jaringan saraf, yang tidak terbatas pada semua pembelajaran mesin, pada awalnya, secara kasar, semua bobot adalah nol atau nilai identik lainnya. Saat kami memasukkan data kami ke kerangka belajar, bobot berubah sedikit dengan setiap contoh baru, dan pada akhirnya mereka tuangkan ke dalam mesin yang terlatih.

STAS: Tujuan akhir dari model ini adalah untuk dengan cepat memberikan beberapa data bukan dari sampel pelatihan, dengan cepat mendapatkan hasilnya?

ANDREW: Ya, tapi ini bukan hanya tentang kecepatan. Sebagai contoh, beberapa tugas tidak dapat diselesaikan secara berbeda - katakanlah, contoh klasifikasi sangat tidak trivial. Sebelum jaring klasifikasi dipecat, tidak ada solusi untuk memahami apa yang ditunjukkan pada gambar. Artinya, di beberapa daerah ini adalah teknologi revolusioner langsung.

Tentang kerja manual dan pembelajaran mesin


STAS: Baru-baru ini saya memberi tahu nenek saya apa itu pembelajaran mesin. Dia awalnya berpikir bahwa pembelajaran mesin adalah ketika sebuah mesin mengajar seseorang. Saya mulai menjelaskan kepadanya bahwa pada kenyataannya, sebaliknya, kami mencoba untuk mengajarkan mesin sehingga kemudian melakukan semacam tugas.

Saya mempresentasikan masalah yang memecahkan pembelajaran mesin. Sebagian besar dari mereka, sebelum pembelajaran mesin dipecat, dilakukan oleh orang-orang. Selain itu, ini tidak dianggap sebagai pekerjaan dengan keterampilan rendah, tetapi tidak terlalu berteknologi tinggi, katakanlah begitu. Ini adalah operasi paling sederhana yang sebagian besar dapat dilakukan seseorang. Bisakah kamu bayangkan itu?

ANDREW: Itu juga bisa dikatakan. Bahkan, saat ini pekerjaan seperti itu masih diperlukan, tetapi hanya untuk menyiapkan dataset untuk pembelajaran mesin. Memang, di beberapa daerah, misalnya, dalam kedokteran, pembelajaran mesin memungkinkan untuk sedikit meratakan tugas-tugas rutin dan sedikit memudahkan prosesnya. Tapi tidak selalu. Saya tidak akan mengatakan bahwa pembelajaran mesin berfokus pada memfasilitasi pekerjaan bodoh. Terkadang ia melakukan pekerjaan intelektual yang cantik.

STAS: Bisakah Anda memberikan contoh karya intelektual seperti itu?

ANDREW: Misalnya, aplikasi Prisma kami - banyak yang mungkin menggunakannya (ini bukan iklan!) Tidak dapat dikatakan bahwa ini adalah karya intelektual dan orang-orang sering mengubah gambar menjadi gambar, dan jaringan saraf melakukannya - Anda memberikan gambar normal dan mendapatkan sesuatu yang baru . Lebih lanjut, seseorang dapat berdebat tentang apakah itu indah atau tidak, tetapi faktanya tidak dapat disangkal bahwa itu adalah sesuatu yang tidak dapat dilakukan seseorang, atau itu membutuhkan banyak waktu.

Tentang ceritanya


GLEB: Ya, saya pikir ini adalah contoh yang bagus. Mungkin layak untuk sedikit melihat ceritanya. Berapa lama topik ini dikembangkan? Tampak bagi saya bahwa hampir sejak awal pemrograman, setidaknya sangat, sangat lama sekali.

ANDREW: Ya, secara umum, sebagian besar konsep yang sekarang diterapkan telah dikembangkan pada tahun 90-an. Secara alami, algoritma baru kini telah muncul, dan kualitas dari algoritma tersebut telah meningkat. Dan meskipun ada perasaan bahwa minat yang tiba-tiba pada pembelajaran mesin muncul entah dari mana, pada kenyataannya, orang-orang telah lama tertarik dengan hal itu.

Kemajuan pada tahap awal adalah karena fakta bahwa ini sebagian besar model matematika, dan matematika telah lama distabilkan dalam hal penemuan.

Ledakan saat ini semata-mata disebabkan oleh fakta bahwa kapasitas besi di sekitar kita telah tumbuh secara signifikan , terutama karena penggunaan kartu video. Karena kenyataan bahwa hari ini kita dapat melakukan komputasi paralel yang sangat besar, teknologi baru telah muncul - pembelajaran mesin, cryptocurrency, dll.

Sebagian besar, minat saat ini dan umumnya gelombang saat ini terkait dengan fakta bahwa hal itu menjadi mungkin . Perhitungan ini bisa dilakukan lebih awal, tapi panjangnya serempak. Sekarang mereka membutuhkan waktu yang cukup masuk akal, dan semua orang mulai menggunakannya.

Tentang besi


STAS: Saat ini saya sedang mengambil kursus, dan di sana, termasuk, saya perlu melatih semua jenis model. Saya melatih beberapa dari mereka di MacBook saya yang berfungsi. Ya, dalam beberapa kasus, Anda harus menunggu, mungkin 5 menit, dan modelnya bukan yang terbaik, akurasi rata-rata sekitar 85%, tetapi yang utama adalah mereka bekerja. Jelas bahwa dalam pertempuran Anda ingin memiliki persentase ini lebih baik dan mungkin untuk produksi tidak cukup cocok.

ANDREW: Ya, model seperti itu mungkin tidak terlalu menarik. Kemungkinan besar, ini karena prediksi paling sederhana dan sebagainya. Pada kenyataannya, misalnya, sampel pelatihan dapat mencapai 90 GB, dan semua ini bisa memakan waktu seminggu untuk belajar. Perusahaan seperti Nvidia membanggakan bahwa mereka sekarang telah merilis kartu grafis Tesla khusus baru dan Anda dapat melatih Inception V3 dalam 24 jam! Ini dianggap sebagai terobosan langsung, karena sebelum itu butuh beberapa minggu.

Semakin banyak dataset dan semakin kompleks struktur model, semakin banyak waktu yang dibutuhkan untuk belajar . Tetapi kinerja bukan satu-satunya masalah. Pada prinsipnya, jika Anda benar-benar membutuhkannya, Anda bisa menunggu sebulan. Masalahnya terkait dengan kesimpulan - bagaimana menerapkan jaringan saraf ini nanti. Perlu bahwa selama penggunaannya juga menunjukkan hasil yang baik dalam hal kinerja.

STAS: Karena, khususnya, saya ingin semuanya berfungsi pada perangkat seluler dan bekerja dengan cepat.

ANDREW: Saya tidak berpikir bahwa awalnya itu mulai berkembang dengan mata untuk bekerja pada aplikasi mobile. Ledakan semacam itu dimulai di suatu tempat di tahun 2011, dan kemudian semuanya sama, ini adalah solusi desktop. Tapi sekarang minat sebenarnya dari komunitas didukung oleh fakta bahwa di iPhone, termasuk, menjadi mungkin untuk meluncurkan jaringan yang bekerja secara real time.

GLEB: Stas, Anda mengatakan bahwa hasil akhir tergantung pada seberapa kuat kartu video Anda dan secara umum sistem. Artinya, itu tidak berfungsi sebaliknya?

ANDREW: Ini tidak benar, tapi saya tidak yakin modelnya akan dilatih dengan mesin berdaya rendah.

GLEB: Ngomong-ngomong, saya ingat, 5 tahun yang lalu, ketika hanya ada booming di jaringan saraf, guru-guru kami mengatakan bahwa semua yang baru hanyalah melupakan lama yang baik. Semuanya sudah ada di tahun 70-80-an dan itu tidak akan berhasil, sejak itu tidak berhasil. Mungkin, mereka masih salah.

ANDREW: Ya. Untuk beberapa tugas, pembelajaran mesin kini telah bekerja sangat keras. Secara obyektif, mereka dapat dikatakan bekerja.

Tentang pembelajaran yang mendalam


GLEB: Ada hal yang modis - pembelajaran mendalam. Apa bedanya dengan apa yang kita bicarakan selama ini?

ANDREW: Saya tidak akan mengatakan bahwa ada perbedaan. Hanya ada beberapa himpunan pembelajaran mesin, dan ada sejumlah besar dari mereka. Anda perlu memahami bahwa apa yang disebut pembelajaran dalam adalah bagian dari pembelajaran mesin yang biasa disebut jaringan saraf . Disebut dalam karena ada banyak lapisan dalam jaringan saraf, dan semakin banyak lapisan, semakin dalam jaringan saraf. Dari sinilah muncul nama.

Tetapi ada jenis pembelajaran mesin lainnya. Sebagai contoh, pembelajaran mesin berbasis pohon telah digunakan dengan sukses untuk pelacakan wajah sejauh ini karena jauh lebih cepat daripada neuron. Ini juga digunakan untuk menentukan peringkat, menampilkan iklan, dan lainnya.

Artinya, pembelajaran mendalam bukanlah hal lain. Ini sebenarnya adalah bagian dari pembelajaran mesin yang mencakup banyak hal. Pembelajaran yang mendalam telah menjadi yang paling populer saat ini.

Tentang teori jaringan saraf


STAS: Saya ingin berbicara sedikit tentang teori jaringan saraf, saya akan mencoba lebih mudah. Anda mengatakan bahwa mereka memiliki banyak lapisan. Secara teori, jika kita memiliki satu lapisan, dan ada beberapa benda yang terletak di pesawat, dengan bantuan satu lapisan kita benar-benar dapat membagi pesawat ini menjadi dua bagian, bukan?

ANDREW: Tidak, tidak juga.

STAS: Apa yang memberi kita banyak lapisan, jika ada di jari?

ANDREW: Apa itu jaringan saraf? Mari kita luruskan. Ini hanya fungsi matematika yang mengambil satu set angka sebagai input, dan juga memberikan satu set angka sebagai output - itu saja.

Apa yang ada di dalam? Sekarang jaringan konvolusional paling populer di mana konvolusi terjadi hanyalah banyak perkalian matriks satu sama lain, hasilnya ditambahkan, operasi ini dilakukan di setiap lapisan. Plus, di antara lapisan ada aktivasi yang disebut, yang hanya memungkinkan jaringan saraf menjadi dalam.

Karena kombinasi transformasi linear adalah transformasi linear, setelah membuat 10 lapisan linier, mereka masih dapat direpresentasikan sebagai satu lapisan linier. Agar lapisan tidak runtuh, di antara mereka ada tindakan matematika tertentu yang membuat fungsi non-linear. Ini diperlukan untuk meningkatkan jumlah parameter.

Secara kasar, jaringan saraf hanyalah sejumlah besar angka, yang kemudian entah bagaimana berlaku untuk data kita, misalnya, untuk gambar. Tapi gambar - juga serangkaian angka sebenarnya - hanyalah serangkaian piksel. Ketika kita melatih jaringan, kita mempertimbangkan, misalnya, 15 juta parameter (setiap angka adalah parameter yang terpisah), yang dapat sedikit bergeser sedikit ke kiri, sedikit ke kanan dengan bantuan beberapa heuristik. Berkat sejumlah besar parameter, hasil keren seperti itu diperoleh.

Pelatihan mendalam dibutuhkan dengan tepat sehingga ada banyak parameter ini, dan semuanya tidak runtuh menjadi satu lapisan.

GLEB: Tampaknya kurang lebih jelas.

ANDREW: Pembelajaran mendalam adalah bagian dari pembelajaran mesin. Tetapi untuk beberapa alasan, hype muncul pada topik ini - terutama beberapa waktu lalu dari semua celah, saya pikir Anda bisa mendengar tentang pembelajaran yang mendalam. Saya tidak tahu apakah itu dibenarkan atau tidak.

GLEB: Saya pikir popularitas seperti itu disebabkan oleh fakta bahwa itu memberikan hasil yang mengesankan.

Tentang tugas


STAS: Dengan bantuan jaringan saraf Anda dapat memecahkan sebagian besar masalah pembelajaran mesin, bukan?

ANDREW: Ya.

STAS: Lalu mari kita bicara tentang tugas apa yang bisa diselesaikan dengan menggunakan metode pembelajaran mesin?

ANDREW: Sebenarnya, ini adalah topik sensitif, karena pada kenyataannya Anda harus berhenti menjunjung tinggi dan meromantisasi apa yang sedang terjadi. Seperti yang saya katakan, tidak ada kecerdasan buatan di sana. Ini adalah model matematika murni dan fungsi matematika yang mengalikan sesuatu, dll.

Dari samping tampaknya sekarang pembelajaran mesin telah macet sedikit pada kategori tugas tertentu. Ini, misalnya, klasifikasi (contoh yang kita bicarakan di awal), pelacakan objek dan segmentasinya. Yang terakhir adalah dalam aplikasi AI Sticky kami - ia memilih seseorang, dan latar belakang dihapus. Ada juga segmentasi medis biologis ketika, misalnya, sel-sel kanker terdeteksi. Ada jaringan generatif yang belajar dari angka acak, dan kemudian mereka dapat membuat sesuatu yang baru. Ada tugas Transfer Gaya dan lainnya.

Tetapi saat ini tidak ada platform dan infrastruktur yang nyaman untuk menggunakan pembelajaran mesin. Misalnya, Anda memiliki masalah yang Anda, sebagai pribadi, dapat dengan mudah menyelesaikannya, tetapi sebagai seorang programmer, Anda tidak dapat menyelesaikannya karena kerumitannya dan karena Anda tidak bisa hanya menulis algoritma imperatif. Tetapi pada saat yang sama, juga tidak mungkin untuk melatih jaringan saraf terutama karena ada masalah dengan kekurangan data. Untuk melatih neuron, Anda memerlukan kumpulan data besar dengan banyak contoh, selain sangat formal, dijelaskan dalam peraturan tertentu, dll. Plus, Anda perlu arsitektur jaringan saraf ini.

Artinya, pertama-tama Anda perlu memformalkan data input dalam bentuk angka , membuat arsitektur model itu sendiri, kemudian memformalkan data output dalam bentuk angka, entah bagaimana menafsirkannya. Untuk melakukan ini, Anda memerlukan alat matematika yang cukup kuat dan, secara umum, pemahaman tentang bagaimana semuanya bekerja. Oleh karena itu, sekarang bagi saya tampaknya menggunakan neuron di luar perusahaan khusus seperti kita sedikit melorot.

Beberapa tugas yang tidak diselesaikan sebelumnya, neuron belajar untuk menyelesaikan dengan sangat keren. Tetapi tidak ada hal seperti itu bahwa neuron datang dan menyelesaikan seluruh spektrum masalah yang belum terpecahkan.

GLEB: Di bidang apa Anda melihat masalah global yang jaringan sarafnya umumnya tidak cocok?

ANDREW: Sulit untuk langsung menjawab. Kita dihadapkan dengan tugas-tugas yang sedang kita kerjakan dan tidak mungkin untuk melatih jaringan saraf. Sebagai contoh, sekarang industri game sangat tertarik untuk belajar, dan bahkan ada beberapa neuron yang memiliki kecerdasan buatan. Tetapi, misalnya, ini belum digunakan dalam game AAA, karena semua sama, pada saat ini tidak mungkin untuk melatih kecerdasan buatan seorang prajurit abstrak untuk berperilaku seperti orang sehingga terlihat alami. Itu sulit.

Tentang Dota


STAS: Pernahkah Anda mendengar bahwa kecerdasan buatan sudah menang di Dota?

ANDREW: Ya, tapi masih sedikit berbeda. Dota adalah permainan yang cukup matematis, bisa dijelaskan. Saya tidak ingin menyinggung siapa pun, tetapi ini, pada kenyataannya, seperti biji - permainannya satu dan sama. Ada aturan tertentu, dan Anda hanya bermain sesuai aturan itu.

Tetapi pada saat yang sama, masih ada kesulitan untuk menciptakan semacam perilaku alami, terutama terkait dengan sejumlah kecil data dan sejumlah kecil insinyur yang dapat melakukan ini.

Misalnya, di Google, insinyur menggunakan jaringan saraf untuk melatih model manusia 3D berjalan - hanya untuk membuatnya bergerak. Itu selalu terlihat mengerikan, orang tidak berjalan seperti itu.

Tentang TensorFlow


STAS: Anda mengatakan bahwa sekarang, pada kenyataannya, tidak ada cara yang mudah dan murah untuk menyelesaikan masalah pembelajaran mesin tanpa memahami pembelajaran mesin sama sekali. Bagaimanapun, ternyata ini harus dilakukan. Saya ingin tahu tentang TensorFlow. Tampaknya Google berusaha memastikan bahwa bahkan orang yang tidak terlalu berpengalaman dalam hal ini dan yang tidak memiliki latar belakang yang sangat besar dapat menyelesaikan beberapa masalah sederhana. Katakan apa itu TensorFlow dan bagaimana menurut Anda itu mungkin?

ANDREW: Ayo beres. TensorFlow sebenarnya bukan yang termudah . Ini adalah salah satu kerangka belajar yang paling populer - kerangka belajar tujuan umum, belum tentu neuron. Ini bukan kerangka kerja tingkat tertinggi yang tersedia. Ada, misalnya, Keras, yang merupakan abstraksi tingkat tinggi di TensorFlow. Di sana Anda dapat melakukan hal yang sama dengan kode yang jauh lebih sedikit.

Tugas-tugas khas diselesaikan dengan cukup sederhana, karena, khususnya, Github sudah penuh dengan contoh dan repositori. Katakanlah, jika perusahaan Anda melakukan pencarian gambar untuk toko buku, maka, pada prinsipnya, semuanya baik-baik saja dengan Anda. Anda pergi ke Github, ada contoh bagaimana Anda dapat mengambil fitur gambar, Anda menulis pencarian fitur - selesai!

Faktanya, ini adalah kasus dengan sejumlah besar tugas. , . - , , , , , , TensorFlow β€” . , .

: , Google , ?

: , , , . , , , . , , .



: , . ? -, .

: . β€” Β« , , Β». , .

: , , , , . ? , , 15 - iOS , - . , . , .

: β€” , , - . β€” β€” . . , , R&D , : Β«, !Β» β€” - , , , 0,5%: Β«, , !Β» . , .

: , , - , , . ? . , β€” , 70%. , , . , . , , .

: , , , . , . , - , . .

: , .



: , . .



: , ? , , , β€” ?

: , , . , .

-, , . , computer science. , .

. , 500 Python, . . . , . , , .

, . - , . , .

: , Python - , , C++? , .

: , . - learning , , TensorFlow, TensorFlow. ,

β€” , TensorFlow. TensorFlow β€” 1 β€” , , .

. , iOS . , learning , , Caffe, Torch, TensorFlow ., .

, , , . R&D - , . . () : Β« !Β» β€” , . C++.

:

  • , . , .
  • .



: . , , .

: , ? , ?

: , . , β€” . : , , : Β«, , β€” Β», - . , , -, - . , . .

. , , , .

: Google , Google Street Maps. , .

: , - .

Data Scientist


: . , β€” , , ?

: , .

: , , , , data scientist'. , - . . , , . β€” !

, . , -, . .

: hype train.

: , , data scientist . , .

: , . - data scientist'?

: . , . , , , Git- . Data scientist - , . , code review, unit- β€” . , .

: , , .

: , , - , , Kaffe 2, PyTorch β€” ! : Β« Data scientist TensorFlowΒ».

GPU-


. , , , Swift, UI-kit, . , , .

, - , . , . , , . enterprise.

- , , , . , , . , .

: , . GPU - . , β€” . , Junior GPU . , , .



: β€” .

: , ?

: , , - .

: β€” ?

: , , -, - .

: , ?

: . , , , , . Macbook Air. β€” - , , .

, Nvidia Titan , . , .



: ? , Nvidia , . , , . ?

: print , . NIPS, , , . , , . - , β€” , .

. ONNX , . . , . , , . , - , . .



: , . , , , ?

: , . , . , . , β€” , ..

, . , . β€” , , . . , , . , , .

reinforcement training


: . , , , , AlphaGo. , , , reinforcement training.

: Reinforcement training β€” . , . , , , . , , . , . Reinforcement training , , , , : Β« !Β»

, AlphaGo β€” , . , . , , . , . AlphaGo , reinforcement training, , .

, , , , .

: , 10 170 β€” . , AlphaGo . , . , , , . β€” , - !

, , , . , , . , !



STAS: Saya ingin bertanya tentang algoritma genetika. Menurut deskripsi, tampaknya algoritma genetika juga dapat dikaitkan dengan pembelajaran penguatan. Seperti yang saya bayangkan, ada satu generasi, kami mengambil setiap subjek individu dalam satu generasi, ia melakukan beberapa tugas, kami mengevaluasi tindakannya, dan kemudian, berdasarkan perkiraan ini, kami memilih yang terbaik. Lalu kami kawin campur sifat spesifik mereka, membuat generasi baru, menambahkan sedikit mutasi, dan sekarang kami memiliki generasi baru. Dan kami mengulangi operasi ini, mencoba meningkatkan utilitas akhir dari setiap anggota spesifik generasi ini. Ini sepertinya masuk akal. Apakah ini dianggap pelatihan penguatan?

ANDREW: Tidak, algoritma genetika masih agak berbeda.

STAS: Apakah mereka berhubungan dengan pembelajaran mesin?

ANDREW: Saya tidak akan mengatakan itu. Saya tidak akan menerimanya sekarang, tetapi kami melewati algoritma genetika di universitas, seperti semua orang, dan bagi saya tampaknya hal ini agak lebih sederhana dan lebih tidak diatur atau semacamnya - singkatnya, penting. Yaitu, diketahui sebelumnya bahwa apa yang akan diinput, akan seperti output. Dalam pembelajaran mesin, bagaimanapun, hal-hal agak berbeda - ada beberapa kemungkinan, keakuratan prediksi dan semua dalam semangat itu.

Mungkin saya akan dikoreksi oleh orang-orang yang memahami terminologi lebih baik daripada saya, tetapi dari atas kepala saya, saya akan mengatakan tidak.

STAS: Ternyata algoritma genetika tidak digunakan untuk menyelesaikan sebagian besar masalah nyata?

ANDREW: Ya, sebagian besar lebih algoritmik dan dalam praktiknya saya jarang bertemu dengan mereka.

Tentang jaringan kapsul


GLEB: Ada subset lain dari pembelajaran mesin - jaringan kapsul yang disebut. Sekali lagi, jangan terlalu mendalam. Singkatnya, beri tahu saya apa itu dan mengapa ada tren ini sekarang?

ANDREW: Ini adalah topik yang sangat super baru, baru berumur beberapa bulan. Jeffrey Hinton merilis sebuah artikel dan mengatakan bahwa jaringan konvolusional saat ini adalah jalan ke mana-mana, dan kami menawarkan visi baru tentang bagaimana ini akan berkembang. Masyarakat menerima pernyataan ini secara ambigu dan terbagi menjadi dua kubu: beberapa mengatakan bahwa ini berlebihan, yang lain - hal besar dan semua itu.

Tetapi jika Anda menjelaskan dengan tepat, bagaimana cara kerja jaringan konvolusi? Ambil, misalnya, neuron yang bekerja dengan gambar. Ada konvolusi - kolom matriks yang mengalir melalui gambar dengan beberapa langkah, seolah-olah memindai itu. Pada setiap iterasi dari langkah seperti itu, semua lilitan ini diterapkan pada bagian ini, dan setiap lilitan berubah menjadi piksel bersyarat baru, tetapi dengan dimensi yang jauh lebih besar, operasi ini diulang untuk semua kisi.

Tetapi masalah dengan jaringan konvolusional adalah bahwa semua data yang sampai pada lapisan pertama mencapai akhir - mungkin tidak secara penuh, tetapi semuanya mempengaruhi dan semua mencapai tahap akhir. Secara kasar, jika Anda perlu menentukan beberapa bagian dari gambar, misalnya, satu kucing, Anda tidak perlu memindai seluruh gambar. Cukup pada titik tertentu untuk melokalisasi zona di mana kucing kemungkinan besar berada, dan hanya mempertimbangkannya, seperti halnya manusia.

Ini adalah cara kerja jaringan kapsul. Saya tidak akan berusaha menjelaskan bagian dalam mereka secara ahli, tetapi dari apa yang saya pahami: ada pohon-pohon tertentu di dalam jaringan kapsul, dan setiap kapsul berikutnya hanya menerima data yang relevan untuk input. Artinya, melalui mereka tidak lulus semua-semua-semua yang awalnya kami terima untuk masuk, dan dengan setiap layer baru (saya tidak tahu bagaimana hal itu dapat dikatakan dalam terminologi jaringan kapsuler) hanya data yang benar-benar dibutuhkan diproses - hanya data penting . Ini adalah perbedaan utama antara jaringan konvolusional dan kapsuler.

GLEB: Kedengarannya menarik, tapi saya tidak mengerti - apakah hanya tentang gambar yang dimaksud?

ANDREW: Tidak, itu saja. Saya menggunakan gambar hanya untuk menjelaskan. Ide kuncinya adalah ini: jangan mengarahkan semua data dan semua fitur, tetapi hanya yang relevan dengan lapisan berikutnya.

Lebih banyak tentang game


STAS: Kudengar bahwa setelah AlphaGo orang akan mengalahkan semua orang di StarCraft?

ANDREW: Dipaksa mengecewakan Anda, tetapi saya tidak benar-benar mengikuti ini. Bukannya eSports menarik bagi saya, tetapi sudah menjadi jelas tentang masa depan. Misalnya, sudah ada startup yang dilatih untuk memainkan Dota. Mereka, sebagai pelatih pribadi, menganalisis cara Anda bermain, dan mengatakan di mana Anda tidak cukup baik, mereka memiliki data mereka sendiri yang terlatih dalam pertandingan e-sports. Ada startup untuk bertaruh yang memprediksi siapa yang akan menang, dan banyak lagi.

Banyak orang bekerja di bidang ini sekarang, terutama karena banyak uang berputar di dalamnya. Namun secara pribadi, itu sama sekali tidak menarik bagi saya, jadi saya tidak mengikuti berita dan tren, sayangnya.

STAS: Menurut Anda apa kesulitan menciptakan kecerdasan buatan yang bagus khusus untuk game-game strategis? Apakah saya mengerti benar bahwa pada dasarnya ini adalah sejumlah besar opsi?

ANDREW: Ya. Sebenarnya, kita sudah membahas hal ini ketika saya menjelaskan bahwa kecerdasan buatan masih tidak digunakan dalam game AAA, tetapi pada saat yang sama itu di AlphaGo dan, mungkin, di tempat lain.

Permainan go dengan semua kompleksitasnya terdiri dari kenyataan bahwa pada setiap langkah Anda cukup meletakkan chip untuk menguraikan batu, dan permainan StarCraft adalah hal yang sangat kompleks. Di sana Anda dapat mengirim unit Anda sepanjang jumlah lintasan yang hampir tak terbatas, membangun set konstruksi yang berbeda, dll. Semua ini adalah parameter.

Ditambah lagi kesulitannya terletak pada kenyataan bahwa jaringan saraf tidak selalu berpikir seperti seseorang. Ketika kita, misalnya, membangun sebuah unit, kita ingat ini. Tetapi banyak neuron yang berjalan setiap saat. Tentu saja, ada jaringan rekursif yang dapat mengingat pencapaian masa lalu mereka. Mereka, khususnya, digunakan untuk terjemahan dan informasi tekstual, ketika ketika kalimat dihasilkan, neuron menggunakan semakin banyak data.

Ada kesulitan besar dengan kenyataan bahwa seluruh jumlah informasi dan opsi perlu diformalkan, yaitu, untuk menemukan dataset untuk pelatihan sehingga entah bagaimana masih cukup menanggapi tindakan lawan Anda, yang juga bisa satu juta, tidak seperti bermain game. atau catur.

STAS: Saya mengerti - ada banyak parameter.

GLEB: Tapi saya tidak mengerti apa, jelas bahwa DotA memiliki lebih sedikit parameter, tetapi masih hampir sama dalam arti bahwa itu dikirim ke mana saja, dll.

STAS: Di sini Andrei mengurangi fakta bahwa, pertama, Anda memiliki satu unit dan jumlah opsi jauh lebih kecil.

ANDREW: Sejujurnya, saya belum pernah memainkan Dota kedua dalam hidup saya, tetapi dalam aslinya, sejauh yang saya tahu, ini adalah permainan yang sangat deterministik. Ada 3 koridor dan menara yang perlu dihancurkan.

GLEB: Ya, tetapi di StarCraft, meskipun saya tidak bermain sama sekali, ada juga beberapa cara dan unit yang sama. Anda mengatakan bahwa ada banyak dari mereka, tetapi kemungkinan besar mereka selalu didorong dalam batch. Artinya, kira-kira hal yang sama ternyata.

STAS: Anda masih perlu mengatur setiap unit secara terpisah dengan benar selama pertempuran. Saat ini tidak diambil dalam kemasan, tetapi mulai diatur, segera ada lebih banyak parameter.

ANDREW: Masalah Anda adalah Anda berpikir dalam kategori-kategori ini: letakkan sebuah unit, dll., Tetapi sepanjang waktu Anda lupa bahwa neuron hanyalah sebuah matriks - angka yang berlipat ganda. Di sana Anda harus memformalkan, misalnya, hal-hal seperti tugas. Katakanlah ada peta untuk StarCraft dan ada beberapa tugas di atasnya - tidak masalah jika Anda mengalahkan pemain atau sesuatu yang lain. Semua ini perlu disajikan dalam bentuk primitif matematika, dan ini justru yang paling sulit.

Jika itu benar-benar kecerdasan buatan, jarak antara Dota dan StarCraft akan menjadi minimal. StarCraft mungkin sedikit lebih rumit dalam mekanika, tetapi masih hampir sama. Tetapi karena kami beroperasi dengan angka, lebih sulit untuk diformalkan.

Tentang jaringan pembelajaran bersama


STAS: Saya punya pertanyaan terakhir yang ingin saya tanyakan sebelum kita pergi ke ponsel kita. Saya tidak tahu bagaimana itu disebut dengan benar, tetapi ada cara ketika satu jaringan saraf pada dasarnya mengikuti yang lain dan mencoba untuk menemukan pola.

ANDREW: Saya tidak akan berusaha menjelaskan sekarang cara kerjanya, tetapi saya tahu pasti bahwa ada algoritma yang sangat keren yang kadang-kadang saya dengar di tempat kerja ketika dua jaringan saraf belajar dengan mengorbankan satu sama lain. Bidang keahlian ini sudah sepenuhnya tidak dapat saya akses, tetapi semuanya terdengar keren. Sejauh yang saya tahu, ini digunakan untuk jaringan generatif. Sayangnya, saya tidak bisa mengatakan lebih banyak.

STAS: Bagus. Anda memberi kata kunci yang paling penting, selebihnya adalah Gleb dan pembaca akan dengan mudah mencari.

Tentang ponsel (Apple)


GLEB: Mari kita beralih ke ponsel yang sudah lama kita kunjungi. Pertama-tama, apa yang bisa kita lakukan ketika kita berbicara tentang pembelajaran mesin pada perangkat seluler?

ANDREW: Omong-omong, apakah Anda memiliki podcast untuk pengembang iOS?

GLEB: Kami bukan podcast iOS. Ya, Stas?

STAS: Ya, untuk pengembang seluler. Mengapa pertanyaan?

ANDREW: Hanya karena situasinya sangat berbeda. Apple, berdasarkan fakta bahwa ia selalu pandai mengintegrasikan perangkat lunak dan perangkat keras, dan terkenal karenanya, sangat terhubung dengan elegan di kereta api yang terlatih dengan mesin.

Pada 2014, Apple memperkenalkan API grafis Logam. Hal-hal dijahit ke dalamnya, misalnya, shader komputer, dll. Semua ini diizinkan dengan munculnya iOS 10 untuk dimasukkan dalam kerangka Shaders Kinerja Logam banyak lapisan, aktivasi dan operator lain dari jaringan saraf, khususnya, jaringan saraf convolutional.

Itu hanya memberi dorongan besar, karena, sebagai aturan, perhitungan pada kartu video jauh lebih cepat daripada pada prosesor sentral. Ketika Apple diberi kesempatan untuk membaca di kartu video seluler, dan dengan cepat, tidak perlu menulis operator matematika mereka sendiri dan seterusnya. Tembakannya langsung sangat keras. Dan setahun kemudian mereka merilis CoreML (kami akan membicarakannya nanti).

Apple memiliki fondasi yang sangat baik. Saya tidak tahu apakah mereka memiliki visi seperti itu, atau lebih tepatnya bertepatan, tetapi mereka sekarang menjadi pemimpin yang obyektif dalam industri pembelajaran mesin pada perangkat seluler.

Tentang ponsel (Android)


Apa yang berfungsi relatif keren dan hebat dalam waktu nyata di iOS, sayangnya, tidak berfungsi sama kerennya di Android. Hal ini disebabkan bukan hanya karena fakta bahwa Android payah. Ada faktor lain - pertama-tama, fakta bahwa Android memiliki infrastruktur yang sangat beragam: ada perangkat yang lemah, ada yang kuat - Anda tidak bisa mendapatkan semuanya.

Jika Metal didukung pada semua perangkat iOS, maka pada Android itu sudah lebih rumit - suatu tempat OpenGL didukung dalam satu versi, di tempat lain, di suatu tempat itu tidak didukung sama sekali. Di suatu tempat ada Vulkan, di suatu tempat tidak. Semua pabrikan memiliki driver sendiri, yang tentu saja tidak dioptimalkan dengan cara apa pun, tetapi hanya mendukung standar secara minimal. Bahkan terjadi bahwa Anda menjalankan beberapa jaringan saraf pada Android pada GPU, dan mereka bekerja dengan kecepatan yang sama seperti pada CPU, karena bekerja dengan memori bersama sangat tidak efisien dan sebagainya.

Di Android, semuanya buruk sekarang. Ini agak mengejutkan, karena Google adalah salah satu pemimpin, tetapi sedikit kendur dalam hal ini. Di Android, jelas tidak ada implementasi kualitas tinggi dari kemampuan pembelajaran mesin modern.

Bagi kami, misalnya, bahkan dalam aplikasi, tidak semua fitur bekerja dengan cara yang sama. Apa yang bekerja cepat di iOS lebih lambat di Android, bahkan pada perangkat unggulan dengan kekuatan yang sebanding. Dalam hal ini, saat ini, Android sebagai platform sedang melorot.

Tentang CoreML


STAS: Karena mereka mengatakan tentang CoreML, mungkin akan benar untuk mengatakan tentang TensorFlow Lite.

ANDREW: CoreML sebenarnya adalah kuda hitam. Ketika dia keluar tahun lalu, semua orang pertama kali berkata, "Wow, keren!" Tapi kemudian menjadi jelas bahwa ini hanyalah pembungkus kecil di atas Logam. Perusahaan yang serius terlibat dalam pembelajaran mesin, termasuk kami, telah lama memiliki solusi sendiri. Misalnya, solusi pengujian kami menunjukkan hasil yang lebih baik daripada CoreML dalam hal kecepatan dan parameter lainnya.

Tetapi masalah utama dengan CoreML adalah bahwa hal itu tidak dapat dikustomisasi. Kadang-kadang terjadi bahwa Anda memerlukan lapisan kompleks dalam jaringan saraf, yang bukan, misalnya, dalam Logam, dan Anda perlu menulis sendiri. Di CoreML, itu tidak mungkin untuk menyematkan lapisan Anda, jadi Anda harus melakukan downgrade ke Logam ke tingkat yang lebih rendah dan menulis semuanya sendiri.

Baru-baru ini, CoreML menambahkan ini, dan sekarang kerangka kerja ini menjadi lebih menarik. Jika Anda seorang pengembang yang tidak memiliki apa pun yang terkait dengan pembelajaran mesin sama sekali di perusahaan atau dalam aplikasi, Anda dapat menjalankan beberapa neuron langsung dalam dua baris dan menjalankannya dengan cepat di GPU. Hasilnya, yang menunjukkan tes kinerja untuk CoreML, dapat dibandingkan dengan solusi khusus dan Logam kosong.

Yaitu, CoreML bekerja dengan cukup baik. Agak lembab, ada bug, tapi setiap bulan kondisinya membaik. Apple secara aktif meluncurkan pembaruan - bukan seperti yang biasa kita lakukan, bahwa pembaruan dari kerangka kerja Apple dirilis setahun sekali atau pada versi semi-mayor iOS. CoreML sedang diperbarui secara aktif, dalam hal ini, semuanya hebat.

TensorFlow Lite menyediakan konverter di CoreML, CatBoost juga mendukung konverter di CoreML. Singkatnya, Apple melakukan semuanya dengan benar lagi. Mereka merilis konverter open source dan berkata: "Mari kita menulis semua konverter di CoreML" - dan banyak kerangka kerja pembelajaran mendukung ini.

Pada awalnya ada beberapa keraguan tentang CoreML, pada WWDC terakhir pertanyaan paling umum untuk pengembang CoreML adalah: β€œMengapa Anda tidak mengizinkan mengunduh model dari Internet? Mengapa Anda tidak membiarkan mereka mengenkripsi? " Dimungkinkan untuk mendapatkan model-model ini, dan, ternyata, mencuri kekayaan intelektual.

Sekarang semuanya telah diperbaiki, menambah fungsionalitas, dan saat ini, CoreML jelas merupakan platform terdepan dalam hal ini.

STAS: Bisakah Anda membicarakan hal ini secara lebih rinci? Ternyata sekarang Anda tidak bisa lagi menyimpan model, tetapi hanya memuatnya dari suatu tempat?

ANDREW: Ya, itu sudah mungkin. Sebelumnya, ketika kami bertanya tentang ini, para pengembang tersenyum dan berkata: "Lihat saja tajuknya." Benar-benar ada desainer yang dapat mentransfer file ke dan semuanya akan datang bersama.

Tetapi model CoreML di dalamnya cukup menarik. Mereka sebenarnya binari biasa yang menyimpan bobot, tetapi ditambah mereka dihasilkan file cepat, yang kemudian membuat kelas implisit. Anda menggunakan kelas-kelas ini dalam aplikasi Anda, dan kompiler mengkompilasi model ini ke beberapa file.

Sekarang, dengan menggunakan peretasan dan pendekatan tertentu, dimungkinkan untuk membuat model ini portabel. Anda dapat melindungi kekayaan intelektual Anda dengan enkripsi, dan meringankan bobot aplikasi.

Secara umum, CoreML sekarang bergerak ke arah yang benar. Tidak semuanya dapat dilakukan secara legal dari sudut pandang App Review, tidak semuanya dapat dilakukan dengan mudah, tanpa peretasan, tetapi terlihat bagaimana pengembang meningkatkan kerangka kerja.

STAS: Keren! Saya ingin menambahkan bahwa CoreML terlihat seperti solusi khas. Secara relatif, itu nyaman ketika Anda ingin melakukan sesuatu yang sederhana menggunakan pembelajaran mesin dalam aplikasi Anda. Tampaknya jika ini adalah tugas yang khas, maka Apple mencoba membuat seluruh rute ini sesederhana mungkin, jika Anda menemukan model yang siap pakai, dataset dan banyak lagi. Ini hanya cerita tentang masalah biasa, karena bagi mereka, mungkin, semuanya sudah siap.

ANDREW: Untuk tugas-tugas tipikal, ini umumnya super! Tanpa hiperbola - benar-benar membutuhkan dua baris kode untuk menjalankan model. Dalam hal ini, ya, ini sangat keren, terutama untuk pengembang atau perusahaan indie yang tidak memiliki departemen R&D pada staf, tetapi juga ingin menambahkan sesuatu yang keren.

Tapi ini tidak begitu menarik, karena tugas-tugas tipikal diselesaikan pada Github dan dengan Metal - Anda bisa menyalin kode ini ke diri Anda sendiri dan meletakkannya di pertanian - meskipun sedikit lebih rumit.

Adalah penting bahwa sekarang kerangka kerja ini bergerak tidak hanya menuju tugas sehari-hari klasik, tetapi juga menuju solusi terintegrasi. Ini sangat keren!

Tentang pelatihan di ponsel


GLEB: Anda mengatakan bahwa setelah munculnya Metal menjadi mungkin untuk melatih model pada ponsel?

ANDREW: Tidak, pelatihan tentang ponsel tidak pernah mungkin. Itu tidak masuk akal, Anda hanya bisa menjalankannya. Jika saya berkata demikian, saya membuat reservasi. Di ponsel, tentu saja, tidak ada yang mengajarkan apa pun.

STAS: Saya juga tidak mendengar apa pun tentang pelatihan di ponsel.

GLEB: Saya juga tidak mendengar, tetapi saya memikirkannya. Tentu saja, tampaknya secara intuitif bahwa ini adalah hal yang aneh. Tetapi jelas tidak ada tugas yang menarik, kapan ini akan relevan?

ANDREW: Sulit membayangkan mereka. Jika ada sesuatu seperti itu, maka hanya pembelajaran yang didistribusikan. Bahkan ada artikel ilmiah tentang bagaimana melakukan ini, tetapi seperti yang saya pahami, Anda bertanya bagaimana belajar dari data yang dikumpulkan pada ponsel yang sama? Hanya saja meskipun Anda mengumpulkan begitu banyak (yang tidak akan terjadi), akan butuh waktu lama untuk mengetahui bahwa itu tidak akan pernah berakhir, dan tidak ada yang akan mem-porting kode pelatihan ke platform seluler, karena mengapa? Pelatihan selalu terjadi di server, dan inferensi pada perangkat.

STAS: Tapi pada akhirnya ternyata seperti ini. Jika Anda adalah perusahaan, Anda ingin memiliki sesuatu seperti itu, Anda memerlukan data, dan Anda dapat mengumpulkannya dari pengguna Anda, yaitu, memuatnya sendiri secara berkala.

ANDREW: Ya, tetapi kerjanya sedikit berbeda. Anda mengumpulkan data dari semua pengguna di satu tempat ke server panas Anda, Anda berlatih di sana, lalu mengirim model yang sudah selesai kembali. Tetapi tidak semua orang di rumah mengajarkan sesuatu.

STAS: Di sisi lain, ponsel akan menjadi hangat - dan di musim dingin itu akan relevan, tetapi untuk waktu yang sangat, mungkin, lama.

Tentang ponsel dan masa depan


GLEB: Apakah ada hal menarik lainnya dalam hal menerapkan pembelajaran mesin pada perangkat seluler? Kami berbicara tentang apa yang sudah kami miliki sekarang. Akan menarik untuk melihat sedikit ke masa depan - sehingga kita umumnya ingin menerima pada platform mobile kita untuk beberapa superfoods, super-solusi.

: , , performance β€” , , . , - , .

. , style- , . .

CoreML . , , . , , : , , β€” , Android, iOS, . , , iOS Android.

, , , , β€” Android, iOS, Github . - β€” Uber , Horovod. Apple β€” , . , , , , β€” .

, . , , , β€” , , - . , .



: , , ? , , ? .

: , β€” (M. Bishop. Pattern Recognition and Machine Learning. Christopher. Springer. 2006), - . , , 3D , , - . . , β€” , β€” .

, , , . , -, , Andrew Ng Coursera. , .

, , , β€” MNIST. Hello World, .

, , , , - , . - , , , .

: ?

: advanced- Andrew Ng! , , Kaggle, , . , , β€” Data Scientist.

β€” , , , . , β€” R&D . , . . , , .

. , Kaggle, - β€” 90% .

Ringkasan


: . , , , , .

  • , β€” . , , β€” .
  • .
  • .
  • - .
  • , , , .
  • , . , , , - - !
  • β€” , , CoreML β€” , .

, .

, AppsConf 2018 , 8 9 .

80 , Call for Papers β€” 3 . , , .

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


All Articles