首页 > 解决方案 > 作为多类分类的问答的损失函数?

问题描述

我正在处理一个数据有限(大约 10,000 个数据点)和上下文/问题以及选项/选择的特征很少的问答问题。鉴于:

我希望准确地预测其中之一作为正确答案。但我被困住了,因为:

  1. 如果我将 ground truth 排列为 [0 1 0 0 0],并给出 QABCDE 的串联作为输入,那么模型将表现得好像将图像分类为狗、猫、大鼠、人、鸟,即每个类都有一个意思,但是这里不是这样。如果我将输入切换到 QBCDEA,预测应该是 [1 0 0 0 0]。

  2. 如果我将每个数据点分成 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-learningdata-scienceloss-functionmulticlass-classificationquestion-answering

解决方案


您遇到的问题是您从“基本事实”中删除了所有有用的信息。训练目标不是ABCDE 标签——目标是那些字母简要表示的答案的特征。

这五个标签只是分类的数组下标,分类是训练空间的 5Pn(从 n 个中选择的 5 个对象)混洗子集。底线:这些标签中没有信息

相反,从这些答案中提取显着特征。您的训练需要找到与问题充分匹配的答案(特征集)。因此,您所做的接近于多标签训练。

多标签模型应该处理这种情况。这将包括那些标记照片,识别输入中表示的多个类别的照片。

这会让你感动吗?


对 OP 评论的回应

你理解正确:预测五个任意响应的 0/1 对模型没有意义;单字母变量仅具有暂时的含义,与任何可训练的东西都没有关系。

一个简短的思想实验将证明这一点。想象一下,我们对答案进行排序,这样A总是正确的答案;这不会改变输入和输出中的信息;这是多项选择测试的有效安排。训练模型;我们将在短时间内达到 100% 的准确度。现在,考虑模型权重:模型从输入中学到了什么?什么都没有——权重将训练以忽略输入和选择A,或者将具有绝对任意的值来A得出结论。


您需要完全忽略 ABCDE 名称;目标信息在答案本身中,而不是在那些字母中。由于您尚未发布任何示例案例,因此我们几乎无法指导我们采用替代方法。

如果你的范式是典型的多项选择题考试,对问题和答案的限制很少,那么你要解决的问题远远大于你的项目可能解决的问题——你处于“沃森”领域,需要一个庞大的知识库和强大的 NLP 系统来解析输入和可用的响应。

如果你有一个有限的答案范式,也许你可以将它们解析成短语和关系,从而在你的训练中产生一组有限的类来考虑。在这种情况下,多标签模型很可能能够解决您的问题。

如果您的应用程序是开放式的,即开放式主题,那么我希望您需要一个不同的模型类(例如 BERT),但您仍然需要将五个答案视为文本序列,而不是字母。您需要与手头的主题进行整体匹配。如果这是一个典型的选择题考试,那么你的模型仍然会有分类问题,因为所有五个答案都可能是主题;找到正确答案应该取决于对问答的某种程度的语义洞察力,这比“词袋”处理更强大。


推荐阅读