教学参考-45
来自cslt Wiki
教学目标
- 了解人做梦的机理
- 理解卷积神经网络的基本操作,理解卷积神经网络对模式进行学习的特点
- 了解基于卷积神经经网络的模式学习和表征特点,对模式进行强化的基本原理
- 了解基于放大-剪裁生成动态图片序列的基本原理
- 引导学生思考机器做梦和人做梦的区别和联系
教学内容
做梦
- 在睡眠状态下,我们的大脑依然会有部分神经细胞保持活跃状态,这些活跃细胞会使我们感知到一些场景,也就是我们常说的梦境。据统计,每个人平均每晚有3-5个梦,有的人会高达20个。
- 由于梦中的情景是由少数活跃神经细胞激发生成的,因此整体上并不具有真实世界的逻辑性。然而,每个神经细胞所携带的信息又是真实世界的反映,因此又具有部分真实性。这些具有一定真实性的片段杂乱组合在一起,就形成了光怪陆离的梦境。
- 我们知道,神经网络,特别是卷积神经网络,可以像人的大脑一样记住见过的数据。如果对神经网络的神经元以随机组合的方式进行激发,则可以形成人类做梦的效果。
卷积神经网络的特征记忆
- 卷积神经网络(CNN)是一种特殊的神经网络。如右图一所示,一个卷积核在输入特征平面上进行扫描,得到的结果构成一个输出特征平面。
- 这一操作可以看作是模式提取过程:当图片在某一位置存在和卷积核匹配的模式时,输出平面在该位置会出现较强的激发,相当于提取到了卷积核所代表的模式。【这一部分为本章重点知识】
- 值得说明的是,在不同数据上训练得到的CNN所学习到的模式(卷积核)是不一样的:用于动物识别的CNN学到的可能是头、尾、腿等特征,用于花草识别的CNN学到的可能是花瓣、花蕊、叶片等特征。
- 从这个角度看,CNN其实是记忆了训练数据的主要特征,这些特征分层次地组织起来,由局部到全局,由具体到抽象。这有点儿像我们的大脑,把见过的形象分层次地组织并记忆下来。
模式强化:梦境开始
- 基于CNN的层次性特征提取能力,Google开发出了一套有趣的做梦算法,称为DeepDream。如右图所示,输入一张蓝天白云的照片,在CNN的某一层的特征平面中寻找一个最强的激发。这个激发的存在说明输入图片在相应位置存在某一个显著特征,如一条鱼或蜗牛的形状。虽然这些形状在原图中并不存在,但它们可能隐藏在云朵图像里,否则不会被CNN发现。找到这个激发值后,对图片进行调整,使得这个激发值更大,就可以将对应的模式更明显地展示出来。
- 这有点儿像我们盯着云朵时,看到一片云有点儿像一条鱼,然后盯着这片云不停地看,不断给自己心理暗示,说这是条鱼,慢慢的就会发现这片云越来越像一条鱼。这就是我们说的特征强化过程。
- DeepDream就是以特征强化为起点生成虚幻场景的。如右图所示,原始图片经过特征强化以后,很多不是很强的模式被加强后突现出来。因为特征强化只是部分特征的随意拼凑,因此会得到部分真实而整体虚幻的图片,从而生成了梦景一般的效果。
动态梦境
- 模式强化是对一张图片中的某个模式进行强化,并不能形成动态过程。DeepDream在强化过程中采用了一种类似“拉近镜头”的操作,生成了一个动态的“做梦”过程。
- 给定一张噪声图片,送入CNN,对图中的模式进行强化。得到强化后的图片以图片中心为焦点进行放大后再剪裁为原始图片大小。将剪裁后的图片重新送入CNN进行下一轮模式强化。这样反复进行,即得到一个连续变化的图片序列,产生梦境般的效果。