深度神经网络如何学习任何东西?

机器算法验证 神经网络 深度学习
2022-04-11 09:53:21

在训练网络时,梯度会在整个网络中反向传播,更新权重和偏差等参数。

所以最后一层n看到前一层提出的特征n1,并决定,根据他们以损失衡量的表现,给这个增加一点权重,给那个减少一点权重——改变它的输出。

同时,层n1做同样的事情,改变了它的参数,这意味着特征层n将在下一轮看到与用于计算更新的不完全相同。

但是等等,层n2也改变它的参数......等等直到第一层。

因此,在下一轮中,第 1 层发生了变化并产生了稍微不同的特征,然后将这些特征提供给也发生了变化的第 2 层,依此类推。当要素到达图层时n,他们怎么可能和已经用来优化它的特性有什么共同之处呢?

此外,在实践中,第一层的参数通常比最后一层少得多。在我看来,所有下游层都依赖于那些第一个卷积,并且它们的任何变化都会深刻影响基于它们的所有下游特征。

现在,可以合理地说,“别再想太多了。这些是渐变。如果你迈出足够小的一步,也许真的是非常非常小的一步,特征只会发生非常轻微的变化。成本下降,这是数学的。

但是,在深度学习中,学习率在第一阶段被尽可能大,正是在特征形成时

在这些条件下,网络如何学习任何东西?

3个回答

你是绝对正确的,这是没有意义的,这是一个巨大的问题。

损失函数是局部线性的。你实际上是在说L(w+h)=L(w)+hdL(w), 在哪里L是你的损失函数,w你的权重向量,和dL是梯度向量。从这个意义上说,每个权重变化的贡献产生了近似线性的变化L作为步长的函数。dL特别是dLi,各个组件,肯定以非线性方式依赖于权重。这有助于将输出范围与如何大号随着权重的变化而变化。由于您指出的敏感性,还有一些策略可以将较小的学习率分配给较早的层,特别是出于微调网络的目的。

即使我们最初选择了一个更大的学习率,这个学习率仍然会根据敏感度进行调整大号即,使上述线性关系大致成立。

理论上讲,以上是正确的,但实际上情况要复杂得多。例如在最近的一篇论文The Shattered Gradients Problem:如果 resnets 是答案,那么问题是什么?巴尔杜齐等。al,证据完全符合你的观点,即普通深度学习网络的梯度对权重和输入图像都非常敏感,即使是批量归一化也是如此结果表明,残差网络显着提高了这种敏感性,这为它们为何如此出色地工作提供了令人信服的理由。

同时,最初几乎任何事情都比随机猜测要好。例如,如果您正在训练一个网络来区分“1”和“7”,那么很明显“1”具有更多垂直特征,而 7 具有大量对角线和水平特征,因此即使是第一级与垂直和对角特征略微相关的卷积将有助于改进模型。

最近的一篇论文讨论了这个主题:“做不可能的事:为什么可以训练神经网络”,作者是 Panos Stinis 的 Nathan Hodas

随着深度神经网络规模的增长,从数千到数百万到数十亿个权重,这些网络的性能受到我们准确训练它们的能力的限制。一个常见的幼稚问题出现了:如果我们有一个具有数十亿自由度的系统,我们是否也需要数十亿个样本来训练它?当然,深度学习的成功表明,可以用合理数量的数据来学习可靠的模型。类似的问题出现在蛋白质折叠、自旋玻璃和生物神经网络中。通过有效地无限可能的折叠/旋转/布线配置,系统如何找到导致有用和稳健结果的精确布置?即使等待宇宙的年龄,对可能的配置进行简单抽样直到达到最佳配置也不是一个可行的选择。相反,在上述现象中似乎存在一种机制,迫使它们实现生活在低维流形上的配置,从而避免了维数灾难。在目前的工作中,我们使用深度神经网络连续层之间的互信息概念来阐明这种机制,并提出利用它来加速训练的可能方法。我们表明,向神经网络添加结构以增强层之间的互信息可加速训练并产生更准确的结果。层之间的高互信息意味着自由参数的有效数量呈指数级小于可调权重的原始数量。避免维度灾难。在目前的工作中,我们使用深度神经网络连续层之间的互信息概念来阐明这种机制,并提出利用它来加速训练的可能方法。我们表明,向神经网络添加结构以增强层之间的互信息可加速训练并产生更准确的结果。层之间的高互信息意味着自由参数的有效数量呈指数级小于可调权重的原始数量。避免维度灾难。在目前的工作中,我们使用深度神经网络连续层之间的互信息概念来阐明这种机制,并提出利用它来加速训练的可能方法。我们表明,向神经网络添加结构以增强层之间的互信息可加速训练并产生更准确的结果。层之间的高互信息意味着自由参数的有效数量呈指数级小于可调权重的原始数量。我们表明,向神经网络添加结构以增强层之间的互信息可加速训练并产生更准确的结果。层之间的高互信息意味着自由参数的有效数量呈指数级小于可调权重的原始数量。我们表明,向神经网络添加结构以增强层之间的互信息可加速训练并产生更准确的结果。层之间的高互信息意味着自由参数的有效数量呈指数级小于可调权重的原始数量。

这就是为什么学习率尽管“尽可能大”仍然很小。按顺序10-310-4常见。但你是对的,这可能是一个问题。

批量归一化是这个问题的一个部分解决方案,它通常允许更快的训练:对每一层之后的激活进行归一化,使它们具有相同的均值和方差,从而减少了“协变量偏移”的问题——换句话说,在一个在 SGD 的迭代中,某一层的特征输出可能会以不可预测的方式发生变化,使得后续层难以完成工作。

总结一下:小步长和批量规范的组合。