放牧代码和思想
专注自然语言处理、机器学习算法

Hinton神经网络公开课16 Recent applications of deep neural nets

目录

Neural Networks for Machine Learning最后一课。

学习图像和标题的联合模型

这节课介绍最近一种利用图片标题和图片像素的特征向量训练联合模型的技术。这两种输入之间应当有联系,并将辅助图片检索。末尾展示一段输入文本生成图片、输入图片产生文本的视频。

这种模型的难度比上节课介绍的“标签与图片”的联合模型更复杂。训练方法是:

  1. 训练图像上的多层模型

  2. 训练另一个词频向量上的多层模型

  3. 用一个新的顶级层把两个模型连起来。使用joint training训练整个系统,使特征相互提高。

  4. 具体训练使用的是深度玻尔兹曼机,而不是deep belief net。因为前者允许上层的特征改进下层的特征

DBM隐藏层的预训练是最大的难点,常用的预训练一般是DBN而不是DBM。

组合3个RBM形成DBM

这是个技巧活儿,叠罗汉一不小心叠成DBN,而不是DBM了。

正确方法是训练时让权值scale symmetrical,合并的时候将其减半:

2017年06月05日09-56-53.png

注意弧上的倍数,存在的理由是对$h_1$的推断可以来自上下两个方向。为了避免重复计算所以把上下两个权值都减半了。严格的证明得看论文。

效果如下:

Hierarchical coordinate frames  

这一节介绍通过识别物体的部件来识别物体。这个任务大致有3种思路:深度CNN(目前最佳),part-based方法(最可能超越CNN),传统计算机视觉学者手工编码的特征(已被CNN击败)。

为何CNN注定要完

即便CNN现在如火如荼,其先天的缺陷注定其走不远了。池化利用了一堆重复的feature detector,但丢失了它们所处的位置信息。即便重叠一些pool可以弥补一点,但这解决不了根本问题。CNN还是无法解决视角变换的问题,除非使用大量重复的feature detector,但这又增加了模型复杂度。反而人类很擅长这一点(又在尝试“仿生学”了)。目前的解决方案是人工变换图像,也就是增大训练集去克服问题。

The hierarchical coordinate frame approach

更聪明的方法应该是使用一些神经元来表示特征的形状以及相对视网膜的姿势。姿势指的是,视网膜坐标轴与特征坐标轴之间的关系。

有了这个关系之后,就可以通过多个特征的姿势来识别范围更大的特征。比如:

2017年06月05日10-29-04.png

如果你看到鼻子下面有张嘴,你会觉得这可能是张脸。但如果鼻子跑到嘴边去,则无法让人想起一张脸。左边如果让鼻子或嘴分别预测脸的姿势,则两个结果是一致的。而右边则是不一致的。

Two layers in a hierarchy of parts

当多个低层视觉单元同时支持某个更大的姿势时,该姿势对应的高层视觉单元才会被激活:

2017年06月05日10-34-44.png

$T_i$是某个嘴的姿势,p是逻辑斯谛单元,而$T_{ij}$代表嘴与脸的空间位置关系。计算机视觉的过程与计算机图像的过程是相反的。

pose向量的决定性特点

有了这些向量,空间变换可以通过线性计算得到。于是学习层次视觉实体变得简单,不同视角下的泛化也变得简单。一个形状的不变性不再体现在激活值上,而体现在空间关系$T_{ij}$上。当视角变换时,激活值也变化,空间关系不变,物体的姿势变化。

人类视觉系统利用坐标系来表示形状

2017年06月05日10-47-54.png

左边这块地图是哪个国家?大部分人会说是澳大利亚,有些人说是非洲,其实不是的。右边这个形状是什么?有些人会说是正方形,但其实4个角并非直角。有些人会说是钻石,但左右两个顶点并不等高。

为了认知一个形状,人类的视觉系统利用了坐标系(或说部件的空间关系),只不过不同的人用了不同的坐标系罢了。

神经网络超参数的贝叶斯优化

这一节介绍最新的调参方法,是利用机器学习调参,而不是研究生(或“专家们”)手工调参的。高斯过程很擅长“相似的输入导致相似的输出”的领域,机器学习领域恰好就是这样的领域。所以可以用来自动地寻参。

用机器学习寻找超参数

人们害怕使用神经网络的一个最常见的理由是,调参需要太多的专业知识。比如:

  • 网络层数

  • 每层单元数

  • 单元类型

  • 权值惩罚

  • 学习率

  • 动量等等等等

一个朴素的方法是grid search,也就是搜索超参数的所有组合,但这对计算力而言要求很高。另一个问题是,固定其他参数调整某个参数的时候,如果这个参数恰好没什么影响的话,就是个无用功了。稍微改进一点的方法是随机组合,但也好不到哪里去,你还不是在盲目搜索?

机器学习来救场

可不可以用机器学习模拟研究生调参呢?可以啊,与其盲目地用随机超参数组合,可以先分析一下目前的结果,预测哪些超参数空间可能给出更好的结果,然后有针对性地探索这些超参数空间。

假设探索一个超参数组合的成本是巨大的,那么相对而言组建一个预测超参数组合效果的模型则是廉价的。

Gaussian Process models

这种模型只做了一个简单的先验假设:相似的输入导致相似的输出。对超参数向量的每个维度,它们学习这个维度上多大的差异才叫不相似。GP模型不但可以预测一组超参数结果的均值,还可以预测一整个高斯分布(这是其得名的原因)。对相似的输入,预测输出的方差很小,但对不相似的输入,方差则很大。

具体做法

记录当前的最佳超参数组合,每次试验挑选对结果提升可能最大的组合,优胜劣汰。就像对冲基金一样,如果某指数上涨,我赢,否则你赢。

2017年06月05日11-15-11.png

红线是当前最佳成绩,ABC三个组合的预期成绩如绿线高斯分布所示。由于C在红线以上的面积最大,所以最应该赌C是个好备胎,哪怕其均值显著地位于红线以下。

效果如何

如果计算力足够的话,高斯过程比手工调参要好太多了。因为超参数一多,人类就晕了,注意不到某个超参数的影响。

另外,这还可以杜绝作弊。人们在写论文证明自己发明的方法具有显著优势的时候,往往拼命地优化新方法的超参数,而不太费心优化对手的超参数。对计算机而言,这是不存在的。

前方的迷雾

在这个最终的小节中,老爷子介绍为什么关于机器学习的长期预测是愚蠢的。

雾天行车

打个比方,晴天的晚上行车时,前车的尾灯发射到驾驶员视网膜上的光子数量与两车距离的平方成反比,即为$\frac{1}{d^2}$。而雾天时,短距离依然是$\frac{1}{d^2}$,而长距离则为指数级衰减$e^{-d}$,因为雾气对光子的吸收。

短距离模型$\frac{1}{d^2}$预测没车的时候,可能实际是有车的,这会导致车毁人亡。

指数增长效应

知识的增长也是指数级的,在短期事物发展得慢,还有可能去预测,比如下一代iPhone大约有什么功能。但长期预测就不准了,就像雾气一样。

于是机器学习的长远前途是无法限量的,但在下一个五年(到2017年)时,大型深度神经网络一定会做出许多令人惊异的成就。

最后,Neural Networks for Machine Learning笔记系列完结。虽然作为神经网络入门的第一门课程,这门课稍微偏难,但坚持下来得到的就是更多,恭喜通关!

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » Hinton神经网络公开课16 Recent applications of deep neural nets

分享到:更多 ()

评论 欢迎留言

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机