Reddit 讨论:Hinton的Capsule网络真的比CNN效果更好吗?

简介: Hinton 提出用 Capsule 这个概念代替反向传播,引起广泛关注。本文来自Reddit上“Capsule networks为何与众不同,它真的比CNN效果更好吗?”的讨论,作者分析了capsule network与CNN不同的三个方面。

首先,capsule 的概念与卷积的概念大部分是独立的。例如,你可以有一个完全连接的capsule网络。但是,它们确实使用了卷积,而且也被与CNN进行比较。但是,我将在接下来解释中抽象出卷积,因为这会分散我们的核心思想。

因为capsule网络与传统的神经网络相比是如此的不同,以至于很难理解它们之间的差异。在这里我将详细介绍capsule网络的细节,然后总结一下不同之处。

简单描述capsule网络

首先,我们可以看看capsule的动机(从Hinton的谈话中摘出来的)。CNN的过滤器所做的就是检测源图像中是否存在特定的模式/特性。 我们通常希望并行地在源图像的同一个patch上堆叠多个过滤器,这样就可以在同一个patch检测多个特征。

但是,请注意,由于堆叠的过滤器数量的线性因子,这个维度会增加很多。为了减少网络的维度,同时允许使用更多的过滤器,我们可以应用max-pooling,这样就可以得到一个神经元,它在语义上的意思是“这个区域某处有一个特征X。”但是,请注意,这个特征的精确位置已经被丢弃。在许多层重复这个操作,我们实际上丢失了许多关于特征精确位置的信息。

另一个稍微切向的动机是:如果一个人被展示一个鼻子,它就可以对眼睛、嘴、耳朵等部位的大约位置进行反向工程,从而预测整个脸部的位置和方向。如果我们看到一个鼻子,并预测了脸部的位置;但是假如看到一个嘴巴,基于它预测的脸部位置就会稍微不同,看起来会很奇怪。如果我们仅仅使用1/0来检测特征(鼻子,嘴巴)的存在,我们可能会被引导去相信这两者在正确位置的组合就可以预测出一张脸。但实际不是这样,我们也需要知道它们的方向。

想法:在检测特性的基础上,我们可以输出额外的2个值,对应该特性被检测到的X和Y位置。但是方向呢?我们需要一种更通用的方式来封装这些信息。一个更好的想法是:我们可以让神经网络学习一种方法来表示这个位置/方向信息本身!这就是capsule网络的由来。

差异

1)标量vs向量的输入和输出

神经元从上一层接收一堆标量,并输出一个标量。一个capsule是从上一层获取一堆向量,并输出一个向量。

如果你仔细阅读了,你可能已经注意到(1)实际上并没有完全改变网络。假设我被允许任意地将前一层的神经元组合在一起,将来自当前层的神经元组合在一起,将它们称为向量,并没有什么区别。这里,我们将输入设为向量,对它应用一个矩阵(matrix),然后做一个加权和。这与简单地将输入激活作为一个巨大的向量,然后再应用一个更大的矩阵相比,没有什么不同。

2)挤压函数

引入挤压函数(squash function)是真正的区别。但现在,仍然是一个任意非线性。你可以想象一个奇怪的网络,它在两个层之间变换,一个变换向量,另一个对这些向量做加权和(这实际上是另一个线性变换!),然后挤压。结合(1)和(2),这意味着我们的网络使用的是不同于一般类型的非线性。

3)capsule之间的routing

这就是capsule网络如此与众不同的原因。与普通的层相比,capsule层是完全不同的。首先,我们转换输入向量来得到预测向量。然后我们将children capsule分配给parent capsule,它的总预测向量与它自己的预测向量有很大的一致,从而可以对预测向量进行加权和。然后把它拿出来,进行挤压(squash)。


原文发布时间为:2017-11-11

本文作者:GraceFu

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:Reddit 讨论:Hinton的Capsule网络真的比CNN效果更好吗?

相关文章
|
24天前
|
机器学习/深度学习 存储 自然语言处理
卷积神经元网络CNN基础
卷积神经元网络CNN基础
32 1
|
25天前
|
机器学习/深度学习
大模型开发:解释卷积神经网络(CNN)是如何在图像识别任务中工作的。
**CNN图像识别摘要:** CNN通过卷积层提取图像局部特征,池化层减小尺寸并保持关键信息,全连接层整合特征,最后用Softmax等分类器进行识别。自动学习与空间处理能力使其在图像识别中表现出色。
24 2
|
2月前
|
机器学习/深度学习 编解码 PyTorch
Pytorch实现手写数字识别 | MNIST数据集(CNN卷积神经网络)
Pytorch实现手写数字识别 | MNIST数据集(CNN卷积神经网络)
|
1月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
|
2月前
|
机器学习/深度学习 测试技术 Ruby
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
125 2
|
1月前
|
机器学习/深度学习 人工智能 算法
详细介绍卷积神经网络(CNN)的原理 !!
详细介绍卷积神经网络(CNN)的原理 !!
74 0
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
神经网络结构——CNN、RNN、LSTM、Transformer !!
神经网络结构——CNN、RNN、LSTM、Transformer !!
126 0
|
1月前
|
机器学习/深度学习 算法
基于CNN+LSTM深度学习网络的时间序列预测matlab仿真
基于CNN+LSTM深度学习网络的时间序列预测matlab仿真
|
1月前
|
机器学习/深度学习 编解码 人工智能
一篇文章搞懂CNN(卷积神经网络)及其所含概念
一篇文章搞懂CNN(卷积神经网络)及其所含概念
68 0
一篇文章搞懂CNN(卷积神经网络)及其所含概念
|
2月前
|
算法
m基于Faster-RCNN网络的人员摔倒检测系统matlab仿真,带GUI操作界面
m基于Faster-RCNN网络的人员摔倒检测系统matlab仿真,带GUI操作界面
30 9