如何定义具有多个输出的 MLP

数据挖掘 神经网络 喀拉斯 回归 预测建模
2022-03-06 11:40:06

我需要建立一个神经网络来预测基于一组输入特征的输出,用于多通道系统。一旦我弄清楚了这个问题,我将在 Keras 中实现它。让我更详细地描述它:

我有一组输入变量('温度','电流','电压'......)

输出是('gainA','gainB','gainC','gainD')

但是,每个字母(A、B、C 和 D)代表一个不同的通道,并且训练数据包含许多不同的通道何时打开/关闭的配置。因此,典型的训练数据集如下所示:

'ID' |  'Temperature'  | 'current' | 'voltage' | 'gainA' | 'gainB' | 'gainC' | 'gainD'
  1  |       23.1      |     2.1   |    5.1    |    0    |   1.5   |   3.1   |    1.2
  2  |       23.2      |     2.3   |    5.2    |    0    |   1.5   |   2.1   |    1.1
  3  |       23.4      |     2.0   |    5.0    |   1.3   |    0    |   1.7   |    1.0
  4  |       22.8      |     2.3   |    5.4    |   1.5   |   1.3   |   3.2   |     0              
  5  |       22.9      |     2.1   |    5.1    |    0    |    0    |    0    |    1.2
  6  |       23.2      |     2.2   |    5.3    |   1.2   |   1.5   |   3.4   |    1.3
...

正如您从上面的数据集中看到的那样,某些收益为“0”。这是通道关闭的时候。当通道打开时,只有一个非零增益值。

如果我要打开通道,我的模型需要能够预测通道的增益

例如,如果我们将第 5 行视为测试数据,如果我要激活该通道,我想预测“gainC”的数值

'ID' |  'Temperature'  | 'current' | 'voltage' | 'gainA' | 'gainB' | 'gainC' | 'gainD'
  5  |       22.9      |     2.1   |    5.1    |    0    |    0    |[predict this]|1.2

最初,我考虑训练 4 个模型(每个通道一个),但这不起作用,因为增益的组合是相关的,因此需要多维 MLP。

如果我使用其他 3 个增益作为输入的一部分,它只会预测增益为 0,因为这就是模型所认为的。

请有人能帮我找出一种预测增益的非零值的方法。也许部分答案可能包括通道的二进制表示。例如

对于 ID 号 5,活动通道是 0001,我们要预测 0011

也许这可能是训练数据的一部分?还是预测器的额外输入?

我很感激一些关于如何解决这个问题的建议。(我对神经网络相当陌生)

1个回答

在你的输出层有四个神经元,描述增益A,B,C,D并在所有层中应用 relu 激活函数,因为它将所有负值设置为0并通过其余的。

您也可以使用简单的均方误差作为损失函数。此设置将允许您预测非负值,大于0为了你的收益,这就是我相信你需要的。