Навчання без учителя – вбивця математичного моделювання?

Всім привіт, мене звати Олександр Гончар. Я займаюся дослідженнями і впровадженням машинного навчання для аналізу біосигналів в Mawi Solutions, дослідженнями на перетині quantitative finance і машинного навчання в University of Verona і консультую компанії нескладно здогадатися щодо чого. Також веду популярний блог на Medium , виступаю на конференціях і митапах в Україні, Італії та інших країнах.

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

Все є вектор

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

Image Source

Тобто після «колупання» в вже навчених нейронках (в даному випадку convolutional neural nets), які показують хорошу точність, ми змогли зрозуміти, що вони вже вивчають ознаки, дуже схожі на ті, що выучивает зорова система в нашому мозку:

Image Source

За фактом, на кожному шарі у нас є різні уявлення картинок — і всі вони математично описуються якимись векторами (або іншими структурами, але найчастіше це все ж вектори). Якщо з якихось причин у нас замість пари вхід-вихід є тільки вхід (так звані без тегів дані), то ми все одно можемо навчити нейромережа знаходити ці уявлення — з допомогою автоэкодеров або генеративних змагальних мереж. Більше того, прийнято вважати, що генеративні моделі краще підходять для опису даних per se. Все-таки не даремно Річард Фейнман якось сказав: «Те, що я не можу створити, я не можу зрозуміти». Поки що нам досить того, що будь-які об'єкти з допомогою нейронних мереж можна упакувати в вектора, за якими в принципі можна визначати відповідні їм властивості. Але це не завжди було так.

Все є формула

Давайте зробимо крок назад (а точніше 50 років) і подивимося, як математики раніше описували вхідні дані. Можна навіть повернутися на пару сотень назад і згадати, як Ньютон і компанія створювали основи класичної механіки. Що таке відома формула S = V * T ? По суті, це опис процесу руху, яке було засноване на спостереженні якихось даних. Чим не машинне навчання? Хіба що без вибірки з координатами об'єктів в різні моменти часу .csv, звичайно.

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

Image Source

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

Зліва — приклади реалізації геометричного броунівського руху, праворуч — jump diffusion process

Зрештою, математики теж описують світ векторами. Окей, для точності скажемо, що вони описують його формулами, але формула — це лише каркас, узагальнена модель процесу (точно так само, як і архітектура сітки — це лише каркас «мозку»). Головне — це параметри формули, які ми для простоти «склеим» вектор і скажемо, що саме ними ми описуємо якийсь конкретний об'єкт. Ось тільки чомусь тут кожен елемент вектора прозорий, зрозумілий і дозволяє робити висновки як про математичної моделі, так і про самому процесі, який він моделює. А якщо ми хочемо зайнятися «машинним навчанням» за такими векторами? Та взагалі без проблем — навчити лінійну, експоненційну або будь-яку нелінійну модель за прикладами з ось такими ось векторами — одне задоволення, адже це дає в підсумку абсолютно зрозумілу коробочку, поведінку якої можна пояснити навіть людині, дуже далекій від математики. Плюс не забуваємо Фейнмана: з одних тільки параметрів можна створити абсолютно новий об'єкт з бажаними властивостями.

«Розв'язані вектори»

Image Source

Але головна перевага машинного навчання в тому, що ніяких формул придумувати не потрібно! Як же тоді поєднати гнучкість нейронних мереж і «зрозумілість» і доступність математичних моделей? Якщо за основу «зрозумілості» взяти властивість кожного окремого елемента вектора описувати одне єдине властивість вхідного об'єкта, то такий вхідний вектор називається розплутав representation. Entangled вектора, в свою чергу, мають елементи, які «пов'язані» — змінюючи один елемент, ми змінюємо відразу кілька властивостей об'єкта. Найпростіше цей концепт ілюструється на такій картинці:

Image Source

Котик тепер перетворюється не просто в вектор, яким можна розпізнати його породу (звичайно ж, незрозуміло як, але зате з точністю 99%), а ще й зрозуміти основні властивості. А тепер уявіть, що ваша улюблена нейронка (навіть не важливо, supervised або unsupervised) вміє вивчати таке — кожен елемент вектора відповідає за своє єдине унікальне властивість. Що це нам дає?

І що, хтось таке робить?

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

Алгоритмів теж чимало. Є хакі, використовують такий собі meta-supervised підхід, який використовує інформацію про властивості при навчанні, наприклад InfoGAN , IB-GAN або з останніх успішних — TL-GAN . Працює дуже непогано, дивіться самі:

Але що, якщо ми апріорі нічого не знаємо про властивості і є просто великий датасет? Останнім часом погоду в цьому напрямку роблять варіаційні автоэнкодеры від DeepMind . Тільки подивіться, як вони вивчають властивості в порівнянні з іншими алгоритмами:

Повороти осіб. Image Source

У reinforcement learning. Image Source

А тепер головне питання. Якщо раніше математикам доводилося по крихтах складати складні математичні моделі, щоб врахувати всі властивості об'єктів або процесів, а ось такі алгоритми вже скоро будуть вивчати їх самі по собі, потрібно буде математичне моделювання як таке взагалі? Детальніше про цю тему я розповім на конференції Data Science UA , яка відбудеться 16 березня.

Що далі

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

Перенавчати сітки під нові дані (а як ви зараз будете адаптувати ваші «розумні» вектора під відео з різних камер і різної якості? Збирати терабайти даних і витрачати місяці?). Зменшувати кількість даних, потрібних для навчання (а це час і гроші). Фиксить помилки (паритися з векторами). Інтерпретувати результати (знову паритися з векторами). Робити звіти (розповісте клієнту в Міноборони «ну... це... ResNet сам все танки ворогів в векторах вивчив!»). А адже ще можна винаходити нові ліки, матеріали і відкривати нові знання. Створювати предмети мистецтва або фейкові відео. Відповідати за життя людей (в медичних або військових проектах) або великі суми грошей (банки, фонди). Вибір за нами.

Опубліковано: 28/02/19 @ 11:00
Розділ Блоги

Рекомендуємо:

Питання ФОПів закрите, працюємо над законом для креативних індустрій. Про зустріч президента й прем'єр єра з ІТ
Зміна формули ІКС 27.02.2019
DOU Проектор: NewsKit — Telegram-бот для фільтрування новин, створений 11-класниками
Що має знаті Senior PHP Developer. Результати аналізу вакансій в Україні та Каліфорнії
Просів трафік після змін на сайті НИМ – як відновити?