有没有办法确保我的模型能够识别一个看不见的例子?

人工智能 神经网络 机器学习 过拟合 正则化 概括
2021-10-25 13:13:57

我的问题是理论多于实际。假设我正在使用一个我认为非常能代表猫图像的数据集来训练我的猫分类器。但是随后创建了一种与其他猫不同的新品种猫,并且它不存在于我的数据集中。

我的问题是:有没有办法确保我的模型仍然能够识别这种看不见的品种,即使我最初训练我的模型时不知道它会出现?

我一直试图通过有意设计我的验证集和测试集来回答这个问题,以便它们包含与训练集中存在的示例非常相关的示例(将其想象为故意从训练集中遗漏特定品种的猫) )。

结果很有趣。例如,参数的微小变化可以显着改变远相关的测试示例的性能,而不会对更密切相关的示例的性能产生太大影响。我想知道是否有人对这种现象进行了更深入的分析。

1个回答

评论已经为您提供了一些关于如何改进模型识别的好技巧,但我认为您的问题超出了询问是否有办法确保它始终能够识别猫的问题。

最简洁的答案是不”。

稍长的答案是“是的,但作弊”。

无论如何,您可能会采取很多步骤来改进模型的泛化方面。


长答案:

戏剧:三幕猫分类

第一幕:猫作为文本

让我们从一个例子开始。假设您的模型使用这些输入进行训练,并学会正确识别它们是猫还是非猫:

cat → yes!
Cat → yes!
ferret → no
cat. → yes!
Cat! → yes!
Three MC's and one DJ → no

您的目标是训练您的模型,以便正确识别每个新的变化,甚至是看不见的变化。

通过良好的泛化水平,您的模型将正确分类它以前从未见过的新输入:

skunk → no
cat? → yes!
dog → no
CAT → yes

在这种情况下,假设模型现在找到了:

kat → ?

是“猫”的拼写错误吗?这是凯瑟琳的缩写吗?模型应该做什么?

第二幕:但这肯定不会在现实生活中发生

稍微打个比方,您正在研究家猫的模型会适当地适应Savannah Cats,还是会考虑它们?(它们看起来像猎豹。)狮身人面像猫呢?(它们在我看来就像生鸡肉。)精灵猫(它们看起来像蝙蝠。)这只是一个例子,但你可能会想出更多。

而这个问题背后的原因是不同分类之间的区别(在现实生活中)不是二元的,而是“是的,那是一只教科书猫”和“那是一把椅子”之间的过渡。您的模型将输出二元决策(可能伴随着置信区间,但即使有了它,您也会决定它是否是猫)。

设定具体的界限会有所帮助。您可以定义您的模型将仅检测家猫,可能不大于特定大小,仅检测特定颜色等......这限制了当我们(人类)可能不同意时模型将正确识别为猫的内容。例如,我仍然认为荧光猫仍然是猫。

回到简单的文本类比,这类似于决定要被检测为猫,它必须以“c”开头。所以现在你已经丢弃了¡Cat!.

这样,就无法确保(注意这个词)您的模型将检测到所有这些未知的变化。总会有一些需要接受的错误空间,只要错误很少或足够罕见,可以被接受为模型的常规部分。

第三幕:概念漂移,一个警示故事

最后,问题变得更加困难,因为我们可能正在处理随着时间的推移而变化的概念,这些概念超出了模型的知识范围,也超出了监督模型学习的人的知识范围。

随着猫品种的变化,您的模型将不得不适应我们(模型的用户)认为猫的有效定义。这可能会以非常意想不到的方式发生变化,而不是真正“看起来”像一只猫。而且由于您的模型只能从“看起来”像猫的东西中学习,因此它总是处于不利地位。

无论技术/算法如何,几乎任何近似结果的机器学习模型都会发生这种情况。近似值包含一定程度的错误,因为现实通常以我们不知道或计算成本太高的方式复杂化。