За тези от нас, които се занимават с математическа строгост в общността за наука за данни/машинно обучение, може да бъде разочароващо да намерим доказателство за някои от алгоритмите/формулите, които срещаме. Един по-специално си спомням, че нямаше успех онлайн, така че реших, че е в рамките на разумното да го обясня тук. Тази публикация ще се отнася до обратното разпространение в рамките на конволюционните слоеве на вашата невронна мрежа и как да изчислите градиентите по отношение на тегла, отклонения и входове. Относно обозначението в следното доказателство, аз обикновено използвам „h“ в индекса, за да обознача „височината“ [вертикалната] координата на пиксел, и „w“, за да обознача „ширината“ [страничната] координата (ще използвам „b ” и „а” също). Горният ляв пиксел на изображение I ще бъде означен като I[0, 0]. По същия начин, горният ляв пиксел на ядрото K ще бъде обозначен с K[0, 0] (знам, че това противоречи на може би по-популярната конвенция, където на централния пиксел се дава координата [0, 0], въпреки че моята конвенция подравнява как масивите се съхраняват в компютърната памет, така че ще бъде по-естествено да се внедри в код). И за I, и за K ще са необходими повече координати, за да се отчетат каналите и броят на изображенията в партидата. Нека да започнем.

Въведение.

Ние определяме кръстосаната корелация (обикновено ще я наричам просто корелация) като картината на „плъзгащото се ядро“, с която повечето от нас са запознати; погрешно е обаче това да се нарича конволюция, тъй като това изисква ядрото да бъде обърнато на 180 градуса преди плъзгане.

Предполагам, че читателите са запознати с понятия като крачка и дилатация, въпреки че търсенията в Google всъщност могат да помогнат в този случай, за тези, които се нуждаят от опресняване. Не казах за кои стойности на "y", "x" горната корелация е валидна, въпреки че е лесно да се покаже, че A ще има пространствено измерение от

поставям

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

Градиент на загуба по отношение на ядрата K.

Нека [пре]дефинираме A, за да включи отклонението E, константа, дадена на всяко ядро ​​в партидата на ядрото, така че A сега да представлява изхода на текущия слой.

Ще използвам следната нотация, за да обознача пиксел в градиента на загуба нагоре по веригата, тоест градиента на загуба по отношение на изхода (кръстосана корелация) на текущия слой:

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

За да получим горното, просто вземаме производната на пиксел от A (т.е. A[w, z, y, x]) по отношение на K[z_0, k_0, b_0, a_0], което ни дава коефициента зад този конкретен пиксел. Прочитането на горното уравнение може да отнеме няколко минути, поради всички индекси, но в крайна сметка човек трябва да осъзнае простотата на току-що изчислената производна. Също така имайте предвид, че сумирането по D канали на A е премахнато, тъй като се занимаваме с градиента по отношение на пиксел в канал z_0 на K. Пренареждането на последния израз ни дава

но осъзнайте, че това е просто формулата за кръстосана корелация, където ядрото е тензор, съставен от всеки z_0 канал на възходящия [партиден] градиент, с „изображението“ като действителното изображение I,въпреки че сега с крачка, дадена от предишното разширяване и разширяване, дадено от предишната крачка.

Градиент на загуба по отношение на изображения I.

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

Лема за превключване на кръстосана корелация:

Идеята е проста; за да изразим кръстосаната корелация като подобна операция с I като ядро, плъзгаме I вместо K, но за да постигнем такава операция, трябва да нулираме K по подходящ начин, тъй като пространствените размери на I са по-големи от тези на K. Нека сега доказваме теоремата.

Манипулирането на горните граници разкрива познат термин:

Можем да променим горните граници, като вземем предвид къде ядрото е нула:

По подобен начин променяме и долните граници:

Сега пренареждаме,

Сега сме готови да намерим градиента по отношение на изображенията. По правилото на веригата:

където си спомняме

Поставяме A’ чрез лемата за превключване:

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

Можем да опростим размерите на разширения градиент нагоре по течението:

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

Терминът на градиента нагоре по веригата е „обърнат“ в резултат на заместването. Формално, направете следната дефиниция:

Ние добиваме

Лемата за превключване вече е приложима.

По лемата за превключване:

Ние демонтираме термина на градиента нагоре:

Виждаме, че измерението на ядрото се появява в градиента нагоре по веригата сега, но бихме искали те да се показват в термина на ядрото:

Отбелязвайки къде терминът на ядрото е нула [и не-нула], можем да променим ограниченията и да заменим с разширеното ядро ​​според дефиницията:

Опростяването дава

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

Правим едно наблюдение.

Ние добиваме

Остава да интерпретираме този резултат.

Градиент на загуба по отношение на отклонението E.

така че градиентът е просто сумата от всички елементи в z^th канал на всеки възходящ градиент в партидата.

QED.