В предишната и първата статия от поредицата „The Maths Behind“ обсъдихме линейната регресия. В този ще разберем какво е градиентно спускане и как работи, очевидно с помощта на математика, о!

Добре, така че първо и най-важно какво е Gradient Descent? Нека обясня. По същество това е метод за оптимизация, при който намираме локалните или глобалните минимуми (в зависимост от кривата) на дадена крива чрез произволно избиране на постоянните параметри и постепенно придвижване надолу, докато се достигне най-ниската точка (известна още като минимуми). За да разберете по-добре това, нека отидем на върха на планината, не буквално, просто в ума ви. И след като се насладите на гледката, искате да се спуснете до кафене, разположено в подножието на планината. Представете си, че имате свръхчовешки способности и можете да слезете от всяка стръмна планина. И искате да стигнете до вашата дестинация възможно най-бързо, защото цялото катерене ви е изморило и искате да се освежите. Какво ще направиш? Много е вероятно да вземете най-стръмното спускане и когато стигнете до дъното на това конкретно спускане, отново ще вземете най-стръмното спускане и този процес ще продължи, докато стигнете до кафенето.

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

Тук ще използваме функцията на разходите за линейна регресия като наша крива, за да демонстрираме как работи градиентното спускане. Предполагам, че всички си спомняте каква беше функцията на разходите. Ако не, не се притеснявайте, ето го: -

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

За да разберем какво се случва, нека начертаем функцията на разходите (по оста y) и параметър (тета 1, по оста x).

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

1. Приемането на твърде малка стойност на LR означава, че ще отнеме цяла вечност, за да се достигнат минимумите.

2. И приемането на твърде голяма стойност означава, че тя ще превиши минимумите и ще се приземи от другата страна, без да остави шанс за достигане на минимумите.

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

ВИДОВЕ ГРАДИЕНТНО СПУСКАНЕ

Добре, след като вече знаем основния принцип зад градиентно спускане, нека обсъдим типовете градиентно спускане. Има три вида градиентно спускане: -

1. Пакетно градиентно спускане: -

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

2. Стохастичен градиентен спад: -

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

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

3. Мини-партида градиентно спускане: -

Мини-партида Gradient descent съчетава най-добрите характеристики на другите два вида градиентно спускане. Разделяме целия набор от данни на малки партиди и след това прилагаме партиден градиент към всяка от тях. По този начин сме актуализирали параметъра толкова пъти, колкото са партидите.

В следващата статия ще разгледам логистичната регресия. Останете на линия.... :)

Благодарим ви, че прочетохте..!!