2016-05-12 4 views
-2

При вычислении значений дельты для нейронной сети после запуска обратного распространения:Градиентный спуск: должно ли значение дельта быть скалярным или векторным?

enter image description here

значение дельты (1) будет скалярного значение, оно должно быть вектором?

Update:

Взятые из http://www.holehouse.org/mlclass/09_Neural_Networks_Learning.html

В частности: enter image description here

+0

любая ссылка для формулы? – greeness

+0

@greeness см. Обновление –

ответ

1

Во-первых, вы, вероятно, понимают, что в каждом слое, мы имеем n x m параметры (или веса), который должен быть выучен, формируя таким образом 2-й матрицы.

n is the number of nodes in the current layer plus 1 (for bias) 
m is the number of nodes in the previous layer. 

Мы имеем n x m параметры, потому что есть одно соединение между любыми двумя узлами между предыдущим и текущим слоем.

Я уверен, что Delta (большая дельта) на слое L используется для накопления частичных производных терминов для каждого параметра в слое L. Таким образом, у вас также есть 2D-матрица Delta на каждом слое. Чтобы обновить I-й строки (I-го узла в текущем слое) и J-го столбца (J-го узла в предыдущем слое) матрицы,

D_(i,j) = D_(i,j) + a_j * delta_i 
note a_j is the activation from the j-th node in previous layer, 
    delta_i is the error of the i-th node of the current layer 
so we accumulate the error proportional to their activation weight. 

Таким образом, чтобы ответить на ваш вопрос , Delta должна быть матрицей.

+0

спасибо, но мой вопрос в том, почему скаляр выводится вместо матрицы как ошибка * (a) транспонирование - это scala. возможно, ссылка, на которую я указал, неверна? –

+1

ошибка nx1, а транспонирование a равно 1xm, поэтому произведение nxm. вы, вероятно, рассчитываете с помощью (1xn) x (nx1), чтобы он стал скаляром. – greeness

Смежные вопросы