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

Вид: 10136|Відповідь: 0

Еволюція архітектури нейронних мереж: Всебічний огляд понад десяти архітектур від LeNet5 до ENet

[Копіювати посилання]
Опубліковано 24.04.2018 13:08:47 | | | |
LeNet5
LeNet5 народився у 1994 році і є однією з перших згорткових нейронних мереж, що сприяв розвитку глибокого навчання. З 1988 року, після багатьох успішних ітерацій, ця новаторська робота Яна Лекуна отримала назву LeNet5 (див. Градієнтне навчання, застосоване до розпізнавання документів).


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

Особливості LeNet5 можна узагальнити так:

Згорткові нейронні мережі використовують 3 шари як послідовність: згортковий, об'єднаний, нелінійний → Це, ймовірно, ключова особливість глибокого навчання зображень з часів цієї статті!
Використовуйте згортки для вилучення просторових особливостей
Підвибірка за допомогою відображення у просторове середнє
Нелінійність у вигляді гіперболічного тангенсу (tanh) або S-подібного (сигмоїдального).
Багатошарові нейронні мережі (MLP) слугують остаточними класифікаторами
Розріджені матриці з'єднань між шарами уникають великих обчислювальних витрат

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

Інтервал
З 1998 по 2010 рік нейронна мережа перебувала на стадії інкубації. Більшість людей не усвідомлюють їхньої зростаючої сили, тоді як інші дослідники повільно це роблять. Завдяки появі камер мобільних телефонів і недорогих цифрових камер, все більше даних експлуатується. І обчислювальна потужність також зростає, процесори стають швидшими, а GPU стають інструментами для багатьох цілей. Ці тенденції дозволили нейронним мережам розвиватися, хоча й повільно. Дані та обчислювальна потужність роблять завдання, які можуть виконувати нейронні мережі, дедалі цікавішими. Після цього все стало зрозумілим......

Dan Ciresan Net
У 2010 році Ден Клаудіу Сіресан і Юрген Шмідхубер опублікували реалізацію найстарішої нейронної мережі GPU. Ця реалізація є 9-шаровою нейронною мережею, що працює на графічному процесорі NVIDIA GTX 280, включаючи пряме та зворотне поширення.

AlexNet
У 2012 році Алекс Кріжевський опублікував «Алексет» (див.: ImageNet Classification with Deep Convolutional Neural Networks) — глибшу і ширшу версію LeNet, яка з великим відривом перемогла складний конкурс ImageNet.


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

Використовуйте модифіковану лінійну одиницю (ReLU) як нелінійність
Використовуйте техніку Dropout, щоб вибірково ігнорувати окремі нейрони під час тренування, щоб уникнути перенагону моделі
Перекрийте великий пул, щоб уникнути середнього ефекту середнього пулювання
Скоротіть час навчання з GPU NVIDIA GTX 580

На цьому етапі GPU можуть надавати більшу кількість ядер, ніж CPU, а час навчання можна збільшити у 10 разів, що дозволяє отримувати більші набори даних і більші зображення.

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

Overfeat
У грудні 2013 року лабораторія Яна Лекуна в Нью-Йоркському університеті запропонувала похідну AlexNet — Overfeat (див. OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks). У цій статті також запропонувалася навчальна рамка, що призвело до появи багатьох статей на цю ж тему. Я вважаю, що краще навчитися розділяти об'єкти, ніж вивчати штучні обмежувальні рамки.

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

Це, здається, протилежно принципу ЛеНе, де великі згортки використовуються для отримання подібних ознак у зображенні. На відміну від фільтрів 9×9 або 11×11 від AlexNet, фільтри починають ставати меншими, наближаючись до сумнозвісної аномалії згортки 1×1, якої LeNet намагається уникнути — принаймні на першому рівні мережі. Однак VGG досягла значного прогресу, застосовуючи кілька 3×3 згорток послідовно, щоб імітувати ефекти більших рецептивних полів, таких як 5×5 і 7×7. Ці ідеї також використовувалися в новіших мережевих архітектурах, таких як Inception і ResNet.


Мережі VGG використовують кілька 3×3 згорткових шарів для характеристики складних ознак. Зверніть увагу, що 3-й, 4-й, 5-й блоки VGG-E: 256×256 та 512×512 3×3 використовуються кілька разів по черзі для вилучення складніших ознак і їх комбінацій. Цей ефект еквівалентний великому класифікатору 512×512 з трьома згортковими шарами. Це, очевидно, означає, що існує багато параметрів і можливостей для навчання. Але ці мережі важко навчати, і їх потрібно розділяти на менші мережі та накопичувати рівень за шаром. Це пов'язано з відсутністю надійного способу регуляризації моделі або більш-менш обмеження великого простору пошуку через велику кількість параметрів.

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

Мережа в мережі
Ідея Network in Network (NiN, див. статтю: Network In Network) проста і чудова: використання згортки 1×1 для надання більшої компонованості для функцій згорткового шару.

Архітектура NiN використовує просторові MLP-шари після окремих згорток для кращого поєднання ознак перед іншими шарами. Знову ж таки, можна вважати, що згортки 1×1 суперечать початковому принципу LeNet, але насправді вони можуть поєднувати згорткові ознаки краще, ніж неможливо, просто накладаючи більше згорткових ознак. Це відрізняється від використання оригінального пікселя як наступного введення шару. Згортки 1×1 часто використовуються для спатового об'єднання ознак на картах ознак після згортки, тож вони можуть використовувати дуже мало параметрів і ділитися ними між усіма пікселями цих ознак!


Здатність MLP значно підвищувати ефективність окремих згорткових ознак шляхом їх об'єднання у складніші групи. Ця ідея згодом була використана в деяких сучасних архітектурах, таких як ResNet, Inception та її похідних.

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

GoogleLeNet та Inception
Крістіан Сегеді з Google розпочав свій пошук зменшення обчислювальних витрат глибоких нейронних мереж і розробив GoogLeNet — першу архітектуру Inception (див. Going Deeper with Convolutions).

Це було восени 2014 року, коли моделі глибокого навчання ставали корисними для класифікації кадрів зображення та відео. Більшість скептиків більше не сумніваються, що глибоке навчання та нейронні мережі справді повернулися цього разу і продовжать розвиватися. З огляду на корисність цих технологій, інтернет-гіганти, такі як Google, дуже зацікавлені у ефективному та масштабному впровадженні архітектур на своїх серверах.

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

Він і його команда розробили модуль Inception:


На перший погляд, це фактично паралельна комбінація згорткових фільтрів 1×1, 3×3, 5×5. Але головна ідея Inception полягає в тому, щоб зменшити кількість ознак перед дорогими паралельними модулями з 1×1 згортковими блоками (NiN). Це зазвичай називають «вузьким місцем». Цей розділ буде пояснений у розділі «вузьке місце» нижче.

GoogLeNet використовує магістраль без початкового модуля як початковий шар, за яким слідує середній шар пулування плюс softmax-класифікатор, подібний до NiN. Цей класифікатор має значно меншу кількість операцій, ніж класифікатори AlexNet і VGG. Це також призвело до дуже ефективного проєктування мережі, див. статтю: Аналіз моделей глибоких нейронних мереж для практичних застосувань.

Шар вузького місця
Натхненний NiN, вузький шар Inception зменшує кількість ознак у кожному шарі, а отже й кількість операцій; Тому час висновку можна тримати низьким. Кількість ознак зменшується у 4 рази, перш ніж дані проходять через дорогі згорткові модулі. Це значна економія з точки зору обчислювальних витрат і успіх архітектури.

Давайте перевіримо це конкретно. Тепер, коли у вас є 256 входів ознак і 256 виходів ознак, припустимо, що рівень Inception може виконувати лише 3×3 згортки, тобто загалом 256×256×3×3 згорток (майже 589 000 операцій множення та накопичення (MAC)). Це може бути поза нашим обчислювальним бюджетом, наприклад, для запуску шару за 0,5 мілісекунди на серверах Google. Натомість ми вирішили зменшити кількість ознак, які потрібно було заплутати, тобто 64 (тобто 256/4). У цьому випадку починаємо зі згортки 256 -> 64 1×1, потім 64 згортки на всіх гілках Початку, далі 1×1 згортки з ознаки 64 -> 256, і тепер операція виглядає так:

256×64 × 1×1 = 16 000s
64×64 × 3×3 = 36 000
64×256 × 1×1 = 16 000

Порівняно з попередніми 600 000, зараз загалом 70 000 обчислювальних об'ємів, що майже у 10 разів менше.

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

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

Inception V3 (та V2)
Крістіан і його команда — дуже плідні дослідники. У лютому 2015 року було введено Inception за допомогою партії як Inception V2 (див. статтю: Batch Normalization: Accelerating Deep Network Training шляхом зменшення внутрішнього зсуву коваріатів). Пакетна нормалізація обчислює середнє та стандартне відхилення всіх відображень ознак на виході одного шару і використовує ці значення для нормалізації їхніх відповідей. Це еквівалентно «відбілюванню» даних, щоб усі нейронні карти реагували в одному діапазоні і були нульовими середніми. Це допомагає навчатися, коли наступний шар не потребує зсуву від вхідних даних, а також зосереджується на кращому поєднанні цих ознак.

У грудні 2015 року команда випустила нову версію модуля Inception та подібну архітектуру (див. статтю: Rethinking the Inception Architecture for Computer Vision). У статті краще пояснюється оригінальна архітектура GoogLeNet, надаючи більше деталей щодо дизайнерських рішень. Початкова ідея така:

Завдяки ретельному будівництву мережі збалансовуються глибина та ширина, щоб максимізувати потік інформації в мережу. Перед кожним пулуванням додавайте картування ознак.
Зі збільшенням глибини глибина або кількість функцій мережевого шару також систематично збільшується.
Використовуйте кожне збільшення глибини шару, щоб збільшити зв'язування ознак перед наступним шаром.
Використовуючи лише 3×3 згортки, певні фільтри 5×5 і 7×7 можна розділити на кілька 3×3, коли це можливо. Подивіться на зображення нижче


Внаслідок цього новий Inception став:


Фільтр також можна розділити, розплющивши згортку на більш складні модулі:


Під час виконання обчислень inception модуль Inception також може зменшити розмір даних, забезпечуючи пулінг. Це по суті схоже на паралельне запуск простого пулінгу при запуску згортки:


Inception також використовує шар пулінгу та softmax як фінальний класифікатор.

ResNet
У грудні 2015 року відбулася нова зміна, яка співпала з виходом Inception V3. ResNet має просту ідею: подавати вихід двох послідовних згорткових шарів і обходити вхід до наступного шару (див. статтю: Deep Residual Learning for Image Recognition).


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

Це вперше, коли кількість мережевих шарів перевищує 100, і навіть 1000 шарів можна навчити.

ResNet, який має велику кількість мережевих шарів, починає використовувати мережевий шар, подібний до шару вузького місця Inception:


Цей шар обробляє меншу кількість ознак, спочатку ускладнюючи меншу кількість ознак на 1×1 з меншим виходом (зазвичай 1/4 входу), потім використовуючи шар 3×3, а потім шар 1×1. Подібно до модуля Inception, це забезпечує низьку обчислювальну інтенсивність, водночас забезпечуючи багаті комбінації ознак.

ResNet використовує відносно простий початковий шар на входах: базовий шар із 7×7 томами з двома пулами. Порівняйте це з більш складними та менш інтуїтивно зрозумілими Inception V3 і V4.

ResNet також використовує шар пулінгу плюс softmax як фінальний класифікатор.

Інші інсайти про ResNet трапляються щодня:

ResNet можна вважати як паралельним, так і суміжним, оскільки входи та виходи (входи) розглядаються як паралельні у багатьох модулях, тоді як виходи кожного модуля з'єднані безперервно.
ResNet також можна розглядати як комбінацію паралельних або неперервних модулів (див. статтю: Residual Networks are Exponential Ensembles of Relatively Shallow Networks).
Встановлено, що ResNet зазвичай працює паралельно на мережевих блоках на рівнях 20-30. Замість того, щоб безперервно текти по всій довжині мережі.
Коли ResNet повертає вихідні дані на вхідні дані, наприклад RNN, мережу можна вважати більш біологічно надійною кортикальною моделлю (див. статтю: Bridging the Gaps Between Residual Learning, Recurrent Neural Networks and Visual Cortex).

Inception V4
Ось ще одна версія Inception від Крістіана та його команди, яка схожа на Inception V3:


Inception V4 також поєднує модуль Inception і модуль ResNet:


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

З огляду на простоту мережі, яку легко зрозуміти та виправити, ResNet може бути кращим.

SqueezeNet
SqueezeNet (див. статтю: SqueezeNet: точність рівня AlexNet з у 50 разів меншими параметрами та розміром моделі <0,5 МБ) — це нещодавно опублікована архітектура, яка переосмислює концепції з ResNet та Inception. Краща модель архітектурного проектування мережі менша, і параметри ще не потребують складних алгоритмів стиснення.

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

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

ENet розроблений для використання мінімальної кількості ресурсів на початку. Ось чому у нього такий маленький скрипт, з комбінованою мережею енкодерів і декодерів, що займає 0,7 МБ з точністю 16 кадрів. Навіть із такою невеликою моделлю ENet за точністю сегментації подібний або вищий за інші нейронні мережі.

Аналіз модулів
Аналіз модуля CNN, проведений у статті (Систематична оцінка досягнень CNN на ImageNet), є дуже корисним:

Використовуйте ELU нелінійність без batchnorm або ReLU з batchnorm.
Використовуйте вивчене перетворення кольору RGB.
Використовуйте стратегію зниження швидкості навчання лінійно.
Використовуйте суму середніх і більших об'єднаних шарів.
Використовуйте міні-партію приблизно від 128 до 256. Якщо це занадто багато для вашої відеокарти, просто зменшіть швидкість навчання до такого розміру.
Використовуйте повністю зв'язаний шар як згортку і усереднюйте всі прогнози для фінального прогнозу.
Коли дослідження збільшує розмір навчального набору, він виявляє, чи існує плато, якого не досягнуто
Чистота даних важливіша за їхній розмір.
Якщо не вдається збільшити розмір вхідного зображення, зменшуйте крок на наступних шарах — це дає той самий ефект.
Якщо ваша мережа має складну та високо оптимізовану архітектуру, наприклад GoogLeNet, слід бути обережним із її змінами.

Інші архітектури, на які варто звернути увагу
FractalNet (див. статтю: FractalNet: Ultra-Deep Neural Networks without Residuals) використовує рекурсивну архітектуру, яка не тестується на ImageNet. Ця архітектура є похідною від ResNet або, більш загально, від ResNet.

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

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

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

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







Попередній:Кілька методів розрахунку часу виконання Python
Наступний:Antminer B3 підказує, що копати!
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com