【编者按】这是一篇对谷歌研发团队最新研究成果的博客(Inceptionism: Going Deeper into Neural Networks)的翻译。这项研究的主要目的是观察深度学习神经网络的某一个隐层都提取了哪些特征以及这些特征提取的的是否准确。但出人意料的是他们发现了这里面的创造性过程有可能揭示出人类大脑本身是如何进行创新的。
人工神经网络技术引发了近期图像分类和语音识别领域的显著发展。但是即便这些都是基于大家普遍了解的数学方法之上的非常有用的工具,我们仍然对为什么某些神经网络模型有用但另外一些没有用知之甚少。下面让我们来看看用一些简单的技术来窥视一下这些神经网络的内部机制。
为了训练一个神经网络,我们通常展示给其以百万计的训练样本,并逐步调整其权重参数,直到它给了我们想要的分类结果。一个神经网络通常包含10-30个堆叠在一起的人工神经元层。每个图像首先由输入层导入,然后传递到下一层,直到到达最后的“输出”层。神经网络根据图像给出的“答案”就来源于最终输出层。
了解神经网络的挑战之一是在图像处理的每一层中都发生了些什么。我们知道经过训练的神经网络的每一层都逐步提取更抽象的图像特征,直到最后一层对图像显示的是什么做个决定。例如,第一层可能只查找图像中的物体边缘或角。中间层通过对前面收集的基本特征的理解来寻找更加整体的轮廓和构件,比如一扇门或者一片树叶。最后几层将这些整体轮廓和构件组合在一起形成对图像的完整解释 —— 这些神经元只对非常复杂的对象呈现出激活反应,比如整栋建筑物或者树木。
将神经网络中每一层对图像的特征抽取进行可视化的方法之一是把该网络前后倒置,要求某一层将输入图像,以引发特定的解释。假设你想知道哪种图像会让该网络形成“香蕉”的结果,你可以一开始输入一个充满随机噪声数据的图像,然后逐渐调整该图像直到该神经网络认为它是香蕉。这种方法本身效果不太显著,但是当我们加上一个限制,使整个过程中的像素分布与自然生成的图像具有相似的统计规律,比如相邻像素需要高度相关,那么效果就出来了。
所以这里有一个惊喜:经过训练后可以识别不同图像的神经网络也同时积累了可以产生图像的大量信息。看下面再不同类别的更多的例子:
为什么这很重要?我们通过简单地展示给一个神经网络大量的我们希望它们学习的例子来训练它们,希望他们能够从中提取这些例子共性(例如,一把叉子由一个把柄和2-4叉齿组成),同时学会忽略不重要的东西(一个叉可以是任何形状,大小,颜色或放置方向)。但你如何检查一个神经网络是否正确学习到对象的共性特征?通过观察该神经网络对它形成的叉子的概念的展示可以有所帮助。
事实上,这种方法揭示出在某些情况下,我们认为神经网络已经找到的并不完全是我们想让它找到的东西。例如,这是我们设计的一个神经网络经过训练后认为的哑铃的样子:
没错这些图片里都有哑铃,但似乎没有一张图片里的哑铃是不带有一段充满肌肉的臂膀的。在这种情况下,该神经网络并没有完全参透哑铃的共性。也许它从来没有看到过没有一只胳膊抱着的哑铃。可视化可以帮助我们纠正类似的训练失误。
有时我们可以不去精确描述我们希望神经网络突出的特征,而是让神经网络自己做出决定。这时我们可以首先简单地给它任意图片或照片,并让它进行分析。然后,我们选择网络中的一个层,让它强调显示它抽取的特征。神经网络中的每一层抽取的特征的抽象度都不同,所以特征的抽象度取决于我们选取的层面。例如,较低层往往会产生特定笔画或简单装饰状图案,因为这些层面对边和边的方向等特征最为敏感。
如果我们选择更高层,由于它们识别图像更复杂特征,这种方式可以使复杂特征甚至某个物体出现在画面中。这次我们仍然给我们的神经网络一张图像。我们要求它:“你如果看到了什么,就多给我一点你看到的!”这就创建了一个反馈循环:如果一朵云看起来有一点点像一只鸟,我们的网络就让使它看起来更像一只鸟。这样一来,重新读入的数据会让它更像一只鸟,直到一只看上去非常逼真的鸟好像凭空出现。
这一结果耐人寻味:即使是一个相对简单的神经网络都可用于对图像进行过渡解释,就像我们小时候喜欢看云并且喜欢将那些随机形状的云解释为我们熟悉的对象。该网络的主要训练对象是动物,所以它自然也容易将遇到的各种形状解释为动物。但是因为特征数据来自高抽象层,所以结果是这些特征的有趣混合。
当然,用这种技术我们可以做比看云更多的事情。我们可以把它适用于任何种类的图像,结果差别很大,因为强调的特征不同。例如,地平线线往往会被塔充满,岩石和树木变成建筑,鸟和昆虫出现在叶子里面……
这一技术可以让我们了解神经网络中的某一层对图像特征的了解程度。根据我们使用的神经网络的架构,我们将其称为“开始主义 (Inceptionism)”。请参阅我们的开始主义画廊,里面有更多的图像和对它们的处理结果,还有一些很酷的视频动画。
我们必须更进一步:迭代
如果我们将该算法反复在每次输出的结果上进行迭代,并且每次在迭代前做一些放大,我们就可以得到层出不穷的新印象,探索该神经网络所了解的更多的特征。我们甚至可以从随机噪声图像开始该过程,使得最后结果成为某一个神经网络自己的作品,比如下面的图像:
这里介绍的技术可以帮助我们理解并视觉化神经网络如何进行复杂的图像分类任务,提高网络架构,并检查一下神经网络在训练期间学会了些什么东西。这也使我们联想到神经网络是否能成为一个艺术家的新工具 —— 一种新的混合视觉体验的方式 – 亦或向我们揭示出一点一般性创新过程的根源所在。
支付宝扫一扫
微信扫一扫
赏