Дракони ІТ-галузі: Загадковий світ ШІ

Дракони ІТ-галузі: Загадковий світ ШІ

Вступ

Останнім часом ведеться стільки розмов на тему штучного інтелекту та нейронних мереж, що вже, мабуть, кожний собака знає, що Chat GPT – це круто, і що машини невдовзі почнуть замінювати людей, а там вже і до повстання роботів недалеко. Але, як на мене, поточна ситуація чимось нагадує історію із драконами: більшість їх в очі не бачили, а ті, що бачили, від страху примножили можливості тих ящірок так, що зі звичайні комодські варани перетворились на гігантських, летючих, кровожерливих гадюк, що дихають полум’ям.

Ось і виходить, що реальну картину бачать лише одиниці, які, може, і намагались донести правду до суспільства, але їх, зазвичай, ніхто не слухає, бо чоловік подруги свекрухи/ двоюрідна сестра брата кума/ син маминої подруги (оберіть потрібне або запропонуйте свій варіант) знають краще. Тому у цій статті ми розглянемо структуру ШІ-галузі та розберемо її основні поняття, щоб у вас, шановні читачі, не залишилось жодних «білих плям» у цій темі.

Цікавий факт:

Реальним прототипом драконів заведено вважати мегаланію (лат. Varanus priscus), родина варанів – найбільшу з відомих науці наземних ящірок. ЇЇ довжина за різними оцінками варіювала від 4.5 до 9 м, а маса від 331 до 2200 кг. Мегаланія мала огрядне тіло, потужні кінцівки та великий череп з невеликим гребенем між очима, і щелепами, сповненими зубчастими зубами, що нагадують леза. Цей вид жив в Австралії, починаючи з 1.6 млн років тому і закінчуючи приблизно 40 тис. років тому і цілком міг дожити до зустрічі з людиною.

Частина 1: Знайомство з автором та розгляд основних понять

Перш за все, хотілося б сказати декілька слів про мої відносини із галуззю штучного інтелекту. Якщо опустити усі заїжджені на співбесідах фрази про потяг до технологій з самих пелюшок, то моя історія почалась трохи понад два роки тому, коли після школи я вступив до ХНУРЕ на спеціальність «Комп’ютерні науки», освітню програму «Штучний інтелект». Провчившись близько року, зрозумів, що шалено не вистачає практики, тому після проходження курсів, додаткової самоосвіти та декількох «проб пера» влаштувався на позицію QA Engineer до чарівної компанії 1WorldOnline R&D Center (Business Automatics), яка має цілу купу проєктів, пов’язаних як з ШІ в цілому, так і зокрема з нейронками: Kebeta.ai, AlphaGrail.ai, HIPSTO та інші.

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

Для початку розберемося з основними поняттями, які часто плутають «диванні експерти»: штучний інтелект (artificial Intelligence), машинне навчання (machine learning), нейронні мережі (neural networks) та глибоке навчання (deep learning). Для кращого сприйняття матеріалу пропоную подивитись на нижченаведену схему:

  • Штучний інтелект — назва всієї галузі яка займається створенням програм і систем, які здатні виконувати завдання, що зазвичай потребують людського інтелекту, таких як розпізнавання образів, прийняття рішень, мовленнєве розуміння і багато інших
  • Машинне навчання — це розділ штучного інтелекту, який вивчає розробку алгоритмів, які дають комп’ютерам можливість навчатися і покращувати свою продуктивність на основі даних, без явного програмування.
  • Нейромережі — це один із видів алгоритмів машинного навчання, які намагаються моделювати спосіб, яким працює людський мозок.
  • Глибоке навчання — це підгалузь машинного навчання, яка спеціалізується на використанні нейромереж з численними шарами для розв’язування завдань аналізу даних.

Цікавий факт:

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

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

  • сільське господарство – загальна галузь;
  • тваринництво – окремий розділ;
  • конярство – підрозділ;
  • спортивний – напрям;

Ось і все, навіть плутатись ніде! Але це було «взагалі по загалям», а нам треба детально та максимально точно. Ну, зі штучним інтелектом все ясно: дуже широка галузь, де роблять дуже розумні програми, щоб дарма людей не відривати, а ось із машинним навчанням вже складніше: якісь алгоритми, навчання комп’ютера (нащо йому, він і так розумний), програми без програмування і таке інше. Тут, як то кажуть, нахрапом не візьмеш, тому пропоную розглянути загальну ситуацію та суміжні поняття.

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

Якщо ми хочемо навчити машину, нам потрібні три речі: дані (data), ознаки (features) і алгоритми (algorithms):

  1. Дані. Якщо хочемо виявляти спам — потрібні приклади спам-листів, передбачати курси акцій — потрібна історія цін, дізнатися інтереси користувача — потрібні його лайки або пости. Даних потрібно якомога більше (десятки тисяч прикладів – це мінімум), тому на хороші набори даних (дата сети) завжди є великий попит.
  2. Ознаки.  Ми називаємо їх фічами (від англ. features), тобто індивідуальними характеристиками або властивостями даних, які використовуються для навчання та прийняття рішень. Якщо простіше, то машина повинна знати, на що їй конкретно дивитися. Наприклад, нам треба навчити машину знаходити котів, тоді довгий хвіст, лапки, вушка, муркотіння та полювання на гризунів будуть фічами.
  3. Алгоритми.  Зазвичай, одну й ту ж задачу майже завжди можна розв’язати різними методами, від вибору якого залежить точність і швидкість рішення. От цей метод і є алгоритмом, тобто спеціальним набором інструкцій, за допомогою яких комп’ютер зможе навчатися робити певні завдання без явного програмування.

Цікавий факт:

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

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

Виявляється, що при різних комбінаціях вищезгаданих компонентів можна отримати різний результат:

  • Дані + Ознаки = Data Science (Наука про дані): якщо у даних виділити певні ознаки, залежності та закономірності, то вони гарно піддаються аналізу, керуванню та зберіганню, чим і займається Data Science.
  • Дані + Алгоритми = Data Mining (Добування даних): якщо до даних додати певні набори інструкцій, то процес їх збирання гарно «ставиться на конвеєр», тобто може стати регулярним та закономірним, що і називається Data Mining.
  • Алгоритми + Ознаки = Classical Programming (Класичне програмування): якщо набори інструкцій представити таким чином, щоб комп’ютер їх зрозумів, то він зможе їх виконувати, що і має назву Programming.
  • Дані + Ознаки + Алгоритми = Machine Learning (Машинне навчання): якщо певні інструкції, представлені зрозумілою для комп’ютера мовою, застосувати на певних даних, то комп’ютер зможе ці дані обробляти та вчитись на них, що і зветься Machine Learning.

І знову ніде плутатись, але, про всяк випадок, пропоную знов застосувати схему до іншої галузі, наприклад, до кулінарії:

  • Інгредієнти + Рецепти = Кулінарія: Якщо ви використовуєте певні інгредієнти та дотримуєтесь рецепта, ви можете приготувати страву. Це є основною ідеєю кулінарії.
  • Інгредієнти + Техніки приготування = Професійне кухарство: Якщо до інгредієнтів додати вміння використовувати певні техніки приготування, ви зможете створити вишукані страви та стати професійним кухарем.
  • Техніки приготування + Рецепти = Домашня кулінарія: Якщо ви вивчите різні техніки приготування та застосуєте їх до різних рецептів, ви зможете приготувати різноманітні страви вдома.
  • Інгредієнти + Техніки приготування + Рецепти = Майстерність у кулінарії: Коли ви поєднуєте інгредієнти, вміння приготування і рецепти, ви стаєте не просто професійним кухарем, а майстром кулінарії, здатним творити унікальні й смачні страви.

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

Частина 2: Різновиди машинного навчання та довгоочікувані нейромережі

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

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

Почнемо із Класичного Навчання (Classical Machine Learning) і одразу зауважимо, що його можна розділити на дві основні категорії — навчання з вчителем і навчання без вчителя, англійською відомі як Supervised та Unsupervised Learning відповідно. У першому випадку, у машини є вчитель, який навчає її правильного розв’язання завдань, наприклад, вказуючи, яка тварина зображена на фото. У навчанні без учителя, машині просто подають набір фотографій та кажуть: “Знайди подібності між ними”. У цьому випадку дані не мають попереднього маркування, і машина самостійно намагається виявити закономірності. Очевидно, що навчання з учителем дозволяє машині навчатися швидше та точніше, отже, воно більш поширене на практиці. Завдання для класичного машинного навчання з учителем можна розділити на два типи:

  • Класифікація — розподіл об’єктів за заздалегідь відомою ознакою, наприклад, шкарпетки за кольорами, музику за жанрами або фрукти за однотипністю. У повсякденному житті застосовується у спам-фільтрах, визначенні мов, пошуку схожих документів.

  • Регресія — передбачення місця на числовій прямій, тобто знаходження будь-якої залежності числа від часу. У повсякденному житті застосовується для прогнозу вартості цінних паперів, аналізу попиту, обсягу продажів або навіть прогнозу погоди.

А завдання для класичного машинного навчання без учителя можна розділити на три типи:

  • Кластеризація — розподіл об’єктів за невідомою заздалегідь ознакою, тобто машина сама вирішує як краще. У повсякденному житті застосовується для сегментації ринку (типів покупців, лояльності), об’єднання близьких точок на карті, стиснення зображень.

  • Зменшення Розмірності (Узагальнення) – скорочення кількості ознак в даних з метою полегшення обробки та аналізу. У повсякденному житті застосовується для рекомендаційних систем, аналізу фейкових зображень, ризик-менеджменту.

  • Пошук правил (асоціація) – виявлення взаємозв’язків між різними елементами даних. У повсякденному житті застосовується для аналізу товарів, які купують разом, розташування товарів на полицях, прогнозу акцій і розпродажу.

Цікавий факт:

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

Перейдемо до Навчання з підкріпленням (Reinforcement Learning), неофіційне гасло якого свідчить: «Кинь робота в лабіринт і нехай шукає вихід», погодьтесь, це вже більше схоже на справжній штучний інтелект. Навчання з підкріпленням використовують там, де задача полягає не в аналізі даних, а у виживанні в якомусь середовищі. Середовище може бути будь-яким: відеогра, змодельований майданчик або навіть справжня проїзна частина. Знання про навколишній світ такому роботу можуть бути корисні, але лише для довідки. Не важливо скільки даних він збере, у нього все одно не вийде передбачити всі ситуації, тому його мета — мінімізувати помилки, а не передбачати всі ходи.

У реальному житті використовується для автопілотів автомобілів, ігор, автоматизованої торгівлі, управління ресурсами підприємств. Якщо хтось досі не зрозумів принцип реалізації навчання з підкріпленням, тоді нижченаведена ілюстрація розв’яже вашу проблему:

Ідемо далі до Ансамблевих методів (Ensemble Methods), які, до речі, є основними конкурентами нейронних мереж за ефективністю.  Основна ідея ансамблевих методів до знущання проста: виявляється, якщо взяти декілька не дуже ефективних методів навчання і навчити виправляти помилки один одного, якість такої системи буде набагато вище, ніж кожного з методів окремо. В теорії, ансамбль (збірник простіших методів) можна зробити як завгодно, хоч випадково нарізати у каструльку класифікатори та залити регресією, але тоді за результат відповідальність будете нести самі, тому є три перевірених способи робити ансамблі:

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

  • Бегінг: Навчаємо один алгоритм багато разів на випадкових вибірках з вихідних даних. В кінці усереднюємо відповіді. Дані в випадкових вибірках можуть повторюватися. На них ми навчаємо один і той же алгоритм кілька разів, а в кінці знаходимо відповідь простим голосуванням. Коли відкриваємо камеру на телефоні й бачимо, як вона окреслює обличчя людей в кадрі жовтими прямокутниками — це робота бекінгу.

  • Бустинг: Навчаємо алгоритми послідовно, кожен наступний приділяє особливу увагу тим випадкам, на яких помилився попередній. Як в бегінгу, ми робимо вибірки з вихідних даних, але тепер не зовсім випадково. У кожну нову вибірку ми беремо частину тих даних, на яких попередній алгоритм відпрацював неправильно. Тобто, так би мовити, донавчаємо новий алгоритм на помилках попереднього. На практиці бустинг застосовується для прогнозування ринкових трендів, цін акцій, ризику кредиту, виявлення шахрайства, аналізу зображень або обробки медичних даних.

І ось ми нарешті підійшли до напрямку Нейронних мереж (Neural Networks) та Глибокого навчання (Deep Leaning). Чомусь так сталось, що структуру та засади роботи нейромереж найчастіше пояснюють на прикладі роботи мозку, але, з моєї точки зору, це не зовсім коректно, оскільки будь-яка аналогія – це лише часткова схожість предметів порівняння і треба чітко розуміти її межі.

Так, будь-яка нейромережа — це набір нейронів і зв’язків між ними, і хоча терміни, начебто, схожі із людськими, але ШІ-нейрон – це звичайна функція з купою входів і одним виходом. Завдання функції-нейрона — взяти цифри зі своїх входів, виконати над ними функцію і віддати результат на вихід. Також функції-нейрони мають зв’язки — це канали, через які вони шлють один одному цифри.

Кожен зв’язок має свою вагу — її єдиний параметр, який можна умовно уявити як міцність зв’язку. Наприклад, коли через зв’язок з вагою 0,5 проходить число 10, воно перетворюється в 5. Сам нейрон не розбирається, що до нього прийшло і сумує все підряд — ось ваги й потрібні, щоб керувати на які входи нейрон повинен реагувати, а на які — ні. Простий приклад роботи функції-нейрона: знайти суму всіх цифр із входів, і якщо їх сума більше, наприклад, 10 – видати на вихід одиницю, інакше — нуль.

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

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

І ось через тисяч сто таких циклів «прогнали-перевірили-підкрутили» є надія, що ваги в мережі відкоригуються так, як би ми хотіли. Цей підхід називається «Метод зворотного поширення помилки», щоб його віднайти знадобилося двадцять років. Як тільки мережу нейронів побудовано і визначено значення ваг зв’язків (може і навмання), таку конструкцію заведено називати моделлю.

 Деякі нетерплячі читачі можуть поставити питання: «І що, оце підкручування ваг і називається навчання моделі?». Відповісти можна так: «Частково, так, але процес дещо складніший». Як ми вже казали раніше, процес машинного навчання потребує трьох складових: даних, ознак та алгоритму. В цьому випадку, алгоритм – це сукупність нейронів, тобто функцій, ознаки модель знайде сама або їй підкаже вчитель, а ось із даними тут трохи складніше, бо усі підготовлені дані (або набори даних) треба поділити на три купки, зазвичай, різних за розміром:

  • Тренувальна – використовується під час первинного навчання нейромереж. Ця купа – найбільша за обсягом, оскільки вона потрібна для активного «годування» нейромережі даними, під час якого іде підбір ваг зв’язків (саме ця частина навчання має назву «прогнали-перевірили-підкрутили»). Як тільки ми віднайшли потрібні значення ваг, переходимо на наступної купки.
  • Тестова – необхідна для перевірки точності навчання. Ця купа – друга за обсягом, оскільки використовується лише для перевірки тих навичок, які опанувала машина під час первинного навчання. Якщо кількість хибних рішень більша за припустиму (цю межу визначають заздалегідь), то починають розбиратись, на яких нейронах стався збій і машину відправляють на доробку.
  • Валідаційна – незалежний набір даних, що використовується для фінальної оцінки точності. Ця купа – найменша за розміром, але гірша за попередні. Процес валідації, як тематична контрольна робота: завдань не багато, але треба вирішити якомога більше. Результати взаємодії машини із даними опрацьовуються і, якщо точність рішень є нижчою за встановлений поріг, то тест вважають проваленим та знов відправляють на доробку.

Цікавий факт:

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

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

І хоча перші нейромережі віднайшли ще у минулому столітті, але виявилося, що для навчання мереж з великою кількістю шарів потрібне надпотужне обладнання, але десь десять років тому ситуація змінилась, бо з’явився метод Deep learning (Глибоке навчання). Його відмінність від класичних нейромереж полягала в нових методах навчання, які справлялися з великими розмірами мереж. Щобільше, навіть якщо нейромережа не має багато шарів, більшість фахівців все одно використовуватимуть саме методи глибокого навчання через їх зручність.

Існує безліч типів глибоких нейронних мереж, але я хотів би зупинитись на двох найбільш популярних:

1. Згорткові Нейромережі (Convolutional Neural Networks)

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

На вхід подається зображення, яке розділяється на певні ділянки, на яких обирається  лінія,  що домінує (горизонтальна [-], вертикальна [|] або одна з діагональних [/]). На виході ми отримаємо кілька масивів паличок, які, є простими ознаками наявності обрисів об’єктів на зображенні. Але це теж картинки, просто з паличок, тому ми знову можемо вибрати ділянки та подивитися, як ці палички поєднуються одна з одною. А потім ще і ще, і ще…

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

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

Дай нейромережі рибу – вона зможе визначати рибу до кінця життя

Дай нейромережі вудку – вона зможе визначати й вудку до кінця життя …

2. Рекурентні Нейромережі (Recurrent Neural Networks)

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

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

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

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

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

Ось і все, тепер ви, шановні читачі, володієте базовими знаннями про світ ШІ, яких цілком достатньо для того, щоб почати із ним взаємодіяти. Так, матеріал нелегкий, але і користь знань відповідна, тому, як то кажуть: «борітеся – поборете …»!

 Підсумок

У цій статті ми розглядали будову то основні поняття ШІ-світу. З початку мова йшла про загадкове поняття штучного інтелекту (згадаємо про драконів та варанів), а потім, трохи познайомившись з автором (категорія «щось тямить»), перейшли до знайомства з ШІ (назва всієї галузі), ML (розділ штучного інтелекту), Нейронними Мережами (один із видів алгоритмів машинного навчання) та Глибоким Навчанням (спеціалізація на використанні нейромереж з численними шарами), проводячи аналогії для кращого розуміння (загальна галузь – сільське господарство, окремий розділ – тваринництво, підрозділ – конярство, напрям – спортивний).

Далі говорили про базові поняття Машинного навчання («Як навчати комп’ютер?»): Дані (приклади інформації), Ознаки (куди дивиться машині), Алгоритми (спеціальний набір інструкцій) та їх комбінації (Дані + Ознаки = Data Science, Дані + Алгоритми = Data Mining, Алгоритми + Ознаки = Classical Programming, Дані + Ознаки + Алгоритми = Machine Learning), знов користуючись аналогіями (Інгредієнти + Рецепти = Кулінарія, Інгредієнти + Техніки приготування = Професійне кухарство, Техніки приготування + Рецепти = Домашня кулінарія, Інгредієнти + Техніки приготування + Рецепти = Майстерність у кулінарії).

Потім ми перейшли до розгляду всієї галузі ML, детально розглядаючи кожну з чотирьох гілок (Класичне навчання, Навчання з підкріпленням, Ансамблеві методи, Нейромережі та глибоке навчання). У класичному навчанні поговорили про різновиди навчання з учителем (Класифікація – розподіл об’єктів за заздалегідь відомою ознакою; Регресія – знаходження будь-якої залежності числа від часу) та без учителя (Кластеризація – розподіл об’єктів за невідомою заздалегідь ознакою; Узагальнення – скорочення кількості ознак в даних; Асоціація – виявлення взаємозв’язків між різними елементами даних).

У навчанні з підкріпленням розглянули основний механізм його реалізації («Кинь робота в лабіринт і нехай шукає вихід»). У ансамблевих методах виокремили три основні напрямки (Стекінг – навчаємо кілька різних алгоритмів і передаємо їх результати на вхід останньому, який приймає остаточне рішення; Бегінг – навчаємо один алгоритм багато разів на випадкових вибірках з вихідних даних; Бустинг – навчаємо алгоритми послідовно, кожен наступний приділяє особливу увагу тим випадкам, на яких помилився попередній).

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

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

P.S. Написав дану статтю, надихнувшись матеріалом Machine Learning for Everyone

Поширюй: