神经网络应该如何处理意外输入?

人工智能 神经网络 深度学习 分类 贝叶斯深度学习 贝叶斯神经网络
2021-10-31 01:09:23

我最近使用旨在对输入进行分类的深度学习模型编写了一个应用程序。使用虹膜、猫和其他物体的图像有很多这样的例子。

如果我训练了一个数据模型来识别和分类不同类型的虹膜,并向它展示一张猫的照片,有没有办法添加“未知”或“不是”分类,或者它必须猜测什么类型鸢尾花最像的猫?

此外,我可以很容易地添加另一个带有“不是虹膜”标签的分类,并使用猫的图片来训练它,但是如果我给它展示一张椅子的图片呢(对象列表还在继续)。

另一个例子是自然语言处理。如果我开发了一个应用程序,它接受输入语言并吐出“我认为这是西班牙语”,如果它遇到一种它无法识别的语言怎么办?

1个回答

这是一个非常重要的问题,通常被忽视。实际上,在训练神经网络时,通常会隐含假设数据是独立且分布的,也就是说,您希望数据来自与训练数据所来自的分布不同的分布,因此还有隐含假设数据来自同一分布族(例如只有高斯分布),并且所有训练示例都独立地来自同一分布(特定均值和方差)。当然,这是一个很大的限制!

您的问题的部分解决方案是使用贝叶斯神经网络(BNN)。BNN 的想法是将分布(通常是高斯分布)与神经网络的每个单元(或神经元)相关联,而不是单个数字。因此,对于网络的每个单元,有两个可学习的参数:高斯分布的均值和方差。因此,BNN 的参数数量通常是传统(或非贝叶斯)神经网络的两倍。但是,通过学习每个参数的分布,您还可以根据可用的训练数据了解每个单元的潜在真实值的不确定性。

这种 BNN 的前向传递是随机的,即您从每个前向传递的每个高斯分布中采样,因此网络的输出也是随机的(即给定相同的输入示例,每次输出可能不同)。

如果您的数据集很小,人们期望 BNN 具有宽高斯分布,即单位的真实值的不确定性很高。因此,人们期望 BNN 能够更稳健地处理意外输入。更准确地说,如果你用一个小数据集训练一个 BNN,希望高斯分布会很宽,因此 BNN 的输出将是高度可变的(即模型是高度不确定的)。收集的数据越多,BNN 的不确定性就越小。

这并不能完全解决您的问题,但它至少应该减轻它,即如果您向 BNN 提供一个看不见的示例,那么理想情况下它应该不确定该输入的实际标签。

为简单起见,我没有解释 BNN 的某些细节,但至少,这个答案为您提供了一个潜在的解决方案。当然,这并不排除存在“未知”类的可能性。这些方法并不相互排斥。可能还有其他解决方案,但我不知道。