Огляд топологій глибоких згорткових нейронних мереж

Це буде длиннопост. Я давно хотів написати цей огляд, але sim0nsays мене випередив, і я вирішив почекати момент, наприклад як з'являться результати ImageNet'а. Ось момент настав, але имаджнет не приніс жодних сюрпризів, крім того, що на першому місці за класифікацією знаходяться китайські эфэсбэшники. Їхня модель в найкращих традиціях кэгла є ансамблем декількох моделей (Inception, ResNet, Inception ResNet) і обганяє переможців минулого лише на піввідсотка (до речі, публікації ще немає, є мізерний шанс, що там реально щось нове). До речі, як бачите з результатів имаджнета, щось пішло не так з додаванням шарів, про що свідчить зростання в ширину архітектури підсумкової моделі. Може, з нейромереж вже вичавили все що можна? Або NVidia надто задерла ціни на GPU і тим самим гальмує розвиток ШІ? Зима близько? Загалом, на ці питання я тут не відповім. Зате під катом вас чекає багато картинок, верств і танців з бубном. Мається на увазі, що ви вже знайомі з алгоритмом зворотного поширення помилки і розумієте, як працюють основні будівельні блоки згорткових нейронних мереж: згортки і пулинг.



Перехід від нейрофізіології до комп'ютерного зору

Почати розповідь слід було б з піонерів області нейронних мереж (не тільки штучних) і їх вкладу: формальної моделі нейрона МакКаллока — Піттса, теорії навчання Хеба, персептрона Розенблатта експериментів Статі Бах-і-Рити та інших, але, мабуть, я залишу це читачам для самостійної роботи. Так що пропоную відразу перейти до Девіду Хьюбелу і Торстену Візелю, нобелівським лауреатам 1981 року. Вони отримали премію за роботу, проведену в 1959 році (у той же час Розенблатт ставив свої експерименти). Формально премія видана за «роботи, що стосуються принципів переробки інформації в нейронних структурах і механізмів діяльності головного мозку». Варто відразу застерегти чутливих читачів: далі буде описано експеримент над котиками. Модель експерименту зображена на малюнку нижче: коту на темному екрані під різними кутами демонструється яскравий витягнутий рухомий прямокутник; електрод осцилографа приєднаний до потиличної частини головного мозку, де у ссавців знаходиться центр обробки візуальної інформації. У процесі експерименту вчені спостерігали наступні ефекти (ви легко знайдете аналогією з сучасними згортковими мережами і рекуррентными мережами):

  • певні області зорової кори активуються тільки тоді, коли лінія проектується на певну частину сітківки;
  • рівень активності нейронів області змінюється при зміні кута нахилу прямокутника;
  • деякі області активуються тільки тоді, коли об'єкт рухається в певному напрямку.




Одним з результатів дослідження стала модель зорової системи, або топографічна карта, з наступними властивостями:

  • сусідні нейрони обробляють сигнали з сусідніх областей сітківки;
  • нейрони утворюють ієрархічну структуру (зображення нижче), де кожний наступний рівень виділяє все більш і більш високорівневі ознаки (сьогодні ми вже вміємо ефективно маніпулювати цими ознаками;
  • нейрони організовані в так звані колонки — обчислювальні блоки, які трансформують та передають інформацію від рівня до рівня.




Першим, хто спробував перекласти ідеї Хьюбела і Візеля у програмний код, був Куніхіко Фукусіма, який у період з 1975 по 1980 роки запропонував дві моделі: когнитрон і неокогнітрон. Ці моделі майже повторювали біологічну модель, сьогодні прості клітини (simple cells) ми називаємо згортками, а комплексні клітини (complex cells) — пулингом: це основні будівельні блоки сучасних згорткових нейронних мереж. Модель навчалася не алгоритмом зворотного поширення помилки, а оригінальним евристичним алгоритмом в режимі без вчителя. Можна вважати, що саме ця робота стала початком нейромережного комп'ютерного зору.

Gradient-based learning applied to document recognition (1998)



Через багато років настав 1998 рік. Зима пройшла. Ян ЛеКунн, який вже давно побував постдоком одного з авторів статті про алгоритм зворотного поширення помилки, публікує роботу (у співавторстві з іншими корифеями нейронних мереж), в якій змішує ідеї згорток і пулинга з бекпропом, в результаті отримуючи першу працюючу сверточную нейронну мережу. Її впровадили в пошту США для розпізнавання індексів. Ця архітектура була стандартним шаблоном для побудови згорткових мереж аж до недавнього часу: згортка чергується з пулингом кілька разів, потім кілька повноз'вязних шарів. Така мережа складається з 60 тисяч параметрів. Основні будівельні блоки — згортки 5 × 5 із зсувом 1 і пулинг 2 × 2 зі зрушенням 2. Як ви вже знаєте, згортки відіграють роль детекторів ознак, а пулинг (або сабсемплинг) використовують для зменшення розмірності, експлуатуючи той факт, що зображення мають властивість локальної скоррелірованності пікселів — сусідні пікселі, як правило, не сильно відрізняються один від одного. Таким чином, якщо з декількох сусідніх отримати який-небудь агрегат, то втрати інформації будуть незначними.



ImageNet Classification with Deep Convolutional Neural Networks (2012)



Минуло ще 14 років. Алекс Крижевський з тій же лабораторії, де був постдоком ЛеКун, додав останні інгредієнти до формули. Глибоке навчання = модель + теорія навчання + великі дані + залізо. GPU дозволило значно збільшити кількість учнів параметрів. Модель містить 60 мільйонів параметрів, на три порядки більше, для навчання такої моделі використовувалося два графічних прискорювача.



Інші зображення AlexNetОбмін даними між GPU


Розміри шарів



З точки зору топології мережі це майже той же LeNet, просто збільшений у тисячу разів. Додалися ще кілька згорткових шарів, а розмір ядер згортки зменшується від входу мережі до виходу. Це пояснюється тим, що на початку пікселі сильно скорельовані, і рецепторну область можна сміливо брати більшу, ми все одно втрачаємо мало інформації. Далі ми застосовуємо пулинг, тим самим збільшуючи щільність некорельованих ділянок. На наступному рівні логічно взяти трохи меншу рецепторну область. В результаті у авторів вийшла така от піраміда з згорток 11 × 11 –> 5 × 5 –> 3 × 3…

Також були застосовані інші трюки для уникнення перенавчання, і деякі з них сьогодні є стандартними для глибоких мереж: DropOut (RIP), Data Augmentation і ReLu. Ми не будемо загострювати увагу на цих трюках, зосередимося на топології моделі. Додам тільки, що з 2012 року не нейромережеві моделі більше не перемагали в имаджнете.



Very Deep Convolutional Networks for Large-Scale Image Recognition (12 Apr 2014)



У цьому році вийшли дві цікаві статті, ця і Google Inception, яку ми розглянемо нижче. Робота ж Оксфордської лабораторії — це остання робота, яка дотримується патерну топології, закладеного ЛеКуном. Їх модель VGG-19 складається з 144 мільйонів параметрів і додає в архітектуру, крім 84 мільйонів параметрів, ще одну просту ідею. Візьмемо для прикладу згортку 5 × 5, це відображення , воно містить 25 параметрів. Якщо замінити її стеком з двох шарів зі згортками 3 × 3, то ми отримаємо таке ж відображення, але кількість параметрів буде менше: 3 × 3 + 3 × 3 = 18, а це на 22 % менше. Якщо ж замінити 11 × 11 на чотири згортки 3 × 3, то це вже на 70 % менше параметрів.



Моделі VGG-*

VGG-16 flowing graph


Network in Network (4 Mar 2014)





А ось тут починаються танці з бубном. Такий ось картинкою проілюстрував автор публікації свій пост у блозі, де розповів про Сascaded Сгоѕѕ Сhannel Parameteric pooling. Розглянемо основні ідеї цієї статті. Очевидно, що операція згортки — це лінійне перетворення патчів зображення, тоді згортковий шар — це узагальнена лінійна модель (GLM). Передбачається, що образи лінійно нероздільні. Але чому ж тоді CNN працює? Все просто: використовується надлишкова подання (велика кількість фільтрів), щоб врахувати всі варіації одного образу в просторі ознак. Чим більше фільтрів на одному шарі, тим більше варіацій потрібно врахувати наступного шару. Що робити? Давайте замінимо GLM чим-небудь ефективніше, а найефективніше, що є, — одношаровий персептрон. Це дозволить нам ефективніше розділяти простір ознак, тим самим скоротивши їх кількість.



Впевнений, що ви вже почали сумніватися у доцільності такого рішення, ми й справді зменшимо кількість ознак, але значно збільшимо кількість параметрів. Автори кажуть, що СРСР вирішить цю проблему. Працює це таким чином: на виході з згорткового шару ми отримуємо куб розміром W × H × D. Для кожної позиції (w, h) візьмемо всі значення D, Cross Channel, і порахуємо лінійну комбінацію, Parametric pooling, і так будемо робити кілька разів, тим самим створюючи новий обсяг, і так кілька разів — Cascade. Виявляється, що це просто згортки 1 × 1 з подальшою нелінійністю. Цей трюк ідейно такий же, як і в статті VGG про згортки 3 × 3. Виходить, що спочатку ми пропонуємо замінити звичайну згортку на MLP, але так як MLP дуже дорогий, то замінимо кожен його полносвязный шар на згортковий шар — такий ось сінгапурський трюк. Виходить, що NIN — це глибока сверточная нейронна мережу, а замість згорток у ній — невеликі згорткові нейронні мережі з ядром 1 × 1. Загалом, поки вони ще не підозрювали, якого джина випустили.



Наступна ідея, ще більш цікава, полягає у повній відмові від повноз'вязних шарів — global average pooling. Таку мережу називають fully convolutional network, так як вона більше не потребує на вхід якого-небудь певного розміру зображення і складається тільки з згорток/пулингов. Припустимо, є задача класифікації на N класів, тоді замість повноз'вязних шарів використовується згортка 1 × 1, для того щоб з куба W × H × D зробити куб W × H × N, тобто згорткою 1 × 1 можна довільно змінювати глибину куба ознак. Коли у нас є N плашок W × H, ми можемо обчислити середнє значення плашки і порахувати softmax. Трохи більш глибока ідея полягає в утвердженні авторів, що раніше згорткові шари виступали просто як механізми вилучення ознак, а дискриминаторами були полносвязные шари (звідти і такий патерн, заданий ЛеКунном). Автори стверджують, що згортки — це теж дискриминаторы, так як мережа складається тільки з згорток і вирішує завдання класифікації. Варто зауважити, що в згорткових мережах формату LeNet 80 % обчислень припадає на згорткові шари, а 80 % споживання пам'яті — на полносвязные.



Пізніше ЛеКун напише у себе в фейсбуці:

In Convolutional Nets, there is no such thing as «fully-connected layers». There are only convolution layers with 1 × 1 convolution kernels and a full connection table.


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

Going Deeper with Convolutions (17 Sep 2014)





У гру вступає гугл, свою мережу вони назвали Inception, назву вибрано не випадково, воно як би продовжує ідеї попередньої роботи про «Мережу всередині Мережі», а також відомого мема. Ось що пишуть автори:

In this paper, we will focus on an efficient deep neural network architecture for computer vision, codenamed Inception, which derives its name from the Network in network paper by Lin et al [12] in conjunction with the famous «we need to go deeper» internet meme [1]. In our case, the word «deep» is used in two different meanings: first of all in the sense that we introduce a new level of organization in the form of the «Inception module» and also in the more direct sense of increased network depth. In general, one can view the Inception model as a logical culmination of [12] while taking inspiration and guidance from the theoretical work by Arora et al [2].


Довільне збільшення ширини (кількість нейронів у шарах) і глибини (кількість шарів) має ряд недоліків. По-перше, збільшення кількості параметрів сприяє перенавчання, а збільшення кількості шарів додає ще й проблему загасання градієнта. До речі, останнє твердження вирішиться ResNet'ом, про яку мова піде далі. По-друге, збільшення кількості згорток у шарі призводить до квадратичним збільшення обчислень в цьому шарі. Якщо ж нові параметри моделі використовуються неефективно, наприклад, багато з них стають близькі до нуля, тоді ми просто даремно витрачаємо обчислювальні потужності. Незважаючи на ці проблеми, перший автор статі хотів поекспериментувати з глибокими мережами, але зі значно меншою кількістю параметрів. Для цього він звернувся до статті «Provable Bounds for Learning Some Deep Representations», в якій доводять, що якщо ймовірнісний розподіл даних можна представити у вигляді розрідженої, глибокої і широкої нейронної мережі, тоді можна побудувати оптимальну нейронну мережу для даного датасета, аналізуючи кореляції нейронів попереднього шару і об'єднуючи корельовані нейрони в групи, які будуть нейронами наступного шару. Таким чином, нейрони пізніх шарів «дивляться» на сильно перетинаються області вихідного зображення. Нагадаю, як виглядають рецепторні області нейронів на різних рівнях і які ознаки вони витягають.

рецепторна область шару conv1_2 мережі VGG-19Так, ви майже нічого не бачите, так як рецептивні область дуже маленька, це друга згортка 3 × 3, відповідно, загальна область 5 × 5. Але, збільшивши, ми побачимо, що фіча — це просто детектор градієнта.




рецепторна область шару conv3_3 мережі VGG-19


рецепторна область шару conv4_3 мережі VGG-19


рецепторна область шару conv5_3 мережі VGG-19


рецепторна область шару pool5 мережі VGG-19


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



Яким же чином зловити такі кореляції і перетворити їх в один ознака? На допомогу приходить ідея згорток 1 × 1 з попередньої роботи. Продовжуючи цю ідею, можна припустити, що трохи менша кількість корельованих кластерів буде трохи більшого розміру, наприклад 3 × 3. Те ж саме справедливо для 5 × 5 і т. д., але гугл вирішив зупинитися на 5 × 5.

згортки 1 × 1


згортки 3 × 3


згортки 5 × 5


Після обчислення карт ознак для кожної згортки їх необхідно якимось способом агрегувати, наприклад конкатенувати фільтри.

конкатенація ознак


До речі, для того щоб не втрачати оригінальний образ з попереднього шару, крім згорток додаються ще пулинг-ознаки (ми ж пам'ятаємо, що операція пулинга не спричиняє великих втрат інформації). Та й взагалі, всі юзають пулинг — немає причин від нього відмовлятися. Вся група з декількох операцій називається Inception block.

Additionally, since pooling operations have been essential for the success in current state of the art convolutional networks, it suggests that adding an alternative parallel pooling path in each such stage should have additional beneficial effect, too.




Щоб вирівняти розмір вихідних тензорів, запропоновано також використовувати згортку 1 × 1, це ви можете бачити на малюнку праворуч після операції пулинга. Крім цього, згортки 1 × 1 використовуються ще й для зменшення розмірності перед енергозатратними операціями згортки. Як ви можете помітити, гугл використовує 1 × 1 згортки для досягнення таких цілей (наступні покоління мереж будуть також експлуатувати ці прийоми):
  • збільшення розмірності (після операції);
  • зменшення розмірності (до операції);
  • угруповання корельованих значень (перша операція в блоці).


Підсумкова модель виглядає наступним чином:



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

Rethinking the Inception Architecture for Computer Vision (11 Dec 2015)



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

  • Уникайте representational bottlenecks: не варто різко знижувати розмірність подання даних, це потрібно робити плавно від початку мережі і до класифікатора на виході.
  • Высокоразмерные подання слід обробляти локально, збільшуючи розмірність: недостатньо плавно знижувати розмірність, варто використовувати принципи, описані в попередній статті, для аналізу і групування корельованих ділянок.
  • Просторові звірки можна і потрібно факторизовывать на ще більш дрібні: це дозволить заощадити ресурси і пустити їх на збільшення розміру мережі.
  • Необхідно дотримуватися балансу між глибиною і шириною мережі: не варто різко збільшувати глибину мережі окремо від ширини, і навпаки; слід рівномірно збільшувати або зменшувати обидві розмірності.


Пам'ятайте ідею VGG в 2014 році, що згортки більшого розміру можна факторізовать в стек згорток 3 × 3? Так от, гугл пішов ще далі і факторизовал всі згортки N × 1 і 1 × N.



Моделі Inception blockПерша оригінальна.


Перша факторизованная за принципом VGG.


Нова модель блоку.



Що ж стосується темно-зелених шийок, то пропонується наступна схема. Припустимо, якщо вхідна розмірність , а ми хочемо отримати , то ми спочатку застосовуємо згортку з фільтрів з кроком 1 і потім справах пулинг. Підсумкова складність такої операції . Якщо робити спочатку пулинг, а потім згортку, то складність впаде до , але тоді буде порушений перший принцип. Пропонується збільшувати кількість паралельних гілок, робити згортки з кроком 2, але в той же час збільшувати кількість каналів в два рази, тоді репрезентативна сила подання зменшується «плавніше». А для маніпулювання глибиною тензора використовуються згортки 1 × 1.



Нову модель називають Inception V2, а якщо додати batch normalization, буде Inception V3. До речі, прибрали додаткові класифікатори, так як виявилося, що вони особливо не збільшують якість, але можуть виступати регуляризатором. Але до цього моменту вже були більш цікаві способи регуляризації.

Deep Residual Learning for Image Recognition (10 Dec 2015)



Прийшов час вивчити роботу китайського підрозділу Microsoft Research, якому програв гугл в 2015 році. Давно було помічено, що якщо просто стікати більше шарів, то якість такої моделі зростає до певної межі (дивіться VGG-19), а потім починає падати. Цю проблему називають degradation problem, а мережі, отримані стіканням більшої кількості шарів, — plain, або плоскі мережі. Автори змогли знайти таку топологію, за якої якість моделі зростає при додаванні нових шарів.



Досягається це простим, на перший погляд, трюком, хоча і призводить до несподіваних математичним результатами. Завдяки Арнольду і Колмогорова ми і вони в курсі, що нейромережа може апроксимувати майже будь-яку функцію, наприклад деяку складну функцію . Тоді справедливо, що така мережа легко вивчить residual-функцію (по-російськи будемо називати її залишковою функцією): . Очевидно, що наша первинна цільова функція буде дорівнює . Якщо ми візьмемо деяку мережу, наприклад VGG-19, і пристекаем до неї ще шарів двадцять, то нам хотілося б, щоб глибока мережа вела себе як мінімум не гірше свого неглибокого аналога. Проблема деградації передбачає, що складна нелінійна функція , отримана стіканням декількох шарів, повинна вивчити тотожне перетворення, у разі якщо на попередніх шарах була досягнута межа якості. Але цього не відбувається з якихось причин, можливо, оптимізатор просто не справляється з тим, щоб налаштувати ваги так, щоб складна нелінійна ієрархічна модель робила тотожне перетворення. А що, якщо ми допоможемо їй додати shortcut-з'єднання, і, можливо, оптимізатор буде легше зробити все ваги близькими до нуля, ніж створювати тотожне перетворення. Напевно це вам дуже нагадує ідеї бустинга.



Приклад перетворення плоскої мережі у залишкову мережа


Деталі побудови ResNet-52 на theano/lasagne описані тут, тут же згадаємо лише те, що 1 × 1 згортки експлуатуються для збільшення і зменшення розмірності, як і заповідав гугл. Мережа є fully convolution.



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



А висновки з усього цього приблизно такі:



Порівняйте глибину ResNet'ів і всіх попередніх мереж



Ще один цікавий слайд авторів показує, що вони зробили прорив у глибині/якості мереж. Модель, з якої вони перемогли на имаджнете, містить менше параметрів, ніж 19-шаровий VGG, при глибині 152 шару.



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

Кілька варіантів візуалізації ResNet:


Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning (23 Feb 2016)



Через кілька місяців гугл публікує статтю, в якій задається питанням, а чи буде краще працювати їх модель Inception, якщо запозичити ідеї ResNet'а. І раптом виявляється, що так, якщо додати тотожних зв'язків, то і їх модель покращиться. Далі в статті йде безліч картинок, які ще більше підтверджують те, що їх модель будується в напівавтоматичному режимі. Результатом статті стають моделі Inception V4 і Inception ResNet.

Inception V4 не особливо відрізняється від попередніх поколінь, тут вони експериментували з паддингом і спростили Inception-блоки. Чесно кажучи, мені здається, версія 4 тут присутній тільки для того, щоб збільшилася кількість сторінок, а основна мета — це просто сказати, що резнет і у них працює.

Inception V4Загальна схема мережі.


Stem-блок.


Inception блок А.



Якщо ж у загальній схемі Inception V4 замінити Inception-блоки на аналогічні, але з shortcut-зв'язком, то вийде Inception ResNet.



А так, загалом, у статті картинок більше, ніж тексту.


Identity Mappings in Deep Residual Networks (12 Apr 2016)



Якщо ви заглянули в деталі реалізації оригінального ResNet, то могли помітити, що нелінійність береться після об'єднання двох гілок: залишкової функції тотожною зв'язку. Автори заявляють, що це не зовсім правильна техніка і краще взагалі не брати нелінійність після агрегації. Краще як би зрушити всі нелінійності на один крок назад за залишковим гілкам. Таким чином вихід з блоку подається на тотожну зв'язок наступного, де він незміненим доходить до свого виходу; а також на залишкову мережа наступного, де над виходом поточного вже застосовується нелінійність. Так вдалося навчити надглибоку нейронну мережу, що складається з 1001 шару. Порівняйте, ще в 2014 році 19-шарова нейронна мережа вважалася «very deep convolutional neural networks».



У статті наводиться невеликий математичний аналіз такого трюку. Нехай
  • — вхід поточного шару;
  • — shortcut connection, в нашому випадку це просто урочисте перетворення ;
  • — residual network;
  • — сумарний вихід двох гілок блоку;
  • — вхід наступного блоку дорівнює деякого перетворення від агрегації двох гілок попереднього блоку.


Тоді можна розглянути дві ситуації, у першій — це як раз варіант, запропонований в поточній статті. Позначимо будь шар мережі K, тоді його значення можна вивести як суму всіх попередніх плюс деяке початкове значення. Нагадаю, що для градієнтного спуску нам необхідно обчислювати приватну похідну цільової функції на входах у кожен шар. Якщо продиференціювати цільову функцію з якого-небудь шару k, то отримаємо, що градієнт декомпозується в суму двох членів: похідні цільової функції по останньому шару і суми приватних похідних. Це відрізняється від формули для плоскої мережі тим, що в плоскій мережі формула градієнта складається з серії матрично-векторних творів. Ми можемо бачити, що градієнт цільової функції доходить до кожного шару всередині мережі, а щоб спостерігався vanishing gradients, необхідно, щоб всі були рівні -1. Автори вважають, що це вкрай малоймовірно. Таким чином, проблему загасання градієнтів можна більше не брати в розрахунок.



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

Насправді автори досліджували різні конфігурації residual-блоку і прийшли до висновку, що саме запропонована проста конструкція зі зсувом нелінійності на крок назад, найкраща.

Варіації залишкового блоку




Тут варто згадати батька глибоких рекурентних мереж — Юргена Шмидхубера (Jürgen Schmidhuber). Якщо ви знайомі з його LSTM-моделлю, опублікованій ще в 1997 році, то ви легко помітите, що ResNet у запропонованій версії — це не що інше, як розгорнутий LSTM, де приховані стану з'єднані один з одним по осі часу фіксованого необучаемой зв'язком з вагою 1. І не дивно, що Юрген працював у цей час над дуже схожою моделлю — Highway Network. Але, схоже, вони переусложнили модель, додавши кілька вентилів (gate), і не змогли отримати кращі результати, ніж варіант з поточної статті.



Bridging the Gaps Between Residual Learning, Recurrent Neural Networks and Visual Cortex (13 Apr 2016)



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

The dark secret of Deep Networks: trying to imitate Recurrent Shallow Networks?

A radical гіпотезу would be: the effectiveness of most of the deep feedforward neural networks, including but not limited to ResNet, can be attributed to their ability to approximate recurrent computations that are prevalent in most tasks with larger t than shallow feedforward networks. This may offer a new perspective on the theoretical pursuit of the long-standing question «why deep is better than shallow».


Residual Networks are Exponential Ensembles of Relatively Shallow Networks (20 May 2016)



Упевнений, майже всі з вас знайомі з DropOut, стратегією навчання, яка до недавнього часу була стандартом при навчанні глибоких мереж. Було показано, що така стратегія еквівалентна навчання експоненціально великої кількості моделей і усереднення результату прогнозування. Виходить побудова ансамблю алгоритмом навчання. Автори даної статті показують, що ResNet — це ансамбль по своїй конструкції. Вони показують це серією цікавих експериментів. Для початку подивимося на розгорнутий варіант ResNet, який виходить, якщо рахувати два поспіль йдуть shortcut-з'єднання як одне ребро flowing graph'а.



Перевірити це можна простим розкладанням формули останнього шару:


Як бачите, мережа зросла ще з однієї розмірності, крім ширини і глибини. Автори кажуть, що це нова третя розмірність, і називають її multiplicity, по-російськи, мабуть, ближче всього буде — різноманіття. Виходить, що завдяки Арнольду і Колмогорова ми знаємо, що мережу потрібно ростити в ширину (доведено). Завдяки Хинтону ми знаємо, що додавання шарів покращує нижню вариационную кордон правдоподібності моделі, загалом, теж добре (доведено). І ось пропонується новий вимір, що потрібно робити моделі різноманітними, хоча це ще треба довести.

Поки ж немає докази, автори пропонують наступні доводи. Після навчання, в режимі прогнозування, ми видалимо декілька шарів з мережі. Очевидно, що всі мережі до ResNet після такої операції просто перестануть працювати.



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



Схоже, заради троллінгу автори видаляють кілька шарів з VGG і з ResNet і порівнюють якість.

дивовижні Результати.


У наступному експерименті автори будують розподіл абсолютних значень градієнта, отриманих з підмереж різної довжини. Виявляється, що для ResNet-50 ефективна довжина підмережі — від 5 до 17 шарів, на їх частку припадає майже весь внесок у навчання всієї моделі, хоча вони займають лише 45 % від усіх довжин шляхів.

Аналіз розподілу градієнтів.


Висновок



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



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

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

Будемо подивитися.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.