2017-02-01 10 views
-1

Я понял способ вычисления передней части в глубоком обучении. Теперь я хочу понять отсталую часть. В качестве примера возьмем X(2,2). Назад в положении X(2,2) можно вычислить, как на рисунке сильфонныеЧто касается обратного слоя свертки в глубоком обучении

enter image description here

Мой вопрос заключается в том, что где dE/dY (например, dE/dY(1,1), dE/dY(1,2) ...) в формуле? Как вычислить его на первой итерации?

ответ

2

короткий ответ

Эти термины являются в конечном расширении в нижней части ползуна; они вносят вклад в суммирование для dE/dX (2,2). В вашем первом обратном распространении вы начинаете в конце и работаете назад (отсюда и название), а значения Y являются знаками истины на землю. Так много для их вычисления. :-)

LONG ОТВЕТ

Я буду держать это в более абстрактных, условиях естественного языка. Я надеюсь, что альтернативное объяснение поможет вам увидеть большую картину, а также разобраться в математике.

Вы начинаете обучение с назначенных весов, которые могут или не могут быть связаны с наземной истиной (ярлыками). Вы двигаетесь вслепую вперед, делая прогнозы на каждом уровне, основываясь на наивной вере в эти веса. Значения Y (i, j) являются полученными мета-пикселями этой веры.

Затем вы нажимаете метки в конце. Вы работаете назад, настраивая каждый вес. Обратите внимание, что на последнем слое значения Y являются знаками истины на землю.

На каждом слое, вы математически дело с двумя факторами:

  1. Как далеко был этот прогноз?
  2. Насколько сильно этот параметр способствовал этому прогнозу?

Вы настраиваете вес X-to-Y на «off * weight * learning_rate». Когда вы заполните это для слоя N, вы вернетесь к слою N-1 и повторите.

PROGRESSION

инициализация ли ваши веса с фиксированными или случайными значениями (я обычно рекомендую последние), вы заметите, что есть на самом деле не так много прогресса в начале итераций. Поскольку это медленная корректировка от весов догадок, для получения проблеска полезного обучения в последние слои требуется несколько итераций. На этом этапе первые слои все еще неистово обрушиваются. Функция потерь будет некоторое время отказываться вокруг своих начальных значений. Например, с распознаванием образов GoogLeNet это переполнение длится около 30 эпох.

Затем, наконец, вы получите определенное обучение в последних слоях, шаблоны стабилизируются настолько, что некоторая согласованность просачивается обратно на ранние слои. На этом этапе вы потеряете функцию потери на уровне «направленного эксперимента».Оттуда прогрессия сильно зависит от парадигмы и текстуры проблемы: у некоторых есть резкое падение, затем постепенное сближение; другие имеют более постепенное падение, почти экспоненциальный спад к конвергенции; более сложные топологии имеют дополнительные резкие падения, так как средняя или ранняя фазы «обретают основу».

+0

Thank Prune. Я не думаю, что «Y» - это знак истины. Он выводит уровень свертки как «Y = conv (X, kernel)» или математику как «Y = W.X». Следовательно, примените правило цепи 'dE/dX = dE/dY x dY/dX = dE/dY x W', где E - функция потерь на последнем слое. Чтобы вычислить 'dE/dY', я думаю, нам нужно снова применить правило цепочки, чтобы выразить это. Но в инструменте caffe я видел это с использованием термина 'diff'. Я не уверен, что я понимаю. Вы можете увидеть лекцию на https://1drv.ms/p/s!ArG9tn58GyvBge5DZXYiy3Wj39k4Ew и https://1drv.ms/p/s!ArG9tn58GyvBge5JDI_SkvbMBiMEiQ – user8264

+0

Я прошел курс. :-) Я хочу сказать, что в первом слое back-prop основная истина * есть предсказание. После этого каждый уровень вычисляет значения, применяя правило цепи к одному после, поэтому мы всегда имеем эти значения из предыдущего приложения обратной заявки. Проясняет это, или мне нужно найти время, чтобы посмотреть лекцию и переосмыслить символику в моей голове? – Prune

+1

Нет. Вы правы. Я просто неправильно понимаю вашу мысль. Я посмотрел на исходный код уровня Convolution и проанализировал его с помощью математики. Посмотрим на http://stackoverflow.com/questions/41995536/from-mathematics-equations-to-programming-of-convolution-in-caffe – user8264