Математика за изкуствени невронни мрежи за начинаещи, Част 2
Градиентно спускане
В последната част беше показан пример за изчисляване на параметрите на линейна регресия с помощта на метода на най-малките квадрати. Параметрите бяха намерени аналитично -, където е псевдообратната матрица. Това решение е ясно, точно и кратко. Но има проблем, който може да бъде решен числено. Градиентното спускане е метод за числена оптимизация, който може да се използва в много алгоритми, където се изисква да се намери екстремума на дадена функция - невронни мрежи, SVM, k-средства, регресия. По-лесно е обаче да го възприемете в чист вид (и по-лесно да го модифицирате).
Проблемът е, че изчисляването на псевдообратната матрица е много скъпо: 2 умножения по, намиране на обратната матрица -, умножаване на матричния вектор, където n е броят на елементите в матрица А (брой характеристики * брой елементи в теста извадка) Ако броят на елементите в матрица А е голям (> 10 ^ 6 - например), тогава дори ако има 10 000 ядра, намирането на решение аналитично може да се забави. Също така, първата производна може да се окаже нелинейна, което ще усложни решението, може изобщо да няма аналитично решение или данните може просто да не се побират в паметта и ще се изисква итеративен алгоритъм. Случва се плюсовете да бъдат записани и фактът, че цифровото решение не е напълно точно. В тази връзка функцията на разходите е сведена до минимум чрез числени методи. Проблемът с намирането на екстремум се нарича оптимизационен проблем. В тази част ще се спра на една техника за оптимизация, наречена градиентно спускане.
Няма да се отклоняваме от линейната регресия и OLS и ще обозначаваме функцията на загубите като - тя остана непроменена. Нека ви напомня, че градиентът е вектор на формата, където е частичната производна. Едно от свойствата на градиента е, че той посочва посоката, в която определена функция f се увеличава най-много. Доказателството за това следва от дефиницията на производното. Няколко доказателства. Вземете някаква точка а - в близост до тази точка функцията F трябва да бъде дефинирана и диференцируема, тогава антиградиентният вектор ще сочи към посоката, в която функцията F намалява най-бързо. Следователно се стига до заключението, че в някаква точка b, равна, за някаква малка стойност на функцията ще бъде по-малка или равна на стойността в точка a. Можете да мислите за това като за спускане по хълм - като направите стъпка надолу, текущата позиция ще бъде по-ниска от предишната. Така при всяка следваща стъпка височината поне няма да се увеличава. Официално определение. Въз основа на тези дефиниции можете да получите формула за намиране на неизвестни параметри (това е просто пренаписана версия на формулата по-горе):
Е стъпката на метода. В задачите за машинно обучение това се нарича скорост на обучение.
Методът е много прост и интуитивен, нека вземем прост 2D пример, за да демонстрираме:
Необходимо е да се сведе до минимум функцията за изглед. Минимизирането означава да се намери при каква стойност функцията приема минималната стойност. Нека определим последователността на действията:
1) Производно по отношение на:
2) Задайте началната стойност = 0
3) Задайте размера на стъпката - опитайте няколко стойности - 0,1, 0,9, 1,2, за да видите как този избор ще повлияе на конвергенцията.