我正在处理一个数据有限(大约 10,000 个数据点)和上下文/问题以及选项/选择的特征很少的问答问题。鉴于:
一个问题 Q 和
选项 A、B、C、D、E(每个都以某些特征为特征,例如与 Q 的字符串相似性或每个选项中的单词数)
(在训练时)一个正确的答案,比如 B。
我希望准确地预测其中之一作为正确答案。但我被困住了,因为:
如果我将 ground truth 排列为 [0 1 0 0 0],并给出 QABCDE 的串联作为输入,那么模型将表现得好像将图像分类为狗、猫、大鼠、人、鸟,即每个类都有一个意思,但是这里不是这样。如果我将输入切换到 QBCDEA,预测应该是 [1 0 0 0 0]。
如果我将每个数据点分成 5 个数据点,即 QA:0、QB:1、QC:0、QD:0、QE:0,那么模型无法得知它们实际上是相互关联的,并且只有其中一个它们必须被预测为 1。
一种似乎可行的方法是创建一个自定义损失函数,它会惩罚单个问题的多个 1,并且也会惩罚没有 1。但我想我可能在这里遗漏了一些非常明显的东西:/
我也知道像 BERT 这样的大型模型是如何在像数据集这样的 SQuAD 上做到这一点的。他们为每个选项添加位置嵌入(例如,A 得到 1,B 得到 2),然后使用 QA1 QB2 QC3 QD4 QE5 上的一种连接作为输入,并将 [0 1 0 0 0] 作为输出。不幸的是,鉴于我拥有的数据集非常小,我相信这在我的情况下不起作用。