【问题标题】:Loss function for Question Answering posed as Multiclass Classification?作为多类分类的问答的损失函数?
【发布时间】:2020-01-03 04:41:33
【问题描述】:

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

  • 一个问题Q和

  • 选项 A、B、C、D、E(每个选项都有一些特征,例如字符串与 Q 的相似性或每个选项中的单词数)

  • (在训练时)一个正确答案,比如 B。

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

    1234563即每个类都有一个含义,但是这里不是这样。如果我将输入切换到 QBCDEA,预测应该是 [1 0 0 0 0]。
  1. 如果我将每个数据点分成 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


【解决方案1】:

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

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

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

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

这会让你感动吗?


对 OP 评论的回应

您正确理解:预测五个任意响应的 0/1 对模型毫无意义;单字母变量仅具有暂时的意义,与任何可训练的事物无关。

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


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

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

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

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

【讨论】:

  • 嗨,你的回答的第一部分很鼓舞人心!您是说,由于这 5 个选项只是从 N 个可能的选项/类中任意选择的,由一组特征定义,因此为它们预测 0 和 1 并不重要,模型应该直接预测一组特征,正确的?考虑到可能的特征值空间很大,我仍然坚持如何对目标向量进行建模。我也无法理解最后一部分,我认为当您说“识别输入中表示的多个类”时,您假设了一个多 label 设置。我只有一个答案是正确的。
  • 是的,multi-label 是正确的术语;我编辑了我的答案。
猜你喜欢
  • 2018-10-27
  • 2019-03-16
  • 2017-06-18
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 2020-09-04
相关资源
最近更新 更多