Золоті медалісти Kaggle – про потрапляння в топ на змаганнях з ML та чому в Україні проблеми з машинним навчанням
Ігор Крашений та Денис Саква наприкінці 2018 року здобули золото, увійшовши в десятку на змаганні Kaggle, платформи для людей, які цікавляться аналізом даних, машинним навчанням, прогнозуванням і суміжними напрямками. У ньому брали участь понад 3000 команд з усього світу. При цьому понад місяць українці трималися на другому місці.
Ігореві — 29 років, він Senior Research Engineer в компанії Ciklum. Закінчив КПІ за спеціальністю «Фізична та біомедична електроніка», а також був аспірантом університету в іспанській Гранаді.
Його напарнику по команді Денису — 42. Закінчивши економічну кібернетику у Запоріжжі, він пішов вчитися за спеціальністю «Public Policy» у місті Рочестер, США. Сьогодні працює старшим аналітиком інвестиційної компанії Dragon Capital.
Призовий фонд цьогоріч для першого місця складав 100 тисяч доларів. Хоча українська команда не отримала грошової винагороди, проте здобула статус майстрів Kaggle, а також досвід. В інтерв’ю для DOU Денис Саква та Ігор Крашений розповіли про шлях до топ-10 на Kaggle, чому в Україні складно з machine learning та кому воно потрібне.
Денис (зліва) та Ігор (справа) на Data Fest Kyiv 2017, де вони й познайомилися
— Ви не вперше брали участь у Kaggle. З чого усе почалось цього разу?
Денис Саква: Змагання тривають три місяці. Тому неможливо передбачити, як розвиватимуться події. В Kaggle вперше я взяв участь три роки тому у напрямі структурованих, тобто табличних, даних. Моє хобі — обробка зображень. Зрештою, з часом я перейшов на графічні дані.
На Kaggle є загальний рейтинг гравців — від новачка до гранд-майстра. Я вже мав бронзові, срібні медалі. Мені до майстра не вистачало одного золота. Пофартило, що найбільш інтенсивна частина змагань припала на мою відпустку. Я мав можливість приділити цьому більше уваги. При роботі з такими даними важливий комп’ютерний зір. Тобто дивитись на картинку, одразу читаючи її та підбираючи варіанти вирішення завдання.
Ігор Крашений: У мене схожа ситуація. Бувало, що закінчував у тридцятці, тобто не вистачало зовсім трохи до золота. А почалося все спонтанно. Познайомилися з Денисом на одній із лекцій. А коли побачили один одного у рейтингу змагання, подумали: чому б не об’єднатися? Списались, слово за слово — так і пішло.
Більш правильно казати, що ми отримали золоту медаль, а не перемогли. Оскільки платформа стала гуглівською, сюди вливають багато капіталу. Отримати золото зараз та п’ять років тому — це не одне й те ж саме. Сьогодні дуже багато досвідчених та серйозних учасників. Вони натреновані, мають готові рішення, під які потрібно просто підставити дані і завдання вирішуватиметься. В Ciklum я займаюся якраз deep learning. Такі змагання дозволяють прокачати себе в неробочий час. У сейсмологічних фотографій, які дають на Kaggle, зовсім інша природа на відміну від зображень з фотокамер. Інший сенс та специфічне оброблення.
Один з плюсів таких завдань — ти можеш подивитись на дані й зрозуміти, наскільки твоя модель відповідає реальності.
— Що вам вдалося зробити?
Саква: Легше сказати, чого ми не зробили. Наше завдання було — знайти сіль. Точніше знайти грань, де вона закінчується і починається порода. Сіль впливає на буріння. Під солевими лінзами може знаходитись газ, нафта. Це важливе завдання з точки зору пошуку корисних копалин. І так, вибірка у чотири тисячі картинок. Ми мали невеличкі картинки 100×100 пікселів з сейсмічними даними. Наприклад, їде машина, її двигун видає певні звуки, які проходять в ґрунт і перетинають різні матеріали — глину та гравій. Між цими шарами з’являється звуковий відголосок, який ловлять мікрофони. За допомогою нього можна отримати дані про структуру ґрунту пошарово у часі.
Крашений: Як працює Kaggle? Є тренувальна вибірка, є тестова. Тренувальна — розмічена. Ми знаємо, що там є і де воно знаходиться. В тестовій — не знаємо. Щоб отримати свій результат в підсумковій таблиці, ми готуємо певне вирішення, яке потім дає можливість згенерувати розмітку, подібну до тренувальної частини, — у тестовій. Ми відправляємо це на платформу, там оцінюють і дають нам проміжні бали, які відображаються в загальній публічній турнірній таблиці.
У нас була сейсмічна картинка, на якій були присутня як сіль, так і інша геологічна порода. Кожному пікселю у нас відповідав 0 або 1, тобто немає солі або вона є. Другий набір картинок — без розмітки. Наше завдання полягало якраз у тому, щоб зробити їхню розмітку і зазначити, в якому саме місці є сіль, а в якому немає. Ми зіштовхнулись з тим, що у нас була базова модель, яка дозволяє отримувати певний результат з визначення солі. А як отримати на 10% кращу модель — було складно й незрозуміло.
Саква: Наша модель передбачає, умовно, що в цьому пікселі є сіль, в наступному її нема, а в третьому знову є. Логічно передбачити, що сіль йде через усі три пікселі.
Крашений: Це актуальна тема і для Китаю, де часто пишуть наукові статті на тему розпізнавання облич в густонаселених місцях. Проте моделі не завжди справляються зі своїм завданням. Зараз також розвиваються машини на автопілоті. Є проблема густорозміщених об’єктів, наприклад, дерева, білборди, знаки. Їх треба знаходити й аналізувати. І одні знання, і другі можна використати у зовсім іншій галузі.
— Який у вас був найкращий результат під час конкурсу?
Крашений: Друге місце. На третьому ми були близько півтора місяця. За три тижні до кінця потроху почали сповзати. До багатьох команд підключились важковаговики, тобто ті, хто цим займаються професійно. У великих корпораціях є посади. Щоб на них потрапити, велику перевагу дає звання гранд-майстра з Kaggle. Якщо в компанії є такий співробітник — це велика промоція для неї. Наприклад, є така компанія з аналізу, як Н2О. У них лише одна вимога на посаду data scientist — мастер чи гранд-мастер на Kaggle.
— Що давалось найважче?
Саква: Нейронні мережі настільки добре вчаться, що можуть це робити навіть буквально на смітті. У мене на змаганнях був момент, коли я давав нейронці 15% сміття, тобто брудні дані, які давали нам організатори. Частину з них потрібно було викинути, адже моделі без них краще вчились. А вона все одно вчилась і працювала, хоча, звісно, не так добре, якби я давав їй правильні дані. Але сам процес тренування — довгий, тобто від доби і більше.
Проблема в тому, що мережа не говорить тобі, що дані неправильні. Тобто неможливо дізнатись, зробив ти помилку чи ні. А коли ти не бачиш покращення свого результату, то думаєш: це тому що неправильні дані чи просто мережа довго вчиться? Якщо вона не вчиться, можна змінювати імплементацію, налагоджувати доданий фрагмент коду, змінити крок навчання або ж взагалі змінити алгоритм навчання. Будь-які параметри можуть вести бо будь-яких результатів. До того ж, якщо ти робиш експеримент двічі й хочеш отримати однаковий результат — це неможливо.
Крашений: Коли помилка в коді, тобі пише: друже, так робити не можна. А тут буває, що все доводиться перероблювати, бо помилку не вдається так просто локалізувати.
Ігор Крашений розповідає про їхнє рішення із сегментації машин на першому тренуванні з ML
Саква: В останній день за кілька годин за завершення турніру, ми піднялись аж на четверте місце в рейтингу. Інші учасники почали робити щось, що дозволяло їм покращити свій результат. Ми тренували, але бачили, що в загальному рейтингу падаємо і наша робота нічого не дає. А конкуренція дуже велика. Різниця між першими п’ятьма місцями дуже мізерна. Деякі учасники навіть кидали в публічний досвід свої ідеї та напрацювання, щоб ними усі користувались, аби збільшити конкуренцію і шанси усіх.
Крашений: Ми навіть почали думати, як витрачатимемо гроші (сміється). В останній день змагання ми побудували обробку на основі сусідніх зображень. Виявилось, що деякі зображення з тренувальної вибірки та тестової можливо об’єднати в мозаїку і на основі цього побудувати евристики для покращення результатів. Але, як виявилось, це давало покращення тільки на публічній частині даних. На приватній такий трюк нам нічого не давав, оскільки компонентів мозаїк там не було.
— Як цей досвід вплинув на вас?
Крашений: Алгоритми роботи в команді дуже відрізняються від того, як ти працюєш самостійно. Якщо сам, то маєш усю інформацію, знаєш, як, коли і що використовував. Усе в голові. Натомість у команді з’являється багато нових факторів. Довелось підлаштовуватись.
— Наприклад?
Саква: Як обмінюватись даними. Ми спочатку навіть передбачення тримали в різних форматах. Мої займали кілька десятків гігабайтів, а Ігореві — близько 70 МБ. Є таке поняття, як локальна валідація, тобто перехресна. Тобто коли модель будується на одних даних, а передбачення роблять на іншому наборі даних. Далі йде перевірка того, наскільки твоя модель добре працює на даних, яких ця модель ще не бачила. І щось тут неможливо було валідувати, оскільки різні формати.
Крашений: Найголовніше — це швидко ітеруватись. Тут є два складника: залізо для навчання (наприклад, мій домашній ПК має 4 відеокарти та процессор з 12 ядрами) та швидко генерувати ідеї та їх випробовувати, а для цього — читати найновіші наукові статті та мати змогу їх випробовувати. У моєму рішенні, наприклад, були використані ідеї з 4 статей 2018 року, а на момент початку конкурсу найсвіжіший з них було кілька місяців.
— Скільки років ви в професії?
Крашений: Я почав цим займатися ще в Іспанії, тобто з 2013 року, куди я поїхав писати дисертацію. В останній рік магістратури я потихеньку почав вникати в картинки — двовимірні, тривимірні, багатоканальні. А deep learning почав займатись нещодавно, три роки тому на роботі в Ciklum.
Саква: Мене цікавили речі, які пов’язані безпосередньо з роботою. Наприклад, як покращити аналіз часових рядів, прогнозування абощо. Поступово вийшов на безпосередньо machine learning. Прийшов кілька курсів, перестрибнув на deep learning. Хоча це зовсім не те, чим я займаюсь на роботі. Machine learning — це для мене хобі.
— Які б порадили курси та літературу для тих, хто хоче глибше вникнути в тему?
Крашений: Курс cs231n Андрія Карпати, теперішнього голови Tesla АІ. Коли він його розробив, це був просто вибух у цій тусовці. Він побудований на дуже якісних матеріалах і дозволив демократизувати цю тему. Також є чудова книга «Deep Learning» Ієна Гудфелоу. Вона є своєрідною збіркою найбільш знакових статей за останні роки у галузі плюс база з лінійної алгебри, яка необхідна для розуміння матеріалу. Також є гарна книга «Глубокое обучение. Погружение в мир нейронных сетей» Сергія Ніколенка. Вона дуже доступно написана.
Саква: Також є сайт fast.ai Джеремі Ховарда, колишнього директор Kaggle. Він сам дослідник-практик machine і deep learning, який зробив курс про те, як швидко увійти в тему звичайним програмістам, які знають лише мову програмування.
Денис та Ігор на тренуванні з ML
— В Україні складно з deep learning...
Крашений: Так, спеціалістів мало, а сам ринок доволі монополізований великими компаніями, які скуповують професіоналів.
— Проблема університетів?
Крашений: Зараз багато людей хочуть працювати в ІТ лише заради грошей. Вони не розуміють, навіщо їм вчитися в університеті, бо є тримісячні курси. Проте машинному навчанню потрібні фундаментальні знання, й курсів для розуміння цієї роботи — мало. Пройшов ти курс Ендрю Енга, Карпати, а що далі? Чимало студентів намагаються потрапити в цю сферу через QA, Beck-end.
Є розробники, а є інженери. І між ними є велика різниця. Девелопер не будує мости, це робота інженера, він робить щось нове. Натомість розробник робить щось з того, що вже існує. Для deep learning якраз треба інженерів, науковців. Звісно, ти будуєш все з тих самих блоків: нейронних мереж, алгоритмів машинного навчання, але їх потрібно так тюнити, що це стає інженерною роботою. Це складний процес.
Саква: Інша проблема — це взаємодія ринку з навчальними закладами. Я працюю в промисловості і скажу, що майже ніхто не користується алгоритми машинного навчання. Фірми на це неорієнтовані, за винятком, наприклад, «Розетки».
— Як щодо грошей?
Саква: У нас дешева праця. Легше посадити 10 людей, дивитися вручну на цю всю сейсмічність, ніж наймати фірму, яка буде будувати рішення на довгострокову перспективу. Але це дорожче. Ось чому в нас ще є кондуктори та контролери. Дешевше платити бабці три тисячі гривень на місяць, ніж вкладати в незрозуміло що. Та і коли воно гроші принесе? Можливо, вони і не вірять, що це настане.
Стратегічне планування скасували. Якщо планують щось на рік-два — це дуже сміливі люди. Ми живемо від виборів до виборів. Хіба за винятком компаній, які живуть в більш-менш стабільних умовах, наприклад, оператори МТС, Vodafone, Київстар, Life або ж інші сайти, які чогось прагнуть у житті.
Водночас у нас залишаються великі промислові холдинги, для яких це питання може бути не настільки актуальне. Для них актуальніша ціна сталі, вугілля. Там займаються більш тактичними питаннями, ніж чимось, на їхню думку, абстрактним з незрозумілими результатами в майбутньому. Адже інвестувати потрібно навіть не в обладнання, а в дані.
Крашений: Ще одна проблема — освіта. Багато людей намагаються отримати саме диплом, а не знання. І найгірше — на це є попит. Зазвичай, у таких людей в голові пережиток Радянського Союзу, коли батьки говорили: «Іди в університет, а то будеш двірником чи в армію тебе заберуть». Або: «Якщо не вийдеш заміж до 25 років, то будеш старою дівою і тебе вже ніхто не візьме». Немає конкуренції за знання.
Наприклад, в Цюриху є Федеральна вища технічна школа (ETH). Це один з найкращих університетів у світі. З ним пов’язані понад 20 Нобелівських лауреатів. Google звідти скуповує випускників і тримає там один з найбільших своїх офісів після Маунтін-В’ю. Там працює майже чотири тисячі людей. Компанія може собі це дозволити, адже рівень освіти в університеті відповідає її потребам. А у нас? Ви бачили компанії, які приходять в університет й читають свої курси? Це дуже незначний відсоток.
Саква: У машинного навчання дуже велике майбутнє у сфері медицини. Воно може зробити високорівневу медицину доступною для країн третього світу, до яких, на жаль, відноситься Україна. Передусім це діагностика. Рання діагностика дозволяє вирішити купу проблем, пов’язаних і з раком, хворобою Альцгеймера та інших.
Крашений: В Україні навіть не діагностують хворобу Альцгеймера. Я з цим зіштовхнувся безпосередньо, коли писав дисертацію і збирав дані таких хворих. В Україні зазвичай говорять, що це старість. На захисті у мене запитали: «А чому у вас дані з Канади і США, а не наші?». І це хороше питання, пов’язане з обладнанням та фахівцями. У нас навіть немає державних програм з підтримки таких хворих. Зрештою, я запитав присутніх на захисті, скільки потрібно часу, щоб знайти таких пацієнтів в Україні і обробити їхні дані. Ніхто не відповів.
Хвороба Альцгеймера — лише один з багатьох прикладів підміни статистики медичних захворювань. Якщо людина мала грип і померла, найімовірніше, напишуть, що це щось серцево-судинне. Останнім часом ми навіть маємо суперечки щодо щеплень. Такого немає у просунутому світі. Діагностика хвороб за допомогою deep learning для таких країн, як наша, може дати недорогий і дуже швидкий результат.
Саква: До того ж, наприклад, щодо легеневих захворювань — вже є готові розмічені дані — тут пневмонія, а тут збільшене серце, ось тут рак. У таких випадках комп’ютер може визначати ймовірність захворювання набагато достовірніше, ніж досвідчені лікарі. Багато медичних навчальних установ мають великі бази даних, до яких дають доступ усім охочим, але не в комерційних цілях. Можна в такому випадку для початку зробити якийсь прототип моделі, а потім зібрати інвестиції. Але головне — бажання бачити трохи далі, ніж на рік вперед.
— У вас не було бажання поїхати з України?
Крашений: Технічно це не так складно, тим більше в цій сфері є багато пропозицій. Але дуже багато програмістів їдуть за кордоні і згодом повертаються, хоча зарплату там пропонують на 30% чи 50% більше. Але в чому проблема? Там витрати в рази більші, ніж ця надбавка. Тут навіть коли отримуєш в два рази менше, ти себе все одно почуваєш дуже комфортно і можеш собі багато чого дозволити.
Чимало програмістів їдуть у Сан-Франциско, Кремнієву долину абощо. Спочатку ти отримуватимеш там близько 120 тисяч доларів на рік. Для тої місцевості — це мізер. Ти будеш жити в собачій будці. Є й інший бік проблеми. Громадяни, які народилися в тих містах і не є програмістами, почуваються у складній ситуації. Кажуть, мовляв, ми тут все життя прожили, але не можемо дозволити собі нормально існувати. До прикладу, мій знайомий працює в компанії Lyft — це один з аналогів Uber. Він знімає здоровенну квартиру з трьома друзями. За неї вони платять 15 тисяч доларів на місяць. Це дуже багато.
Водночас я розумію людей, які погоджуються на невисоку зарплату і виїжджають. Це виклик самому собі і вихід із зони комфорту. І це круто. Я прожив рік в іспанській Гранаді, мені там дуже подобалося. Тим не менш, працювати там складно. Культура така: сонце, ти постійно розслаблений, о другій-третій дня вже хочеться спати. Виходиш на двір — спека, як в пеклі. І загалом життя дуже стабільне та спокійне. Так я і дисертацію написав.
— Коли варто їхати?
Саква: Коли молодий, не маєш сім’ї і тебе нічого не стримує.
— Які плани на майбутнє?
Саква: Я б дуже хотів почати застосовувати deep learning у своїй роботі, тобто причепити це до фондових ринків, змін вартості акцій тощо. У фондових ринках низьке співвідношення сигнал-шум. Але, на жаль, поки я не можу цього робити.
Крашений: Я б хотів більше займатися наукою і писати наукові статті в спеціалізовані журнали з machine learning, брати участь у конференціях, вчитися. Зараз я беру чиюсь роботу, мінімально покращую її, доводжу до робочого стану, який би комусь щось приносив. Мені хотілося б робити своє, наукоємне з користю для людей. Але на це не вистачає часу. Проте все ще попереду.