乐趣区

关于机器学习:零样本和少样本学习

在本篇文章中,咱们将探讨机器学习和深度学习的不同畛域中的一个热门话题: 零样本和少样本学习(Zero and Few Shot learning),它们在自然语言解决到计算机视觉中都有不同的利用场景。

少样本学习

在监督分类器中,所有的模型试图学习的是辨别不同的对象的的特色,无论数据是什么模式存在的,例如图像、视频还是文本都是一样的。而·少样本学习的思维是通过比拟数据来学习区分类,这样模型应用的数据更少,并且比经典模型体现得更好。在少样本学习中通常会应用反对集(support set)代替训练集。

少样本学习是一种元学习技术。元学习的意思是: 学会学习。元学习是元认知的一个分支,钻研的是对本身学习和学习过程的办法和认知过程。

反对集

反对集其实与训练集的数据是一样的,但因为学习办法不同所以咱们称之为反对集。

K-Way N-Shot 反对集:反对集具备 K 类,每个类都有 N 样本。N-Shot 意味着为每个类提供的样本数。如果每个另类都有更多样本,模型能够学习的更好。

在较少的类中,模型能够更轻松地对数据进行分类。总的来说,咱们能够说:更少的 k 和更多的 n 更好。

为什么把他成做反对集呢?还记得 SVM 中的反对向量吗,就是 SVM 中区别分类边界的数据,反对集也是这个意思。

相似性函数

少样本学习的想法是相似性函数。这意味着应该计算 SIM(X,X’),其中“SIM”是相似性函数,而 X 和 X’是样本。首先要做的是从大型数据集中学习相似性函数。而后将相似性函数利用于预测。

孪生网络

孪生网络应用侧面和负样本进行分类。以下是正和负样本的示例:

(Tiger1,Tiger2,1)|(CAR1,CAR2,1)(Tiger1,Car2,0)|(Tiger1,Car1,0)

网络结构就是这样:

孪生网络首先应用数据集中的两个图像,而后应用一些层(在这里的图像数据示例,应用卷积层),创立输出的编码向量。最初应用差别层和不同的损失函数尝试学习相似性函数。

输出该网络的数据是:

  • XA:锚数据:从数据集随机抉择
  • X+:正数据:与锚雷同的类
  • X-:负数据:锚不同的类别

F 函数(CNN)用于创立编码向量。在编码向量后,咱们能够应用:

 D+ = || f(x^+)-  f(x^a)||²
 d- = || f(x^a)-f(x^ -)||²

有了边缘 alpha 和相似性值,咱们能够决定样本的类别。

咱们心愿 d -> =(d +)+ alpha,否则,损失为(d +)+ alpha-(d-)。

因而损失函数是:max {(d +)+ alpha-(d-)}

Few-Shot

少样本学习的根本思维是给定一个 k -way n-shot 的反对集,在大规模训练集上训练一个暹罗网络。而后应用查问的形式来预测样本的类别。

在训练少样本学习之前,首先咱们预训练 CNN 的特征提取(又称嵌入),应用规范监督学习或 Siamese 网络对 CNN 进行预训练。

在微调中,(x_j, y_j)是反对集中有标记的样本。f(x_j)是通过预训练的 CNN 提取的特征向量。P_j = Softmax(W.f(x_j)+b)作为预测。这能够通过应用微调来让 W = M,b = 0。,这意味着在反对集中学习 W 和 b:

样例

思考 3-way 2-shot 的反对集。在每个图像上利用神经网络 F 以进行特征提取。因为每个类都有两个图像,因而每个类都有两个特征向量。能够失去这两个向量的均值。因为咱们有 3 类别,咱们将有 3 个均匀的向量。当初咱们把它们标准化。每个向量是每个类的示意。对于预测,咱们输出一个查问图像。失去查问图像的特征向量。咱们再将其标准化,而后将这个向量与 3 个均值向量进行比拟。

通过比拟这样就失去了咱们的预测分类

单样本学习

one-shot learning 是少样本学习的一种非凡状况,即从一个样本学习并再次辨认物体。

单样本的一种办法是应用 CNN 和带有 (n+1) 的 softmax 来检测模型看到的图像中是否存在新的图像。然而当你的训练数据集中没有足够的样本时,他并不能很好地工作。并且除了新的类别外还必须在 SoftMax 层中应用(M+1)神经元再次训练模型。

然而咱们能够应用类似函数。

d(img1, img2) = 图像间差别水平,若 d(img1, img2) <= r: 雷同; 若 d(img1, img2) > r: 不同

零样本学习

首先,让咱们看看为什么零样本学习很重要。咱们面对的是数量宏大且一直增长的类别。很难收集和正文实例。并且新的类别一直呈现。

零样本学习是人类能够做到的,然而经典的机器学习不能。例如跨语言字典演绎(每一对语言,每个单词是一个类别)。

从监督到零样本的模式识别

咱们以前在经典的分类模型中的做法是这样的:

但当呈现新的类别时,该怎么做呢? 要害是零样本学习。零样本学习的次要思维是将类别嵌入为向量。

特色类别向量映射:v = f(x)

如果呈现了新的类别,咱们能够失去其新的类别向量嵌入,而后应用最近的街坊并将这些向量视为标签。数据类别向量图能够推广到新类别。相当于咱们正在从过来的教训中进行迁徙学习。

零样本学习是如何工作的?

在回归 / 分类办法的训练步骤中,咱们会失去一些已知的类 - 类别向量 v 和数据 x。而咱们想要学习的是数据属性 v =f(x)。例如应用反对向量机(SVM)。

在测试阶段,咱们想要为新类指定向量 v 。而后应用 f(x)来查找新的分类。这种办法简略且疾速,而且还具备类别的可分离性。

在零样本学习中,应用 energy 函数来判断类别是否匹配。设 x 是数据,v 是类别向量。在训练阶段,咱们训练 energy 函数 E(x,v)=x ‘Wv(这被称为返回标量的双线性嵌入)。

数据和工作匹配 (x=v) 时 E_w(x,v)会变得很大,当数据和工作不匹配时 (x!=v),E_w(x,b) 很小。训练的指标是最大化这个函数的边缘间距。

而在测试阶段:

分类新类实例 x , 为一些新类指定 v 向量计算每个 v 的 E(x,v*), 找到最大边际的类别,最大边际可分离性意味着更高的准确性,但与经典的机器学习模型不同,它是简单和迟缓的。

从哪里取得类别向量呢?

“监督”起源:(1)类属性的手工标注,(2)分类类档次的矢量编码

“无监督”起源: 现有的非结构化数据(Word2Vec 就是一个例子)

零样本学习的一些问题

1、畛域转移时零样本学习须要从新训练 / 测试

2、多标签 zero-shot

有时咱们想要多标签分类,而不是单标签分类,这是解决分类向量就会很麻烦,这时能够增加每一个可能的组合向量,例如: 树,树 + 山,树 + 海滩,…,然而这其实造成了理论分类数量的成倍的增长。

3、深度网络可能进行零样本学习

将许多经典的和最新的迁徙学习算法作为非凡状况目前还无奈验证否有益处

目前零样本学习的停顿和利用

1、将其用于音频辨认 | 无人机视觉类向量 => 上下文向量,通过上下文向量对任何新的上下文进行泛化例如在无人机视觉中,协变量上下文向量: 间隔、俯仰、速度、横摇、偏航等

2、跨语言词典演绎:查找不同语言的单词对应

总结

零样本和少样本学习办法缩小了对正文数据的依赖。因而对于新的畛域和收集数据的艰难的畛域他们是很重要的。少样本 (Few-Shot Learning FSL) 是一种机器学习问题 (由 E, T 和 P 指定),其中 E 只蕴含无限数量的例子,并带有监督信息。现有的 FSL 问题次要是监督学习问题。零样本学习(Zero-shot learning, ZSL) 是机器学习中的一个问题解决方案,学习者在测试时从训练中没有察看到的类中察看样本,并预测他们所属的类。

https://avoid.overfit.cn/post/129aa457af7b4dff9fa33dcaf0015968

作者:Amirhossein Abaskohi

退出移动版