前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Wolfram神经网络训练营回顾:狗与蝴蝶的光学错觉

Wolfram神经网络训练营回顾:狗与蝴蝶的光学错觉

作者头像
WolframChina
发布2021-07-08 10:37:26
3280
发布2021-07-08 10:37:26
举报
文章被收录于专栏:WOLFRAMWOLFRAM

神经网络越来越成为社会的一部分,并被用于生活的许多方面,特别是电子商务和社交媒体。我最近有机会参加了Wolfram神经网络训练营,与设计和利用Wolfram语言神经网络资源的开发人员和研究人员一起。在训练营期间,参与者接受了关于在Wolfram语言中使用神经网的速成课程。

Wolfram开发人员和研究员Markus van Almsick向与会者介绍了用于计算机视觉和深度学习图像分类的Wolfram语言的结构和特点。在这次会议上,他解释了如何为计算机创造一个光学幻觉。这意味着什么呢?骗过人的视错觉也会骗过电脑吗?也许反过来也可以?

这篇博客是为神经网络和计算机视觉的初级用户进行的探索,它使用了一个计算机视觉缺陷的例子。愚弄神经网络我们先来介绍一下生成式对抗网络(GANs)。如果你对学习神经网络的完整介绍感兴趣,你应该阅读Tuseeta Banerjee的博文“神经网络:简介"(https://blog.wolfram.com/2019/05/02/neural-networks-an-introduction/)。

计算机是如何看的

计算机将图像看作是一个3阶的张量。位于图像中的每个像素都有三个与之相关的值,对应于红、绿、蓝(RGB)。计算机读取这三个值并将其转化为我们可以看到和理解的光线。例如,这些数值产生了你现在屏幕上的颜色。

人类擅长模式识别。我们可以在任何地方挑出图案:脸部、云层中的形状和其他很多地方--包括烤面包。尽管神经网络完成了与人类类似的视觉任务,但仍然存在实质性的差异。

与周边视觉相比,人类视网膜的中心提供了更高的分辨率。相比之下,计算机对整个图像中每个像素的RGB值进行平均权衡。此外,人类可以轻松地识别对齐的、有方向性的特征,而神经网络在纹理识别方面却难以胜任。这些差异在研究人类和机器都会陷入的视错觉时变得明显。

让我们利用Wolfram数据存储库的一些例子数据来证明这一点。

Wolfram语言的神经网络功能ImageIdentify将试图识别原始和转换后的图像。

狗与蝴蝶

在神经网络训练营期间,我们通过一个有趣且相对简单的探索,了解了目前Wolfram语言用户可用的训练有素的神经网络。

Inception V1是谷歌在2014年发布的一个神经网络。与会者学习了如何访问Wolfram神经网络资源库(用于各种应用的预制和预训练的网络,可以使用NetModel找到并以编程方式调用)。这个NetChain是一个完整的模型,在之前的例子中被用来进行预测,可以用新的数据进行训练,甚至可以进行重组(这也被称为网状手术和转移学习)。

第一步是定义我们希望我们的测试图像如何被预测。我们将从数据存储库中提取一条狗和一只蝴蝶的样本图像。

Inception V1识别出第一幅图像中有一只蝴蝶。

Inception V1网络存储了图像可能代表的每个选项的概率,我们可以提取它认为最可能的识别。

以下是狗和蝴蝶图像的概率,不是狗就是蝴蝶。在这两种情况下,非常肯定的是它不是其中一个选项。

我们的目标是让Inception V1高概率地相信蝴蝶的图像是一只狗,特别是一只萨摩耶犬。这是通过增加其他概念的概率实现的。关键是要在蝴蝶图像中创建神经网络在识别狗时要寻找的特征。

为此,我们将实现一个新的神经网络,称为 " foolNet "。它将包含作为权重数组的蝴蝶图像,并修改这些权重以将图像分类从 " Monarch butterfly "改为 "Samoyed (萨摩耶)"。

构建网络的第一步是从Inception V1网络中提取输入图像的尺寸和颜色通道的数量,以及NetDecoder的输出类别。这些参数在以后构建foolNet的过程中是需要的。

为了挑起错误分类,我们对Inception V1应用了一个修改过的CrossEntropyLossLayer。该层通过将得到的1000个类的概率与狗的概率进行比较,为 foolNet做大部分的工作。

foolNet本来就很简单。蝴蝶的图像将被存储为NetArrayLayer中的权重张量,我们将其作为输入预置到inceptNet中。

新的网络是用NetGraph和NetPort制作的。

请注意, foolNet不需要训练数据。此外,几乎所有的LearningRateMultipliers都被设置为None,以避免对inceptNet本身进行(重新)训练。只有带有蝴蝶图像的那一层的学习率被设置为1。

观察 foolNet的结构,因为它本身仍然是同一个网络。然而,该模型用来学习跟踪数据的指标却发生了变化。foolNet正在最小化创建的新图像的损失(或错误概率)。

foolNet使用Inception V1的结构,并增加了损失层。输出或目标是修改后的权重张量。这个张量也可以被转换回一个图像。

这张图片虽然模糊,但看起来像一只蝴蝶,而且大多数人都会把它识别为蝴蝶。然而,在Inception V1中的测试产生了奇特的结果。

现在,比较一下蝴蝶或萨摩耶的识别概率。

Inception V1现在非常确定它看到的是一只萨摩耶犬,或者至少它确定这个图像不是一只蝴蝶。蝴蝶翅膀的整体图案都没有改变,所以这是一个合格的计算机光学幻觉。神经网络被看似轻微的调整所愚弄,因为它们不是人类的大脑;它们受制于相对而言非常简单的方法。这意味着神经网络可以错误地对一个稍作修改的图像进行分类。

在庆祝我们对神经网络的掌控之前,值得注意的是,简单地模糊所产生的图像会使Inception V1再次正确识别蝴蝶。

正如在神经网络训练营中所解释的,这种方法是针对网络和图像的。考虑到一个新的网络或图像,该程序必须被重复,并可能被修改。欺骗或击败神经网络的方法在GANs中得到了扩展和应用。

其他资源

本文仅探讨 Wolfram 神经网络新兵训练营涵盖的众多主题之一。如果您有兴趣了解有关神经网络结构的更多信息并在 Wolfram 语言中使用它们,请查看以下资源:

  • “神经网络:简介” - https://blog.wolfram.com/2019/05/02/neural-networks-an-introduction/
  • Wolfram 语言中神经网络功能的参考页 - https://reference.wolfram.com/language/tutorial/NeuralNetworksOverview.html.zh
  • “版本 12 中的新功能:神经网络框架” - https://www.wolfram.com/language/12/neural-network-framework/index.html.zh
  • Wolfram U 的机器学习课程 - https://www.wolfram.com/wolfram-u/catalog/machine-learning/ (B站视频:https://www.bilibili.com/video/BV1p54y187aZ)

查看Wolfram U(https://www.wolfram.com/wolfram-u/)的其余课程和教程,了解如何在广泛的领域和应用中使用 Wolfram 技术。

点击左下角“阅读原文”上官网下载本文笔记本。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WOLFRAM 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档