ТИ МАШИНА І Я МАШИНА
За гучним словом «алгоритм» ховається складна робота з його налаштування та навчання. Розумна машина здатна виконувати різноманітні типи завдань і покращити людське життя. Наприклад, з'ясувати, як ціна будинку буде змінюватися залежно від району розташування, чи спрогнозувати ціну на ланос або навіть розпізнати шахрая.
У другому матеріалі спільно з Abto Software ми розповімо, які завдання можуть виконувати машини та яких цілей за допомогою них можна досягти.
Написав: Дмитро Чумаченко
Картки намалювала: Дарія Манцола
За підтримки
Частина 2
У матеріалі Forbes, який з'явився у лютому 2018 року, машинне навчання розмістили на другій позиції в рейтингу найвпливовіших технологій найближчого майбутнього. CEO Google Сундар Пічаї (Sundar Pichai) каже, що штучний інтелект і, зокрема, машинне навчання, відіграють центральну роль у стратегії розвитку компанії. Більшість напрямів бізнесу Amazon об'єднує штучний інтелект: від алгоритмів рекомендацій до автоматизованих роботів, які керують складами. Очільник дослідницької групи прикладного машинного навчання Facebook Жоаквін Квінанеро Кандела стверджує, що сьогодні Facebook не може існувати без машинного навчання. У першому матеріалі міні-курсу лекцій про машинне навчання спільно з Abto Software ми вже розглянули загальні поняття, а сьогодні поговоримо про те, які існують типи завдань та як їх можна вирішувати, використовуючи алгоритми машинного навчання.
Види машинного навчання:

Вирішувати завдання можна за допомогою різних методів. Усі методи діляться на три основних групи.

1. Навчання з учителем (Supervised Learning)
У цьому випадку машина має «наставника» – учителя, який говорить їй, як правильно вчинити. Вчитель заздалегідь відмічає всі потрібні дані, щоб машина навчалася на конкретних прикладах. Так він показує, що на цій світлині автомобіль, на іншій – велосипед.
Вчителем не завжди буває програміст, який стоїть над машиною і контролює кожну її дію. У термінах машинного навчання вчитель – це саме втручання людини в процес обробки інформації. З учителем машина вчиться набагато краще й швидше, тому для вирішення практичних завдань такі алгоритми використовують частіше. До алгоритмів навчання з учителем належать такі типи задач, як регресія і класифікація.

2. Навчання без вчителя (Unsupervised Learning)
У навчанні без учителя машині просто вивалюють купу фотографій на стіл і кажуть: «розберися, що тут до чого». Дані в такому разі не розмічені, і машина сама намагається знайти закономірності. На практиці такі алгоритми використовують рідше, зазвичай як методи аналізу та підготовки даних, а не як основний алгоритм, що вирішує конкретні завдання за допомогою цих даних. У реальності добре розмічені дані – це велика рідкість, тому для їх розмітки зазвичай використовують або спеціальні сервіси, у яких реальні люди з країн з дешевою робочою силою (зазвичай Індії або Китаю) за мінімальну плату вручну класифікують дані, або спеціальні алгоритми для розмітки (які, в свою чергу, можуть також використовувати машинне навчання).

1. Навчання з вчителем

2. Навчання без вчителя

3. Навчання з підкріпленням

Великі корпорації, які мають величезний потік користувачів, можуть використовувати для розмітки своїх клієнтів. Наприклад, Google і його anticaptcha: знаходячи автобуси на фото, ви не тільки підтверджуєте, що «ви не робот», а й навчаєте нейронну мережу тому, який вигляд має автобус. У випадках, коли розмітка даних неможлива, вдаються до методів навчання без учителя. До таких алгоритмів належать задачі кластеризації, зменшення розмірності і пошуку правил.
3. Навчання з підкріпленням (Reinforcement Learning)
Навчання з підкріпленням менше схоже на попередні види, бо нагадує швидше той штучний інтелект, яким нас намагаються вразити у фантастичних фільмах. Такі алгоритми використовують не там, де потрібно проаналізувати дані, а там, де потрібно вижити в реальному середовищі.

Середовищем може бути що завгодно: як реальний світ, так і симуляція, і навіть комп'ютерна гра. Наприклад, існують роботи, які навчилися грати в Dota2 просто поринувши в середовище, або автопілот Tesla, який у симуляції вчиться не збивати пішоходів.
Знання про довкілля таким роботам корисні, але знати весь світ їм не обов'язково. Завдання таких машин – не розрахувати всі ходи, а мінімізувати помилки або максимізувати вигоду. Навчання з підкріпленням дуже схоже на реальне навчання людей – машину карають за помилки і заохочують за правильні вчинки.

Пам'ятаєте алгоритм AlphaGo, створений кілька років тому, який обіграв найкращих гравців в світі в го? Число комбінацій у грі перевищує кількість атомів у Всесвіті, тому всі комбінації машині запам'ятати неможливо. AlphaGo просто обирала найкращий вихід із ситуації, що склалася, і зробила це краще за людину.

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



Типи задач машинного навчання:

1. Регресія
Регресію дуже полюбляють аналітики та фінансисти, тому що вона може показати залежності між різними факторами процесу. Наприклад, як на ціну будинку впливає той чи інший район розташування? Або що більше впливає на вартість авто: рік випуску чи пробіг? Машина намагається побудувати криву на графіку, яка відображає залежність. Але, на відміну від людини з крейдою та дошкою, робить вона це з застосуванням математики.
Моделі регресійного аналізу зазвичай використовують, щоб показати або передбачити взаємозв'язок між процесом та тим, що цей процес може спровокувати. Тут варто пам'ятати, що така кореляція – не завжди причинність, тобто навіть пряма у простій лінійній регресії, яка добре відображає залежності між даними, може не дати конкретної відповіді про причинно-наслідковий зв'язок. Саме тому регресійний аналіз не використовують для інтерпретації причинно-наслідкових зв'язків між змінними. Однак такий аналіз може вказати, як і наскільки змінні пов'язані одна з одною, а визначення причин і наслідків – це предмет глибших досліджень за допомогою інших алгоритмів та методів.

Графік регресії може показати позитивний зв'язок, негативний зв'язок або відсутність зв'язку процесу з тими чи іншими факторами. Якщо лінія регресії є горизонтальною або вертикальною – між змінними ніякого зв'язку немає. Тобто, якщо повернутися до прикладу з авто та пробігом, де на одній осі буде ціна авто, а на іншій – його пробіг, горизонтальна або вертикальна пряма регресії буде означати, що пробіг ніяк не впливає на вартість авто. Якщо зі зростанням x зростає y (нижня частина графіка перетинає вісь, а верхня прагне в поле графіка) – залежність позитивна, тобто ціна буде рости зі збільшенням пробігу, якщо навпаки – негативна, тобто що більший пробіг, то менша ціна.

Алгоритмів регресійного аналізу існує багато, і використовують їх дуже давно. Наприклад, метод найменших квадратів, який ми розглянемо детально у наступній частині міні-курсу, був уперше опублікований для передбачення руху планет навколо Сонця Жозефом-Луї Лаґранжем у 1805 році й Карлом Фрідріхом Ґауссом у 1809-му. Сам термін «регресія» був уперше вжитий наприкінці XIX століття Френсісом Гальтоном, який виявив, що діти батьків із високим або низьким зростом часто не успадковують їхній зріст, і назвав цей феномен «регресією до посередності».
2. Класифікація
Алгоритми класифікації дозволяють розділити об'єкти відповідно до зазначених заздалегідь класів, наприклад розділити кішок і собак, музику за жанром, шкарпетки за кольорами. Сьогодні алгоритми класифікації використовують для великої кількості завдань: визначення мови, спам-фільтрів, визначення шахрайства (коли зловмисник сплачує за послуги вкраденими коштами), пошуку схожих документів тощо.

Щоб класифікація спрацювала, потрібно мати розмічені дані з категоріями і ознаками, які машина буде вчитися визначати. Залежно від певних ознак алгоритм визначає, до якого з класів можна віднести об'єкт.
Найпростішим із технічного погляду завданням класифікації є бінарна класифікація – коли об'єкти потрібно розподілити між двома класами. Наприклад, на вході є транспортні засоби, та ми знаємо, що це або автомобілі, або велосипеди. Машина за певними алгоритмами розподіляє кожен з транспортних засобів до одного з визначених класів (авто або велосипед). У багатокласовій класифікації кількість класів може досягати декількох тисяч, і рішення стає значно складнішим. Також бувають класи, що перетинаються, – у таких випадках об'єкт може одночасно належати до декількох класів, і нечіткі класи – коли належність до того чи іншого класу визначається ступенем (зазвичай від 0 до 1).
Інженери R&D компанії Abto Software розробили технологію, яка автоматично визначає й «пробиває» продукти на касі в режимі реального часу за допомогою лише однієї камери, яка встановлена над рухомою стрічкою.
3. Кластеризація
Алгоритми кластеризації дозволяють розділити об'єкти у випадку, коли класи заздалегідь не зазначені, а кластери мають бути сформовані за схожістю елементів. Алгоритми кластеризації використовують у завданнях сегментації ринку, для аналізу нових даних, стиснення зображень. Машина визначає схожі ознаки у об'єктів та групує їх у кластери. Кількість кластерів, як із класами, може бути визначена дослідником або самою машиною. Також дослідник може задати ознаки, за якими потрібно розділити вибірку, або машина визначить їх сама.
Кількість кластерів можна задати вручну або довірити це алгоритму. Теоретично, об'єкти, які перебувають в одному і тому самому кластері, повинні мати схожі властивості і/або особливості, тоді як об'єкти в різних групах повинні мати дуже різні властивості і/або особливості.
4. Прогнозування
Сьогодні вигадування сценаріїв майбутнього більше не звучить як сюжет фантастичної книги, а впало на плечі математиків і фахівців із машинного навчання. Прогностичних моделей існує безліч, і всі вони вирішують завдання передбачення часових рядів – знаходження майбутніх значень залежно від часу. Алгоритм при побудові прогнозу включає в себе наступні елементи:

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

б) Визначення наявності тренду і його типу. Визначення періодичності в послідовності.

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


г) Аналіз послідовності на предмет необхідності попередньої обробки. Усі дані повинні мати однакові характеристики й не відрізнятися один від одного. Наприклад, якщо ми прогнозуємо ціну нових «ланосів» та маємо дані з 2000 по 2017 роки по всій Україні, а за 2018-й тільки по Харківській області, то використовувати їх разом ми не можемо: потрібно або відокремити дані по Харківській області з 2000 по 2017 роки, або знайти дані по всій країні за 2018 рік.

ґ) Вибір моделі залежно від даних (стаціонарні чи ні) та бажаного результату (короткотерміновий чи довготерміновий прогноз тощо).


д) Визначення параметрів моделі. Прогноз на підставі обраної моделі.

е) Оцінка точності прогнозування моделі. Для цього прогноз зазвичай будують для вже відомих даних і порівнюють їх. Наприклад, у нас є дані про ціни на пальне з 2000 по 2018 роки. Для оцінки точності моделі ми будуємо прогноз цін на 2018 рік на підставі даних з 2000 по 2017 роки й порівнюємо отримані дані з реальними.

є) Аналіз похибки обраної моделі.

ж) Визначення адекватності обраної моделі і, якщо результат виявиться незадовільним (недостовірним чи не достатньо точним), її заміна і повернення до попередніх пунктів.

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

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






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

6. Виявлення аномалій
Мета – виявити аномальні відхилення від стандартних випадків. На перший погляд, завдання дуже схоже на завдання класифікації, проте воно має істотну відмінність: аномалії – явище рідкісне, тому вибірок, на яких можна навчити машинну модель або дуже мало, або немає зовсім. Саме тому методи класифікації тут не працюють. Наприклад, клієнт банку багато років знімає зі свого рахунку приблизно однакові суми з приблизно однаковою періодичністю, перебуваючи в Україні. Та одного разу приходить запит на підтвердження транзакції з цього рахунку на велику суму, проте людина, яка робить запит, перебуває в Індії. Така транзакція, ймовірно, буде вважатися аномалією й потребуватиме додаткової перевірки. На практиці аномалії допомагають виявити шахрайство в банку, медичні проблеми або помилки в тексті.
7. Пошук правил
Завдання пошуку правил шукає закономірності в потоці даних. Наприклад, якщо в супермаркеті між полицею з пивом і касою поставити стійку з горішками, з високою ймовірністю кількість проданих горішків зросте. Але тут все просто – горішки часто купують із пивом, а коли товарів багато, виявлення таких правил може істотно збільшити прибуток. Ще більш істотним є передбачення поведінки користувача на інтернет-ресурсах. За яким товаром він повернеться? Які товари можна продати «навздогін» до вже заданого? На які розділи сайту направити користувача, щоб він залишив у вас більше грошей? На ці та інші питання може відповісти машинне навчання, коли алгоритм проаналізує інших користувачів, їхній досвід та поведінку.
Сьогодні ми розглянули типи завдань, які можна вирішувати за допомогою машинного навчання. Стежте за оновленнями, щоб дізнатися, що за алгоритми потрібно застосовувати залежно від завдання та які практичні виклики стоять перед штучним інтелектом і машинним навчанням.
Abto Software – українська ІТ компанія, що з 2007 року створює унікальні програмні рішення для лідерів у галузі інтернету, електронного урядування, енергетики, медицини, будівництва та безпеки. Візія компанії – стати партнером NASA та розвивати українських комп'ютерних інженерів. З 2015 року у Abto Software функціонує R&D відділ, який спеціалізується на Artificial Intelligence, Machine Learning та Computer Vision проектах і розробляє прототипи власних продуктів. Щороку компанія організовує безкоштовний літній навчальний інтенсив з Artificial Intelligence & Computer Vision.