Як розпочати машинне навчання?

Ідея створення машин, які перевершують інтелект людини, виникла вже давно.

Однією з перших сфер, де інформатика спробувала змагатися з людським розумом, була гра в шахи. Багато хто вважав (або, можливо, вже не вважає?) шахи основним тестом інтелекту та креативності. Ще у 1960-70-х роках в інформатиці точилися суперечки.

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

Каспаров проти Deep Blue

Найбільш резонансною подією в протистоянні людини і машини став шаховий матч 1996 року між тодішнім чемпіоном світу Гаррі Каспаровим (якого багато хто називає найкращим шахістом в історії) та суперкомп’ютером Deep Blue, спеціально розробленим компанією IBM.

Коротко кажучи, Каспаров здобув переконливу перемогу в матчі 1996 року (4-2), але програв матч-реванш 1997 року (4,5-3,5). Ця поразка супроводжувалася суперечками і прямими звинуваченнями з боку Каспарова на адресу IBM у нечесній грі.

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

Сьогодні жоден гросмейстер не може перемогти сучасну шахову програму, навіть запущену на звичайному комп’ютері.

Що таке машинне навчання?

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

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

Фактично, машинне навчання полягає у наданні комп’ютеру величезних обсягів даних, щоб він міг навчатися на прикладах (спроба → помилка → порівняння → покращення), замість того, щоб покладатися на заздалегідь заданий код.

Застосування машинного навчання

Отже, якщо машинне навчання – це не магія і не призводить до створення термінаторів, то для чого воно потрібне?

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

Класифікація, як випливає з назви, означає правильне призначення об’єктів до певних категорій, а прогнозування – це намагання передбачити майбутні події на основі великого набору даних про минулі значення.

Ось кілька цікавих прикладів застосування машинного навчання:

Фільтрація спаму

Спам в електронній пошті – це поширена проблема, але спроби її вирішити можуть виявитися дуже складними. Як ідентифікувати спам? Чи це певні ключові слова? Чи можливо це стиль написання? Важко вигадати вичерпний перелік правил для програми.

Тому ми використовуємо машинне навчання. Ми показуємо системі мільйони спам-повідомлень та легітимних листів і дозволяємо їй самостійно виявляти спам. Саме завдяки цьому Gmail мав чудові спам-фільтри на початку 2000-х!

Рекомендації

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

Випадковість? Зовсім ні!

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

Чат-боти

Чи доводилося вам спілкуватися зі службою підтримки клієнтів, яка здавалася дивно роботизованою, але при цьому вміла вести цікаву розмову?

Отже, це машинне навчання «обробило» вас!

Навчання на діалогах і визначення відповідних реплік – це перспективна сфера застосування чат-ботів.

Видалення бур’янів

У сільському господарстві роботи з машинним навчанням використовуються для вибіркового обприскування бур’янів серед посівів.

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

Голосовий пошук

Голосова взаємодія з комп’ютерами перестала бути науковою фантастикою. Сьогодні у нас є цифрові помічники, такі як Alexa, Siri та Google Home, які можуть сприймати голосові команди і (майже!) правильно їх виконувати.

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

Медична діагностика

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

Це не означає, що лікарі скоро стануть непотрібними. Це означає, що якість медичного обслуговування значно покращиться, а вартість знизиться (якщо великі компанії не стануть на заваді!).

Це лише деякі приклади застосування машинного навчання. Сьогодні з’являються безпілотні автомобілі, боти для стратегічних ігор, роботи для складання одягу, системи для розгадування капчі та розфарбовування чорно-білих фотографій.

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

Існує два основних типи машинного навчання.

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

Який приклад захопливого та непередбачуваного застосування машинного навчання без учителя?

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

Якщо у вас є потужний комп’ютер, ви можете створити найкращий у світі ігровий штучний інтелект за лічені години!

Наступні зображення коротко ілюструють ці ідеї (джерело: Medium):

Ресурси для початку роботи з машинним навчанням

Отже, ви вже зацікавилися машинним навчанням і хочете дізнатися, як воно допоможе вам змінити світ. З чого ж почати?

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

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

#1. Програмування

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

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

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

#2. Think Stats

Коли ви опануєте основи Python, я раджу вам прочитати дві чудові книги. Вони на 100% безкоштовні та доступні для завантаження у форматі PDF. Think Stats та Think Bayes – це сучасні класичні книги, які має прочитати кожен фахівець з машинного навчання.

#3. Udemy

На цьому етапі я б рекомендував вам пройти кілька курсів на платформі Udemy. Інтерактивний, самостійний формат навчання допоможе вам швидко розібратися в матеріалі і набути впевненості.

Обов’язково ознайомтеся з попереднім переглядом курсу, відгуками (особливо негативними!) та загальним враженням від курсу, перш ніж почати.

Ви також можете знайти чудові навчальні посібники на YouTube. Sentdex – це один з таких каналів, де завжди весело, але його підхід може бути складним для новачків.

#4. Андрій Нг

Курс Ендрю Нга на платформі Coursera є, мабуть, найпопулярнішим навчальним ресурсом для вивчення основ машинного навчання.

Хоча він використовує мову програмування R, він є неперевершеним у викладенні теми та наданні зрозумілих пояснень. Завдяки цьому курсу Ендрю Нг набув майже божественного статусу в колах фахівців з машинного навчання. Люди ставляться до нього як до джерела найвищої мудрості (і це не жарт!).

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

#5. Udacity

Станьте інженером з машинного навчання, пройшовши курс на Udacity.

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

Висновок

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

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

Бажаю успіхів! 🙂