Днес работих на седмица 3 от първия курс от Coursera DL. Научих за плитка невронна мрежа. Беше предимно преглед на Coursera ML, но имаше някои нови неща, които не знаех.

Плитка невронна мрежа

Невронната мрежа се реализира чрез просто повтаряне на процеса на логистични регресии. Плитката невронна мрежа е невронна мрежа, която е един скрит слой.

Предно разпространение

Можем да извършим предаване напред, както следва:

Както винаги, искаме да векторизираме нашите изчисления колкото е възможно повече. Векторизираното разпространение напред може да се извърши по следния начин:

Обърнете внимание, че всяка проба се съхранява по колони в матриците.

Функция за активиране

Използваме сигмоидната функция като наша функция за активиране. Но има много различни видове нелинейни функции, които можем да използваме. Но защо искаме функция за активиране на първо място? Цялата цел на функцията за активиране е моделът да апроксимира някаква сложна нелинейна функция. Това е и причината, поради която не искаме да използваме линейна функция за функция за активиране.

Сигмоидна функция

Това е функцията за активиране, с която сме най-познати. Това е полезно, когато правим двоична класификация, защото искаме да получим вероятността изходът да е 1, което се изразява със стойност между 0 и 1. Проблемът със сигмоидната функция е, че градиентът изчезва, когато z е по-далеч от 0 , и по този начин спира да учи.

Функция Тан

Обикновено функцията tanh работи по-добре от сигмоидната функция. Андрю обяснява, че това е така, защото функцията tanh е центрирана около нула, докато сигмоидната функция е центрирана около 0,5. „Тази публикация“ изяснява по-добре гледната точка на Андрю. По принцип се казва, че функцията tanh е сигмоидна функция, изместена и опъната вертикално около нулата, и по този начин произвежда по-високи производни и конвергира по-бързо. За проблеми с двоичната класификация можем да оставим крайния изход активиран със сигмоидна функция и да използваме функцията tanh за скрития слой. Забележете, че проблемът с изчезващия градиент все още съществува.

Функция ReLU

ReLU означава ректифицирана линейна единица. Скорошни изследвания установиха, че това се сближава по-бързо около 6 пъти по-бързо от tanh активирането. Тази функция решава проблема с изчезващия градиент. Недостатъкът е известен като „умиращ ReLU“. „Този ​​отговор“ обяснява по-подробно проблема. По принцип се казва, че след като всички примери за обучение произведат z по-малко от 0 за определен възел, няма шанс възелът да бъде активиран отново, защото градиентът е завинаги нула. Но шансът това да се случи е доста малък при правилна предварителна обработка на данни, като нормализиране на средната стойност. На практика функцията ReLU е достатъчно добра. Leaky ReLU може напълно да избегне този проблем.

Спукан ReLU

Leaky ReLU решава проблема с „умиращия ReLU“. Оставя шанс възелът да бъде повторно активиран.

Производни на всяка активираща функция

Обратно размножаване

Вече доказахме формулата за обратно разпространение на Ден 32, така че няма да пристъпваме към доказателство отново. (Честно казано, вече забравих как направих доказателството.) Тук просто ще разгледаме векторизираното изпълнение на обратното разпространение.

Случайна инициализация

За разлика от логистичната регресия, не можем просто да зададем всички наши параметри на нула. Ако го направим, всеки възел в крайна сметка ще продължи да изчислява една и съща функция и по този начин ще намали сложността на функцията, която можем да представим. На случаен принцип ще инициализираме теглата да бъдат стойности около нула, да кажем между -0,01 и 0,01. Защо да го настройвате около нула? Ако зададем w да бъде някои големи стойности като начало, изходът z, който произвежда, също ще бъде голям. Ако z е голямо, градиентът около тази точка ще бъде малък, което означава, че обучението ще бъде бавно. Сега можем просто да настроим b на нула, тъй като рандомизирането на w вече е достатъчно за проблем с нарушаване на симетрията.

Това е всичко за днес.