Слово “алгоритм” звучить повсюдно, особливо коли мова заходить про системи YouTube чи Facebook. Але що ж насправді ховається за цим терміном? І чому алгоритми викликають стільки нарікань?
Алгоритми: інструкції для розв’язання завдань
Сучасний світ наскрізь пронизаний комп’ютерними технологіями, хоча ми часто не до кінця розуміємо їхню роботу. Проте, є одна сфера, де кожен може осягнути базові принципи – це програмування.
Програмування, хоч і не є найгламурнішою професією, лежить в основі будь-якого програмного забезпечення, починаючи від Microsoft Office і закінчуючи системами автоматизованих дзвінків. Навіть якщо ваші знання про програмування ґрунтуються на стереотипах з фільмів 90-х, ви, скоріше за все, маєте уявлення про те, що роблять програмісти. Вони пишуть код для комп’ютерів, які потім виконують інструкції цього коду для розв’язання різних задач.
У світі інформатики “алгоритм” – це просто інший термін для коду. Будь-який набір інструкцій, який вказує комп’ютеру, як вирішити певну задачу, називається алгоритмом, навіть якщо ця задача є елементарною. Наприклад, процес увімкнення комп’ютера – це теж алгоритм. Так само, як і обробка даних радіохвиль космічним апаратом NASA для створення фотографій космосу.
Слово “алгоритм” можна використовувати для опису будь-якої послідовності дій, навіть поза межами комп’ютерних технологій. Ваш метод розкладання столових приборів у шухляді – це алгоритм. Так само, як і послідовність дій при митті рук.
Але сьогодні слово “алгоритм” найчастіше використовується в контексті конкретних технічних обговорень. Рідко хто каже про алгоритми “базової математики” чи алгоритми “інструменту для малювання MS Paint”. Натомість, ми чуємо, як користувачі Instagram скаржаться на алгоритми рекомендацій друзів або як групи захисту приватності критикують алгоритми збору даних Facebook.
Якщо “алгоритм” – це загальний термін для комп’ютерних інструкцій, то чому його використання обмежується описом складних, магічних і навіть “злих” аспектів цифрового світу?
“Алгоритми” та “машинне навчання”: взаємозамінні поняття?
Раніше програмісти та поп-культура називали більшість обчислювальних інструкцій “кодом”. Це, в основному, актуально й сьогодні. Однак, у сфері машинного навчання, ми частіше використовуємо слово “алгоритм” замість “код”. Саме це спричинило плутанину та занепокоєння навколо слова “алгоритм”.
Машинне навчання, хоч і існує вже досить давно, стало значною частиною цифрового світу відносно нещодавно, приблизно 15 років тому. Хоча концепція машинного навчання здається складною, її суть досить проста. Програмісти не можуть писати та тестувати окремий код для кожної ситуації, тому вони створюють код, здатний навчатися самостійно.
Уявіть це як більш практичну форму штучного інтелекту. Якщо ви постійно відмічаєте листи від свого керівника як спам, ваш поштовий клієнт почне автоматично відправляти всі його листи до відповідної папки. Подібним чином, Google використовує машинне навчання, щоб забезпечити релевантність результатів пошуку на YouTube, а Amazon використовує його для рекомендацій товарів.
Звісно, машинне навчання не є ідеальним. Сама назва звучить досить лякаюче, а деякі способи його використання викликають етичні питання. Алгоритми, які Facebook використовує для збору даних про користувачів, є яскравим прикладом цього.
У новинах ми часто чуємо про “алгоритм Google” для ранжування пошукової видачі, “алгоритм YouTube” для рекомендації відео або “алгоритм Facebook” для визначення того, що показується у вашій стрічці. Усі ці алгоритми є предметом постійних суперечок і дискусій.
Чому алгоритми викликають суперечки?
Ділення в стовпчик – це знайомий алгоритм ділення чисел, який школярі виконують вручну. Процесор Intel використовує зовсім інший алгоритм для ділення, але результат залишається однаковим.
Перетворення мовлення в текст зазвичай використовує машинне навчання, але ніхто не говорить про “алгоритм перетворення мовлення в текст”, оскільки існує об’єктивно правильна відповідь, яку кожна людина легко розпізнає. Нікого не цікавить, “як” комп’ютер зрозумів, що ви сказали, важливий лише правильний результат.
Але інші програми машинного навчання не мають “правильної” відповіді, що є предметом постійних обговорень у медіа.
Алгоритм сортування списку за алфавітом – це просто спосіб виконання чітко визначеного завдання. Але такі алгоритми, як “ранжування найкращих веб-сайтів для пошуку” від Google або “рекомендація найкращого відео” від YouTube, є набагато більш розмитими. Люди можуть сперечатися про те, чи дає алгоритм об’єктивні результати. Натомість, у випадку з сортуванням за алфавітом, всі погоджуються, що список відсортовано саме в алфавітному порядку.
Як нам слід використовувати слово “алгоритм”?
Алгоритми лежать в основі будь-якого програмного забезпечення. Без них у нас не було б ані телефонів, ані комп’ютерів. Можливо, ми б читали цю статтю на папері (хоча, насправді, ми б її взагалі не читали).
Проте, широка громадськість не використовує слово “алгоритм” як загальний термін для комп’ютерного коду. Насправді, більшість людей вважають, що існує різниця між комп’ютерним кодом та алгоритмом, хоча це не так. Через асоціацію слова “алгоритм” з машинним навчанням, його значення стало більш розмитим, але і більш конкретним.
Чи варто використовувати слово “алгоритм” для опису навіть найпростіших фрагментів коду? Мабуть, ні, оскільки не всі зрозуміють, що ви маєте на увазі. Мова постійно змінюється, і ці зміни відбуваються не просто так. Людям потрібне слово, щоб описати складний, непрозорий, а іноді і сумнівний світ машинного навчання, і наразі це слово – “алгоритм”.
З огляду на все це, важливо пам’ятати, що алгоритм, і машинне навчання зокрема, – це просто набір коду, написаного для розв’язання задач. Це не щось магічне, а більш складна версія програмного забезпечення, з яким ми вже знайомі.
Джерела: Шифер, Вікіпедія, GeeksforGeeks