Христо Томов е един от съоснователите на Dreamix, а в момента управлява AI направлението в компанията. Част е от IT сектора в България вече повече от 15 години. Преди събитието Adversarial attacks on machine learning systems решихме да си поговорим с него за това как решава най-сложните проблеми и какво препоръчва на всеки един програмист. Отговорите може да ви изненадат!

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

Още в гимназията се занимавахме с интерпретация на свободен текст, генетични алгоритми и други методи за Machine Learning, но по-сериозно започнах да се занимавам в първата година на университета. Седяхме будни по цяла нощ със съквартирантите ми (и бъдещи съдружници в Dreamix), за да изпробваме „само още една идея“. Интересно съвпадение е, че първият ми сериозен университетски курс, свързан с Machine Learning и AI, се водеше от Траян Илиев, който говори за Fog Computing в друго събитие на DEV.BG този месец. Една от първите ни идеи при стартирането на Dreamix също беше свързана с машинно самообучение – лесна за вграждане препоръчваща система, откриваща предпочитанията на потребителите на база предишни техни оценки (това беше преди повече от 11 години, няколко години преди подобни системи да станат популярни и масови).

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

Най-интересният аспект за мен са неинтуитивните резултати. Всеки програмист има интуитивно усещане какво е постижимо, колко е трудно и какви ще са резултатите от дадена програма. При Machine Learning тази интуиция често се чупи – неща, които изглеждат далеч отвъд границата на постижимото, на практика се получават, наглед прости алгоритми създават сложно, интелигентно поведение. Има много чар в това.

Харесва ми и че Machine Learning е направление с рядко срещано съчетание от огромен потенциал и същевременно още много неща за откриване. За разлика от много други добре изучени дисциплини, тук големите пробиви тепърва предстоят. Самият Джофри Хинтън, който през 1986-та година публикува един от първите трудове в областта на back-propagation и оттогава е в основата на развитието на AI, в скорошно интервю заяви, че за съществен напредък оттук нататък ще са необходими съвсем нови методи, и че „бъдещето зависи от някой студент, който ще погледне с подозрение към всичко, правено досега“.

 Какво те мотивира в работата ти?

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

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

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

Как го разреши / разрешихте?

В застрахователната компания подходихме точно както казах по-горе – разделихме задачата на смислени подзадачи, идентифицирахме критични точки в системата, приложихме изпитани добри практики и доказани технологии, където имаше такива, както и оригинални решения – където проблемите бяха твърде специфични. Първо направихме от „трудния“ проблем „дълъг“, а след това със систематично влагане на достатъчно труд и внимание резултатът беше положителен. А за търсенето на елемент в масив – с това още се боря.

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

Имам два съвета към всички, които сега започват да се занимават с Machine Learning. Първият е по-конкретен: Опитайте да нагазите в дълбокото още отсега. Не се ограничавайте само до практическо прилагане на готови алгоритми, или просто интегриране на готово решение – опитайте да разберете как точно се случват нещата, да реализирате сами някои алгоритми, дори – о, ужас! – да разберете математиката зад тях. Не, че не може да се направи прилична кариера и само чрез прилагане на готови неща, но ако търсите истински големи успехи и удовлетворение – ще ви трябва по-дълбокото разбиране. И колкото по-рано разберете дали то ви е по вкуса – толкова по-добре.

Вторият ми съвет е по-общ. Той важи не само за Machine Learning, a за всяко направление в ИТ сферата (и може би за много извън нея). Не се ограничавайте само до това, което реално ви трябва, нито дори до само една област. Учете постоянно нови неща от всевъзможни сфери, дори да нямат нищо общо с настоящите ви задачи, или да не очаквате преки практически ползи от наученото. Ключовото е да се научите да учите, и да поддържате това умение. По възможност бързо, коректно и наслаждавайки се през цялото време на процеса. Научете как работи TCP/IP и как да си конфигурирате локалната мрежа, напишете мобилно приложение за любимата си платформа, опитайте нещо с Augmented Reality, логическо програмиране, или дори си пробвайте късмета с квантовите алгоритми, напишете Blockchain smart contract или малка игра с Unity. Не е необходимо да станете експерт по всичко, идеята не е да ви липсва фокус – ценното тук е да се сблъсквате постоянно със съвсем нови и различни концепции, и да свикнете бързо да нагаждате мисленето си към тях. Способността да учите бързо и да се адаптирате към новото е това, което ще ви задържи на върха в една толкова динамично променяща се сфера като Machine Learning.


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

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

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

Share This