У меня есть небольшой подвопрос к этому вопросу .
Я понимаю, что при обратном распространении через слой максимального пула градиент направляется обратно таким образом, что нейрон в предыдущем слое, который был выбран как максимальный, получает весь градиент. В чем я не уверен на 100%, так это как градиент в следующем слое направляется обратно в слой пула.
Итак, первый вопрос: есть ли у меня слой пула, подключенный к полностью связанному слою - как на рисунке ниже.
При вычислении градиента для голубого «нейрона» пула я суммирую все градиенты от нейронов слоя FC? Если это правильно, то каждый «нейрон» пула имеет один и тот же градиент?
Например, если первый нейрон слоя FC имеет градиент 2, второй имеет градиент 3, а третий градиент 6. Каковы градиенты синего и фиолетового «нейронов» в объединяющем слое и почему?
И второй вопрос, когда объединяющий слой соединен с другим слоем свертки. Как тогда вычислить градиент? Смотрите пример ниже.
Для самого верхнего правого «нейрона» объединяющего слоя (выделенного зеленым) я просто возьму градиент фиолетового нейрона в следующем слое конвоя и направлю его обратно, верно?
Как насчет наполненного зеленого? Мне нужно умножить вместе первый столбец нейронов в следующем слое из-за правила цепочки? Или мне нужно их добавить?
Пожалуйста, не публикуйте набор уравнений и не говорите мне, что мой ответ правильный, потому что я пытался обернуть голову вокруг уравнений, и я до сих пор не понимаю его совершенно, поэтому я задаю этот вопрос в простой путь.
Ответы:
Нет. Это зависит от веса и функции активации. И наиболее типично веса отличаются от первого нейрона объединяющего слоя до уровня FC от второго слоя объединяющего слоя до уровня FC.
Поэтому, как правило, у вас будет такая ситуация:
Это означает, что градиент по отношению к P_j
Который отличается для j = 0 или j = 1, потому что W отличается.
Не имеет значения, к какому типу слоя он подключен. Это одно и то же уравнение все время. Сумма всех градиентов на следующем слое, умноженная на то, как выход этих нейронов зависит от нейрона на предыдущем слое. Разница между FC и Convolution заключается в том, что в FC все нейроны в следующем слое будут обеспечивать вклад (даже если, возможно, небольшой), но в Convolution большинство нейронов в следующем слое вообще не подвержены влиянию нейрона в предыдущем слое, поэтому их вклад это точно ноль.
Правильно. Плюс также градиент любых других нейронов на этом сверточном слое, которые принимают в качестве входных данных самый верхний правый нейрон пула.
Добавьте их. Из-за цепного правила.
источник