胶囊网络(Capsule Network)
胶囊网络有意思的解析
- 1、传统的CNN
- 2、胶囊
- 2.1 向量神经元和标量神经元(普通人工神经元)对比
- 2.2 工作原理
- 2.3 动态路由
1、传统的CNN
CNN中包含一个很重要的概念——池化(pooling)。它的作用是逐渐减低数据的尺寸,减少网络中参数的数量,从而使得计算资源消耗减少、网络收敛加速学习,还会有效控制过拟合。
但是,这也使CNN网络包含极大的缺陷。Capsule的提出者Hinton就认为池化在CNN中的好效果是个大错误甚至灾难。
池化,这一过程中包含了一个滤波器来减低尺度,但是这会导致重要的信息丢失。
2、胶囊
胶囊是一个包含多个神经元的载体,每个神经元表示图片中出现的特定实体的属性。是以向量的形式进行表达。
2.1 向量神经元和标量神经元(普通人工神经元)对比
SN 是从其他神经元接收输入标量,然后乘以标量权重再求和,然后将这个总和传递给某个非线性激活函数 (比如 sigmoid, tanh, Relu),生出一个输出标量。该标量将作为下一层的输入变量。
而胶囊网络的流程则不一样,如下图所示。
2.2 工作原理
第一步:矩阵转化
第二步:输入加权
第三步:加权求和
这一步类似于普通神经元的加权步骤,只是总和不是标量是向量。
第四步:非线性激活
这是VN的一个创新,使用了一个新的激活函数,称为squash函数。函数功能是使得vj的长度不超过1,而且保持vj 和 sj 同方向。
2.3 动态路由
这部分主要是在2.2中的第二步内容,低级别VNi需要决定如何将其输出向量发送到高级别VNj,它是通过改变权重cij而实现的。
其实就是指低级别的VN会将其输出发送到“同意”该输出的某个高级别VN。这是动态路由的本质。
算法文字解释如下:
- 第 1 行:这个过程用到的所有输入 - l 层的输出 Uj|i,路由迭代次数 r
- 第 2 行:定义 bij 是 l 层 VNi 应该连接 l+1 层 VNj 的可能性,初始值为 0
- 第 3 行:执行第 4-7 行 r 次
- 第 4 行:对 l 层的 VNi,将 bij 用 softmax 转化成概率 cij
- 第 5 行:对 l+1 层的 VNj,加权求和 sj
- 第 6 行:对 l+1 层的 VNj,压缩 sj 得到 vj
- 第 7 行:根据 Uj|i 和 vj 的关系来更新 bij
算法逻辑解释如下:
- 第 1 行无需说明,唯一要指出的是迭代次数为 3 次,Hinton 在他论文里这样说道
- 第 2 行初始化所有 b 为零,这是合理的。因为从第 4 行可看出,只有这样 c 才是均匀分布的,暗指“l 层 VN 到底要传送输出到l+1 层哪个 VN 是最不确定的”
- 第 4 行的 softmax 函数产出是非负数而且总和为 1,致使 c 是一组概率变量
- 第 5 行的 sj 就是小节 2.3 第二步里面讲的红色簇心,可以认为是低层所有 VN 的“共识”输出
- 第 6 行的 squash 确保向量 sj 的方向不变,但长度不超过 1,因为长度代表 VN 具有给定特征的概率
- 第 7 行是动态路由的精华,用 Uj|i 和 vj 的点积 (dot product) 更新 bij,其中前者是 l 层 VNi对 l+1层 VNj 的“个人”预测,而后者是所有 l 层 VN 对 l+1 层 VNj 的“共识”预测
附:详细说明地址:https://www.sohu.com/a/226611009_633698
胶囊网络(Capsule Network)相关推荐
- 【Mo 人工智能技术博客】胶囊网络——Capsule Network
胶囊网络--Capsule Network 作者:林泽龙 1. 背景介绍 CNN 在处理图像分类问题上表现非常出色,已经完成了很多不可思议的任务,并且在一些项目上超过了人类,对整个机器学习的领域产生了 ...
- python实现胶囊网络_Capsule Network胶囊网络解读与pytorch代码实现
本文是论文<Dynamic Routing between Capsules>的论文解读与pytorch代码实现. 如需转载本文或代码请联系作者 @Riroaki 并声明. 众所周知,卷积 ...
- 结合胶囊网络Capsule和图卷积GCN的文章
结合胶囊网络Capsule和图卷积GCN的文章 一.Capsule Neural Networks for Graph Classification 1.1 文章概要 1.2 实现方法 1.2.1 G ...
- python实现胶囊网络_胶囊网络 -- Capsule Networks
胶囊网络是 vector in vector out的结构,最后对每个不同的类别,输出不一个向量,向量的模长表示属于该类别的概率. 例如,在数字识别中,两个数字虽然重叠在一起,Capsule中的两个向 ...
- 介绍胶囊网络 capsule networks
读到一篇文章,介绍capsule networks,特此记录笔记. 原始链接: https://www.oreilly.com/ideas/introducing-capsule-networks?u ...
- python实现胶囊网络_胶囊网络(Capsule Network)的TensorFlow实现
现在我们都知道Geoffrey Hinton的胶囊网络(Capsule Network)震动了整个人工智能领域,它将卷积神经网络(CNN)的极限推到一个新的水平. 网上已经有很多的帖子.文章和研究论文 ...
- python实现胶囊网络_胶囊网络(Capsule Network)在文本分类中的探索
作者丨杨敏 单位丨中国科学院深圳先进技术研究院助理研究员 研究方向丨自然语言处理 文本建模方法大致可以分为两类:(1) 忽略词序.对文本进行浅层语义建模 (代表模型包括 LDA,EarthMover' ...
- 胶囊网络用于推荐系统问题(MIND,CARP)
Multi-Interest Network with Dynamic Routing for Recommendation at Tmall 多兴趣动态路由,出自一直在学术前沿的阿里:https:/ ...
- python实现胶囊网络_深度学习精要之CapsuleNets理论与实践(附Python代码)
摘要: 本文对胶囊网络进行了非技术性的简要概括,分析了其两个重要属性,之后针对MNIST手写体数据集上验证多层感知机.卷积神经网络以及胶囊网络的性能. 神经网络于上世纪50年代提出,直到最近十年里才得 ...
- 论文阅读笔记:Multi-Labeled Relation Extraction with Attentive Capsule Network(AAAI-2019)
论文信息 作者: Xinsong Zhang Shanghai Jiao Tong University Pengshuai Li Shanghai Jiao Tong University Weij ...
最新文章
- .NET工程师必须掌握的知识点
- 开发者必备的12个JavaScript库
- Linux/Unix下的任务管理器-top命令
- (08)System Verilog 队列详解
- Android P (2)---Android 9.0 “Pistachio Ice Cream”新功能和特性
- Opencv_printf
- 对于如何打造一个成功的项目
- 通过select下拉框里的value控制div显示与隐藏
- yii2搭建完美后台并实现rbac权限控制实例教程
- 机器学习笔记(十七):交叉验证
- Android 集成科大讯飞语音并实现语音识别
- 【项目源码】JavaWeb网上购书系统
- python计算时间_python计算时间
- WIN10下更改计算机名、中文账户名
- Leetcode 309. Best Time to Buy and Sell Stock with Cooldown
- 什么是服务器集群?集群服务器有什么好处
- android中使用dimen定义尺寸 .
- Meteor 初级入门 三
- 校友会小程序开发笔记二十九:小程序启动性能评测与优化(2)
- Python——编码转换