深度神经网络可以在没有归一化的情况下近似乘法函数吗?

机器算法验证 回归 机器学习 神经网络 深度学习
2022-01-16 15:19:18

假设我们想要f = x * y使用标准的深度神经网络进行简单的回归。

我记得有研究表明,带有一个隐藏层的 NN 可以对任何函数进行 apoximate,但我已经尝试过,没有归一化,NN 甚至无法近似这个简单的乘法。只有数据的对数标准化有帮助m = x*y => ln(m) = ln(x) + ln(y). ,但这看起来像个骗子。NN可以在没有对数标准化的情况下做到这一点吗?答案显然是(就我而言) - 是的,所以问题更多的是这种 NN 的类型/配置/布局应该是什么?

4个回答

一个大的乘法函数梯度可能几乎立即迫使网络进入某种可怕的状态,其中所有隐藏节点的梯度都为零(由于神经网络实现细节和限制)。我们可以使用两种方法:

  1. 除以一个常数。我们只是在学习之前划分一切,在学习之后乘以。

  2. 使用对数标准化。它将乘法变为加法:

    m=xyln(m)=ln(x)+ln(y)

当输入范围有限时,具有 relu 激活函数的 NN 可以近似乘法。回想一下relu(x) = max(x, 0)

如果 NN 逼近一个平方函数就足够了g(z) = z^2,因为x*y = ((x-y)^2 - x^2 - y^2)/(-2). 右手边只有线性组合和正方形。

NN可以z^2用分段线性函数逼近。例如,在范围内和[0, 2]的组合xrelu(2(x-1))没有那么糟糕。下图可视化了这一点。不知道这是否在理论上有用:-) 在此处输入图像描述

今天早些时候我遇到了一个类似的问题,我很惊讶我找不到一个快速的答案。我的问题是,鉴于神经网络只有求和函数,它们如何模拟乘法函数。

这种回答虽然是冗长的解释。我的总结是 NN 的模型是函数表面而不是函数本身。这很明显,回想起来……

由于是 StackExchange 上的新活跃用户,我无法发表评论。但我认为这是一个重要的问题,因为它非常容易理解但难以解释。恕我直言,我认为接受的答案还不够。如果您考虑标准前馈 NN 的核心操作,以及s(W*x+b)某些非线性激活函数形式的激活s,那么即使在组合(多层)网络中,如何从中“获得”乘法实际上并不明显。缩放(接受答案中的第一个项目符号)似乎根本没有解决这个问题......按什么缩放?每个样本的输入xy可能都不同。只要你知道,记录日志就可以了这就是您需要做的,并在预处理中处理符号问题(因为显然 log 没有为负输入定义)。但这从根本上与神经网络可以“学习”的概念不符(就像 OP 所说的那样,感觉就像作弊)。我不认为这个问题应该被认为是回答,直到它真的被比我聪明的人回答!