Гараж
Як створюють та використовують нейронні мережі: лекція Михайла Константинова
Як створюють та де використовують нейронні мережі? Чим звичне програмування відрізняється від машинного навчання? Які завдання не вирішити без штучного інтелекту? Що таке генеративні моделі?

Це тільки частина запитань, на які у своїй лекції відповів Михайло Константинов, Deep Learning Research Engineer у Ring Ukraine.

Зробили для вас короткий конспект його лекції.
Життя в епоху «тесту»

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

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

Алан Тюрінг
англійський математик, логік і криптограф.
У реальному світі тест Тюрінга теж є. Наприклад, ви захочете вивчати курс по генеративних моделях на Coursera (до речі, чудовий курс). Щоб зареєструватися та увійти на платформу – вам необхідно пройти тест Тюрінга у вигляді капчі. Просто вдумайтеся, ми живемо у світі, де нам потрібно доводити Facebook, Google та іншим компаніям, що ми живі люди.

CAPTCHA це взагалі абревіатура. Вона розшифровується як Completely Automated Public Turing test to tell Computers and Humans Apart, українською – повністю автоматизований публічний тест Тюринга для розрізнення комп'ютерів і людей. Тобто кожен раз, коли ви його проходите, то доводите, що ви не машина.

Реальні тести Тюрінга важко пройти машинам. Вони не на швидкість, а на розуміння сенсу, абстракцію, мислення образами. Для Google це великі гроші, тому він робить цей тест не просто так. І робить його настільки хорошим, наскільки нейронні мережі можуть з ним впоратися чи ні.
Звичне програмування VS Машинне навчання

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

«Попелюшка»

Коли ми пишемо класичну програму, то в нас мають бути якісь дані, які ми оброблятимемо. Наприклад, додати 1, 2 та 3. Цифри – це наші дані, а наші правила – це додавання. У фіналі – отримаємо суму цих чисел.

Пограймо в гру, яку я назвав «Попелюшка». У вас є туфелька 34-го розміру. Вам треба приміряти туфлю і у вас є велика кількість ніжок. Що ви можете зробити? Наприклад, задати всім їм розмір ноги. Там будуть різні значення, зокрема багато з них – 34. Далі ми на кожну з них приміряємо туфлю і дивимося підходить вона чи ні, доки не знайдемо власницю.

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

«Електрони та фотони»

Із Попелюшкою все зрозуміло, тепер інше завдання. Це фотографія з конференції 1927 року, яка називається «Електрони та фотони». Завдання наступне – обвести кожного з людей на фото попіксельно, відсегментувати їх.

Спробуємо через класичне програмування. Дані у нас є. Зрозуміло, яку ми хочемо відповідь. Але де взяти ці правила – абсолютно не зрозуміло. Ми можемо здогадатися, що таке сегментування можна зробити за допомогою нейронної мережі. Можливо, така мережа вже є, тоді давайте її візьмемо. Сам алгоритм виглядатиме наступним чином – початок, подати картинку, отримати відповідь. Все, кінець.

У цьому випадку все на себе бере нейронна мережа. Це абсолютний чорний ящик, який щось робить і дає нам бажаний результат. Нейронна мережа й буде набором правил. Вона дивитиметься на фотографію, шукатиме в ній щось і видаватиме нам відповідь – сегментацію кожного окремого персонажа.
Де нам взяти цю нейронну мережу?

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

Давайте зробимо наступне. Придумаємо якийсь фреймворк, куди ми подаємо дані та результати, в нас їх буде багато. І змусимо машину знайті ці кореляції, цей набір правил. Тобто не ми самі, а машина їх знайде.

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

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

Наприклад, без машинного навчання неможливо:

  • Класифікувати об'єкти на фотографії. Детекція та сегментація – це ті речі, які ми не можемо формально вирішити за допомогою класичних алгоритмів. Без машинного навчання якісної сегментації ми отримати не зможемо.
  • Керувати автомобілем без водія. Оскільки там потрібно приймати рішення, розпізнавати об'єкти.
  • Перекладати. Наприклад, коли ви перекладаєте напис на вивісках за допомогою камери свого смартфону. У такому випадку поєднуються функція перекладку та обробки природної мови (інформація надходить з фото, інтерпретується, перекладається).
Що таке нейронна мережа

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

Насправді це досить умовна класифікація, але вона усталилася, тому зараз розберемо кожен із розділів.

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

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

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

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

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

Цікаво, що й в обробці природної мови нейронні мережі навчилися роботи неймовірний переклад. GAN принесли машинний переклад в зображення та відео. Просто уявіть – технологія, яка дозволяє вам зробити з літнього відео зимове, з нічного денне, а ялинки зі снігом перетворити в пальми та пісок. І все це з дуже високим рівнем деталізації.
Це лише частина того, про що йшлося на лекції. Ті ж, хто хочуть розібратися в темі глибоко, можуть переглянути повне відео на YouTube.
Автор тексту: Денис Пристай
Головне фото: Наталія Азаркіна
Гараж
Сподобалась стаття?