Я спершу вивожую помилку для згорткового шару нижче для простоти для одновимірного масиву (входу), який можна легко перенести на багатовимірний тоді:
Тут будемо вважати, що довжини є входами -го перегною. шар, - розмір ядра ваг що позначає кожну вагу а вихід - .
Отже, ми можемо записати (відзначимо підсумок від нуля):
де і функція активації (наприклад, сигмоїдальна). Маючи це під рукою, тепер ми можемо розглянути деяку функцію помилки та функцію помилки на згортковому шарі (той, який був у попередньому шарі), що задаєтьсяуl - 1Nl - 1мшшiхл
хлi=∑a = 0м - 1шауl - 1a + i
улi= f(хлi)fЕ∂Е/ ∂улi. Тепер ми хочемо з'ясувати залежність похибки в одній вазі в попередньому ( :
де у нас є сума над усім виразом, в якому виникає , які є . Зауважимо також, що ми знаємо, що останній член виникає з того, що який ви можете бачити з першого рівняння.
Для обчислення градієнта нам потрібно знати перший доданок, який можна обчислити:
∂Е∂ша=∑a = 0N-м∂Е∂хлi∂хлi∂ша=∑a = 0N- м∂Е∂шауl - 1i + a
шаN- м∂хлi∂ша=уl - 1i + a∂Е∂хлi=∂Е∂улi∂улi∂хлi=∂Е∂улi∂∂хлif(хлi)
де знову перший член - помилка в попередньому шарі і нелінійна функція активації.
f
Маючи всі необхідні сутності, тепер ми можемо обчислити помилку та ефективно її поширити на дорогоцінний шар:
Зверніть увагу, що останній крок може зрозуміти легко, коли -s wrt -s. відноситься до транспоновану вазі maxtrix ( ).
δl - 1а=∂Е∂уl - 1i=∑a = 0м - 1∂Е∂хля - а∂хля - а∂уl - 1i=∑a = 0м - 1∂Е∂хля - ашfl i p p e dа
хлiуl - 1ifl i p p e dТ
Тому ви можете просто обчислити помилку в наступному шарі за допомогою (тепер у векторних позначеннях):
δл= (шл)Тδl + 1f'(хл)
що стає для шару згортки та підсимплементації:
де Операція поширює помилку через максимальний шар об'єднання.
δл= u p s a m p l e ( (шл)Тδl + 1)f'(хл)
u p s a m p l e
Будь ласка, додайте або виправте мене!
Для довідок див:
http://ufldl.stanford.edu/tutorial/supervision/ConvolutionalNeuralNetwork/
http://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks/
і для реалізації C ++ (без необхідності встановлення):
https://github.com/nyanp/tiny-cnn#supported-networks