用于多输出回归的神经网络

机器算法验证 神经网络 深度学习 多元回归
2022-02-11 12:38:02

我有一个包含 34 个输入列和 8 个输出列的数据集。解决该问题的一种方法是采用 34 个输入并为每个输出列建立单独的回归模型。我想知道这个问题是否可以只使用一个模型来解决,特别是使用神经网络。

我使用了多层感知器,但这需要多个模型,就像线性回归一样。序列到序列1的学习可以成为一个可行的选择吗?我尝试使用 TensorFlow,它似乎无法处理浮点值。

任何通过仅使用一个专门使用神经网络的统一模型来解决此问题的建议将不胜感激。

  1. Ilya Sutskever、Oriol Vinyals 和 Quoc V. Le (2014)。使用神经网络进行序列到序列学习。神经信息处理系统的进展,27. ( pdf )
4个回答

具有多个结果的神经网络采用以下形式 如果结果的维度为,则的维度为

Y=γ+V1Γ1+ϵV1=a(γ2+V2Γ2)V2=a(γ3+V3Γ3)VL1=a(γL+XΓL)
N×8[γ1,Γ1](pV1+1)×8

也就是说,您会假设每个结果共享隐藏层中的所有参数,并且只有不同的参数用于获取最上面的派生变量并将其与结果相关联。

对于您的上下文,这是一个现实的假设吗?

起初我认为 generic_user 的评论是一个阻碍,但我才意识到它不是:

如果我在d个不同的输出上训练d个不同的网络,那么每个网络都将适合该维度,而不考虑其他网络。

但是如果我用d个输出训练一个网络并使用所有输出进行反向传播,那么网络中每一层的每个权重都会被调整,以便所有 d个输出都更准确。

即:每个网络参数将通过梯度总和进行调整(每个输出如何随着该参数中的“摆动”而变化),以便在选择的向上或向下方向上调整它会导致整体上更准确的输出——即使调整这样的重量会导致输出的某些维度不太准确。

所以,是的,最终区分每个输出的东西只是在最后一层编码的线性方程,但是在训练一个多输出网络时,每一层都会更好地为最后一层呈现一些允许它更好地完成工作的东西. 因此,此架构将解释输出之间的关系。

通过使您的架构反映输出中的任何已知关系,您可能比全连接网络做得更好,就像通过利用输入之间的“组合”关系,深度网络比浅层网络做得更好一样

你可以只用一个神经网络来做到这一点。但是您的神经网络应该如下所示:
输入层:34 个节点(每个输入列一个)
输出层:8 个节点(每个输出列一个)

您可以在神经网络中添加尽可能多和尽可能大的隐藏层。所以神经网络输出 8 个预测值,每个值都是输入的不同回归。

我也想知道;这是我的想法:

我想如果输出共享一些隐藏模式,那么训练可以从同时学习所有输出的回归中受益。

尝试为每个输出构建神经网络的架构会很有趣,但所有神经网络共享一些层(例如前半层)。然后你可以同时训练每个神经网络:在学习循环中,每个神经网络都按顺序训练一步(一批)。

这类似于知识转移,但不同之处在于,在知识转移中,每个神经网络都经过充分训练,然后再使用其中的一部分来训练另一个神经网络。

我敢打赌以前有人想过这个,但我没有提到它。