«Сподіваюся, це стане бонусом для роботодавців». Як українець переміг на першій Європейській олімпіаді зі штучного інтелекту
Випускник Маріупольського ліцею міста Києва Роман Мєламуд став абсолютним переможцем першої Європейської олімпіади зі штучного інтелекту у Румунії. Він здобув золоту медаль і показав найкращий результат серед 94 школярів із 24 країн.
Для Романа це не перший міжнародний успіх: навесні
Чому не завжди виграє той, хто має найкращі знання, які стратегії допомогли Роману здобути першість і як виглядає перша олімпіада зі штучного інтелекту — читайте в інтерв’ю.
Роман на олімпіаді в Румунії
«Я людина радше інтровертна, не можу сказати, що потребую багато спілкування»
Ніхто з моїх друзів або однокласників не займається олімпіадами, утім я готуюся до них навіть у вільний час. Одне з моїх хобі — розв’язувати задачі з архівів олімпіад просто заради задоволення. Особливо ціную задачі, де потрібна не завчена формула, а креативна модифікація стандартного алгоритму. Для мене це творчий процес. Я тренуюся без графіків та системи, але роблю це, як тільки випадає вільна хвилина. Коли потрібно видихнути й перезавантажитися, я гуляю з собакою.
Я сам із Одеси, до великої війни навчався у Рішельєвському ліцеї з поглибленим вивченням математики. Після вторгнення ми сім’єю переїхали до Польщі, у Краків, а ліцей змінив умови навчання: для тих, хто відвідує навчання онлайн, можлива тільки стандартна програма загальноосвітньої школи. У новинах ми з мамою дізналися про Маріупольський ліцей у Києві, де можна було вчитися онлайн з поглибленою математикою, тож перейшов туди. Цьогоріч закінчив навчання.
Дистанційний формат вплинув на мене радше добре, бо заощадив час: не треба було їхати до школи й назад. Я людина радше інтровертна, не можу сказати, що потребую багато спілкування. Та й по шкільних предметах виконував просто необхідний мінімум, навчання не забирало аж так багато часу. Найбільше уваги приділяв математиці й фізиці, бо вони мені подобаються. Саме їх я обрав для складання НМТ. Теорію знав добре, залишилося повправлятися на пробних тестах.
Я міг зосередитися на найважливішому для себе.
Програмуванням я захопився давно. Проходив деякі курси веброзробки, HTML і CSS, дивився в ютубі уроки. Одним із моїх проєктів на курсі HTML і CSS став сайт із купою простих математичних ігор. Я зробив акцент на тому, щоб використати буквально кожну річ, про яку прочитав у підручнику з CSS. Коли побачив, як створюють інтерфейси сайтів, зацікавився, як працюють складніші сайти, з бекендом. Я вивчав також Python.
Основи я засвоїв доволі добре, знайшов курс Python Advanced в одній з комп’ютерних шкіл, куди треба було пройти вступний тест — щонайменше на вісім із 15 балів. Я склав його на 14. Мені тоді було десять років, я був єдиною дитиною у групі для дорослих. На першому занятті вони трохи здивувалися, але далі нормально реагували.
Послідовно розвʼязую задачі з кібербезпеки
На всеукраїнську олімпіаду з інформатики я вперше зареєструвався дев’ятикласником. Просто з цікавості: чому б не спробувати?
Після моєї першої всеукраїнської олімпіади з інформатики у 2024 році з не дуже гарним результатом (розв’язав замало задач) я збагнув, що не знаю, як ефективно тренуватися перед олімпіадами, тож шукав тренера. Бо якби результат був добрим, я б собі вирішив: «Безкоштовні медалі, клас!». І продовжував би сам.
З Валентином Мельником ми вже почали займатися систематично влітку
Я й так хотів займатися програмуванням, незалежно від того, підтримує мене хтось зовні чи ні
Ще до перших олімпіад програмування було просто моїм хобі. Я навчився робити сайти, думав про те, що хочу працювати в цій сфері. Крім того, вже кілька років як я цікавився кібербезпекою. Знайшов сайт зі змаганнями PicoCTF. Там я просто послідовно розв’язував задачі з кібербезпеки. І врешті-решт розв’язав достатньо, щоб у
Також ще до того, як почати брати участь в олімпіадах з інформатики, я зацікавився штучним інтелектом. Мені чи то купили, чи то десь завантажили книжку з бібліотеки TensorFlow. Математику, яка там використовувалась, я тоді ще не дуже розумів, тому займався переважно з точки зору розробки застосунків — написання коду. А потім уже знайшов онлайн-запис курсу Стенфорда з машинного навчання. Цей курс був саме про математичні основи машинного навчання. Я спробував це дивитись, але небагато зрозумів. Тому зайшов на сайт Khan Academy й пройшов там курси з математики, яка була потрібна: матаналіз, теорія ймовірності.

Як перестати хвилюватися і стати чемпіоном. Олімпіада з ШІ
Навесні
Третій етап проходив одночасно з відбором на Балканську міжнародну олімпіаду з інформатики. На відборі було два тури, перерва, потім ще два тури. У тих, хто брав участь в обох олімпіадах, вийшло два тури інформатики, потім олімпіада зі штучного інтелекту, потім ще два тури інформатики. І на останньому етапі ШI-олімпіади було вже три повноцінні задачі — приблизно як на інформатиці.
Перша і найлегша — реалізувати складну функцію на бібліотеці PyTorch. Якщо просто намагатися писати її циклами на Python, це зайняло б надто багато часу. Тож треба було або вміти читати документацію, або знати синтаксис PyTorch. Друга задача — з табличними даними, куди додали умову, що результат не повинен залежати від перестановки колонок. Треба було подумати, як натренувати модель з урахуванням цього. І ще одна задача — на розпізнавання цифр із картинок. Там теж трохи модифікували стандартну задачу: серед прикладів для тренування не було цифри дев’ять. Потрібно було натренувати модель так, щоб в одній підзадачі вона розпізнавала цифри
Європейська олімпіада зі штучного інтелекту відбувалася в румунському місті Клуж-Напоці. У нас було два дні змагань, на кожен день припадало по три задачі. Самі змагання пройшли на диво спокійно. Я просто сидів, розв’язував задачі і навіть особливо не хвилювався.
Проходило все в університеті — кілька кімнат поруч. Комусь поставили стаціонарні комп’ютери, комусь ноутбуки, розсадили по місцях. Очно було 56 людей, всі інші — онлайн. Оскільки Україна є повноцінним членом цієї олімпіади, тож її представники мають брати участь офлайн.
Онлайн-учасники вважаються неофіційними
Медалі вони отримують, але на самі межі медалей вони не впливають. Я був тільки за поїхати, бо люблю подорожувати.
Головне в задачах було не знати якісь складні алгоритми, а саме вміти думати: якось спростити задачу, зрозуміти, що взагалі треба зробити, що може принести часткові бали. І ця навичка, мені здається, переноситься на ШІ з інформатики. Наприклад, тут треба було натренувати модель, яка розв’язує якусь задачу. Потім вимірюється точність моделі, і оцінювання відбувається буквально за такою ідеєю: якщо менше ніж 60% — нуль балів, більше ніж 90% — сто балів. А якщо між 60 і 90, бали зростають лінійно.
На інформатиці натомість є конкретні вимоги для блоків, для часткових розвʼязків. І щоб отримати бали за блок, потрібно повністю написати розвʼязок під задані обмеження.
Наприклад, перша задача першого дня була про модель, яка визначає настрій текстового відгуку про фільм — позитивний чи негативний. У першій підзадачі треба було знайти до 12 слів, які найбільше впливають на цей результат: без яких модель почала б сумніватися у своєму висновку, а якщо їх залишити — результат не зміниться.
Нам одразу дали готову функцію, яка показує, наскільки одне конкретне слово впливає на результат моделі. Наше завдання було — придумати, як за допомогою цієї функції знайти ті кілька слів, які впливають найбільше.
У другій підзадачі треба було знайти вже два незалежних набори таких слів. Дехто, напевно, почав вигадувати складні алгоритми, а я знайшов простіший шлях: запускав ту саму функцію кілька разів поспіль, щоразу забираючи слово з найбільшим впливом. Коли перший набір ставав достатньо хорошим, я просто продовжував тим самим способом набирати слова, але вже для другого набору. Тобто умова задачі звучала набагато страшніше, ніж сам розв’язок.
Ще одна задача — теж зі страшною на вигляд умовою: дано спостереження за позиціями різних планет і супутників у зоряній системі, і треба зрозуміти, що навколо чого обертається.
Ключова здогадка: якщо відняти позицію однієї планети від іншої — і перша дійсно обертається навколо другої, — вийде еліпс. А рівняння еліпса можна переписати так, щоб воно стало лінійним. Тоді підходить звичайна лінійна модель: дивишся, наскільки добре вона лягає на отримані дані, і так розумієш, яка планета навколо якої обертається.
На цій олімпіаді бали було видно одразу — і свої, і чужі. Коли я писав код і відправляв розвʼязок, за кілька секунд він тестувався, і я бачив результат. Бали інших теж оновлювались у реальному часі, але приблизно — на основі лише частини тестів, тож фінальні результати могли ще змінитися, плюс-мінус 10 балів. Я бачив, що йду попереду, але особливо на цьому не зациклювався — більше дивився, на яких задачах іншим вдається набрати бали, щоб і собі докласти зусиль там само.
Я знав, що добре написав, тож був трохи внутрішньо налаштований на хороший результат
Хоча ще перед самою олімпіадою розраховував на бронзу або максимум срібло. Я чітко йшов за продуманою стратегією — відправляв розвʼязки, що приносять часткові бали. Намагався не забувати думати над задачею перед тим, як писати щось повʼязане зі ШІ. А чому в інших не вийшло краще за мене, не знаю. Бо я впевнений, що в інших точно були кращі знання ШІ, ніж у мене, — принаймні в деяких людей. Можливо, у них були проблеми зі стратегією. Тобто значення має не тільки знання, а й певна поведінка, підхід до розв’язання задач.
Чим відрізняється олімпіада з програмування від аналогічного змагання з ШІ? На ШІ-олімпіаді дають сайти з документацією всіх бібліотек, які там використовуються. Плюс сам факт, що є ці бібліотеки, бо вони реалізують більшість алгоритмів, які потрібні. Тобто акцент саме на тому, щоб не писати ці алгоритми самому — якось модифікувати їх чи оптимізувати, щоб вони швидко працювали, — а на тому, щоб зрозуміти задачу і придумати, як застосувати до неї ШІ.
А на інформатиці, звичайно, ніяких сайтів з документацією недоступно, і треба писати все самому.

Для гарних результатів не обовʼязково розвʼязувати задачі на 100
Раніше хвилювання було для мене великою проблемою. Я міг витратити майже годину часу просто на думки про те, що в мене мало балів, що я не впораюся. Це заважало нормально думати про задачі і стало великою перепоною.
Щодо стратегії найбільше запам’ятав таку пораду: в IOI, якщо подивитися на статистику результатів попередніх років, то стабільні, хоча і не високі результати на кожній задачі часто в сумі дають вище рейтингове місце. Тобто для гарних результатів зовсім не обовʼязково розвʼязувати задачі на сто, можна просто виконати багато відносно простих часткових блоків.
Слід кожну задачу прочитати, три хвилини подумати, і зі всього, що придумав, одразу написати код. А далі — ще десять хвилин подумати і знову написати код. І коли це зроблено для всіх трьох задач, вже є гарне розуміння, над чим є сенс працювати далі.
Та хвилювання не відпускало. Я почав думати, чому воно виникає і як його можна подолати. Спочатку вирішив, що це через те, що мене відволікає шум. Почав використовувати беруші на олімпіадах. Виявилося, що шум — це не вся проблема. Тоді просто порадився з психологом, і це ще більше зменшило хвилювання. Можливо, мало значення й те, що з кожним наступним змаганням обстановка ставала звичнішою, а отже, викликала менше занепокоєння.
Шанс бути поміченим як інженер
Попри пережите хвилювання, олімпіади дали мені більше, ніж просто медалі. Я вже знаю, які теми мені буде цікаво вивчати в університеті. Це ШІ, або загальна Computer Science та інформатика, або кібербезпека. І звичайно ж, є ще купа студентських олімпіад, змагань.
Ще одна причина брати участь у якомога більшій кількості олімпіад — це бонус для роботодавців, шанс бути поміченим як інженер. Як конкретно це мені може знадобитися, я ще особливо не шукав. Але, сподіваюся, якось допоможе.
Я подався в декілька університетів, але, найімовірніше, вчитимуся у Познанській політехніці. Обрав бакалаврську програму з ШІ англійською. ШІ — мій пріоритет як дослідника зараз. Потім можна застосовувати ці знання на користь України.
Мені хотілося б вивчати ШІ саме з теоретичної точки зору: можливо, покращувати наявні методи навчання моделей. Розбиратися, чому моделі працюють і навчаються так, як вони працюють. А щодо практичного застосування — я ще сам у цьому не розібрався.