Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 10136|Отговор: 0

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

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


Архитектурата на LeNet5 се основава на идеята, че (особено) характеристиките на изображението са разпределени из цялото изображение, а конволюцията с научими параметри е ефективен начин за извличане на подобни характеристики на множество места с малък брой параметри. По това време нямаше видеокарта, която да помага с обучението, а дори процесорът беше бавен. Затова възможността за запазване на параметри, както и на процеса на изчисление, е ключово развитие. Това е обратното на използването на всеки пиксел като отделен вход за голяма, многослойна невронна мрежа. LeNet5 обяснява, че тези пиксели не трябва да се използват в първия слой, защото изображението има силни пространствени корелации, които не могат да бъдат използвани чрез използване на независими пиксели като различни входни характеристики.

Функциите на LeNet5 могат да бъдат обобщени по следния начин:

Конволюционните невронни мрежи използват 3 слоя като последователност: сгъваеми, пулирани, нелинейни → Това вероятно е ключова характеристика на дълбокото обучение на изображения след тази статия!
Използвайте конволюции за извличане на пространствени характеристики
Подизвадка чрез картографиране към пространствената средна стойност
Нелинейност във формата на хиперболичен тангенс (танх) или S-образен (сигмоид).
Многослойните невронни мрежи (MLP) служат като крайни класификатори
Разредените матрици на връзките между слоевете избягват големи изчислителни разходи

Като цяло тази мрежа е отправна точка за голям брой съвременни архитектури и е вдъхновила мнозина в тази сфера.

Интервал
От 1998 до 2010 г. невронната мрежа беше в инкубационен етап. Повечето хора не осъзнават нарастващата им сила, докато други изследователи са бавни да го направят. Благодарение на появата на камерите за мобилни телефони и евтините цифрови камери, все повече данни се експлоатират с нея. Изчислителната мощ също расте, процесорите стават по-бързи, а GPU-тата се превръщат в изчислителни инструменти за множество цели. Тези тенденции позволиха на невронните мрежи да напредват, макар и бавно. Данните и изчислителната мощ правят задачите, които невронните мрежи могат да изпълняват, все по-интересни. След това всичко стана ясно......

Дан Сиресан Нет
През 2010 г. Дан Клаудиу Сиресан и Юрген Шмидхубер публикуваха имплементация на най-ранната невронна мрежа с GPU. Тази реализация е 9-слойна невронна мрежа, работеща върху графичен процесор NVIDIA GTX 280, включително напред и обратно разпространение.

AlexNet
През 2012 г. Алекс Крижевски публикува Alexet (виж: ImageNet Classification with Deep Convolutional Neural Networks), по-дълбока и по-широка версия на LeNet, която спечели трудната конкуренция ImageNet с значителна преднина.


AlexNet разширява идеите на LeNet към по-големи невронни мрежи, които могат да учат много по-сложни обекти и обектни нива. Приносите на тази работа са:

Използвайте модифицирана линейна единица (ReLU) като нелинейност
Използвайте техниката Dropout, за да игнорирате селективно отделни неврони по време на обучението, за да избегнете пренапасване на модела
Презапишете голям пул, за да избегнете средния ефект от средното пулиране
Намалете времето за обучение с NVIDIA GTX 580 GPU

В този момент GPU-тата могат да предоставят по-голям брой ядра от процесорите, а времето за обучение може да се увеличи 10 пъти, което от своя страна позволява по-големи набори от данни и по-големи изображения.

Успехът на AlexNet доведе до малка революция. Сгъваемите невронни мрежи вече са гръбнакът на дълбокото обучение и са се превърнали в синоним на "големи невронни мрежи, които вече могат да решават полезни задачи."

Overfeat
През декември 2013 г. лабораторията на Ян ЛьоКун в Нюйоркския университет предложи производно на AlexNet, Overfeat (виж: OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks). Тази статия също така предложи обучаваща ограничителна кутия, която доведе до много статии по същата тема. Смятам, че е по-добре да се научиш да разделяш предмети, отколкото да учиш изкуствени ограничителни кутии.

VGG
Мрежата VGG от Оксфордския университет (виж: Много дълбоки сгъваеми мрежи за разпознаване на големи изображения) е първата мрежа, която използва по-малки филтри с размер 3×3 на всеки сгъваем слой и ги комбинира, за да ги обработва като сгъваема последователност.

Това изглежда е обратното на принципа на LeNet, при който се използват големи конволюции за получаване на подобни характеристики в изображението. За разлика от филтрите 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 класификатор с 3 сгъваеми слоя. Това очевидно означава, че има много параметри и възможности за учене. Но тези мрежи са трудни за обучение и трябва да бъдат разделени на по-малки мрежи и да се натрупват слой по слой. Това се дължи на липсата на надежден начин за регулиране на модела или за ограничаване на голямо пространство за търсене поради големия брой параметри.

VGG използва големи размери на характеристики в много слоеве, тъй като изводът отнема време по време на изпълнение. Както при тесното място на Inception, намаляването на броя на функциите ще спести част от изчислителните разходи.

Мрежа в мрежа
Идеята за Мрежа в Мрежа (NiN, виж статията: Мрежа в мрежа) е проста и страхотна: използването на 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). Това обикновено се нарича "bottleneck". Този раздел ще бъде обяснен в секцията "bottleneck layer" по-долу.

GoogLeNet използва гръбнак без inception модул като начален слой, последван от среден пулинг слой плюс 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 000
64×64 × 3×3 = 36 000
64×256 × 1×1 = 16 000

В сравнение с предишните 600 000, сега има общо 70 000 изчислителни обема, което е почти 10 пъти по-малко.

И въпреки че правихме по-добри операции, не загубихме неговата обща природа на този слой. Слоят bottleneck се доказа като първокласен при набори от данни като ImageNet, а се използва и в архитектури като ResNet, който ще представим следващ.

Тя е успешна, защото входните характеристики са свързани, така че излишъкът може да се намали чрез правилно комбиниране с 1×1 конволюция. След това, след като малък брой характеристики бъдат объркани, те могат да бъдат разширени отново в смислени комбинации на следващия слой.

Inception V3 (и V2)
Кристиан и екипът му са много плодовити изследователи. През февруари 2015 г. беше въведен партидно-нормализиран Inception като Inception V2 (виж статията: Batch Normalization: Accelerating Deep Network Training чрез намаляване на вътрешното ковариатно изместване). Batch-нормализацията изчислява средното и стандартното отклонение на всички функции на изхода на един слой и използва тези стойности, за да нормализира техните отговори. Това е еквивалентно на "избелване" на данните, така че всички невронни карти да реагират в един и същи диапазон и да са нулеви средни. Това помага при обучението, когато следващият слой не трябва да учи офсет от входните данни, и също така се фокусира върху по-ефективното комбиниране на тези характеристики.

През декември 2015 г. екипът пусна нова версия на модула Inception и подобна архитектура (виж статията: Rethinking the Inception Architecture for Computer Vision). Статията по-добре обяснява оригиналната архитектура на GoogLeNet, като дава повече подробности за дизайнерските решения. Първоначалната идея е следната:

Чрез внимателно изграждане на мрежата дълбочината и ширината се балансират, за да се максимизира потокът на информация в мрежата. Преди всяко групиране добавяйте картографиране на функциите.
С увеличаването на дълбочината дълбочината или броят на функциите на мрежовия слой също се увеличава систематично.
Използвайте всяко увеличаване на дълбочината на слоя, за да увеличите обвързването на обекти преди следващия слой.
Използвайки само 3×3 конволюции, дадени филтри 5×5 и 7×7 могат да се разделят на множество 3×3, когато е възможно. Вижте изображението по-долу


В резултат на това новото Начало стана:


Можете също да разделите филтъра, като изравните сгъвката на по-сложни модули:


При извършване на inception изчисления, модулът Inception може също да намали размера на данните чрез предоставяне на пулиране. Това е по същество подобно на изпълнението на прост слой за пулиране паралелно при изпълнение на конволюция:


Inception също използва слой за пулиране и softmax като финален класификатор.

ResNet
Декември 2015 г. донесе нова промяна, която съвпадна с Inception V3. ResNet има проста идея: подаване на изхода на два последователни сгъваеми слоя и заобикаляне на входа към следващия слой (виж статията: Дълбоко остатъчно обучение за разпознаване на изображения).


Това е подобно на някои от старите идеи преди това. Но в ResNet те разделят двата слоя и се прилагат в по-голям мащаб. Тридингът след 2 слоя е ключова интуиция, защото разделянето на един слой не дава повече подобрение. Преминаването през слой 2 може да се разглежда като малък класификатор или мрежа в мрежа.

Това е първият път, когато броят на мрежовите слоеве надхвърля 100, а дори и 1000 слоя могат да бъдат обучени.

ResNet, който има голям брой мрежови слоеве, започва да използва мрежов слой, подобен на слоя Inception bottleneck:


Този слой обработва по-малък брой характеристики, като първо обърква по-малък брой характеристики с 1×1 с по-малък изход (обикновено 1/4 от входа), след това използва слой от 3×3 и след това слой от 1×1. Подобно на модула Inception, това гарантира ниска изчислителна интензивност, като същевременно предлага богати комбинации от функции.

ResNet използва сравнително прост начален слой върху входовете: базов слой с 7×7 обема и два пула. Сравнете това с по-сложните и по-малко интуитивни Inception V3 и V4.

ResNet също използва слой за пулиране плюс softmax като финален класификатор.

Други прозрения за ResNet се случват всеки ден:

ResNet може да се счита както за паралелен, така и за съсед, като третира входовете и изходите (изходи) като паралелни в много модули, докато изходите на всеки модул са свързани непрекъснато.
ResNet може да се разглежда и като комбинация от паралелни или непрекъснати модули (виж статията: Остатъчните мрежи са експоненциални ансамбли на относително плитки мрежи).
Установено е, че ResNet обикновено работи паралелно върху мрежови блокове на слоеве 20-30. Вместо да тече непрекъснато през цялата дължина на мрежата.
Когато ResNet връща изхода обратно към входа като RNN, мрежата може да се счита за по-биологично доверен кортикален модел (виж статията: Преодоляване на пропастите между остатъчно обучение, рецидиви невронни мрежи и визуална кора).

Inception V4
Ето още една версия на Inception от Кристиан и неговия екип, която е подобна на Inception V3:


Inception V4 също комбинира модула Inception и модула ResNet:


Мисля, че архитектурата не е много кратка, но е пълна и с по-малко прозрачни евристики. Трудно е да се разберат изборите в нея и е трудно за авторите да обяснят.

Поради простотата на мрежата, която може лесно да бъде разбрана и коригирана, ResNet може да е по-добър.

SqueezeNet
SqueezeNet (виж статията: SqueezeNet: AlexNet точност с 50 пъти по-малко параметри и <0.5MB размер на модела) е наскоро публикувана архитектура, която преработва концепциите в ResNet и Inception. По-добрият архитектурен мрежов модел е по-малък, а параметрите все още не изискват сложни алгоритми за компресия.

ENet
Нашият екип планира да комбинира всички характеристики на наскоро представената архитектура, за да създаде много ефективна, нискотегловна мрежа, която използва по-малко параметри и изчисления за постигане на отлични резултати. Тази мрежова архитектура се нарича ENet и е проектирана от Адам Паске. Вече сме го използвали за маркировка на един пиксел и резолюция на сцени.

За повече информация относно ENet вижте статията ENet: Дълбока невронна мрежова архитектура за семантична сегментация в реално време. ENet е мрежа за кодиране, събиране и декодиране. Енкодерът е стандартен дизайн на CNN за класификация. Декодерът е мрежа за увеличаване на семплирането, която предава класификацията назад към оригиналното изображение за сегментация. Това използва само невронни мрежи и няма други алгоритми за сегментиране на изображения.

ENet е проектиран да използва възможно най-малко ресурси в началото. Затова има толкова малък скрипт, с комбинирана мрежа от енкодери и декодери, заемаща 0.7 MB с точност от 16 fp. Дори с толкова малък модел, 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