Роздуми

Про AI та профорієнтацію

В процесі вивчення AI (як ML, так і AGI) зробив такі спостереження, які, можливо, будуть цікаві й іншим.

0. Абревіатурою AI далі позначатимемо те, що зараз називають штучним інтелектом, але це не є інтелект. Це просто автоматизація розв'язання певних задач за допомогою певних машинних алгоритмів прийняття рішень — дерева рішень, нейронні мережі та деякі інші алгоритми. Всі ці алгоритми побудовані на даних та вимагають для своєї роботи та розвитку великого обсягу однотипних даних. Правильніше було б це назвати Data Science, але йтиметься не про science, а про її практичне застосування. Тому AI. АЛЕ це ніяк не є інтелектом в людському розумінні.

1. Чому Python такий популярний в AI? Відповідь досить несподівана. Python як мова програмування для великих продуктів не годиться. Але його вигодою є досить швидке опанування. Такий собі BASIC сучасності. Так от, ML'ем займаються не програмісти, а data scientists, які можуть вміти, а можуть і не вміти програмувати. Для них Python зручніший в опануванні. Те, що всі говорять "на Python бібліотек більше" - це не є проблемою, оскільки в тому ж .NET є і ML.NET, і обгортки для TensorFlow, Keras тощо. Тобто, якщо комусь потрібно реалізувати ML в .NET - проблем жодних. Чи можна звертатися з .NET до Python? Можна спробувати використати IronPython або через pythonnet. Тобто, якщо хочеться бібліотек на Python, то рішення існують.

2. Курси, що вчать ML'у, викладають примітивні алгоритми, "цеглинки". Нюанс полягає в тому, що всі ці цеглинки вже давно реалізовано у вищезгаданих бібліотеках, і вчити(ся) слід не алгоритмам, а тому, коли які алгоритми застосовувати. Ну не буде сучасний data scientist писати свою регресію чи ще якийсь примітив — це не лише зайва робота (все вже написано до нас), але таку функцію потім не використаєш разом з готовими цеглинками. Це як написати свій SHA256 чи там AES128 - ну написав, але куди його потім, якщо всі бібліотеки з шифрування мають і використовують своє.

3. Наслідок з п.2: сучасний Data Scientist —  це вже не програмування взагалі, а складання кубиків (low code та no code технології) і побудова та оптимізація data pipelines. Це те ж, що називається MLOps.

4. Існує два напрямки роботи (і розвитку) AI-спеціаліста та AI-бізнесу. Перший — це описане в п.3 будівництво data pipelines. Це чудова високооплачувана і потрібна ринку робота. Але це не програмування. Якщо вам подобаються "дані" як сутність, то вам сподобається і така робота. Ця робота і цей бізнес — про дані. Що більше даних, то краще. Тут немає якихось геніальних ідей, новітніх технологій (те, на чому базується ML, —  це не rocket science, там проста математика і прості перетворення даних), хитрих винаходів і подібних проривів. Побудувати бізнес тут можна, якщо ви бачите дані і бачите, як їх зібрати і застосувати для оптимізації якогось бізнес-процесу. Повторюся, даних має бути дуже-дуже багато; лише це дає відрив від конкурентів.

Другий напрямок роботи — це застосування ідей та можливостей ML в розв'язанні вузькогалузевих задач. AI-роботи та AI-бізнеси в цьому напрямку виростають з вузьких наукових та технологічних потреб. Тут даних може не бути багато (або взагалі не бути). Але тут можливі прориви при розв'язанні науково-технологічних задач. Для цього напрямку слід спершу бути спеціалістом в предметній області — хімії, фізиці, біології (або мати такого спеціаліста), а тоді шукати, які ідеї та принципи ML та AI можна застосувати в роботі цього спеціаліста.

Те, що між цими напрямками ("ми вміємо програмувати і хочемо це вміння застосувати в AI";), найчастіше є натягуванням сови на глобус та не несе якоїсь практичної бізнес-вигоди. Відповідно, ризики ведення бізнесу не перекриваються можливим економічним ефектом.

5. Чи можна ML та AI використати для задач X, Y, Z? Швидше за все, ні. Сучасний AI, побудований на великих потоках даних, не застосовується в умовах малої кількості даних або їхньої відсутності. Для цього потрібні інші науки (зокрема, AGI), які зараз, на жаль, відсунуто на задній план тому, що вони здебільшого не приносять прибутку в короткостроковому періоді (2-3 роки).