变压器架构无法解决玩具问题

数据挖掘 Python 神经网络 深度学习 喀拉斯 张量流
2022-02-27 00:12:58

我的变压器无法解决玩具问题。


玩具问题

输入:随机整数序列,单热编码。例子 :

[[0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
 [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
 [0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
 [0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
]

输出:1如果第一个随机整数 < 5,0否则。对于给定的示例,输出将为 1。


问题

在这个玩具问题上运行我的 Transformer 效果很好。然而,以更大的尺寸运行(800 维的 one-hot 编码)不再起作用:无论输入如何,网络总是输出相似的结果。

注意:我确实将输出的条件更改为x < 800,以实现类平衡。

为什么我的变压器架构不适用于玩具问题的这种变体?


另一个问题

我还尝试使用 2 个输入(类似地生成,with size = 10)并基于这 2 个输入生成输出(1如果两个输入的第一个随机整数 < 5 或两者都 > 5,0否则)

1个回答

我不确定,但也许多余的零是罪魁祸首。我猜你得到的结果只是偏见的积累。我建议使用嵌入层将您的单热向量转换为密集向量。