Борис Даскалов има богат опит като програмист, като част от екипите на едни от най-големите компании в света. Занимавал се е с препоръчващи системи в Soundcloud и audio/video fingerprinting в Google, а днес ръководи екип за различни Machine Learning и Computer Vision проекти в HyperScience. На 3 октомври той ще сподели опита си на събитието Практически съвети за успешни Machine Learning проекти, но преди това ни разказа за първите му стъпки в машинното обучение и любимия му аспект от работата му. 

Как започна да се занимаваш с Machine Learning?

Започнах да програмирам много рано, може би на осем години. С един приятел се опитвахме да пишем игри. Имаше една книга “Аз програмирам на 9 години”, с която започнахме да учим BASIC. По-късно, в училище, много се “зарибих” по състезанията по програмиране. След това, в университета, започна да ми става много интересна връзката между програмирането и математиката и взех много курсове по приложна математика. Като курсова работа по изкуствен интелект във ФМИ с няколко колеги решихме да участваме във Netflix Prize (състезание за препоръчващи системи с награда 1 милион долара, които, разбира се, не спечелихме). Интересно ми беше как от натрупването на данни чрез машинното самообучение е възможно да се извлича полезна информация.

По това време това беше сравнително нова област и нямаше много материали, от които да се учи човек. По-късно, по време на магистратурата си в ETH Zurich, интересът ми се задълбочи, въпреки че нямаше такава програма и ми се наложи да комбинирам курсове от няколко други. Впоследствие прилагах отчасти наученото, работейки в Google и Soundcloud, но едва работата ми в Hyperscience ми позволи да приложа наученото на 100% .

Кой е най-интересният аспект от работата с Machine Learning?

Най-интересно за мен е, че процесът на работа изисква поемане на контролирани рискове. При класическото софтуерно инженерство почти винаги човек знае, че един процес/алгоритъм/система ще сработи, още когато е замислен и след това може да го имплементира спокойно. Обаче при ученето от данни никога не знаем със сигурност дали планът ни ще донесе добър резултат, но се стремим винаги да контролираме този риск, като правим аналогии с подобни решения в други случаи. Също така опитваме много подходи едновременно с цел да намерим поне едно работещо решение. Това налага промяна на подхода към работа, което обикновено отнема време дори на добри програмисти.

Кое е най-голямото технологично предизвикателство, с което си се сблъсквал?

Предизвикателство беше да създадем първия ни модел за разпознаване на ръкописен текст, тъй като отне дълго време да намерим правилната комбинация от данни, архитектура и начин за трениране. Също така голямо предизвикателство, макар и не технологично, беше да изградим екип и работен процес, така че непрекъснато да подобряваме този модел в продължение на вече две години.

Как го разреши?

От самото начало инвестираме много в събиране на данни, които да са максимално близки до тези, които очакваме да видим в production. Също така се постарахме да намерим правилните метрики, чрез които да измерваме подобренията. Това ни позволи систематично да търсим слабите места на модела и да го подобряваме итеративно.

Ще споделиш ли трите най-важни неща, които ИТ обществото може да научи от темата на предстоящата ти презентация?

Според мен трите най-важни неща в случая са: как се конструират подходящи тренировъчни множества, как да анализираме грешките на модел и как да оценяваме правилно качеството. Ще говоря за тези практически проблеми, с които човек се сблъсква в подобен проект. Това за съжаление е тема, която е пренебрегвана до момента, но се оказва все по-важна. В разработката на софтуер дори след десетилетия все още има активен дебат кои са най-добрите практики. В сравнително нова област като машинното самообучение това тепърва започва. Много хора дори не се замислят, че биха могли да контролират процеса, чрез който стигат до създаването на модел.

Какво би посъветвал всички, които сега започват да се занимават с Machine Learning?

Да се опитват да намерят баланс между теорията и програмисткия/инженерния подход. И двете са важни за това човек да бъде успешен ML-инженер. Също така е изключително важно да се научат да виждат гората, а не дърветата. Много е важно човек да умее да погледне нещата от дистанция и да намери най-перспективните подходи за всяка ситуация.


Стани част от потребителската група Machine Learning. Абонирай се и ще ти изпращаме информация за всичко, което предстои в групата.

Визия: Личен архив

Прочети още:
„Програмирането е магия. А machine learning е следващото ниво на магията“ – Георги Стоянов, Lucid App
6 от най-популярните Machine Learning алгоритми – приложения и възможности

Share This