大神Hinton的Capsule论文终于公开,神经网络迎来新探索

简介:
本文来自AI新媒体量子位(QbitAI)

11eb3f92c750f98c352eb240766114b876e12f3e

“我的观点是把它全部抛掉,重头再来。”

今年9月的一次大会上,大神Geoffrey Hinton再次号召展开一次AI革命。

应该向何处去?实际上最近几年来,Hinton的大量精力都投入到了对capsule的研究之上。他想做capsule和想要推翻反向传播,几乎是出于同一个原因:不像大脑。

capsule的提出,正是为了应对神经网络与大脑的一个不相似之处,也是Hinton这3年来一直在讲的“神经网络的一个问题”:结构中层次太少。

Hinton提出,应该在现有神经网络结构的基础上,加一个capsule的层级,每一层网络的神经元组成capsule,在内部做计算,然后输出一个压缩的结果。

到底什么是capsule?

在去年的AMA中,Hinton就谈到过“基于capsule的神经网络”,说他在Google这3年,在这项基础研究上投入了大量精力。

今年,这项研究似乎有了重大突破。

Hinton上个月在多伦多大学讲“卷积神经网络的问题及对策”时,就谈到要在现有神经网络结构的基础上,加一个capsule的层级,每一层网络的神经元组成capsule,在内部做计算,然后输出一个压缩的结果。

NIPS刚刚公布的接收论文列表中,也有Sara Sabour、Nicholas Frosst和Geoffrey E Hinton合作的Dynamic Routing Between Capsules

今年,关心capsule的网友也不少,甚至直接点名Hinton来问:

capsule怎么样了?

按照之前的说法,Hinton和谷歌大脑的同事Sara Sabour、Nicholas Frosst合作了一篇论文Dynamic Routing Between Capsules详细谈及,而这篇论文,将作为spotlight在今年12月举办的NIPS 2017上发表。

虽说Hinton曾不止一次讲他的capsule,但这篇论文一直没有亮相。

如今这篇外界期待已久的论文终于正式对外发布,地址在此:

https://arxiv.org/abs/1710.09829

74635f50a72bf83e43669feec11050f89b26a37b

论文摘要:

capsule是一组神经元,其活动向量表示特定类型实体(例如对象或对象部分)的实例化参数。我们使用活动向量的长度来表示实体存在的概率及其表示实例化参数的方向。活动capsule在一个层面上通过变换矩阵对更高层capsule的实例化参数进行预测。当多个预测相符时,较高层的capsule就开始活动。本文显示,经过区别训练的多层capsule系统在MNIST上实现了最先进的性能,在识别高度重叠的数字时,效果明显好于卷积神经网络。为了达到这样的结果,我们用了一个迭代的路由协议机制:一个低层的capsule希望将其输出发送到一个活动向量具有大标量积、预测来自低层capsule的高层capsule。

Capsule是什么?

人类视觉系统中,有一个“注视点”的概念,能让人类在视野范围内只对极小部分的图像进行高分辨率处理。这篇论文假设一个注视点带给我们的信息不仅仅是一个识别对象及其属性,还假设我们的多层视觉系统在每个注视点上都创建了一个类似分析树的东西,并忽略这些分析树在多个注视点之间如何协调。

分析树通常靠动态分配内存来构建,但是这篇论文假设对于单个注视点来说,分析树是从固定多层神经网络中“雕刻”出来的,就像用石头刻出雕像一样。神经网络的每一层会被分成很多组神经元,每一组称为一个capsule,而分析树的每个节点对应着一个活跃的“胶囊”。

Capsule的输入和输出

Capsule是输出是一个向量,这篇论文中,在保持它方向不变的情况下应用非线性缩小了它的量级,确保这个非线性输出不大于1。也正因为capsule的输出是一个向量,确保了能使用强大的动态路由机制,来确保这个输出能够发送到上层合适的parent处。

因为论文作者们希望capsule输出向量的长度能够表示这个capsule所代表的实体存在于当前输入的概率,他们使用了非线性“压缩”函数来确保端向量长度缩短到接近于0,而长向量的长度略小于1。这篇论文用判别学习来充分利用非线性特征。

公式

58e295b597b0a4ebff59690ce6a9074d859e82be

如上面公式所示,vj表示capsule j的输出,而sj是其输入。

架构

4d1b2ca8c6b5196913c64158a2e7154488d0c11e

一个简单的CapsNet共有3层。两个卷积层和一个全连接层。卷积层Conv1有256个9×9军集合,步长为1,激活函数为ReLU。这层把像素强度转换成局部特征检测信息,然后输入给主Capsules。

第二层(主Capsules)是一个卷积capsule层,32通道卷积8D capsule。

分割重叠数字

论文中的测试表明,CapsNet能够把重叠在一起的数字,还原成两个原始数字。

24dfd7a002cc23721bda3ba08a8ab3d33a1b6267

讨论

30年来,最先进的语音识别使用具有高斯混合的隐马尔可夫模型作为输出分布,这些模型具有致命的代表性限制。

Capsules通过将像素强度转换为识别片段的实例化参数向量来避免指数低效。Capsules做出了一个非常强的代表性假设:在图像的每个位置,一个Capsule代表的实体类型至多为一个。

Capsules现在的研究阶段,就像本世纪初将RNN应用于语音识别的阶段。有非常具有代表性的理由相信这是一个更好的方法,但很多细节还需要接续观察。

事实上,一个简单的Capsules系统已经在分割重叠数字时展现出无与伦比的性能,这提醒我们,Capsules是值得探索的方向。

最后再说一次,研读这篇论文,地址在此:

https://arxiv.org/abs/1710.09829

f2133a6ff57c05208d245ffd4c430f9348e1a338

本文作者:夏乙 问耕
原文发布时间:2017-10-28 
相关文章
|
5月前
|
机器学习/深度学习 资源调度 算法框架/工具
AI-ANNE: 将神经网络迁移到微控制器的深度探索——论文阅读
AI-ANNE框架探索将深度学习模型迁移至微控制器的可行路径,基于MicroPython在Raspberry Pi Pico上实现神经网络核心组件,支持本地化推理,推动TinyML在边缘设备中的应用。
339 10
|
5月前
|
机器学习/深度学习 边缘计算 算法
SEENN: 迈向时间脉冲早退神经网络——论文阅读
SEENN提出一种时间脉冲早退神经网络,通过自适应调整每个样本的推理时间步数,有效平衡脉冲神经网络的准确率与计算效率。该方法基于置信度判断或强化学习策略,在保证高精度的同时显著降低能耗与延迟,适用于边缘计算与实时处理场景。
348 13
|
5月前
|
机器学习/深度学习 缓存 算法
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
573 1
|
5月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
479 0
|
5月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
399 2
|
4月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
762 0
|
5月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
145 8
|
5月前
|
机器学习/深度学习 传感器 算法
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
291 7
|
5月前
|
机器学习/深度学习 算法 数据可视化
PINN物理信息神经网络用于求解二阶常微分方程(ODE)的边值问题研究(Matlab代码实现)
PINN物理信息神经网络用于求解二阶常微分方程(ODE)的边值问题研究(Matlab代码实现)
398 6

热门文章

最新文章