为什么我们在神经网络反向传播中 "unroll" thetas?

Why do we "unroll" thetas in neural network back propagation?

在反向传播实现中,展开(将 thetas 作为一维向量)thetas 然后将它们作为参数传递给成本函数似乎是一种规范。

为了说明(我假设3层NN的情况):

def NNCostFunction(unrolled_thetas, input_layer_size, hidden_layer_size, num_labels, X, y):

    # **ROLL AGAIN** unrolled_thetas to theta1, theta2 (3 layer assumption)
    # Forward propagate to calculate the cost
    # Then Back propagate to calculate the delta

    return cost, gradient_theta1, gradient_theta2

让我疑惑的是: 为什么我们将展开的 thetas 传递给函数,然后在函数内部再次滚动它(形成 thetas 的原始形状)?为什么我们不直接将原始 thetas 传递给成本函数?

我想我没有抓住这里重要的东西。我们这样做一定是有原因的。是不是大多数语言的优化实现只把theta作为一个向量?请阐明我的理解! 谢谢。

我想通了。展开不是特定于反向传播的。

为了使用现成的最小化器,例如 fmincg,成本函数已设置为将参数展开为单个向量参数!

我可能错了,但据我了解,我们用于梯度下降的许多函数,例如 fminuc 等高级优化函数,确实需要展开的向量才能更好地计算。

其他矩阵计算也是如此,它使这些事情变得容易得多。这就是我所知道的......可能还有更好的理由。