Ви коли-небудь цікавилися, як комп’ютери навчаються розпізнавати голос, зображення або навіть писати тексти?
Чи замислювалися, як штучний інтелект самостійно покращує свої рішення без явного програмування?
Deep learning – це напрямок машинного навчання, що базується на використанні багатошарових штучних нейронних мереж для моделювання складних залежностей у даних.
У цій лекції ми розглянемо основи deep learning, пояснимо, як працюють нейромережі на низькому рівні, і покажемо листковий пиріг глибоких моделей.
Deep learning
Якщо боїтеся, що нейромережі скоро захоплять світ і всіх звільнять, спочатку подивіться, як один із найрозумніших ШІ на сьогодні намагається смішно пожартувати:
Промпт: Придумай жарт про глибоке навчання.
Відповідь ChatGPT: Чому нейронні мережі ніколи не ходять на пляж?
Тому що вони бояться глибокого навчання, але не можуть перенести глибоке занурення!
Не у всіх виходить з першого разу – пробачимо йому це. Спробуємо ще раз:
Промпт: Ще одну.
Відповідь ChatGPT: Який алгоритм deep learning найулюбленіший у програмістів?
НейрОТПЕЧАТКА! Адже захищати свій код найкраще за допомогою глибокої мережі!
Щоб зрозуміти, чому у ChatGPT немає почуття гумору та інших емоцій, у цій статті ми вирішили розібратися, як нейромережі імітують людський мозок, чому вони працюють так, як працюють, і навіщо їм потрібні приховані шари.
Підготували повний і зрозумілий огляд на глибоке навчання, щоб залишатися в тренді. Стаття підійде як новачкам, так і профі.
Що таке deep learning
Deep learning (глибоке навчання) – це спосіб навчити комп’ютер робити складні речі: розпізнавати обличчя, визначати об’єкти на фотографії або писати статті з програмування.
Найпростіший спосіб навчання – дати комп’ютеру багато прикладів і сподіватися, що він їх запам’ятає. Наприклад, якщо хочемо навчити комп’ютер відрізняти яблука від бананів, показуємо йому спочатку яблуко і кажемо: «Це яблуко». Потім показуємо банан і кажемо: «Це банан». Повторюємо це багато-багато разів.
Добре, логіка зрозуміла – показали приклади, а комп’ютер запам’ятав їх. А якщо комп’ютеру попадеться нове зображення, якого не було в датасеті? Що потрібно зробити, щоб він не розгубився? Створити нейронну мережу!
Нейромережа – це програма, яка прикидається людським мозком. Вона складається з нейронів, які спілкуються між собою. Разом вони створюють мережу «мозкових клітин», щоб запам’ятовувати інформацію та приймати рішення.
Якщо копнути трохи глибше, то нейромережа – це складна математична модель. У ній немає жодної магії – тільки незрозумілі формули з матаналізу і теорії ймовірностей. Але все це магічним і математичним чином допомагає комп’ютеру думати.
Саме тому нейронні мережі не вміють жартувати – вони всього лише жменька математичних функцій. У ChatGPT відповідь приблизно така сама:
Промпт: Чому нейромережі не вміють жартувати?
Відповідь ChatGPT: Нейромережі не вміють жартувати, тому що жарти вимагають високого рівня культурної та соціальної обізнаності, а нейромережі сконцентровані на статистичних обчисленнях, а не на творчому процесі створення гумору.
Коли нейронка бачить фотографію, вона починає шукати ознаки яблука: дивиться на форму, колір, текстуру тощо. Потім порівнює знайдені особливості з тим, що бачила раніше, і ухвалює рішення: яблуко це чи банан.
Щоб нейронна мережа впевненіше розпізнавала об’єкти, їй потрібно дати більше прикладів. «Більше» – означає тисячі або навіть мільйони.
Давайте спустимося в операційну і подивимося, з чого ж складаються нейромережі.
Проста нейронна мережа
Почнемо з простої нейронної мережі, а потім рухатимемося далі – до багатошарових мереж і сучасних моделей deep learning. Усе тут підпорядковується базовим правилам.
Нейромережа складається з нейронів і зв’язків між ними:
Нейрон – це насправді невелика програма, яка вміє робити три речі: отримувати дані, обробляти та передавати далі. Нейрони скріплюються зв’язками, які характеризуються вагою. Вага – це число, що показує, наскільки міцний спогад.
На вхід нейрон отримує дані – наприклад, фотографію яблука або банана. Він обробляє її – скажімо, перевіряє колір усіх пікселів. Потім нейрон робить висновок: якщо зелених пікселів більше, ніж інших, то це, найімовірніше, яблуко. А якщо найбільше жовтих, то це банан.
Алгоритм нескладний і неточний. Уявіть, що буде, якщо дати нейромережі незрілий банан зеленого кольору або просто жовте яблуко. Виходить, робити висновки тільки за кольором фрукта – недостатньо.
Щоб підвищити точність, можемо додати ще два нейрони. Нехай один із них дивиться на форму об’єкта, а другий – на хвостик фрукта.
Тепер фотографія банана передається одразу до трьох нейронів, потім кожен із них обробляє картинку за своїми правилами і передає припущення на вихід.
Коли три нейрони відпрацюють, вийде три результати – наприклад, перший і третій скажуть, що це банан, а другий стверджуватиме, що яблуко. Наприкінці нейромережа підрахує, яких голосів було більше і видасть цей варіант за остаточний результат.
Але що робити, якщо нейромережа видала неправильний результат? Карати! Причому буквально. Хоча гаразд, не буквально, а механічно послабити зв’язок.
Зв’язки показують, наскільки сильно нейрон впливає на ухвалення рішень. Якщо зв’язок слабкий – значить, його голос буде враховуватися останнім. А якщо міцний – він може перекрити своїм рішенням голоси інших нейронів. Справжня демократія.
Коли нейромережа видає неправильний результат, ми знижуємо вплив нейронів, які призвели до цього результату. Так і проходить deep learning.
Нейрони, зв’язки, програми… Виходить, ми самі програмуємо нейромережу? У чому тоді штучний інтелект? А ось у чому:
Програми, зашиті в нейрони, не прописуються вручну. Вони знаходяться шляхом проб і помилок під час навчання самою нейронною мережею. Структура нейронки, наприклад кількість шарів і нейронів, задається розробником за допомогою мов програмування. Наприклад, на Python це можна зробити за допомогою спеціальної бібліотеки TensorFlow.
Ми розповіли, що нейрони можуть рахувати кольори в пікселях, дивитися на форму об’єктів і хвостики фруктів. Але в реальності ніхто не знає, чому нейромережа працює так, як вона працює. Нейрони самі створюють алгоритм, за яким вчаться відрізняти яблука від бананів. Ми їм ніяк не допомагаємо – тільки винагороджуємо за правильні відповіді і караємо за неправильні.
Нейрон може навіть покладатися на незвичайні явища – наприклад, на тінь від фрукта, що відкидається, або на його відображення в дзеркалі. Цим нейромережа дійсно схожа на людський мозок, тому що люди теж не до кінця розуміють, як він працює.
А тепер перейдемо від простих нейронок до складних, або багатошарових.
Багатошарова нейронна мережа
Додамо нашій нейромережі кілька нових шарів, щоб вона стала багатошаровою. Ще таку нейронку називають глибокою нейронною мережею. У кожного її шару є особлива назва і призначення.
Перший шар називається вхідним, тому що він отримує вхідні дані – наприклад, зображення, числа і рядки. Останній шар називається вихідним, тому що (ви вже здогадалися) тут отримуються вихідні значення. Усі шари, які знаходяться між ними, називаються прихованими.
Працює багатошарова нейромережа за тими самими принципами, що й проста, але замість того, щоб одразу видати результат, дані обробляються і передаються на приховані шари. Там проходить додаткова обробка, і після цього виводиться результат.
Щоправда, тепер весь процес дуже заплутаний: ви тільки подивіться на кількість зв’язків між нейронами.
Давайте відразу відповімо на запитання: навіщо потрібні приховані шари?
Приховані шари потрібні, щоб ретельніше обробляти вхідні дані та знаходити більше деталей. Наприклад, давайте докладніше розберемо приклад з яблуками і бананами:
- На вхід нейромережа отримує картинку певного розміру – нехай 200 на 400 пікселів. Усього пікселів – 80 000.
- Кожен піксель передається в усі вхідні нейрони. Отримуємо дуже багато зв’язків.
- Вхідний шар робить попередню обробку картинки – наприклад, визначає загальну форму об’єкта на зображенні.
- Потім передає оброблені дані на наступний шар – прихований.
- Прихований шар проводить додаткову обробку – наприклад, визначає колір об’єкта. А далі знову передає результати до наступного шару.
- Другий прихований шар дивиться на інші деталі об’єкта. Тут можете підставити щось своє.
- Коли дані доходять до вихідного шару, нейромережа робить припущення на основі роботи всіх шарів і повертає підсумковий результат.
Механізм роботи став складнішим, але й нейромережа стала розумнішою. Така модель уже може вирішувати цікавіші завдання – наприклад, розпізнавати образи, класифікувати об’єкти і писати текст.
Щоб нейромережі стати ще розумнішими, не можна просто взяти і додати більше шарів. Це допоможе, але не сильно. Навіть якщо ми додамо тисячу шарів, помилок у припущеннях стане менше, хоча зовсім вони не зникнуть.
Для переходу на наступний рівень «розумності» потрібно використовувати алгоритми глибокого навчання, про які ми поговоримо далі, а зараз дізнаємося, як співвідносяться одне з одним глибоке навчання і нейромережі.
Deep learning і нейронні мережі
Що собою являють deep learning і нейронні мережі? Коротка відповідь: нейромережа – це програма, яка імітує роботу мозку, а глибоке навчання – це способи її навчання.
Довга відповідь: ці поняття пов’язані, але мають серйозні відмінності.
Нейромережа – це набір нейронів, які передають дані один одному. Це допомагає нейронці приймати рішення і робити припущення, наприклад, розрізняючи об’єкти.
Deep learning – це коли ми робимо нейромережу складною, додаємо багато нових шарів і використовуємо один з алгоритмів глибокого навчання. Це дає змогу розв’язувати складні задачі – наприклад, задачі класифікації об’єктів, розпізнавання мови та створення текстів.
Навчання нейронних мереж
Давайте розберемо ще на одному прикладі, як працюють нейронні мережі, щоб плавно перейти до методів глибокого навчання. Припустимо, ми хочемо навчити нейромережу передбачати ціну на авіаквитки.
- Вхідні дані: дата польоту, місце вильоту і місце прибуття.
- Вихідні дані: ціна авіаквитка.
У нас уже є реальні ціни, щоб порівняти їх із передбаченнями – і навчити нейромережу на них.
Нехай нейронка складається з двох прихованих шарів. У кожному прихованому шарі по чотири нейрони, у вхідному шарі – три нейрони, а у вихідному – один.
Тепер будемо передавати дані в нейромережу і дивитися на її припущення. Якщо результат близький до реального, заохочуємо нейромережу і зміцнюємо ті зв’язки нейронів, які до нього призвели. А якщо результат виявився далеким від реального, то караємо нейромережу і послаблюємо ті зв’язки, які на це вплинули.
Зв’язки
Що означає «зміцнюємо» або «послаблюємо» зв’язки? У кожного зв’язку є власна вага – звичайне число, наприклад 2, 5 або 19,3. Якщо результат неправильний, вагу зменшуємо, скажімо, на 0,5. А якщо правильний – збільшуємо на 0,5. Спочатку ваги встановлюються випадковим чином, а потім підбираються в процесі навчання.
Приблизно через тисячу повторень нейромережа почне видавати правдиві результати. А через мільйон – стане справжнім турагентом із багаторічним стажем.
Вітаємо, нейромережу навчено. Тепер можна дати їй будь-яку дату і місто для подорожі, а вона назве вартість квитка – з невеликою похибкою, але ніхто не ідеальний.
У такого процесу навчання є назва – навчання з учителем. Виходить, що вчитель – це правдиві результати, а учень – нейромережа.
Навчання з учителем має великий недолік: що робити, якщо в нас немає результатів, але задачу розв’язати потрібно. Наприклад, нейронку треба навчити грати в гру «Тетріс». Тут доведеться придумати щось нове.
Протилежність навчання з учителем – навчання без учителя, за якого нейромережа сама визначає, який результат її влаштує. Здається, трохи дивним, але це дуже корисно.
Уявімо, що ми хочемо розподілити всіх користувачів відеохостингу на різні групи, щоб рекомендувати їм цікаві відео. Самим впоратися з таким завданням дуже складно, оскільки ми не можемо припустити кількість і особливості цих груп. Але завдання можна довірити нейромережі.
Вхідними даними для неї можуть бути переглянуті відео користувача, його лайки під відео і підписки. За цими критеріями юзера можна об’єднати з іншими користувачами – наприклад, тими, хто підписаний на схожі канали і хто лайкав схожі відео. Щойно ми придумали рекомендаційну систему.
Навчання з учителем і без – це два базових способи навчання нейромережі. Але якщо ми хочемо зробити щось схоже на ChatGPT, доведеться використовувати сучасні алгоритми deep learning.
Алгоритми глибокого навчання
Їх багато – і з кожним днем стає все більше. Але, на жаль, ще не придумали універсального способу змусити нейромережу вирішувати будь-які завдання. Тому поки що обходяться різними алгоритмами: для роботи із зображеннями використовують згорткові нейромережі, а щоб писати текст – рекурентні.
Давайте розберемося, як працюють популярні алгоритми.
Згорткові нейронні мережі
Навіщо потрібні: допомагають опрацьовувати картинки та краще розуміти, що на них зображено.
Як працюють: додають у нейромережу додаткові шари – згорткові. Вони потрібні, щоб аналізувати зображення ретельніше.
У згорткових шарах на картинку накладають фільтри – наприклад, роблять чорно-білою, виділяють усі кути або обрізають. Так нейромережа знаходить нові деталі, які допоможуть їй краще визначати об’єкти на зображенні.
Перший згортковий шар зазвичай потрібен, щоб знаходити всі краї та кути в об’єктів. Наступні шари – щоб бачити складніші елементи, як-от форму чи текстуру. А останній шар збирає всі деталі разом і робить передбачення.
Рекурентні нейронні мережі
Навіщо потрібні: допомагають зрозуміти й опрацювати елементи, які йдуть послідовно і пов’язані один з одним, – наприклад, текст.
Як працюють: запам’ятовують усе, що відбувалося раніше, щоб розуміти, що станеться далі.
Рекурентні нейромережі складаються з ланок, які схожі на намисто. Кожна намистинка – це шматок інформації, такий як слово. Разом намисто утворює ланцюжок окремих намистин, які пов’язані одна з одною.
Ця концепція може здатися заплутаною, тому що тут є слово «рекурсія», але головний сенс рекурентних нейромереж у тому, що вони вміють проводити асоціації між різними об’єктами.
Коли рекурентна нейронна мережа отримує речення на вхід, вона аналізує кожне слово окремо. Нові слова з’єднуються з уже вивченими – так нейромережа розуміє контекст і значення кожного слова у зв’язці з оточуючими.
Різновид архітектури RNN – мережі з довготривалою і короткочасною пам’яттю (long short-term memory, LSTM). Вони зберігають у пам’яті інформацію, поки її не попросять видалити. LSTM-мережі зазвичай використовують у зв’язці з іншими видами deep learning. Наприклад, ChatGPT працює за такою схемою: чат-бот запам’ятовує, що користувач писав раніше, щоб видавати йому більш релевантні відповіді.
Генеративно-змагальні мережі
Навіщо потрібні: малювати, складати музику і писати вірші – або просто творити.
Як працюють: використовують зв’язок із двох нейромереж – художника і критика. Художник створює щось нове, а критик намагається зрозуміти, створено це реальними художниками чи нейромережею.
З кожним новим творінням нейромережа-художник стає дедалі кращою – в умінні наслідувати художників-людей і вмінні обманювати нейромережу-критика. А нейромережа-критик вчиться уважніше аналізувати творіння художника.
Таке «змагання» допомагає нейронній мережі швидко навчатися. І для цього людині навіть не потрібно докладати зусиль, достатньо алгоритму для проведення машинного навчання.
Головна фішка алгоритмів глибокого навчання в тому, що їх можна об’єднувати.
Наприклад, якщо поєднати генеративно-змагальну і рекурентну нейромережі, отримаємо щось схоже на ChatGPT. Така нейронна мережа зможе творити, запам’ятовувати, що вона робила і навіть складати вірші.
Застосування глибокого навчання
Deep learning проникло всюди, але воно ще слабеньке, щоб повністю замінити всі професії. І цьому є пояснення – комп’ютерам не вистачає обчислювальних потужностей.
І все ж є кілька сфер, у яких алгоритми deep learning вже знаходять застосування.
- Чипи для гаджетів. Дедалі більше компаній говорять, що вони вбудовують алгоритми глибокого навчання у свої пристрої. NVIDIA показала всім, що нейромережі можуть додати пару десятків кадрів в іграх на відеокартах. А Apple стверджує, що їхні процесори всюди напхані нейромережами, які покращують роботу смартфонів. Можливо, це маркетинговий прийом, але хотілося б вірити, що ні.
- Ігри. Уявіть, що ви граєте у свою улюблену гру, де спілкуєтеся з NPC, як із живою людиною. І це вже не просто мрії, а цілком реальність. Після виходу ChatGPT розробники ігор всерйоз задумалися над тим, щоб створити реалістичні діалоги в іграх. Для цього всього лише потрібно придумати спосіб додати нейромережу всередину ігрового процесу.
- Медицина. Нейромережі ще не ставлять остаточні діагнози пацієнтам, але дуже добре допомагають лікарям робити припущення про можливі захворювання. Деякі компанії навіть роблять своїх кишенькових психологів – про них у нас є окрема стаття, в якій ми поговорили із засновником стартапу для психологічної самодопомоги.
Що запам’ятати
Давайте підведемо підсумки і повторимо те, що ми сьогодні дізналися:
- Глибоке навчання – це спосіб навчити комп’ютер робити складні речі. Наприклад, відрізняти яблука від бананів.
- Deep learning побудовано на нейромережах. Це такі програми, які «прикидаються» людським мозком.
Нейромережа складається з нейронів і зв’язків між ними. Нейрони обробляють дані та передають результат зв’язками до інших нейронів. - Щоб навчити нейромережу, потрібно винагородити ті нейрони, які привели до правильного результату. Це робиться за допомогою посилення або ослаблення нейронних зв’язків.
- Нейромережі бувають простими, тобто такими, що складаються з одного шару нейронів. А ще вони бувають багатошаровими – тоді шарів кілька.
- Багатошарова нейромережа складається з шарів трьох типів: вхідного, прихованого і вихідного. Вхідний шар отримує початкові дані та проводить первинну обробку. Приховані шари проводять додаткову обробку даних. А вихідний шар повертає передбачення, тобто результат.
- Два головні способи навчити нейромережу – це навчання з учителем і без. У процесі навчання з учителем відбувається порівняння передбачень нейронної мережі з правильними результатами. А під час навчання без вчителя – нейромережі надають можливість самій розв’язати задачу і зрозуміти, які відповіді правильні.
- Щоб вирішувати складні завдання, використовують алгоритми deep learning. Найпопулярніші алгоритми – це згорткові нейронні мережі, рекурентні та генеративно-змагальні.
- Нейромережі застосовують практично скрізь – в іграх, голосових помічниках і медицині.
Висновок
Отже, ми розібрали основи глибокого навчання – від простих нейронів до складних архітектур, які можуть творити й імітувати людське мислення. Звісно, поки що ChatGPT не зможе замінити комедіантів (його жарти ми бачили на початку), але це не означає, що deep learning не варто вивчати.
Навпаки, зараз найкращий час занурюватися в цю сферу. Нейромережі вже змінили наш світ – від рекомендацій у соцмережах до голосових помічників, які (майже) розуміють, що ми від них хочемо. А в майбутньому вони стануть ще розумнішими.








