Нейросети. Куди це все рухається

Стаття складається із двох частин:

  1. Короткий опис деяких архітектур мереж з виявлення об'єктів на зображенні та сегментації зображень із найзрозумілішими для мене посиланнями на ресурси. Намагався обирати відео пояснення та бажано російською мовою.
  2. Друга частина полягає у спробі усвідомити напрямок розвитку архітектур нейронних мереж. І технологій на їх основі.

Нейросети. Куди це все рухається

Рисунок 1 – Розуміти архітектури нейромереж непросто

Все почалося з того, що зробив дві демонстраційні програми з класифікації та виявлення об'єктів на телефоні Android:

  • Back-end demo, коли дані обробляються на сервері та передаються на телефон. Класифікація зображень (image classification) трьох типів ведмедів: бурого, чорного та плюшевого.
  • Front-end demo, коли дані обробляються на телефоні. Виявлення об'єктів (object detection) трьох типів: фундук, інжир та фінік.

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

  • Серія архітектур на основі R-CNN (Regions with Convolution Neural Networks features): R-CNN, Fast R-CNN, Швидший R-CNN, Маска R-CNN. Для виявлення об'єкта на зображенні за допомогою механізму Region Proposal Network (RPN) виділяються обмежені регіони (bounding boxes). Спочатку замість RPN застосовувався повільніший механізм Selective Search. Потім виділені обмежені регіони подаються на вхід звичайної нейромережі класифікації. В архітектурі R-CNN є явні цикли for перебору по обмежених регіонах, всього до 2000 прогонів через внутрішню мережу AlexNet. Через явні цикли «for» уповільнюється швидкість обробки зображень. Кількість явних циклів, прогонів через внутрішню нейромережу, зменшується з кожною новою версією архітектури, а також проводяться десятки інших змін для збільшення швидкості та заміни завдання виявлення об'єктів на сегментацію об'єктів у Mask R-CNN.
  • YOLO (You Oнічого LOOK Once) - перша нейронна мережа, яка розпізнавала об'єкти в реальному часі на мобільних пристроях. Відмінна риса: розрізнення об'єктів за один прогін (достатньо один раз подивитися). Тобто в архітектурі YOLO немає явних циклів "for", через що мережа працює швидко. Наприклад, така аналогія: у NumPy при операціях з матрицями теж немає явних циклів «for», які в NumPy реалізуються на нижчих рівнях архітектури через мову програмування С. YOLO використовує сітку із заздалегідь заданих вікон. Щоб той самий об'єкт не визначався багаторазово, використовується коефіцієнт перекриття вікон (IoU, Intersection oверсія Union). Дана архітектура працює в широкому діапазоні і має високу робастністю: модель може бути навчена на фотографіях, але при цьому добре працювати на мальованих картинах.
  • SSD (Single Shot MultiBox Detector) – використовуються найвдаліші «хакі» архітектури YOLO (наприклад, non-maximum suppression) і додаються нові, щоб нейромережа швидше та точніше працювала. Відмінна риса: розрізнення об'єктів за один прогін за допомогою сітки вікон (default box) на піраміді зображень. Піраміда зображень закодована у згорткових тензорах при послідовних операціях згортки та пулінгу (при операції max-pooling просторова розмірність зменшується). Таким чином визначаються як великі, так і маленькі об'єкти за один прогін мережі.
  • MobileSSD (MobileNetV2+ SSD) - Комбінація з двох архітектур нейромереж. Перша мережа MobileNetV2 працює швидко та збільшує точність розпізнавання. MobileNetV2 застосовується замість VGG-16, яка спочатку використовувалася в оригінальній статті. Друга мережа SSD визначає розташування об'єктів на зображенні.
  • SqueezeNet - Дуже маленька, але точна нейромережа. Сама собою не вирішує завдання виявлення об'єктів. Однак, може застосовуватися при комбінації різних архітектур. І використовуватись у мобільних пристроях. Відмінною особливістю є те, що спочатку дані стискаються до чотирьох 1×1 згорткових фільтрів, а потім розширюються до чотирьох 1×1 та чотирьох 3×3 згорткових фільтрів. Одна така ітерація стиснення-розширення даних називається Fire Module.
  • DeepLab (Semantic Image Segmentation with Deep Convolutional Nets) – сегментація об'єктів на зображенні. Відмінною особливістю архітектури є розряджена (dilated convolution) згортка, яка зберігає просторовий дозвіл. Потім слідує стадія постобробки результатів з використанням графічної ймовірнісної моделі (conditional random field), що дозволяє прибрати невеликі шуми в сегментації і поліпшити якість відсегментованого зображення. За грізною назвою «графічна модель ймовірності» ховається звичайний фільтр Гаусса, який апроксимований по п'яти точках.
  • Намагався розібратися у пристрої RefineDet (Single-Shot Удосконалюватиment Neural Network for Object цеection), але мало чого зрозумів.
  • Також подивився, як працює технологія «увага» (attention): відео1, відео2, відео3. Відмінною особливістю архітектури «увага» є автоматичне виділення регіонів підвищеної уваги на зображенні (RoI, Regions of Interest) за допомогою нейромережі під назвою Attention Unit. Регіони підвищеної уваги схожі на обмежені регіони (bounding boxes), але, на відміну від них, не зафіксовані на зображенні і можуть мати розмиті кордони. Потім із регіонів підвищеної уваги виділяються ознаки (фічі), які «годуються» рекурентним нейромережам з архітектурами. LSDM, GRU або Vanilla RNN. Рекурентні нейромережі вміють аналізувати взаємовідносини ознак у послідовності. Рекурентні нейромережі спочатку застосовувалися для перекладу тексту іншими мовами, а тепер і для перекладу зображення в текст и тексту у зображення.

У міру вивчення цих архітектур я зрозумів, що нічого не розумію. І справа не в тому, що моя нейромережа має проблеми з механізмом уваги. Створення всіх цих архітектур схоже на якийсь величезний хакатон, де автори змагаються у хаках. Хак (hack) – швидке вирішення важкого програмного завдання. Тобто між усіма цими архітектурами немає видимого та зрозумілого логічного зв'язку. Все, що їх поєднує – це набір найбільш вдалих хаків, які вони запозичують один у одного, плюс загальна для всіх операція згортки зі зворотним зв'язком (Зворотне поширення помилки, backpropagation). Ні системного мислення! Не зрозуміло, що міняти і як оптимізувати досягнення.

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

Нейросети. Куди це все рухається

Малюнок 2 – Зоопарк нейронних мереж

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

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

Куди це все рухається. Основні результати:

  • Число стартапів у галузі машинного навчання в останні два роки різко впало. Можлива причина: "нейронні мережі перестали бути чимось новим".
  • Кожен зможе створити працюючу нейромережу для вирішення простого завдання. Для цього візьме готову модель із «зоопарку моделей» (model zoo) і натренує останній шар нейромережі (трансферне навчання) на готових даних з Пошук у наборах даних Google або з 25 тисяч датасетів Kaggle у безкоштовному хмарі Jupyter Notebook.
  • Великі виробники нейромереж почали створювати «Зоопарки моделей» (Model zoo). За допомогою них можна швидко зробити комерційний додаток: TF Hub для TensorFlow, Виявлення ММД для PyTorch, Детектрон для Caffe2, chainer-modelzoo для Chainer та інші.
  • Нейросети, що працюють в реальному часі (real-time) на мобільних пристроях. Від 10 до 50 кадрів за секунду.
  • Застосування нейромереж у телефонах (TF Lite), у браузерах (TF.js) та в побутових предметах (IoT, Iце інтернет of Things). Особливо в телефонах, які вже підтримують нейромережі на рівні заліза (нейроакселератори).
  • «Кожен пристрій, предмети одягу і, можливо, навіть їжа матимуть IP-v6 адреса і повідомлятися між собою» – Себастьян Трун.
  • Зростання кількості публікацій з машинного навчання почало перевищувати закон Мура (подвоєння кожні два роки) з 2015 року. Очевидно, потрібні нейромережі для аналізу статей.
  • Набирають популярності такі технології:
    • PyTorch – популярність зростає швидко і, схоже, обганяє TensorFlow.
    • Автоматичний підбір гіперпараметрів AutoML – популярність зростає плавно.
    • Поступове зменшення точності та збільшення швидкості обчислень: нечітка логіка, алгоритми бустингу, неточні (наближені) обчислення, квантизація (коли ваги нейромережі переводяться в цілі числа та квантуються), нейроакселератори.
    • Переклад зображення в текст и тексту у зображення.
    • Створення тривимірних об'єктів по відео, тепер вже у реальному часі.
    • Основне в DL - це багато даних, але зібрати та розмітити їх непросто. Тому розвивається автоматизація розмітки (автоматизована анотація) для нейромереж за допомогою нейромереж.
  • З нейромережами Computer Science раптово стала експериментальною наукою і виник криза відтворюваності.
  • ІТ-гроші та популярність нейромереж виникли одночасно, коли обчислення стали ринковою цінністю. Економіка із золотовалютної стає золото-валютно-обчислювальної. Дивіться мою статтю з еконофізики та причини появи IT-грошей.

Поступово з'являється нова методологія програмування ML/DL (Machine Learning & Deep Learning), яка заснована на представленні програми, як сукупності навчених нейромережевих моделей.

Нейросети. Куди це все рухається

Малюнок 3 – ML/DL як нова методологія програмування

Однак так і не з'явилося «теорії нейромереж», в рамках якої можна думати та працювати системно. Що зараз називається «теорією» насправді експериментальні, евристичні алгоритми.

Посилання на мої і не лише ресурси:

Дякуємо за увагу!

Джерело: habr.com

Додати коментар або відгук