深度学习迫切需要的人类大脑功能。
深度学习有一个大问题: 它需要吞噬大量的数据,然后才能很好地泛化而变得实用。这实际上是深度学习的局限性之一,限制了它在数据不丰富或难以获得的许多领域的应用。
相比之下,人类虽然在人机智能大战中处于劣势,但只需几个训练例子就能学会复杂的概念。一个不知道什么是猫或狗的婴儿看到一些猫和狗的图像后,可以学会分类后。即使我们学习更复杂的概念,我们也能够用一个小的数据集学会大部分。
这个属性使教授人类概念变得很费力,虽然是可能实现的。一个四年级的学生可以通过几十道题和一个好老师来掌握基本代数的原理。深度学习需要一个精心设计的架构,成千上万(如果不是更多的话)以特殊格式编码的痛苦的问题和答案,以及几天的计算时间。
也许关于人类大脑的一些更有趣的事情是,我们可以轻松地处理成百上千的类别。想想你周围环境中的所有物体——你的电脑、你电脑上的应用程序、这些应用程序的功能、数十种颜色、你同事的名字,以及所有英语单词。
此外,即使你以前从未见过这些概念,你也能够识别它们。考虑下面的例子(希望你以前没有见过) : 把它们分类。类的实际名称并不重要——如果你愿意,可以称它们为 zookhizonk。
这与新物种的命名过程非常相似。如果一个科学家发现了几只秃鹰,他或她可以简单地给这个物种命名——“秃鹰”——它们的特征是相似的: 翼展6-7英尺,深褐色或白色的尾巴,白色的头,明亮的黄色眼睛。尽管他或她事先并不知道什么是“秃鹰”。
我们不需要在概念上添加名称来识别它们; 名称是任意的,只是一种快速获得想法的方式。类似地,我们可以按照我们喜欢的任何名称对这些抽象形状进行分类,只要这些名称代表一个更广泛的概念(在本例中,两个方块代表“ Zonkizonk” ,三个方块代表“ Bonkibonk”)。
零次学习(Zero-shot learning)是将人类识别以前未见过的概念的能力带给机器的一种努力。显然,这是迈向真正的人工智能和构建更像人类思维的算法的关键一步,同时在类别太多、数据有限或者获取成本高昂的问题上,这也是非常实用的。
在一个深度学习还没有解决的问题日益涉及复杂的和类似人类的认知的世界里,zero-shot learning 是一个答案。
类似地,one-shot 或 few-shot learning 指的是只给出一个或几个来自那个类别的训练样本就能理解整个类别,就像双头 Siamese 网络一样。
一个简单而有效的 zero-shot learning 方法是“Embarrassingly Simple Zero-Shot Learning”(ESZSL) ,它创造性地使用矩阵分解和非监督式学习来生成一个模型,结果惊人的好。理解它可以直观地了解很多其他 zero-shot learning 技术。
在 SUN 数据集(https://groups.csail.mit.edu/vision/SUN/)上,ESZSL 得到了超过65% 的准确率,这个数据集包含了数以万计的在训练过程中从未见过的类的目标。深度总结可以查看论文(http://proceedings.mlr.press/v37/romera-paredes15.pdf)的方法在合成和真实数据集上的结果。
从根本上讲,ESZSL 是一个线性模型。给定一个输入矩阵 X 的形状(行数,特征数)和一个权重矩阵的形状(特征数,类数),线性组合输出将是形状(行数,类数)。
ESZSL 的目标是求出权重矩阵 W 的值。
一个相当复杂的模型必须完成的两个步骤:
这两个目的可以用矩阵来表示。
然后我们可以把模型写成:
上标代表矩阵的形状。r 是数据集中的行数,f 是特征数,a 是在中间层学习的属性数,c 是类别的数量。
结果表明,pipeline的后半部分 —— S,即某些学习到的属性和类之间的关系 —— 可以通过非监督式学习方法如 PCA,或者更复杂的流形学习技术如局部线性嵌入和 t-SNE 来找到。
这里,E[(a,b) ,(c,d)]表示期望值或平均值。结果是(a + c)/2,(b + d)/2。“ A1”和“ A2”表示属性1和属性2。
这是一种非常简单和优雅的推导 S 的方法,因为它使用了无监督的特征提取方法,这对 zero-shot learning 很有用,因为它不能接触到测试中可能出现的任何标签。在 zero-shot learning 算法中使用聚类也是有意义的,因为新类的识别是一个非常复杂的聚类任务。
然后,训练和预测过程如下:
即使是这个“非常简单的”的 zero-shot learning 方法,也可能有点难以理解。让我们以 MNIST 数据集为例讲解,数据集由从0到9的手写数字组成。
注意,测试集中 S 的计算有点可疑,如果你非常严格的话,你可能会反对它是真正的 zero-shot,因为预测 S 的一部分依赖于标签。或者,有人可能会说这是必要的,而且在整个训练和测试过程中,负责编码输入的所有工作的 V 始终保持不变。无论你站在哪一边,这都是一个很好的了解 zero-shot 算法背后的思想的机会。然而,一般来说,zero-shot learning 方法会遵循三种学习范式之一:
Zero-shot learning 在图像分类、语义分割、图像生成、目标检测、自然语言处理以及其他更具体的用例(如语言翻译)中有着广泛的应用。该领域的研究数量每年都在迅速增长,其中大部分是对传统深度学习方法的创造性突破 —— 毕竟,困难的任务需要更多的创新。
谢谢阅读!
来源:https://medium.com/@andre_ye/what-the-human-brain-has-that-deep-learning-desperately-needs-a-guide-to-zero-shot-learning-2e296741ce51