"Harika bir veri bilimci, ortalama bir şirketin CEO'su gibi maaş alıyor." Verilerin geleceği nasıl tahmin ettiğini ve dünyayı nasıl şekillendirdiğini anlatan Yandex.Taxi'deki makine öğrenimi uzmanı

FIVT'de olağandışı bir konunun başlamasının üzerinden neredeyse bir yıl geçti - inovasyon atölyesi. Özü, deneyimli mentorların rehberliğinde öğrenci ekipleri tarafından BT girişimlerinin yaratılmasıdır. İyi sonuçlandı: Kurs sayesinde biri yazın bir kısmını Cream Valley'de geçirdi, biri projenin geliştirilmesi için 800.000 ruble tutarında hibe aldı ve ABBYY projeyi birinden tamamen satın almaya hazır. Ve bu çalıştayın tüm sonuçları değil!

2011'in başında FIVT'nin üçüncü sınıf öğrencileri Toplantı Salonunda toplandılar ve onlara şunu söylediler: Gelecek yıl kendi girişiminizi yaratmanız gerekecek. Öğrenciler bu fikri belirsiz bir şekilde kabul etmediler: Bunun nasıl yapılacağı hiç belli değildi ve sorumluluk olağandışıydı - sonuçta, sadece başka bir eğitim projesi değil, teknolojik bir iş yaratmak gerekliydi. İşte kazananın bu konuda ne düşündüğü öğrenci olimpiyatı Fizikte MIPT, Yandeska bölümü öğrencisi Viktor Kantor:

Başvuru sırasında FIVT'yi seçtiğimde benzer bir şeye sahip olacağımızı umuyordum. O yüzden umutlarımın boşa çıkmamasına sevindim. Yıl boyunca kursun hala şekillendiği, pek çok şeyin yeni olduğu, pek çok konunun sadece öğrenciler için değil, organizatörler için de tartışmalı hale geldiği hissedildi, ancak genel olarak eğilimlerin olumlu olduğunu düşünüyorum. Bu kursu beğendim.

Öğrencilerin çalışmalarını kolaylaştırmak için çeşitli küratörler yenilikçi işletmeler kurmaya yönelik fikirlerini sunmaya davet edildi. Bunların arasında tamamen farklı insanlar vardı: MIPT'nin lisans ve yüksek lisans öğrencilerinden Ernst&Young inovasyon danışmanı Yuri Pavlovich Ammosov'a (kendisi tüm kursun lideriydi) ve rejeneratif tıp ve yaşam uzatma konularıyla ilgilenen Mikhail Batin'e kadar. Sonuç olarak fizik ve teknoloji öğrencileri kendilerine en ilginç gelen fikirleri seçtiler, küratörler ekiplere katıldı ve zorlu ama heyecan verici çalışmalar başladı.

O zamandan bu yana geçen neredeyse bir yıl içinde adamlar birçok sorunla karşılaştı ve bunların bir kısmı çözüldü. Artık sonuçlarını değerlendirebiliriz - zorluklara rağmen adamlar başa çıktı. MIPT öğrencileri (Felsefe Fakültesi'nin yanı sıra, Filoloji Fakültesi ve diğer fakültelerden de bazı öğrenciler sürece katıldı) oldukça ilginç ve uygulanabilir birkaç proje hazırlamayı başardılar:

Askeroid (eski adıyla Ask Droid) – akıllı telefonları arayın ( Anastasia Uryaşeva)

Çok sayıda arama motorunda rahatlıkla arama yapmanızı sağlayan bir Android uygulaması. Bazı uzmanlar bu gelişmeye ilgi gösterdi ve bunun sonucunda Anastasia geçen yazın tamamını Silikon Vadisi'nin en ünlü kuluçka merkezlerinden biri olan Tak&Çalıştır'da geçirdi. Teknoloji girişimciliğinin temellerini öğrenmek ve uluslararası girişim uzmanlarıyla konuşmak.

1dakika.ru – sonsuza dek bir dakika (Lev Grunin)

Bu proje herkese basit, hızlı ve tamamen ücretsiz olarak hayır işi yapma fırsatı veriyor. Model basittir: reklamverenler sitede belirli bir dizi etkinlik sunar, kullanıcılar bunlara gönüllü olarak katılır ve reklamlardan elde edilen tüm para bir hayır kurumuna aktarılır. Proje, lansmanından sonraki bir hafta içinde 6.500'den fazla kullanıcıyı bir araya getirdi ve burada durmayacak. Sonuç olarak Lev ve ekibi sayesinde yetimhanelerdeki 600 çocuğa yardım sağlanacak. Yılbaşı Noel Baba'dan değerli hediyeler. Zaten bir dakikanızı bir iyilik için harcadınız mı?

Gömülü Masaüstü - telefonunuzdaki bir bilgisayar (Alexey Vukolov)

Bir bilgisayarın yeteneklerini ve bir telefonun mobilitesini tek bir pakette birleştirmenize olanak tanıyan bir uygulama - genellikle iş gezilerinde seyahat eden meşgul insanlar için son derece yararlı bir ürün. Bunu bir akıllı telefona yüklemek yeterlidir ve kullanıcı herhangi bir otelde, ofiste ve aslında bir monitör (TV de uygundur), bir klavye ve bir bilgisayar bulabileceği herhangi bir yerde kendi bilgisayarını "alabilecektir". fare. Proje, fikrin geliştirilmesi için hibe aldı ve Technovation Cup sergisinde sunuldu ve alınan parayla ekip halihazırda aktif olarak ekipman satın alıyor. Amerikalı işlemci üreticisi MIPS, geliştirmeyle son derece ilgileniyor.

Smart Tagger – belgelerde anlamsal arama (Victor Kantor)

Posta kutunuzun bir yerinde Big Bang Theory'nin son bölümünden bahseden çok önemli bir mektubun olduğunu hatırlıyorsanız ancak hiçbirini hatırlamıyorsanız ne yapmalısınız? anahtar kelimeler metinden? Yandex ve Google arama güçsüzdür. Smart Tagger'ın geliştirilmesi kurtarmaya gelecek - anlamsal aramayı kullanan "akıllı" bir program, anlamı popüler TV dizileriyle iç içe olan tüm metinleri size verecektir. Proje U.M.N.I.K. yarışmasında hibe kazandı. toplam 400.000 ruble!

MathOcr – formül tanıma (Viktor Prun)

ABBYY, uygulama için ilginç bir görev önerdi: her karmaşıklıktaki matematiksel formülleri tanıyan bir program oluşturmak. İlgili öğrencilerle işbirliği yapan FIVT öğrencileri görevi tamamladılar; modül aslında matematik veya fizik ders kitaplarından taranan formülleri tanıyor. Sonuç: ABBYY bu ürünü büyük para karşılığında satın almaya hazır.

- Makine öğreniminin nasıl çalıştığını bize anlatmak için tamamen ilkel bir örnek kullanabilir misiniz?

Olabilmek. En eski şeylerden biri olan Karar Ağacı adı verilen bir makine öğrenme tekniği örneği var. Haydi şimdi yapalım. Diyelim ki soyut bir kişi size çıkma teklif ediyor. Senin için önemli olan ne?

- Öncelikle onu tanısam da tanımasam da...

(Victor bunu tahtaya yazar.)

...Bilmiyorsam çekici olup olmadığı sorusuna cevap vermem gerekiyor.

Ve eğer biliyorsan, o zaman bunun bir önemi yok mu? Sanırım anladım, burası arkadaş bölgesi konusu! Genel olarak yazıyorum, eğer bilmiyorsanız ve çekici değilse, o zaman cevap "hayır, muhtemelen" olur. Biliyorsanız cevap “evet”tir.

- Eğer biliyorsam bu da önemli!

Hayır, burası bir arkadaş bölgesi şubesi olacak.

Tamam o zaman ilginç olup olmadığını burada belirtelim. Yine de bir kişiyi tanımadığınızda ilk tepki bir tanıdıkla birlikte görünmek olur, zaten onun ne düşündüğüne ve nasıl düşündüğüne bakarız.

Farklı bir şekilde yapalım. Hırslı olsun ya da olmasın. Eğer hırslıysa, onu arkadaş bölgesi haline getirmek zor olacaktır çünkü daha fazlasını isteyecektir. Ama hırssız olan dayanacaktır.

(Victor belirleyici ağacı çizmeyi bitirir.)

Hazır. Artık hangi erkekle çıkma ihtimalinizin yüksek olduğunu tahmin edebilirsiniz. Bu arada bazı flört servisleri bu tarz şeyleri öngörüyor. Benzetme yaparak, müşterilerin ne kadar ürün satın alacağını ve günün o saatinde insanların nerede olacağını tahmin edebilirsiniz.

Cevaplar sadece “evet” ve “hayır” değil aynı zamanda sayı şeklinde de olabilir. Daha doğru bir tahmin istiyorsanız, bu tür birkaç ağaç oluşturabilir ve bunların ortalamasını alabilirsiniz. Ve bu kadar basit bir şeyin yardımıyla aslında geleceği tahmin edebilirsiniz.

Şimdi düşünün, iki yüz yıl önce insanların böyle bir plan ortaya koyması zor muydu? Kesinlikle hayır! Bu şema herhangi bir roket bilimi taşımamaktadır. Bir olgu olarak makine öğrenimi yaklaşık yarım yüzyıldır varlığını sürdürüyor. Ronald Fisher, 20. yüzyılın başında verilere dayanarak tahminlerde bulunmaya başladı. Süsenleri alıp çanak yaprakların ve yaprakların uzunluğuna ve genişliğine göre dağıttı, bu parametreleri kullanarak bitkinin türünü belirledi.

Endüstride makine öğrenimi son yıllarda aktif olarak kullanılmaktadır: örneğin bu tür karar ağaçları için büyük miktarda veriyi işlemek için ihtiyaç duyulan güçlü ve nispeten ucuz makineler çok uzun zaman önce ortaya çıkmamıştır. Ama yine de heyecan verici: Bunları her görev için çiziyoruz ve geleceği tahmin etmek için kullanıyoruz.

- Kesinlikle futbol maçlarını tahmin eden herhangi bir ahtapottan daha iyi değil...

Hayır, ahtapotlar bizi ne ilgilendiriyor? Her ne kadar daha fazla değişkenliğimiz olsa da. Artık makine öğreniminin yardımıyla zamandan, paradan tasarruf edebilir ve yaşam konforunuzu artırabilirsiniz. Makine öğrenimi birkaç yıl önce görüntü sınıflandırma konusunda insanları geride bırakmıştı. Örneğin bir bilgisayar 20 terrier ırkını tanıyabilir ve sıradan bir insan HAYIR.

- Peki kullanıcıları analiz ettiğinizde her kişi sizin için birer sayı dizisi mi?

Kabaca konuşursak evet. Verilerle çalıştığımızda, kullanıcı davranışı da dahil olmak üzere tüm nesneler belirli bir sayı dizisiyle tanımlanır. Ve bu rakamlar insanların davranışlarının özelliklerini yansıtıyor: Ne sıklıkta taksiye biniyorlar, hangi sınıf taksiyi kullanıyorlar, genellikle hangi yerlere gidiyorlar.

Artık benzer davranışlara sahip insan gruplarını tanımlamak için bunları kullanmak üzere aktif olarak benzer modeller geliştiriyoruz. Yeni bir hizmeti tanıttığımızda ya da eski bir hizmetin tanıtımını yapmak istediğimizde, bunu ilgilenenlerin beğenisine sunuyoruz.

Örneğin artık bir hizmetimiz var: takside iki çocuk koltuğu. Bu haberi herkese spam olarak gönderebiliriz veya sadece belirli bir çevreyi özel olarak bilgilendirebiliriz. Yıl boyunca yorumlarında iki çocuk koltuğuna ihtiyaç duyduklarını yazan çok sayıda kullanıcı biriktirdik. Onları ve onlara benzer insanları bulduk. Geleneksel olarak bunlar, düzenli olarak seyahat eden ve Akdeniz mutfağını seven, 30 yaşın üzerindeki kişilerdir. Elbette daha birçok işaret olmasına rağmen bu sadece bir örnek.

- Bu kadar incelikler bile mi?

Bu basit bir mesele. Her şey arama sorguları kullanılarak hesaplanır.

Bu bir şekilde bir uygulamada işe yarayabilir mi? Örneğin, benim bir dilenci olduğumu ve "Ayda 500 ruble ile nasıl hayatta kalınır" gibi gruplara abone olduğumu biliyor musunuz - bana sadece ucuz arabalar teklif ediyorlar, SpaceX haberlerine abone oluyorlar - ve zaman zaman beni satıyorlar Tesla'mı?

Bu şekilde olabilir ama ayrımcılık olduğu için Yandex'de bu tür şeyler onaylanmıyor. Bir hizmeti kişiselleştirdiğinizde, en kabul edilebilir olanı değil, mevcut olanın en iyisini ve kişinin beğendiğini sunmak daha iyidir. Ve “bunun daha iyi bir arabaya ihtiyacı var, bunun daha az iyi bir arabaya ihtiyacı var” mantığına göre dağıtım kötülüktür.


Herkesin sapkın arzuları vardır ve bazen bir Akdeniz yemeği tarifi değil, örneğin koprofili ile ilgili resimler bulmanız gerekir. Bu durumda kişiselleştirme hala işe yarayacak mı?

Her zaman özel bir mod vardır.

İlgi alanlarımı kimsenin bilmesini istemiyorsam veya diyelim ki arkadaşlarım bana gelip saçma sapan şeyler izlemek istiyorsa, gizli modu kullanmak daha iyi olur.

Ayrıca hangi şirketin hizmetini kullanacağınıza da karar verebilirsiniz; örneğin Yandex veya Google.

- Bir fark var mı?

Karışık mevzu. Başkalarını bilmiyorum ama Yandex kişisel verilerin korunması konusunda katıdır. Çalışanlar özellikle izlenmektedir.

- Yani bir erkekten ayrılırsam bu kulübeye gidip gitmediğini öğrenemeyeceğim mi?

Yandex'de çalışıyor olsanız bile. Bu elbette üzücü ama evet, bunu öğrenmenin bir yolu yok. Çoğu çalışanın bu verilere erişimi bile yok. Her şey şifrelenmiştir. Çok basit: insanları gözetleyemezsiniz, bu kişisel bir bilgidir.

Bu arada erkeklerden ayrılma konusunda ilginç bir davamız vardı. Taksinin varış noktası olan “B” noktası için tahmin yaparken ipuçlarını da devreye soktuk. İşte bak.

(Victor, Yandex.Taxi uygulamasında oturum açar.)

Mesela taksi evde olduğumu sanıyor. Ya işe gitmemi ya da RUDN Üniversitesine gitmemi öneriyor (Orada makine öğrenimi kursu Veri Madenciliği Eyleminin bir parçası olarak dersler veriyorum). Ve bir noktada bu ipuçlarını geliştirirken kullanıcıyı tehlikeye atmaktan kaçınmamız gerektiğini fark ettik. Herkes B noktasını görebilir. Bu nedenlerden dolayı benzerliğe dayalı yer önermeyi reddettik. Aksi takdirde, düzgün insanlarla birlikte düzgün bir yerde oturursunuz, taksi çağırırsınız ve onlar size şöyle yazar: “Bak, daha bu bara gitmedin!”

- Haritanızda yanıp sönen mavi noktalar nedir?

Bunlar toplama noktalarıdır. Bu noktalar taksi çağırmanın en uygun olduğu yerleri gösterir. Sonuçta gitmenin tamamen sakıncalı olacağı bir yeri arayabilirsiniz. Ancak genel olarak her yeri arayabilirsiniz.

- Evet her zaman. Bununla bir şekilde iki blok uçtum.

İÇİNDE Son zamanlarda GPS ile ilgili çeşitli zorluklar vardı, bu da çeşitli komik durumlara yol açtı. İnsanlar, örneğin Tverskaya'da navigasyonu geçti Pasifik Okyanusu. Gördüğünüz gibi bazen ıskalamalar oluyor ve ikiden fazla blok oluyor.

- Uygulamayı yeniden başlatıp tekrar tıklarsanız fiyat birkaç ruble değişir. Neden?

Talebin arzı aşması durumunda, algoritma otomatik olarak artan bir katsayı oluşturur; bu, talebin yüksek olduğu dönemlerde bile mümkün olduğu kadar çabuk ayrılmaya ihtiyaç duyanların taksi kullanmasına yardımcı olur. Bu arada, makine öğreniminin yardımıyla örneğin bir saat içinde nerede daha fazla talep olacağını tahmin edebilirsiniz. Bu, arzın talebi karşılaması için sürücülere nerede daha fazla sipariş olacağını söylememize yardımcı olur.

-Yandex.Taxi'nin yakında tüm taksi pazarını yok edeceğini düşünmüyor musunuz?

Bence hayır. Biz sağlıklı rekabetten yanayız ve bundan korkmuyoruz.

Mesela ben kendim farklı taksi hizmetlerini kullanıyorum. Bekleme süresi benim için önemli, bu yüzden hangi taksinin daha hızlı geleceğini görmek için çeşitli uygulamalara bakıyorum.


- Uber'le ekip kurdunuz. Ne için?

Yorum yapmak bana düşmez. Birleşmenin son derece mantıklı bir karar olduğunu düşünüyorum.

Almanya'da bir adam drone'lara küvet taktı ve hamburger yemeye gitti. Hava sahasına hakim olmanın zamanının geldiğini düşündünüz mü?

Hava sahasını bilmiyorum. “Uber teknelerde taksileri hizmete soktu” gibi haberleri takip ediyoruz ama hava konusunda bir şey söyleyemem.

- Peki ya sürücüsüz taksiler?

Burada ilginç bir nokta var. Bunları geliştiriyoruz ama tam olarak nasıl kullanılması gerektiğini düşünmemiz gerekiyor. Sokaklarda hangi biçimde ve ne zaman ortaya çıkacaklarını tahmin etmek için henüz çok erken, ancak insan sürücüye hiç ihtiyaç duyulmayacak, tamamen otonom bir otomobilin teknolojisini geliştirmek için her şeyi yapıyoruz.

- Arabayı uzaktan kontrol etmek için drone yazılımının hackleneceğine dair korkular var mı?

Teknolojinin ve gadget'ların olduğu her yerde ve her zaman riskler vardır. Ancak teknolojinin gelişmesiyle birlikte başka bir yön de gelişiyor - onların korunması ve güvenliği. Öyle ya da böyle teknoloji geliştirme sürecine dahil olan herkes güvenlik sistemleri üzerinde çalışıyor.

- Hangi kullanıcı verilerini topluyorsunuz ve bunları nasıl koruyorsunuz?

Yolculuğun nerede, ne zaman ve nerede yapıldığı gibi anonimleştirilmiş kullanım verilerini topluyoruz. Önemli olan her şey karma hale getirilir.

- Dronelar yüzünden iş sayısının azalacağını mı düşünüyorsunuz?

Sadece daha da büyüyeceğini düşünüyorum. Yine de bu dronların da bir şekilde bakımının yapılması gerekiyor. Bu elbette biraz stresli durum, uzmanlığınızı değiştirin ama ne yapabilirsiniz?

- Gref, her dersinde bir kişinin mesleğini en az üç kez kökten değiştireceğini söylüyor.

Sonsuza kadar sürecek hiçbir uzmanlık adını veremem. Bir geliştirici hayatı boyunca aynı dilde ve aynı teknolojilerle çalışmaz. Her yeri yeniden inşa etmemiz gerekiyor. Makine öğrenimi sayesinde benden altı yaş küçük olan erkeklerin benden çok daha hızlı düşünebildiğini açıkça hissedebiliyorum. Aynı zamanda 40-45 yaşlarındaki insanlar bunu daha da güçlü hissediyor.

- Deneyim artık bir rol oynamıyor mu?

Oynanıyor. Ama yöntemler değişiyor, mesela derin öğrenmenin kullanılmadığı bir alana gelebiliyorsunuz, orada bir süre çalışıyorsunuz, sonra her yerde derin öğrenme yöntemleri tanıtılıyor ve bundan hiçbir şey anlamıyorsunuz. Bu kadar. Deneyiminiz yalnızca ekibin çalışmasının planlanmasında yararlı olabilir ve o zaman bile her zaman yararlı olmayabilir.

- Ve mesleğiniz veri bilimci, talep görüyor mu?

Veri bilimi uzmanlarına olan talep alışılmışın dışında. Açıkçası, bu çılgın bir yutturmaca dönemi. Tanrıya şükür, blockchain bu heyecanın biraz azalmasına yardımcı oldu. Blockchain uzmanları daha da hızlı bir şekilde işe alınıyor.

Ancak artık birçok şirket, makine öğrenimine yatırım yaparlarsa bahçelerinin hemen yeşereceğini düşünüyor. Bu yanlış. Makine öğrenimi sadece mevcut değil, belirli sorunları da çözmelidir.

Bir bankanın kullanıcılara yönelik hizmetler için bir öneri sistemi oluşturmak istediği zamanlar vardır. Biz şunu soruyoruz: “Bunun ekonomik olarak haklı olacağını düşünüyor musunuz?” Cevap veriyorlar: “Umurumuzda değil. Yap. Herkesin öneri sistemi var, biz trend olacağız” dedi.

İşin acı tarafı, iş için gerçekten yararlı olan bir şeyin bir günde yapılamamasıdır. Sistemin nasıl öğreneceğini izlememiz lazım. Ancak başlangıçta her zaman hata yapar; eğitim sırasında bazı veriler eksik olabilir. Hataları düzeltirsiniz, sonra tekrar düzeltirsiniz ve hatta her şeyi yeniden yaparsınız. Bundan sonra sistemi üretimde çalışacak, stabil ve ölçeklenebilir olacak şekilde yapılandırmanız gerekiyor, hala zamanı. Sonuç olarak bir proje altı ay, bir yıl veya daha fazla zaman alıyor.


Makine öğrenimi yöntemlerine bir kara kutu olarak bakarsanız, bazı çılgınca şeyler olmaya başladığında kolayca gözden kaçırabilirsiniz. Sakallı bir hikaye var. Ordu, resimde tank olup olmadığını analiz etmek için kullanılabilecek bir algoritma geliştirmeyi istedi. Araştırmacılar bunu yaptı, test etti, kalitesi mükemmel, her şey harika, orduya verdiler. Asker geliyor ve hiçbir şeyin işe yaramadığını söylüyor. Bilim adamları endişeyle anlamaya başlıyorlar. Ordunun getirdiği tankın olduğu tüm fotoğraflarda köşeye kalemle bir işaret konulduğu ortaya çıktı. Algoritma kusursuz bir şekilde onay işaretini bulmayı öğrendi; tank hakkında hiçbir şey bilmiyordu. Doğal olarak yeni fotoğraflarda hiçbir onay işareti yoktu.

Kendi diyalog sistemlerini geliştiren çocuklarla tanıştım. Çocuklarla işbirliği yapmanız gerektiğini hiç düşündünüz mü?

Uzun zamandır okul çocukları için her türlü etkinliğe gidiyorum, makine öğrenmesi hakkında dersler veriyorum. Ve bu arada konulardan biri bana onuncu sınıf öğrencisi tarafından öğretildi. Hikayemin iyi ve ilginç olacağından kesinlikle emindim, kendimle gurur duydum, yayına başladım ve kız şöyle dedi: "Ah, bu şeyi en aza indirmek istiyoruz." Bakıyorum ve gerçekten nedenini düşünüyorum ve gerçek en aza indirilebilir ve burada kanıtlanacak özel bir şey yok. Aradan birkaç yıl geçti, şimdi Fizik ve Teknoloji Enstitüsü'nde öğrenci olarak derslerimizi dinliyor. Bu arada Yandex'de, okul çocuklarının temel programlama bilgilerini ücretsiz olarak alabilecekleri Yandex.Lyceum var.

- Şu anda ders verdikleri üniversiteleri ve fakülteleri tavsiye edin makine öğrenme.

MIPT, FIVT ve FUPM fakülteleri var. HSE'nin ayrıca harika bir bilgisayar bilimleri bölümü var ve Moskova Devlet Üniversitesi'nde bilgisayar bilimleri kompleksinde makine öğrenimi var. Artık RUDN Üniversitesi'ndeki dersimizi dinleyebilirsiniz.

Daha önce de söylediğim gibi bu mesleğe talep var. Çok uzun bir süre teknik eğitim alan insanlar bambaşka şeyler yaptılar. Makine öğrenimi, insanların birlikte öğrendiği her şeyin harika bir örnektir. teknik Eğitim, artık gerçekten ihtiyaç duyuluyor, faydalı ve iyi maaş alıyor.

- Ne kadar iyi?

Tutarı adlandırın.

- Ayda 500 bin.

Sıradan bir veri bilimci olmadan da bunu yapabilirsiniz. Ama bazı şirketlerde bir stajyerin basit bir iş karşılığında 50 bin kazanabileceği çok geniş bir aralık var. Genel olarak havalı bir veri bilimcisinin maaşı, orta ölçekli bir şirketin CEO'sunun maaşıyla karşılaştırılabilir. Pek çok şirkette, çalışanın maaşın yanı sıra birçok başka faydası da vardır ve kişinin özgeçmişine iyi bir marka eklemek için değil, gerçekten çalışmak için geldiği açıksa, o zaman onun için her şey yoluna girecektir.

MIPT ile ortak "ABC of AI" projesinin bir parçası olarak, programları Darwinci evrimin ilkelerine ve yasalarına göre "büyütmenize" olanak tanıyan sözde olanlar hakkında zaten yazmıştık. Ancak şimdilik yapay zekaya yönelik bu yaklaşım kesinlikle “gelecekten gelen bir misafir”. Ama nasıl sistemler yapay zeka bugün yaratılsın mı? Nasıl eğitiliyorlar? MIPT Algoritmalar ve Programlama Teknolojileri Bölümü'nde kıdemli öğretim görevlisi ve kullanıcı davranışı analizi grubunun başkanı Victor Kantor, bunu anlamamıza yardımcı oldu. Yandex Verileri Fabrika.

"Teknoloji olgunluk döngüsünü" düzenli olarak güncelleyen araştırma firması Gartner'ın yakın tarihli bir raporuna göre, makine öğrenimi şu anda tüm BT'de beklentilerin zirvesinde. Bu şaşırtıcı değil: Son birkaç yılda makine öğrenimi, dar bir matematikçiler ve algoritma teorisi uzmanlarının ilgi alanından çıktı ve önce BT iş adamlarının kelime dağarcığına, sonra da dünyaya nüfuz etti. sıradan insanlardan. Artık Prisma uygulamasını kullanan, Shazam'ı kullanarak şarkı arayan veya DeepDream'den geçen görselleri gören herkes, özel "sihri" olan sinir ağları diye bir şeyin var olduğunu biliyor.

Ancak teknolojiyi kullanmak başka şey, onun nasıl çalıştığını anlamak başka şey. "Bir bilgisayar ona ipucu verirseniz öğrenebilir" veya "bir sinir ağı dijital nöronlardan oluşur ve insan beyni gibi yapılandırılmıştır" gibi genel kelimeler birine yardımcı olabilir, ancak çoğu zaman sadece durumu karıştırırlar. Matematiği ciddi şekilde çalışacak olanların popüler metinlere ihtiyacı yoktur: onlar için ders kitapları ve mükemmel çevrimiçi kurslar vardır. Orta bir yol izlemeye çalışacağız: çok basit bir görevde öğrenmenin gerçekte nasıl gerçekleştiğini açıklayacağız ve ardından aynı yaklaşımın gerçekten ilginç problemleri çözmek için nasıl uygulanabileceğini göstereceğiz.

Makineler nasıl öğrenir?

Makine öğreniminin tam olarak nasıl gerçekleştiğini anlayabilmek için öncelikle kavramları tanımlayalım. Bu alanın öncülerinden biri olan Arthur Samuel'in tanımladığı gibi makine öğrenmesi, "bilgisayarların doğrudan programlamadan öğrenmesine olanak tanıyan" yöntemleri ifade eder. Makine öğrenimi yöntemlerinin iki geniş sınıfı vardır: denetimli öğrenme ve denetimsiz öğrenme. Birincisi, örneğin bir bilgisayara kedilerin fotoğraflarını aramayı öğretmemiz gerektiğinde kullanılır; ikincisi ise, örneğin Yandex gibi hizmetlerde olduğu gibi, haberleri bağımsız olarak hikayeler halinde gruplandırabilmek için bir makineye ihtiyacımız olduğunda kullanılır. .Haberler veya Google Haberler. Yani, ilk durumda, doğru bir cevabın varlığını ima eden bir görevle uğraşıyoruz (fotoğraftaki kedi ya oradadır ya da değildir), ikinci durumda tek bir doğru cevap yoktur, ancak Farklı yollar Sorunu çözmek. Biz özellikle en ilgi çekici olan birinci sınıf problemlere odaklanacağız.

Bu yüzden bilgisayara bazı tahminlerde bulunmayı öğretmemiz gerekiyor. Ayrıca mümkün olduğunca doğru olması arzu edilir. Tahminler iki türde olabilir: ya birkaç cevap seçeneği arasından seçim yapmanız gerekir (resimde kedi olup olmadığı iki seçenekten birinin seçimidir, resimlerdeki harfleri tanıma yeteneği bir seçenektir) birkaç düzineden vb.) veya sayısal bir tahminde bulunun. Örneğin, bir kişinin ağırlığını boyuna, yaşına, ayakkabı numarasına vb. göre tahmin edin. Bu iki tür problem sadece farklı gibi görünse de aslında neredeyse aynı şekilde çözülürler. Tam olarak nasıl olduğunu anlamaya çalışalım.

Bir tahmin sistemi yapmak için ihtiyacımız olan ilk şey, eğitim örneği denilen, yani nüfustaki insanların ağırlığına ilişkin verileri toplamaktır. İkincisi, ağırlıkla ilgili sonuçlar çıkarabileceğimiz bir dizi işarete karar vermektir. Bu tür "en güçlü" işaretlerden birinin kişinin boyu olacağı açıktır, bu nedenle ilk tahmin olarak yalnızca bunu almak yeterlidir. Eğer ağırlık doğrusal olarak boya bağlıysa, o zaman tahminimiz çok basit olacaktır: Bir kişinin ağırlığı, boyunun bir katsayı ve bir sabit değerle çarpımına eşit olacaktır; bu, en basit formül y=kx+b ile yazılır. Bir kişinin ağırlığını tahmin edecek bir makineyi eğitmek için yapmamız gereken tek şey, bir şekilde k ve b için doğru değerleri bulmaktır.

Makine öğreniminin güzelliği, incelediğimiz ilişki çok karmaşık olsa bile yaklaşımımızda esasen hiçbir şeyin değişmeyecek olmasıdır. Hala aynı gerilemeyle karşı karşıya kalacağız.

Diyelim ki bir kişinin kilosu boyundan doğrusal olarak değil üçüncü derecede etkileniyor (ki bu genellikle beklenen bir durum çünkü ağırlık vücut hacmine bağlı). Bu bağımlılığı hesaba katmak için denklemimize başka bir terimi, yani büyümenin üçüncü kuvvetini kendi katsayısıyla dahil ediyoruz ve böylece y=k 1 x+k 2 x 3 +b elde ediyoruz. Şimdi makineyi eğitmek için iki değil üç miktar (k 1, k 2 ve b) bulmamız gerekecek. Diyelim ki tahminimizde kişinin ayakkabı numarasını, yaşını, televizyon izleyerek geçirdiği zamanı, yaşadığı dairenin en yakın fast food mağazasına olan mesafesini de hesaba katmak istiyoruz. Sorun değil: Bu özellikleri ayrı terimler olarak aynı denklemin içine ekliyoruz.

En önemli şey yaratmaktır evrensel yöntem gerekli katsayıları bulun (k 1, k 2, ... k n). Eğer varsa, tahmin için hangi özelliklerin kullanılacağı bizim için neredeyse kayıtsız kalacaktır, çünkü makinenin kendisi önemli olanlara daha fazla ağırlık vermeyi, önemsiz özelliklere ise daha az ağırlık vermeyi öğrenecektir. Neyse ki, böyle bir yöntem zaten icat edildi ve neredeyse tüm makine öğrenimi bunun üzerinde başarıyla çalışıyor: en basit doğrusal modellerden yüz tanıma sistemlerine ve konuşma analizörlerine kadar. Bu yönteme gradyan iniş denir. Ancak nasıl çalıştığını açıklamadan önce küçük bir açıklama yapıp sinir ağlarından bahsetmemiz gerekiyor.

Nöral ağlar

2016 yılında sinir ağları bilgi gündemine o kadar sıkı bir şekilde girdi ki, neredeyse tüm makine öğrenimi ve genel olarak ileri BT ile özdeşleştiler. Resmi olarak konuşursak, bu doğru değil: sinir ağları matematiksel öğrenmede her zaman kullanılmaz; başka teknolojiler de vardır. Ancak genel olarak böyle bir ilişki elbette anlaşılabilir, çünkü artık bir fotoğrafta bir kişiyi arama yeteneği, aktaran uygulamaların ortaya çıkması gibi en "sihirli" sonuçları sağlayan sinir ağlarına dayalı sistemlerdir. bir görüntünün diğerine tarzı veya belirli bir kişinin konuşma tarzına göre metinler oluşturmaya yönelik sistemler.

Sinir ağlarının yapılanma şekli, biz zaten... Burada sadece sinir ağlarının diğer makine öğrenimi sistemleriyle karşılaştırıldığında gücünün çok katmanlı doğasında yattığını vurgulamak istiyorum, ancak bu onları çalışma şekillerinde temelde farklı bir şey yapmaz. Çok katmanlılık gerçekten çok soyut bulmanızı sağlar Genel Özellikler ve bir resimdeki pikseller gibi karmaşık özellik kümelerindeki bağımlılıklar. Ancak öğrenme ilkeleri açısından bakıldığında, bir sinir ağının bir dizi geleneksel doğrusal regresyon formülünden kökten farklı olmadığını, dolayısıyla aynı gradyan iniş yönteminin burada da harika çalıştığını anlamak önemlidir.

Bir sinir ağının "gücü", giriş katmanının değerlerini özet olarak birleştiren bir ara nöron katmanının varlığında yatmaktadır. Bu nedenle sinir ağları verilerde indirgenmesi zor olan çok soyut özellikler bulabilir. basit formüller doğrusal veya ikinci dereceden bir ilişki gibi.

Bir örnekle açıklayalım. Bir kişinin ağırlığının boyuna ve boyunun küpüne bağlı olduğu ve bunun y=k 1 x+k 2 x 3 +b formülüyle ifade edildiği bir tahminde karar kıldık. Biraz uzatılsa da aslında böyle bir formüle bile sinir ağı denilebilir. İçinde, normal bir sinir ağında olduğu gibi, aynı zamanda bir özellikler katmanı olan ilk bir "nöron" katmanı vardır: bunlar x ve x 3'tür (yani, aklımızda tuttuğumuz ve bunun için kullandığımız "birim nöron"). b katsayısı sorumludur). Üst veya sonuçta ortaya çıkan katman, bir "nöron" y, yani kişinin tahmini ağırlığı ile temsil edilir. Ve "nöronların" ilk ve son katmanları arasında, gücü veya ağırlığı k 1, k 2 ve b katsayıları tarafından belirlenen bağlantılar vardır. Bu "sinir ağını" eğitmek, aynı katsayıları bulmak anlamına gelir.

Buradaki "gerçek" sinir ağlarından tek fark, görevi girdi özelliklerini birleştirmek olan tek bir ara (veya gizli) nöron katmanına sahip olmamamızdır. Bu tür katmanların tanıtılması, mevcut özellikler arasındaki olası bağımlılıkları "kafanızın dışında" icat etmenize değil, bunların sinir ağındaki mevcut kombinasyonlarına güvenmenize olanak tanır. Örneğin, yaş ve TV karşısında geçirilen ortalama süre, bir kişinin kilosu üzerinde sinerjik bir etkiye sahip olabilir, ancak bir sinir ağına sahip olduğumuz için bunu önceden bilmemize ve bunların sonuçlarını formüle girmemize gerek yok. Bir sinir ağında kesinlikle herhangi iki özelliğin etkisini birleştiren bir nöron olacaktır ve eğer bu etki örnekte gerçekten fark edilirse, o zaman eğitimden sonra bu nöron otomatik olarak büyük bir ağırlık alacaktır.

Dereceli alçalma

Yani, bilinen verilere sahip bir eğitim örnek setimiz var, yani kişinin ağırlığının doğru bir şekilde ölçüldüğü bir tablo ve ilişkiye dair bazı hipotezler. bu durumda doğrusal regresyon y=kx+b. Görevimiz k ve b'nin doğru değerlerini manuel olarak değil otomatik olarak bulmaktır. Ve tercihen formülde yer alan parametre sayısına bağlı olmayan evrensel bir yöntem.

Genel olarak bunu yapmak zor değildir. Ana fikir, mevcut toplam hata seviyesini ölçecek ve katsayıları "ayarlayacak", böylece toplam hata seviyesinin kademeli olarak düşmesini sağlayacak bir fonksiyon yaratmaktır. Hata seviyesinin düşmesini nasıl sağlayabilirim? Parametrelerimizi doğru yönde ayarlamamız gerekiyor.

Aradığımız iki parametremizi, aynı k ve b'yi, kuzey-güney ve batı-doğu eksenleri gibi bir düzlemde iki yön olarak hayal edin. Böyle bir düzlemdeki her nokta, katsayıların belirli bir değerine, boy ile ağırlık arasındaki belirli bir ilişkiye karşılık gelecektir. Ve düzlemdeki bu tür her nokta için, bu tahminin örneklemimizdeki örneklerin her biri için verdiği toplam hata seviyesini hesaplayabiliriz.

Bir uçağın belirli bir yüksekliği gibi bir şey ortaya çıkıyor ve çevredeki alanın tamamı bir dağ manzarasını andırmaya başlıyor. Dağlar hata oranının çok yüksek olduğu noktalar, vadiler ise hatanın az olduğu yerlerdir. Sistemimizi eğitmenin, yerdeki en alçak noktayı, hata oranının minimum olduğu noktayı bulmak anlamına geldiği açıktır.

Bu noktayı nasıl bulabilirsiniz? En doğru yol, başlangıçta kendimizi bulduğumuz noktadan sürekli aşağıya doğru ilerlemektir. Yani er ya da geç yerel bir minimuma ulaşacağız - bu noktanın altında yakın çevrede hiçbir şeyin olmadığı bir nokta. Dahası, farklı boyutlarda adımlar atmanız tavsiye edilir: eğim dik olduğunda daha geniş adımlar atabilirsiniz; eğim küçük olduğunda, yerel minimum seviyeye "ayak parmaklarının ucunda" gizlice yaklaşmak daha iyidir, aksi takdirde aşabilirsiniz.

Gradyan iniş yöntemi tam olarak bu şekilde çalışır: özelliklerin ağırlıklarını, hata fonksiyonundaki en büyük düşüş yönünde değiştiririz. Bunları yinelemeli olarak, yani değeri eğimin dikliği ile orantılı olan belirli bir adımla değiştiriyoruz. İlginç olan şu ki, özelliklerin sayısı arttığında (bir kişinin boyunun küpü, yaşı, ayakkabı numarası vb. eklendiğinde), aslında hiçbir şey değişmez, sadece manzaramız iki boyutlu değil, çok boyutlu hale gelir.

Hata fonksiyonu, mevcut formülün kilosunu tam olarak bildiğimiz kişiler için izin verdiği tüm sapmaların karelerinin toplamı olarak tanımlanabilir. Hadi biraz alalım rastgele değişkenler k ve b, örneğin 0 ve 50. Daha sonra sistem bize örnekteki her kişinin ağırlığının her zaman 50 kilograma eşit olduğunu tahmin edecektir y=0×x+50 Grafikte böyle bir bağımlılık şuna benzeyecektir: yataya paralel düz bir çizgi. Açıkçası bu pek de iyi bir tahmin değil. Şimdi bu öngörülen değerden ağırlıktaki sapmayı alalım, karesini alalım (böylece negatif değerler de dikkate alınır) ve toplayalım - bu, bu noktada hata olacaktır. Analizin başlangıcına aşina iseniz, o zaman en büyük düşüşün yönünün hata fonksiyonunun k ve b'ye göre kısmi türevi tarafından verildiğini ve adımın seçilen bir değer olduğunu bile açıklığa kavuşturabilirsiniz. pratik nedenler: küçük adımların hesaplanması çok zaman alır ve büyük adımlar minimum seviyeyi aşmamıza neden olabilir.

Peki ya elimizde birçok özelliği olan karmaşık bir regresyon değil de gerçek bir sinir ağı varsa? Bu durumda degrade inişini nasıl uygulayacağız? Gradyan inişinin bir sinir ağıyla tamamen aynı şekilde çalıştığı ortaya çıktı; yalnızca eğitim 1) adım adım, katmandan katmana ve 2) örnekteki bir örnekten diğerine kademeli olarak gerçekleşir. Burada kullanılan yönteme geri yayılım adı veriliyor ve 1974 yılında Sovyet matematikçi Alexander Galushkin ve Harvard Üniversitesi matematikçisi Paul John Webros tarafından bağımsız olarak tanımlandı.

Algoritmanın katı bir sunumu için kısmi türevleri yazmak gerekli olsa da (örneğin), sezgisel düzeyde her şey oldukça basit bir şekilde gerçekleşir: örnekteki örneklerin her biri için çıktıda belirli bir tahminimiz vardır. sinir ağının. Doğru cevaba sahip olduğumuzda, doğru cevabı tahminden çıkarabilir ve böylece bir hata (daha doğrusu, çıktı katmanının her bir nöronu için bir dizi hata) elde edebiliriz. Şimdi bu hatayı önceki nöron katmanına aktarmamız gerekiyor ve bu katmanın bu belirli nöronu hataya ne kadar çok katkıda bulunduysa, ağırlığını da o kadar azaltmamız gerekiyor (aslında yine kısmi türevi almaktan bahsediyoruz, hayali manzaramızın maksimum dikliği boyunca ilerlemekle ilgili). Bunu yaptığımızda, sinir ağının çıkışından girişine doğru ters yönde hareket ederek bir sonraki katman için aynı işlemin tekrarlanması gerekir.

Eğitim örneğinin her bir örneğinde sinir ağından bu şekilde geçerek ve nöronların ağırlıklarını istenen yönde "bükerek", sonunda eğitimli bir sinir ağı elde etmeliyiz. Geri yayılma yöntemi, çok katmanlı sinir ağları için gradyan iniş yönteminin basit bir modifikasyonudur ve bu nedenle herhangi bir karmaşıklıktaki sinir ağları için çalışmalıdır. Burada "olmalı" diyoruz çünkü aslında degrade inişin başarısız olduğu ve iyi bir regresyon yapmanıza veya bir sinir ağını eğitmenize izin vermediği durumlar vardır. Bu tür zorlukların neden ortaya çıktığını bilmek faydalı olabilir.

Gradyan İnişin Zorlukları

Mutlak minimumun yanlış seçimi. Gradyan iniş yöntemi yerel bir ekstremumu aramaya yardımcı olur. Ancak bunu her zaman fonksiyonun mutlak global minimumunu veya maksimumunu elde etmek için kullanamayız. Bunun nedeni, bir antigradiyen boyunca hareket ederken karşılaştığımız ilk yerel minimuma ulaştığımız anda durmamız ve algoritmanın çalışmayı durdurmasıdır.

Bir dağın tepesinde durduğunuzu hayal edin. Bölgedeki en alçak yüzeye inmek istiyorsanız eğimli iniş yöntemi her zaman size yardımcı olmayacaktır çünkü yolunuzdaki ilk alçak noktanın mutlaka en alçak nokta olması gerekmemektedir. Ve hayatta eğer biraz yukarı çıkıp daha da aşağıya inebilirseniz, böyle bir durumda algoritmanın duracağını görebiliyorsanız. Doğru adımı seçerseniz çoğu zaman bu durumdan kaçınılabilir.

Yanlış adım seçimi. Gradyan iniş yöntemi yinelemeli bir yöntemdir. Yani, adım boyutunu - alçalma hızımızı - kendimiz seçmeliyiz. Çok büyük bir adım seçerek ihtiyacımız olan uç noktayı geçebilir ve minimumu bulamayabiliriz. Kendinizi çok keskin bir inişle karşı karşıya bulursanız bu durum gerçekleşebilir. Ve çok küçük bir adım seçmek, eğer kendimizi nispeten düz bir yüzeyde bulursak, algoritmayı aşırı derecede yavaşlatma riski taşır. Yine dik bir dağın tepesinde olduğumuzu hayal edersek, minimuma yakın çok dik bir iniş nedeniyle sadece üzerinden uçacağımız bir durum ortaya çıkabilir.

Ağ felci. Bazen gradyan iniş yönteminin minimum değeri bulamadığı da olur. Bu, minimumun her iki tarafında da düz alanlar varsa meydana gelebilir; algoritma, düz bir alana çarptığında adımı azaltır ve sonunda durur. Bir dağın zirvesindeyken ovadaki evinize doğru ilerlemeye karar verirseniz, kazara çok düz bir alana saparsanız yolculuk çok uzun olabilir. Veya, düz alanların kenarları boyunca neredeyse dikey "eğimler" varsa, çok büyük bir adım seçen algoritma, pratik olarak minimuma doğru hareket etmeden bir eğimden diğerine atlayacaktır.

Bir makine öğrenimi sistemi tasarlanırken tüm bu karmaşık konuların dikkate alınması gerekir. Örneğin, hata fonksiyonunun zaman içinde nasıl değiştiğini tam olarak takip etmek her zaman yararlıdır - her yeni döngüde veya işaretleme süresinde düşer mi, adım boyutundaki değişikliğe bağlı olarak bu düşüşün doğası nasıl değişir? Kötü bir yerel minimuma düşmekten kaçınmak için, peyzajın rastgele seçilen farklı noktalarından başlamak yararlı olabilir; bu durumda takılıp kalma olasılığı çok daha düşüktür. Degrade iniş kullanmanın irili ufaklı pek çok sırrı vardır ve ayrıca degrade inişe biraz benzeyen daha egzotik öğrenme yolları da vardır. Ancak bu, Yapay Zekanın ABC'si projesi çerçevesinde başka bir konuşmanın konusu ve ayrı bir makaledir.

Alexander Ershov'un hazırladığı