【发布时间】:2020-01-03 04:41:33
【问题描述】:
我正在处理一个数据有限(约 10,000 个数据点)和上下文/问题以及选项/选择的功能很少的问答问题。给定:
一个问题Q和
选项 A、B、C、D、E(每个选项都有一些特征,例如字符串与 Q 的相似性或每个选项中的单词数)
(在训练时)一个正确答案,比如 B。
我希望准确地预测其中之一作为正确答案。但我被卡住了,因为:
-
1234563即每个类都有一个含义,但是这里不是这样。如果我将输入切换到 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] 作为输出。不幸的是,鉴于我拥有的数据集非常小,我认为这在我的情况下不起作用。
【问题讨论】:
-
一个明显的解决方案是使用图形模型或任何形式的结构化预测来添加先验知识,即其中只有一个必须为真。不过,从我过去使用图形模型的经验来看,我认为这样做的时间效率非常低。
标签: machine-learning data-science loss-function multiclass-classification question-answering