Нейронні мережі для чайників: короткий вступ до цього захоплюючого поля

Ви коли-небудь замислювались, що це за всі ці нейронні мережі, про які всі говорять, і надто боялися запитати? Ну, не бійтеся більше! Наприкінці цього допису ви зможете зайти на будь-яку конференцію та засліпити обідній стіл своїми нещодавно придбаними модними словами!

Якщо ви відкривали свій браузер за останні пару років, ви, мабуть, бачили вираз "Нейронні мережі" пару (сотню) разів.

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

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

Щоб зрозуміти нейронні мережі, нам спочатку потрібно зрозуміти машинне навчання. А щоб зрозуміти машинне навчання, давайте поговоримо спочатку про людське навчання або “класичне програмування”.

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

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

А машинне навчання? Дуже загалом, машинне навчання = навчання на прикладах.

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

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

Що таке нейрон?

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

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

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

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

Тому я збираю багато прикладів кількості слів у повідомленнях у блозі, позначених x , і скільки слів люди насправді читають у цих повідомленнях, y , і я думаю, що між ними існує якийсь зв’язок, позначений f .

Однак, фішка полягає в тому, що мені просто потрібно сказати машині (програмі) , яке саме відношення я очікую побачити (наприклад, пряма лінія), і машина зрозуміє фактичну лінію, яку їй потрібно провести.

Що я тут здобув?

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

Отже, нейронна мережа - це ...

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

Як дизайнер цієї мережі, моєю роботою є відповісти на деякі запитання:

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

Після того, як я відповів на ці запитання, я можу "показати" мережі багато (багато багатьох) прикладів правильних входів і виходів, в надії, що коли я "покажу" йому новий приклад вводу, якого він ще ніколи не бачив, він буде знати щоб дати правильний результат.

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

Нейронні мережі - нескінченна історія

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

Вступаючи в цю сферу, перше, що слід знати, це те, що НІХТО не знає всього. Тож почувайтеся комфортно там, де ви знаходитесь, і просто продовжуйте цікавитись :)

Тому я хочу, щоб мої останні слова в цьому дописі були посиланням на деякі мої улюблені ресурси, на яких можна вчитися:

  • Гал Йона - один з моїх улюблених блогерів у цій галузі. Її публікації варіюються від жорстких технічних пояснень до напівфілософських оглядів.
  • Siraj Raval - ютубер з величезною колекцією відео, починаючи від теоретичних пояснень і закінчуючи практичними навчальними посібниками, а також надзвичайно весело!
  • Крістофер Олах - пристрасний та проникливий дослідник, веде візуально запрошуючий блог із публікаціями від основних концепцій до глибоких занурень.
  • «Назустріч науці даних» - найбільша середньовидавна публікація, що стосується конкретної галузі, і що мені подобається в тому, що редактори є чудовими кураторами. Коли у вас є кілька хвилин / годин, щоб пережити, просто перейдіть на їх домашню сторінку та починайте вивчати все - від практичних інструментів до глибокого алгоритмічного змісту.