您当前的位置:千讯科技网资讯正文

如何提取网络架构的先验知识为它画幅素描吧

2019-09-23 17:31:59  阅读:4693 作者:责任编辑NO。石雅莉0321

选自谷歌博客

机器之心编译

参加:郭元晨、Geek AI

形形色色的深度神经网络看似结构各不相同,其内在学习逻辑实则有迹可循。且看谷歌的研讨人员怎么经过「递归速写」办法提取常识、进行神经网络紧缩,终究实现在未曾练习过的场景下的智能推理。

许多经典的机器学习办法专心于怎么运用可取得的数据来做出更精确的猜测。最近,研讨者们也开端重视其他重要的方针,比方怎样规划一个细巧、高效又鲁棒的算法。在这些方针的驱动下,一个天然的研讨课题便是规划一个依据神经网络的体系,该网络能够高效地存储其间编码的信息。换句话说,也便是规划一种归纳杂乱深度网络处理输入的办法的简略机制(像「速写」(sketch)相同)。「神经网络速写」是一个被广泛研讨的范畴,能够追溯到 Alon、Matias 和 Szegedy 的奠基性作业「The space complexity of approximating the frequency moments」。这项作业中,研讨者们使得神经网络能够高效地归纳输入的信息。

论文地址:http://www.math.tau.ac.il/~nogaa/PDFS/amsz4.pdf

举个比方,假定你进入了一个房间,大概地扫了一眼里面的物体。假如你要求现代机器学习算法答复一些它在练习时见过的问题,它能够马上给出很好的答案:「这里有猫吗?假如有,它多大?」现在,假定咱们在一年中每一天都会看一遍这个房间,人类能够回想起他们在这段时刻调查房间的情形:「房间里有呈现一只猫的频率怎么?咱们通常是在早上仍是晚上看这个房间?」那么,咱们是否能够规划一类体系,它们能高效地答复这类依据回忆的问题呢(即便它们在练习中没有呈现过)?

在 ICML2019 上宣布的文章「Recursive Sketches for Modular Deep Learning(https://arxiv.org/abs/1905.12730)中,咱们探求了怎么简练地归纳机器学习模型了解输入的办法。关于一个现有的(练习好的)机器学习模型,咱们用其核算的「速写」增强它,并用这些「速写」来高效地答复依据回忆的问题——比方核算图画间的类似度,并总结一些统计数据(虽然事实上比较于将完好的原始核算进程存储下来,这些「速写」占用的内存要少得多)。

根底「速写」算法

总体上来说,一个「速写」算法接纳输入一个向量 x,输出一个与 x 体现类似可是存储开支的小得多的「速写」向量。事实上这种小得多的存储开支让咱们能够简练地存储有关网络的信息,这在高效地答复依据回忆的问题时是至关重要的。在最简略的状况下,一个线性的「速写 向量」x 由矩阵和向量的乘积 *Ax *得到。其间 A 是一个「宽」矩阵,它的列数是 x 的原始维数,行数是新的降维后的向量维数。这种办法在大数据集的一些根本使命上衍生出了许多高效的算法(http://db.cs.berkeley.edu/cs286/papers/synopses-fntdb2012.pdf),比方估量根本统计量(例如,直方图、分位数、四分位数等),寻觅高频项(frequenct elements),估量不同的元素的数量(support size),以及一些和范数、熵估量相关的使命。

将向量 x 乘上一个宽矩阵 A,得到一个低维向量 y,这是得到「速写」的一个简略的办法。这个根本的办法在一些像线性回归之类相对简略的状况中作用很好,在这种状况下,它只是经过权重的巨细就能够辨认重要的数据维度(在方差一致性的常见假定下)。但是,许多现代机器学习模型是依据高维嵌入(如 Word2Vec、Image Embeddings、Glove、DeepWalk、BERT 等)的深度神经网络,这使得归纳模型关于输入的操作变得反常困难。但另一方面,这些杂乱网络的许多部分都是模块化的,即便它们十分杂乱,咱们也能够关于它们的行为生成精确的「速写」。

神经网络的模块性

一个模块化的神经网络由数个独立的神经网络模块组成,它们只经过「将某个模块的输出作为另一个模块输入」这样的办法来传递信息。这种思维启发了许多有用架构的呈现,比方 Neural Modular Networks、Capsule Neural Networks 和 PathNet。咱们也能够拆分其它经典的神经网络架构,把它们看作模块化的网络,并运用咱们的办法。比方,卷积神经网络(Convolutional Neural Networks,CNNs)通常被以为是以模块化的办法作业的,网络在低层检测出图画中根本的概念和特点,而在较高层检测愈加杂乱的物体。在这种观念下,各种卷积核就对应于各种模块。鄙人图中,咱们给出了模块化网络一个形象的描绘。

上图是用模块化神经网络进行图画处理进程的一个形象的图示。数据从底端经过蓝色方框代表的模块流向顶端。请留意,在较低层中,模块对应的是一些根本的元素(比方图画的边际);而较高层的模块对应着愈加杂乱的物体(比方人或许猫)。咱们还应该留意,在这个幻想的模块化网络中,检测脸的模块的输出有满意的通用性,使它能够一起被检测人和检测猫的模块所运用。

「速写」的要求

为了针对这些模块化网络优化咱们的办法,咱们清晰界说了几个网络「速写」应该满意的性质:

「速写」间的类似性:两个不相关的网络操作(不管从模块自身仍是向量特点来说)的「速写」应当是十分不同的;同理,两个类似网络核算的「速写」应该很相像近。

特点康复:特点向量(即图中任何结点的激活函数值),都能够依据顶层「速写」大致康复。

概要统计量:假如有多个类似的物体,咱们能够康复出这些物体的概要统计量。比方,假如一张图画中有多只猫,那么咱们能够数出有多少只。请留意,这些问题在练习中是不会呈现的。

可擦除性:擦除顶层「速写」的后缀仍能够保存以上特性(但会略微增大差错)。

网络康复:给定满意多的(输入,「速写」)对,能够粗略地会支付网络边的衔接办法以及「速写」函数。

上图是一个形象的「速写」间类似性的二维示意图。每个向量都表明晰一个「速写」,相关的「速写」更倾向于集合在一起。

「速写」机制

咱们提出的「速写」机制能够运用在预练习好的模块化网络上。这种机制为网络的运算供给了一个顶层「速写」式的归纳,一起满意了上面说到的那些性质。为了了解这种机制的作业办法,咱们无妨考虑一个单层的网络。在这种状况下,咱们确保某个特定结点预练习得到的一切信息能够被封装到两个不同的子空间去,其间一个对应着结点自身,另一个对应着和该节点相关的模块。经过恰当的投影,榜首个子空间能够康复该节点的特点,而第二个子空间能够快速地估量概要统计量。两个子空间强化了上面说到的「速写」间的类似性特性。咱们说明晰,只需涉及到的这些子空间是独立随机选取的,那么上述特性必定建立。

当然,假如想要将这种思维扩展到多于一层的网络上,还需要考虑更多的问题——这就引出了咱们的「递归速写」(recursive sketching)机制。因为网络的递归性质,这些「速写」能够被「打开」,然后辨认子组件,把握愈加杂乱的网络结构。最终,咱们运用针对该问题特别规划的字典学习(dictionary learning)算法来证明:只需有满意多的(输入,「速写」)对,那么咱们就能够康复出组成「速写」机制的随机选取的子空间和网络结构。

未来的研讨方向

简练地归纳网络的操作好像和模型可解释性有着密切的联络,所以进一步探求「速写」相关的思维能否被运用在模型可解释性范畴是一个风趣的方向。咱们的「速写」也能够被安排成一个「常识图谱」(knowledge graph),使形式能够被快速辨认和检索。此外,咱们的「速写」机制答应无缝地向「速写」库中增加新的模块,所以探求这种特性在神经网络架构查找(architecture search)和网络拓扑演进中的运用也是一个风趣的主意。最终,「速写」能够以为是安排回忆中之前遇到信息的一种办法(例如,同享相同模块或特点的图画,它们的「速写」也会同享相同的子模块)。建瓴高屋地说,这和人类运用先验信息来辨认物体而且泛化到未曾遇到的情境中的进程十分类似。

本文为机器之心编译,转载请联络本大众号取得授权。

------------------------------------------------

“如果发现本网站发布的资讯影响到您的版权,可以联系本站!同时欢迎来本站投稿!