Що таке алгоритми і чому вони завдають людям незручності?

«Алгоритм» — це слово, яке часто використовується. Але коли ми будуємо розмови навколо алгоритмів YouTube або Facebook, про що ми насправді говоримо? Що таке алгоритми, і чому люди так багато скаржаться на них?

Алгоритми – це інструкції для вирішення проблем

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

Програмування не є гламурною роботою, але це основа всього комп’ютерного програмного забезпечення, від Microsoft Office до автоматичних викликів. І навіть якщо ваші знання з програмування ґрунтуються виключно на поганих фільмах 90-х і нестандартних новинах, вам, ймовірно, не потрібно, щоб хтось пояснював вам, що робить програміст. Програміст пише код для комп’ютера, і комп’ютер слідує інструкціям цього коду для виконання завдань або вирішення проблем.

Що ж, у світі інформатики алгоритм — це просто химерне слово для коду. Будь-який набір інструкцій, який повідомляє комп’ютеру, як розв’язувати задачу, є алгоритмом, навіть якщо завдання дуже легке. Коли ви вмикаєте комп’ютер, він дотримується набору інструкцій «як увімкнути». Це працює алгоритм. Коли комп’ютер NASA використовує необроблені дані радіохвиль, щоб зробити фотографію космосу, це також працює алгоритм.

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

Але ось що: сьогодні слово «алгоритм», як правило, зарезервовано для деяких дуже конкретних технічних розмов. Ви не чуєте, як люди говорять про алгоритми «базової математики» чи алгоритми «інструменту для графіті MS Paint». Натомість ви чуєте, як користувачі Instagram скаржаться на алгоритми пропозицій друзів, або групи конфіденційності, які критикують алгоритми збору даних Facebook.

Якщо «алгоритм» — це загальний термін для обчислювальних інструкцій, то чому ми використовуємо його майже виключно для опису заплутаних, магічних та злих аспектів цифрового світу?

Більшість людей використовують «алгоритми» і «машинне навчання» як взаємозамінні

У минулому програмісти та поп-культура називали більшість обчислювальних інструкцій «кодом». Це, здебільшого, залишається актуальним і сьогодні. Машинне навчання — це велика хмарна область обчислень, де ми зазвичай використовуємо слово «алгоритм» замість «код». Це, зрозуміло, спричинило плутанину та занепокоєння навколо слова «алгоритм».

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

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

Звісно, ​​машинне навчання — це не все чудово. Назва «машинне навчання» звучить досить моторошно, щоб деяким людям було незручно, а деякі популярні способи використання машинного навчання є етично сумнівними. Алгоритми, які Facebook використовує для пошуку даних або користувачів у мережі, є невтішним прикладом машинного навчання.

У пресі ви почуєте про «алгоритм Google» для ранжування результатів пошуку, «алгоритм YouTube» для рекомендації відео та «алгоритм Facebook», щоб визначити, які дописи ви бачите у своїй хронології. Все це є предметом суперечок і дискусій.

Чому алгоритми суперечливі

Довге ділення — це знайомий (серед багатьох інших) алгоритм ділення чисел. Просто це здійснюють школярі замість комп’ютерів. Ваш процесор Intel використовує зовсім інший алгоритм, коли він ділить числа, але результати однакові.

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

Але інші програми машинного навчання не мають переваги від «правильної» відповіді. Тому алгоритми стали постійним предметом розмови в ЗМІ.

Алгоритм сортування списку за алфавітом – це лише спосіб виконання визначеного завдання. Але алгоритм, подібний до Google, щоб якимось чином «ранжувати найкращі веб-сайти для пошуку» або алгоритм YouTube для «рекомендувати найкраще відео», набагато розпливчастіший і не виконує визначеного завдання. Люди можуть сперечатися, чи дає цей алгоритм ті результати, які він має, і люди будуть мати різні думки з цього приводу. Але з нашим прикладом сортування за алфавітом кожен може погодитися, що список в кінцевому підсумку відсортований в алфавітному порядку. Немає суперечок.

Як ми маємо використовувати слово «алгоритм?»

Алгоритми є основою будь-якого програмного забезпечення. Без алгоритмів у вас не було б телефону чи комп’ютера, і ви, ймовірно, читали б цю статтю на аркуші паперу (насправді, ви б її взагалі не читали).

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

Чи варто починати використовувати слово «алгоритм», щоб описати навіть найтривіальніші фрагменти комп’ютерного коду? Напевно, ні, оскільки не всі зрозуміють, що ви маєте на увазі. Мова завжди змінюється, і вона завжди змінюється з поважної причини. Людям потрібне слово, щоб описати заплутаний, непрозорий, а іноді й сумнівний світ машинного навчання, і наразі цим словом стає «алгоритм».

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

Джерела: Шифер, Вікіпедія, GeeksforGeeks