Невронната мрежа е често срещан нелинеен алгоритъм в инструментариума на специалистите по данни. Днес нека да разгледаме какво е невронна мрежа и как да изградим невронна мрежа.

Невронната мрежа е разделена на 3 части: входен слой, скрит слой и изходен слой. Всеки слой се състои от няколко перцептрона. Всеки перцептрон се състои от 2 части: претеглени входове и функции за активиране. Има много функции за активиране, но само нелинейните функции за активиране позволяват на такива мрежи да изчисляват нетривиални проблеми, използвайки само малък брой възли. Това, което имаме предвид под обучение, е да намерим тегла и отклонения, които минимизират функцията на разходите. Data Scientist използва обратно разпространение за осъществяване на процес на обучение.

Обратното разпространение е метод, използван в изкуствените невронни мрежи за изчисляване на градиент, който е необходим при изчисляването на теглата. Нека започнем с пример за градиентно спускане (начинът за намиране на min, когато е невъзможно или наистина трудно да се разграничи функцията).

Да предположим, че f(x,y)=x²+2y². x0=2, y0=3, алфа=0,2

f(x0,y0)=22

x1=x0-alpha * f’(x1,y)= 2–0,2*2*2 = 1,2

y1=y0-алфа * f’(x,y1)= 3–0,2*4*3 = 0,6

f(x1,y2)=2.16

Както можете да видите, f2 е по-малко от f1. След няколко стъпки резултатът ще се сближи с минимална стойност.

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

Ако искате да научите повече за обратното разпространение, моля, следвайте 3Blue1Brown в Youtube. Каналът обяснява обратното разпространение както по интуиция, така и по математически начин.

Поради верижното правило има шанс перцептронът да се актуализира много бавно или бързо поради натрупване на изчисление на диференциация. (проблем с градиентно изчезване и експлозия) Можем да използваме остатъчна мрежа, за да коригираме проблема. Основната идея е да се създаде късо изрязване в рамките на слоевете.

ReLU е много добре дошла функция за активиране. Функцията е наистина проста, тоест f(x)=max(0,x). Може да се сближи много по-бързо от сигмоида или tanh, защото изчислението му е наистина просто. Въпреки това градиентът на единицата ReLU може да бъде 0 завинаги по време на обучение в някои случаи. За да решат проблема, специалистите по данни изобретиха Leaky ReLU — f(x)=max(alpha * x,x), където alpha е наистина малък параметър, напр.

0.001.

Softmax може да прехвърли изхода към число в [0,1], уравнението е:

Един прост пример:

В машинното обучение типичен начин за справяне с прекомерното оборудване е регулирането. При дълбокото обучение често срещан начин е обърнато отпадане. Техниката намалява и мащабира по време на тренировка и няма нужда да го правите по време на тестване.

Преди да тренираме невронна мрежа, трябва даинициализираме теглото. Препоръчителен начин е използването на уравнение: random(n)/sqrt(n), n е броят на входовете. Емпирично може да подобри скоростта на конвергенция.