热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

举个卡戴珊的例子,讲讲Hinton的Capsule是怎么回事|教程+代码

NickBourdakos文李林若朴编译自HackerNoon量子位出品|公众号QbitAICapsuleNetworks,或者说CapsNet,这个名字你
Nick Bourdakos 文
李林 若朴 编译自 HackerNoon
量子位 出品 | 公众号 QbitAI

640?wx_fmt=png&wxfrom=5&wx_lazy=1

Capsule Networks,或者说CapsNet,这个名字你应该已经听过好几次了。

这是“深度学习之父”的Geoffrey Hinton近几年一直在探索的领域,被视为突破性的新概念。最近,关于Capsule的论文终于公布了。

一篇即将发表于NIPS 2017:

Dynamic Routing Between Capsules

作者:Sara Sabour, Nicholas Frosst, Geoffrey E Hinton

https://arxiv.org/abs/1710.09829v2

另一篇是ICLR 2018正在匿名评审的:

Matrix capsules with EM routing

作者目前未知

https://openreview.net/pdf?id=HJWLfGWRb

要理解Capsule Networks,还得从卷积神经网络(CNN)的特性说起。

传统神经网络的问题

到目前为止,图像分类问题上最先进的方法是CNN。

而CNN的工作原理,是将每一层对应的特征累积起来,从寻找边缘开始,然后是形状、再识别实际的对象。

然而,在这个过程中,所有这些特征的空间关系信息丢失了

虽然可能有点过度简化了,不过我们可以把CNN看做这样一个程序:

if (2 eyes && 1 nose && 1 mouth) {
 It's a face!
}

翻译成人话就是:如果有两只眼睛、一个鼻子、一张嘴,它就是一张脸!

一般人看见这个表述,第一反应大概是挺好的啊,有道理,没毛病~

对,有道理,不过我们需要转念想一想:这个表述还是有问题的。不信?看一张略恐怖的卡戴珊姐姐照片:

0?wx_fmt=png

确实是两只眼睛一个鼻子一张嘴吧?

但我等人类都一眼就能看出来,这张照片不对劲啊!眼睛和嘴错位了啊!人不应该长这样!识别成鬼还差不多……

可是呢,CNN会认为,眼睛和嘴的位置不管在哪,都没什么区别,会很宽容地,把这张照片归类成“人”:

0?wx_fmt=png

除了对人类五官的位置过于宽容之外,CNN还有还有一个毛病,就是对图片的角度要求有点苛刻,它能容忍照片稍微旋转一些,但要是旋转太多,它就不认得了。

我们把卡戴珊姐姐旋转180°:

0?wx_fmt=png

出现这个问题的原因,用行话来说是旋转的程度超出了最大池化(maxpooling)所带来的旋转不变性(invariance)的限度。这其实有办法解决,就是在训练中用上各种可能角度的图片,行话叫做data augmentation。不过,这种做法实在是耗时费力。

另外,CNN还很容易受到白盒对抗性攻击(adversarial attacks)的影响,在图片上悄悄藏一些图案,就能让CNN把它误认作别的东西。

谷歌的神经网络把海龟误认成步枪,就是这个毛病:


推荐阅读
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 本文详细介绍了在 Python 中使用 OpenCV 进行图像处理的各种方法和技巧,重点讲解了腐蚀(erode)和膨胀(dilate)操作,以及开运算和闭运算的应用。腐蚀操作可以去除前景物体的边缘部分,而膨胀操作则可以扩展前景物体的边界。开运算和闭运算则是结合这两种基本操作,用于消除图像中的噪声和填充空洞,提高图像处理的效果。通过具体的代码示例和实际应用案例,读者可以深入理解这些技术在图像处理中的重要作用。 ... [详细]
  • MongoDB高可用架构:深入解析Replica Set机制
    MongoDB的高可用架构主要依赖于其Replica Set机制。Replica Set通过多个mongod节点的协同工作,实现了数据的冗余存储和故障自动切换,确保了系统的高可用性和数据的一致性。本文将深入解析Replica Set的工作原理及其在实际应用中的配置和优化方法,帮助读者更好地理解和实施MongoDB的高可用架构。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 解决针织难题:R语言编程技巧与常见错误分析 ... [详细]
  • 本文详细探讨了在ASP.NET环境中通过加密数据库连接字符串来提升数据安全性的方法。加密技术不仅能够有效防止敏感信息泄露,还能增强应用程序的整体安全性。文中介绍了多种加密手段及其实施步骤,帮助开发者在日常开发过程中更好地保护数据库连接信息,确保数据传输的安全可靠。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • 在《Python编程基础》课程中,我们将深入探讨Python中的循环结构。通过详细解析for循环和while循环的语法与应用场景,帮助初学者掌握循环控制语句的核心概念和实际应用技巧。此外,还将介绍如何利用循环结构解决复杂问题,提高编程效率和代码可读性。 ... [详细]
  • 中国学者实现 CNN 全程可视化,详尽展示每次卷积、ReLU 和池化过程 ... [详细]
  • 浅层神经网络解析:本文详细探讨了两层神经网络(即一个输入层、一个隐藏层和一个输出层)的结构与工作原理。通过吴恩达教授的课程,读者将深入了解浅层神经网络的基本概念、参数初始化方法以及前向传播和反向传播的具体实现步骤。此外,文章还介绍了如何利用这些基础知识解决实际问题,并提供了丰富的实例和代码示例。 ... [详细]
author-avatar
新起点新娘妆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有