图:pixabay
「机器人圈」编译:嗯~阿童木呀、多啦A亮
前两天,大神Geoffrey Hinton对于反向传播算法发表了相关看法,认为“反向传播不一定促进是AI发展的必要方式”。
此言论一出,可谓是一石激起千层浪。这不,在reddit上,大家对Hinton的观点争论不休。
讨论的主要方向是询问如果说“反向传播算法”不行,那有没有可选的备用方案呢?而在这波讨论浪潮中,我希望我们能够回答这样一个问题:反向传播存在的问题是什么?实际上,大家并没能够真正回答这个问题,而只是简单提及了无监督学习所存在的难题。「机器人圈」将其编译如下。
这是我最初提出的想法:
反向传播本质上所固有的问题:
o连续学习问题(反向传播会忘记之前学过的知识)
o模块化(反向传播自动使用所有可用的连接)(不是非常清楚,可删除)
o对特定噪音的鲁棒性(对抗样本)
目前,存在的问题引起了很大的困难,我们不确定是否可以使用反向传播:
o学习推理/规划
o无监督学习
你同意这些吗?你在工作中遇到的其他的问题是什么?
网友们的评论也是相当精彩:
NicolasGuacamole:含有连续的部分,并且要求架构由(几乎)完全可微的部分组成。
BullockHouse回复NicolasGuacamole:一般来说,似乎如果我们可以通过本地的学习规则获得类似反向传播的结果,那么它会有很多好处。架构可能会在不破坏任何东西的情况下变得相当怪异和不可微,而梯度噪声和幅度的问题将是无关紧要的。在生物学上也更现实,对于那些关心这种事情的人来说。
asobolev:反向传播只是一种有效地计算梯度的方法,而不是魔法黑盒子。
1、连续学习的问题源于我们训练神经网络的一般方法。随机优化假设梯度样本来自相同的分布。如果你经历了分布转移,那么没有理由期望该模式记住过去的东西。
2、我没有搞懂你关于模块化的声明。你可以使用具有多个“头”的复杂架构,因此当优化其中一个时,网络的其他部分不受影响。
3、同样,不清楚对抗性的例子是来自于优化方法,还是来自模型本身的复杂性。
SGD(具有反向传播算法以计算梯度)是一种非常有效和强大的方法,可以让我们训练不同的架构。在优化理论中有一个定理,一般来说,零阶优化方法(不使用任何损耗梯度信息的方法)的性能比一阶方法(那些使用梯度的方法)要差得多,所以非梯度方法有可能在函数的特殊类别中运行得很好,但仍然有一个问题,如果这类将足以包含所有类型的架构,我们就使用现在的。
mljoe:我认为用更多奇特的想法来探索反向传播很有趣。例如,不要在每次迭代中访问或调整整个参数空间。我认为现在大多数神经网络的一个大问题是参数空间与计算成本有关,这限制了网络的规模以及它们可以保留多少信息。如果我们有一个更好的方式只专注于每次迭代的相关部分,我们就可以拥有百万兆字节的参数空间。这也可能解决灾难性遗忘(catastrophic forgetting),这对于实现更多“真实”AI的广义/多任务模型很重要。
NichG:我看到的主要问题似乎是关于反向传播本身(而不是有关如线性代数或连接驱动的东西或...),与增加信息流相比,减少信息流有很强的倾向。
例如,我试图为N维高斯独立同分布向量分量(N-dimensional Gaussian-iid-component vector)制作一个多层自动编码器。我发现,随着网络的深入,除非中间层至少有一些像2N神经元,网络将无法在不丢失信息的情况下传输向量。这是一个非常有趣的例子,但是当尝试实施智能体时,我也遇到了同样的问题——要求神经网络使用反向传播来增加通道容量比要求降低通道容量要困难得多。
我认为这基本上是因为如果我有一些像y = w_1 * w_2 * w_3 * ... * w_n * x和损失L =(yx)…^2,如果任何两个w_i系数都为零,那么所有的导数项dL / dw_i = 0,并且该函数变得不可学习。因此,本质上,反向传播发现如何增加信息流的能力,受到至少以某种痕迹形式开始存在的信息流的约束。这可能是为什么非常大的层是有用的——它们减少了输入中有一些信息两次被乘以零的机会,因此变得不可恢复。
我认为原文中提到的其他内容在很大程度上可以通过架构选择来确定的。连续学习可以通过匹配网络、记忆增强网络、深度KNN或神经统计学等技术来解决,将非固定问题转化为固定部分(学习模型空间)和推理部分(学习哪个模型是当前适用的)。模块化可以被明确地设计到一个架构中,相反如果有一些简单的正则化术语可以被添加到损失中,以鼓励模块化(如同你可以通过L1损失获得稀疏性),对此我不会感到惊讶。对抗性示例的鲁棒性我认为与信息流的维度的变化有关——当你从大层到小层时,独立同分布(iid)和相关刺激之间的差异变得非常大,这意味着非常弱的刺激可以产生很强的影响。对于学习推理和规划,最近有一些训练生成模型(使用反向传播)的文章,以产生这些能力,然后用它来解决诸如推箱子游戏Sokoban之类的东西。对于无监督学习,相比反向传播算法来说,我认为这与定义有用的隐形损失函数更有关系。比如,生成式对抗网络GAN,使用反向传播算法,本质上是无监督学习器。
Lawrencelot:梯度消失(Vanishing gradients)、需要多次迭代,这都是存在的问题,诸如储备池计算(reservoir computing)和这超限学习机等随机投影方法可以将这些问题“解决”,但同时也会引入新的问题。
serge_cell:这些都不是反向传播或梯度下降的问题,而是损失函数和数据集泛化的问题。
Jostmey:我认为Hinton更多地是在阐述我们该如何计算梯度,而不是一个新的参数拟合方法。我认为Hinton知道,在生物神经元中,信息只能从突触前传递到突触后的细胞中,这意味着生物神经元不能将信息从一个神经元反向传播到到前一个神经元。所以Hinton是在追求一个更好的方法,只需要一个正向传播即可(也许是在递归循环中设置?)。
namp243:主要是缺乏用于监督学习的标注数据,大多数问题之所以产生就是因为没有标签,而我们需要更为先进的无监督方法。
Nickandross回复namp243:也许你需要专门雇佣一个实习生来制作数据集。(我只是在开玩笑)
Megatron_McLargeHuge:我把这个问题理解为:“我们如何超越性地对基于导数的完整模型进行训练,还要考虑到最后的计算损失?”
也就是说,我们如何才能只训练模型的一部分而得以优化局部标准,然后将它们组合起来以解决各种问题?迁移学习和小样本学习都是其中的一部分。从长远来看,我们需要围绕自动编码器和记忆构建相应的方法,从而在我们确定需要处理哪些任务之前,知道该如何从数据流中提取信息。
此外,我们可以将正则化视为反向传播上的一个黑客,以更改参数搜索中的步骤方向。与梯度剪切(clipping)和动量(Momentum)相同。
当然,可能还会有其他“本地黑客”选择将包含某种信用分配的参数进行更新,而不是让模型竞赛的所有部分包含任何可用信息,包括噪声等。我们可以优化模型的一部分,以传递那些最终应该有用的信息,而不是不顾长远利益只贪恋眼前看似有用的信息。