Володар машин. Ставимо завдання машинному навчанню

Цю статтю створено у співавторстві з Анастасією Білоус.

У попередніх статтях («Знайомство з моделями» й «Перша модель») ми описали перші, невпевнені кроки нашого героя Колі, який розв’язував завдання, поставлене його науковим керівником: оцінити кількість нескладених екзаменів на літній сесії. Коля мав дані успішності студентів за попередні роки й намагався написати функцію, яка передбачала б, чи складе цей студент кожен зі своїх екзаменів, аби порахувати загальну кількість нескладених іспитів. Спочатку для цієї функції він намагався придумати формулу, у якій би враховувалися всі його дані. Згодом, потрапивши в «погану компанію», він спробував машинне навчання (МН).

Проаналізуймо інший, можливий, хід розвитку подій з огляду на переваги МН для конкретного завдання, а тоді подивімося на МН крізь призму бізнесу й розгляньмо типи проблем, до яких його варто «прикручувати», а за яких умов доцільніше навчатися самотужки.

Варіанти

Якими варіантами оперував Коля для розв’язання поставленого ним завдання?

Примітка. Власне завдання, у цьому контексті, ми розуміємо як даність і як те, що не можна поміняти. У реальному житті ми завжди рекомендуємо спершу розібратися в бізнесі, аби зрозуміти, що можна змінити, а що — ні, оскільки це може кардинально вплинути на вимоги до рішення. У цій статті ми сфокусувалися на МН і тому сприймаємо поставлене завдання як фінальне.

Розгляньмо деякі з простих і доступних варіантів:

  • Узяти відсоток нескладених екзаменів за попередній рік.
  • Узяти відсоток нескладених екзаменів за кілька попередніх років і спрогнозувати його на наступний.
  • Порахувати статистику по школах, де студенти навчалися за попередньою успішністю, соціоекономічним статусом тощо, та ускладнити відсоток нескладених екзаменів формулою з коефіцієнтами, аби вона враховувала цю інформацію.

За стабільність

Перші два підходи сфокусовані на проблемі безпосередньо: передбачити єдине число — кількість (або відсоток) нескладених екзаменів. Відштовхуючись від попередніх років, отримуємо досить непогану апроксимацію, яка може справдитися цьогоріч. У багатьох випадках такого рішення достатньо. Запитання до читачів: «Яким чином ми можемо оцінити ймовірну похибку підходу?»

Недолік вищезазначених підходів — чимало умовностей, які впливають на успіх на екзаменах або змінюються. Наприклад, студенти з року в рік змінюються, у деяких випадках вони можуть вибирати різні курси, а власне курси, як і їхня кількість, також можуть змінюватися з року в рік.

Касти

Інтуїтивно ми розуміємо, що є студенти, які складуть більшість екзаменів, а є й ті, які більшість не складуть. Досвідчені викладачі уміють розрізняти їхні типи за виглядом і манерою говорити. Якби ми могли поділитися цим досвідом з моделлю, вона була б значно точніша й гнучкіша до змін. Описані попередньо підходи були б не дуже точні для груп студентів, серед яких половина — заучки, а інша половина добре вміє списувати.

Ми могли б поділити всіх студентів на касти, наприклад, випускники гімназій, медалісти, олімпіадники, спортсмени тощо, і кожній касті присвоїти свою ймовірність складання конкретного екзамену чи екзаменів загалом. Такий підхід уможливлює точніше враховувати склад груп студентів, і що більше виокремлено таких каст, то точнішим буде передбачення.

Недоліками підходу є те, що:

  • Один і той самий студент може належати одночасно до кількох каст. Наприклад, «з невеликого містечка» (імовірність складання 60%) і «срібний медаліст» (імовірність складання 95%), тому нам потрібно вміти ці ймовірності об’єднувати. Запитання до читачів: «Як ми можемо об’єднати ймовірності з двох і більше каст?»
  • Власне групи можуть згодом утворюватися, зникати або ж міняти свої характеристики (каста гравців у «Pokemon Go»).

Поліпшення

Одна з можливостей подальшого поліпшення нашого передбачення — це врахування того факту, що студенти, які зараз навчаються на 5-му курсі, торік були на 4-му, і їхня успішність за попередні роки може дуже допомогти уточненню їхньої успішності цього року. Запитання до читачів: «Чим цей підхід відрізняється від підходу № 1?»

У чому принципова різниця між описаним підходом з кастами й коефіцієнтами та МН, до якого дійшов Коля? Технічна різниця лише одна: нам не потрібно самим вигадувати касти й думати, у який спосіб комбінувати їхні ймовірності так, аби отримати результат. За нас це може зробити програма. Цю програму ми в попередніх статтях називали учителем, чи тренером (trainer).

Потенційно підібрані вручну касти і ймовірності до них можуть досягати точности машинних моделей, а в окремих випадках — і перевищувати її, проте затрати часу на ручний підхід можуть бути дуже значними. Відтак, застосувавши МН для бізнес-потреб, потрібно вміти передусім оцінювати витрати на кожен з них і тільки згодом вирішувати на користь одного з них.

Не моделями єдиними

Дуже уважний читач уже помітив, що запропоновані три підходи кардинально відрізняються своєю складністю. Могло бути неочевидним зі сказаного досі, що МН майже завжди буде складнішим і дорожчим, як порівняти з набором правил, статистикою чи програмним кодом, які реалізують евристику. Автори статті дотримуються тієї думки, що для кожної проблеми варто застосовувати найпростіший підхід, який би її розв’язав.

З огляду на вищевикладене, розглядаючи МН як можливе рішення, ми рекомендуємо виконати такі дві вправи:

  • Сформулювати, яка точність буде для певної проблеми достатньо точною.
  • Для кожного з можливих підходів вирішення, починаючи з найпростішого, оцінити точність, якої можливо досягнути.

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

Так само, як існує чимало «хороших» для МН проблем, які на практиці ще ніхто не розв’язував, існує достатньо прикладів, коли МН застосовували тоді, коли без нього можна було обійтися, або було застосовано складніший підхід МН, аніж було потрібно. Прикладом останнього може слугувати застосування рекурсивних нейронних мереж там, де дерева показали б співрозмірний результат.

Примітка. Співрозмірний результат не обов’язково означає однакову точність моделі.

Для того аби оцінити складнощі МН і його переваги над іншими доступними підходами, нам стане в пригоді високорівнева карта можливостей МН.

Стоп-сигнали

1. Для початку нам потрібно визначитися з проблемою, яку перед нами поставлено: чи це одиничне у своєму роді запитання, чи таких запитань буде багато. Приклад одиничного запитання: «Чи варто купувати цей будинок?» Приклад повторюваного запитання: «Чи є цей лист спамом, з розрахунку на те, що листів приходитиме багато й запитання повториться?»

Для одиничних або повторюваних запитань, які є лише в кількох екземплярах, МН, як правило, не дієве, тому потрібно звертатися до математики, статистики, телевізійних експертів або карт Таро.

Примітка. Завдання Колі також було, по суті, одиничне, адже він мав на меті визначити відсоток (не)складених іспитів, а ми перетворили це завдання на повторюване, коли взялися оцінювати успіх кожного студента на кожному екзамені з розрахунку на вищу точність такого підходу.

2. Іншою стоп-умовою застосування МН є наявність алгоритму розв’язку задачі — у такому разі потрібно скористатися алгоритмом. Винятком може бути NP-повна задача.

Наприклад, за потреби відсортувати масив: технічно можна спробувати побудувати рекурсивну нейронну мережу з пам’яттю, однак усе-таки доцільно скористатися наявною функцією сортування.

3. Якщо в бізнес-контексті ви не можете толерувати потенційні помилки моделі, то МН вам не допоможе. У цьому разі спробуйте переформулювати завдання так, щоби помилки моделі були допустимі.

Розділяй і володарюй

Ми можемо умовно розділити МН на дві великі частини:

  • Дослідження як розробка нових алгоритмів і підходів.
  • Застосування як використання готових алгоритмів і підходів до практичних завдань.

Ці частини можуть бути як тісно пов’язані між собою, коли певне практичне завдання не вирішили до цього й воно вимагає дослідження та розробки нових підходів, так і можуть бути сильно розмежовані. У запропонованій серії статей ми сфокусувалися виключно на застосуванні МН.

На практиці виокремлюємо такі класи застосування МН:

  • Навчання з учителем (Supervised learning). Ми маємо чимало прикладів і правильні, еталонні, відповіді до кожного з них. Наприклад, Коля мав історичні дані успішности студентів з минулих років.
  • Навчання без учителя (Unsupervised learning). Це знаходження сенсу в даних без наявности конкретної, правильної, відповіді. Інакше кажучи, ми не знаємо, що шукаємо, але дуже сильно хочемо знайти.
  • Навчання із закріпленням (Reinforcement learning). Це розширений варіант навчання з учителем, коли замість еталонних відповідей програма наприкінці отримує зворотний зв’язок. Наприклад, якщо ми вчимо машину грати в шахи, оцінка кожного можливого ходу є надто затратною й не завжди правильною, але наприкінці гри дуже легко визначити виграш або програш алгоритму.
  • Перенесення навчання (Transfer learning). Навчаємо модель для однієї проблеми й використовуємо результат навчання для модифікації даних від іншої. Наприклад, фільтр, за допомогою якого ви робите селфі подібними до творінь Вінсента ван Гога та який домальовує заячі вуха у відеоконференції або змушує Обаму вимовляти ваші слова його ж голосом і з його мімікою.

Навчання з учителем: хто кого навчає

Спочатку кілька слів про навчання без учителя (Unsupervised learning). Якщо ви новачок у МН і хочете застосувати цей підхід, ми спочатку рекомендуємо напрацювати для себе або для свого бізнесу аналітику й відверто відповісти на запитання: «Ви б займалися цим, якби у вас були дані з еталонними відповідями?» Якщо ваша відповідь «ні», тоді не марнуйте свій час :)

Навчання з учителем є найбільш застосованим типом МН для більшости бізнесів. Для його застосування вам потрібно:

  • Сформулювати одне або більше повторюваних запитань такого формату: (набір параметрів) —> правильна відповідь. Наприклад:
    • «Чи є текстове повідомлення спамом?» (string text) —> bool.
    • «У який спосіб користувач проведе оплату?» (string product, Date createdAt, double amount, ...) —> visa|mastercard|amex|discover|paypal.
    • «Яка кількість собак на цьому малюнку?» (byte[] bitmap) —> int32.
  • Підготувати набір даних з еталонними відповідями й розділити його на два або більше набори (у який спосіб це зробити, описано в «Знайомстві з моделями»).
  • Натренувати й оцінити модель (див.: «Створюємо першу модель»).

Важливим нюансом є те, що правильна відповідь повинна бути однією з:

  • або переліком наперед відомих значень (enum);
  • або булевим значенням (bool) — частковий випадок першого;
  • або числовим значенням (int/double).

Результат у якомусь складнішому форматі від моделі отримати значно важче, тому ми не заглиблюватимемося в цю тему.
Однак підійти до одних і тих самих даних з різними запитаннями, які відповідають вищеозначеним критеріям, доволі просто: на практиці це відбувається за допомогою тренувань кількох окремих моделей або однієї нейронної мережі з багатьма виходами (multi-head NN).

Вхідні параметри для моделі можуть бути значно складнішої структури, і часто їхній формат залежить від типів моделей тренерів. Ця тема (підготовка даних — Data Preparation) заслуговує на окрему статтю.

Як діяти, якщо вимоги бізнесу потребують моделі, яка здатна давати відповіді складнішого формату? Розглянемо кілька прикладів:

Приклад 1. Передбачення погоди в різних регіонах України.

Це речення можна переформулювати так: «Яка буде температура в / який буде відсоток хмарности / рівень опадів / сила вітру / напрямок вітру:

  • певні день / час;
  • певній географічній одиниці».

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

Примітка. Ми не стверджуємо, що МН — це найкращий спосіб передбачати погоду, тому й розглядаємо проблему як приклад формулювання завдань для МН.

Приклад 2. Оцінити обсяг глобального ринку мобільних аплікацій. Тут те саме, що і з Колею, й оцінками: розмежовуємо на регіони, передбачаємо для кожного окремо та додаємо.

Приклад 3. Чи є цей реферат плагіатом?

Важливим нюансом цього завдання є те, що воно схиляє нас покладатися на модель як на базу знань, а не на набір шаблонів чи правил. Завдання сформульовано в такий спосіб, що майже завжди потрібно його переписувати, аби від моделі не вимагалося нічого запам’ятовувати — визначати ступінь схожості двох рефератів (string doc1, string doc2) —> double.

Аналогічно маємо діяти й з прикладом про погоду: для визначення, чи є цей реферат плагіатом, нам потрібно взяти до уваги всі відомі реферати-кандидати, викликати модель для даного нам реферату-кандидата, а потім повернути послуговувані нами реферати, для яких ступінь схожості вищий за певний поріг.

Висновок

Найбільш застосованим у бізнесі типом МН є навчання з учителем. Обов’язковими умовами його успішного застосування є:

  1. Сформульоване, повторюване запитання, яке передбачає просту відповідь.
  2. Наявність значної кількости прикладів запитань-відповідей на поставлене запитання.
  3. Критерій допустимості помилок і план щодо їхніх вирішень.

Важливість формулювання проблеми МН легко недооцінити, проте воно є фундаментом успішного застосування МН, якщо під застосуванням мати на увазі повернення інвестицій (ROI), а не прикручування TensorFlow до вебсайту й AI до продукту.

Завдання для закріплення матеріалу

Сформулювати задачу для МН для таких проблем:

  • Дано текст; визначити, хто його автор.
  • Оцінити ризики звільнення конкретного працівника.
  • Передбачити ціну, за якою продавати авіаквиток, аби максимізувати прибуток.
  • Ставити діагноз хворому й виписувати рецепт на ліки.

У коментарях ми будемо раді побачити варіанти розв’язання цих завдань, а також уточнення щодо викладу тексту статті. Окрім того, пропонуйте й власні варіанти (з коментарями до них) потенційних проблем для МН: чому це завдання є хорошим чи поганим і як саме його сформулювати для моделі.


Попередні статті циклу:

Вступ до Machine Learning: знайомство з моделями
Вступ до Machine Learning: створюємо першу модель

Похожие статьи:
Меня зовут Александр Винницкий, я СТО и co-founder компаний Svitsoft и AdSaver. Этот материал будет полезен продуктовым командам, которые ищут...
На співбесідах із сініор-дизайнерами буває дивно, коли на питання про їхній дизайн-процес, я не чую у відповідь анічогісінько про...
Savvy IT School приглашает на курсы для начинающих программистов по специальности Java Developer. Для кого эта программа? Для начинающих...
Стоимость: 50$ в месяцДлительность: 3 месяца. Обучающий онлайн курс JuJa Core предназначен для начинающих изучать Java или людей...
Практический online-интенсив «Подготовка к Java Interview» 10.01.2016 Что будет 10 января 2016? Начинается практический online-интенсив...
Яндекс.Метрика