机器学习:单一输入到可变数量的输出

数据挖掘 机器学习
2021-10-04 12:34:04

是否有一种机器学习算法可以将单个输入映射到可变长度的输出列表?如果是这样,是否有任何公开使用的算法实现?如果没有,您推荐什么作为解决方法?

就我而言,输入是单个标量,输出是可变长度的标量列表。例如,假设我想在给定列表长度的情况下输出一个列表作为输入。那么 <input, output> 可以是 <1, [1]>, <2, [1, 1]> 等等。一个小的调整是提供长度的平方根,在这种情况下 <2, [1, 1 , 1, 1]> 将是一个答案。注意:输入不需要直接连接到输出。


举一个更复杂的例子,假设我想学习look-and-say 序列有效的 <input, output> 对将是:<1, [1]>, <2, [1, 1]>, <3, [2, 1]>, <4, [1, 2, 1, 1] >, <5, [1, 1, 1, 2, 2, 1]> 等。我的问题也类似,可以生成更多示例;我不限于有限的例子。

2个回答

我会尝试设置一个多标签分类算法并通过添加零来使输出标准。所以如果你的数据是这样的:<1, 1 >, <2, [1, 1]>, <3, [2, 1]>, <4, [1, 2, 1, 1]>, <5 , [1, 1, 1, 2, 2, 1]>。最大输出数为 6。因此您可以将数据转换为:<1, [1,0,0,0,0,0]>, <2, [1, 1,0,0,0, 0]>, <3, [2, 1,0,0,0,0]>, <4, [1, 2, 1, 1,0,0]>, <5, [1, 1, 1, 2、2、1]>

我想到的另一个选择是动态添加限制。假设你有你的训练和测试集。您可以搜索最大长度并创建一个将零添加到两个数据集的算法。然后假设您要预测的新数据的长度更大,那么您需要重新计算所有训练和测试以针对这个新预测进行测试。您甚至可以检查扩展限制如何影响您的模型。

因此,可以设想几种方法:

  1. @Miguel Gonzalez-Fierro 对 0-padding 的回答。可能是最容易实现且有意义的。
  2. 如果填充对您的问题不敏感,如果您的输出是时间序列,您可以学习各种神经翻译模型并在输出中使用 STOP/END 标记。
  3. 有一个基于生成器的模型(例如对 VAE 的更改),然后生成一大堆可能的输入,并且您可以进行任何满足某些标准的抽奖(例如具有一些计算条件信息的几乎没有变化的模式)。

可能还有其他人,但我现在想不起来。