Векторизирано доказателство без суми или индекси.

TLDR

Обратното разпространение е гръбнакът на дълбокото обучение. Въпреки че има много литература по този въпрос, малко са тези, които подробно обясняват откъде идват формулите на градиентите (∂загуба / ∂W), необходими за обратно разпространение. Дори когато обясняват, математиката има тенденция да става дълга и пълна с индекси навсякъде поради голямата размерност на проблема: имате индекс за броя на пробите, индекс за броя на слоевете и един за броя на невроните във всеки слой.

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

Така че идеята на тази статия е да демонстрира формули за обратно разпространение по елегантен начин, използвайки само векторизирано смятане: Така че без индекси i,j,k,…и никакво сумиране ∑! (Единственият индекс, който ще използваме, е да обозначим слоя.)

Въведение

Да предположим, че имаме следната архитектура на невронна мрежа (NN).

Нашата NN има два скрити слоя и един изходен слой от три класа. Ще използваме softmax активиране за всички слоеве.

Обучението на този модел означава минимизиране на нашата функция на загуба, която е кръстосаната ентропия (логаритмична загуба). Тъй като имаме 3 класа, загубата на регистрационен файл е: 𝜉(Y,X,W₁,W₂,W₃) = сума[Ylog(X₃)]
С: „сума“ е сумата от всички елементи в една матрица, а „○“ е елементно произведение на две матрици с еднаква форма. „○“ се нарича още „продукт на Адамар“.

X₀е матрица n×3, като n е размерът на минипартида.
W₀е матрица 3×5. Той има теглата за прехода от слой 0 към 1.
X₁
е матрица n×5. Той представлява трансформацията на данните на първия слой.
W₁
е матрица 5×4. Той има теглата за прехода от слой 1 към 2.
X₂
е матрица n×4. Той представлява трансформацията на данните на втория слой.
W₂
е матрица 4×3. Той има теглата за прехода от слой 2 към 3.
X₃
е матрица n×3. Той представлява трансформацията на данните на третия слой.
Y
е матрица n×3, като 3 е броят на класовете.

По принцип целта на тази статия е да демонстрира следния диференциален израз: (★)

с 𝜹₂=Y- X₃
и 𝜹₁= (𝜹₂ .W₂)X₂○ (1 - X₂)
и 𝜹₀ = (𝜹₁ .W₁)X₁○ (1 - X₁).
и ○ като „продукт на Адамар“.
и :като „продукт на Фробениус“

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

Така във всяка стъпка Wᵢ се актуализира, както следва: [Wᵢ=Wᵢ+𝛼*Xᵢ𝜹ᵢ]като 𝛼 е скоростта на обучение.

Ако се интересувате как да намерите (★), тогава тази статия е за вас!

Ключовите резултати се нуждаеха от доказателство

1. Връзката с мултиномиалната регресия

Всъщност, ако вземете последните два слоя на нашата мрежа, това е основно „мултиномиална логистична регресия“ с X₂ като входни данни и X₃ като изходни прогнози:

С 𝜎 е функцията softmax, можем да запишем X₃=𝜎(X₂W₂).
С Z₂=X₂W₂,ние може да пише X₃=𝜎(Z₂).

Така загубата може да бъде записана по следния начин: 𝜉=сума[Ylog(𝜎( Z₂))]

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

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

Друго интересно нещо, което трябва да забележите, е, че тъй като използваме softmax активиране за всички слоеве, можем да заключим:

2. Диференциращи функции на матрици

Тази част е доста важна, защото ще ни предостави елегантен начин да разкрием крайния израз (★).

f: Матрица -› Скалар

Нека разгледаме f като функция, която взема матрица и извежда скалар. Ако f е диференцируемо, тогава:

Така диференциалът на f се записва по следния начин:

като “:” е продуктът на Фробениус [ A:B =следа(AB) ] .

f: Скаларно -› Скаларно, приложено елементарно върху матрица

Нека разгледаме f като проста функция, която приема скала и извежда скала. Сега нека обозначим с F функцията, която прилага f към всеки елемент в матрицата независимо. Ако f е диференцируемо, тогава:

Така диференциалът на f се записва по следния начин:

като „○“ е „продуктът на Адамар“, който видяхме по-рано.

3. Свойства на продуктите на Адамар и Фробениус

Нека A, B и C са три матрици с еднаква форма.

  • Свойства на продукта Адамар:

Той има основно същите свойства като простото скаларно умножение, но за матрици.

Комутативно AB = BA
Асоциативен A(BC) = (AB)C = AB C
Разпределение над добавяне A (B+C) = AB + AC

  • Свойства на продукта Frobenius:

Разпределение над добавяне A:(B+C) = A:B + A:C

Следващото свойство е особено интересно и може просто да се докаже чрез замяна на оператора „:“ с формулата за проследяване.

Съвместни свойства на два продукта:

Ред на операциите:
“○” има по-висок приоритет от “:” и двете имат по-нисък приоритет от матричното умножение “.” т.е.: “. › “○” › “:”
Така, A:BC.D = A:(B(C.D))

Най-важното свойство между двата оператора е следното:

и може просто да се демонстрира чрез замяна на оператора „:“ с формулата за проследяване.

Доказателство за формули за обратно разпространение

1. Диференциране на загубата

Ако комбинираме 1.a и 2.a, имаме

Тъй като Z е матрично умножение, то се различава, както следва:

По този начин

Вече имаме разликата на 𝜉 на W₂ и X₂с 4 реда за доказателство.

2. Разграничаване на скритите слоеве

Сега нека се върнем обратно към последния скрит слой.
Ако комбинираме 1.b и 2.b, получаваме:

Така 𝜹₂W₂:dX₂ става

Сега имаме разликата на 𝜹₂W₂:dX₂, с 6 реда за доказателство.

Връщането на това обратно в d𝜉 ни дава

Така че всъщност това е. Останалото е просто повтаряне на тази стъпка за останалите слоеве.

Като направим за 𝜹₁W₁:dX₁същото, което направихме за𝜹₂W₂:dX₂ получаваме:

3. Сглобяване на всичко

Накрая, като поставим всичко обратно в d𝜉, получаваме нашето крайно уравнение (★)

с 𝜹₂=YX₃
и 𝜹₁= (𝜹₂ .W₂)G₁= (𝜹₂ .W₂)X₂○ (1 - X₂)
и 𝜹₀= (𝜹₁ .W₁)○ G= (𝜹₁ .W₁)X₁○ (1 - X₁)

Тада! 🎉

Заключение

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

Препратки