胶囊网络有意思的解析

  • 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)相关推荐

  1. 【Mo 人工智能技术博客】胶囊网络——Capsule Network

    胶囊网络--Capsule Network 作者:林泽龙 1. 背景介绍 CNN 在处理图像分类问题上表现非常出色,已经完成了很多不可思议的任务,并且在一些项目上超过了人类,对整个机器学习的领域产生了 ...

  2. python实现胶囊网络_Capsule Network胶囊网络解读与pytorch代码实现

    本文是论文<Dynamic Routing between Capsules>的论文解读与pytorch代码实现. 如需转载本文或代码请联系作者 @Riroaki 并声明. 众所周知,卷积 ...

  3. 结合胶囊网络Capsule和图卷积GCN的文章

    结合胶囊网络Capsule和图卷积GCN的文章 一.Capsule Neural Networks for Graph Classification 1.1 文章概要 1.2 实现方法 1.2.1 G ...

  4. python实现胶囊网络_胶囊网络 -- Capsule Networks

    胶囊网络是 vector in vector out的结构,最后对每个不同的类别,输出不一个向量,向量的模长表示属于该类别的概率. 例如,在数字识别中,两个数字虽然重叠在一起,Capsule中的两个向 ...

  5. 介绍胶囊网络 capsule networks

    读到一篇文章,介绍capsule networks,特此记录笔记. 原始链接: https://www.oreilly.com/ideas/introducing-capsule-networks?u ...

  6. python实现胶囊网络_胶囊网络(Capsule Network)的TensorFlow实现

    现在我们都知道Geoffrey Hinton的胶囊网络(Capsule Network)震动了整个人工智能领域,它将卷积神经网络(CNN)的极限推到一个新的水平. 网上已经有很多的帖子.文章和研究论文 ...

  7. python实现胶囊网络_胶囊网络(Capsule Network)在文本分类中的探索

    作者丨杨敏 单位丨中国科学院深圳先进技术研究院助理研究员 研究方向丨自然语言处理 文本建模方法大致可以分为两类:(1) 忽略词序.对文本进行浅层语义建模 (代表模型包括 LDA,EarthMover' ...

  8. 胶囊网络用于推荐系统问题(MIND,CARP)

    Multi-Interest Network with Dynamic Routing for Recommendation at Tmall 多兴趣动态路由,出自一直在学术前沿的阿里:https:/ ...

  9. python实现胶囊网络_深度学习精要之CapsuleNets理论与实践(附Python代码)

    摘要: 本文对胶囊网络进行了非技术性的简要概括,分析了其两个重要属性,之后针对MNIST手写体数据集上验证多层感知机.卷积神经网络以及胶囊网络的性能. 神经网络于上世纪50年代提出,直到最近十年里才得 ...

  10. 论文阅读笔记:Multi-Labeled Relation Extraction with Attentive Capsule Network(AAAI-2019)

    论文信息 作者: Xinsong Zhang Shanghai Jiao Tong University Pengshuai Li Shanghai Jiao Tong University Weij ...

最新文章

  1. .NET工程师必须掌握的知识点
  2. 开发者必备的12个JavaScript库
  3. Linux/Unix下的任务管理器-top命令
  4. (08)System Verilog 队列详解
  5. Android P (2)---Android 9.0 “Pistachio Ice Cream”新功能和特性
  6. Opencv_printf
  7. 对于如何打造一个成功的项目
  8. 通过select下拉框里的value控制div显示与隐藏
  9. yii2搭建完美后台并实现rbac权限控制实例教程
  10. 机器学习笔记(十七):交叉验证
  11. Android 集成科大讯飞语音并实现语音识别
  12. 【项目源码】JavaWeb网上购书系统
  13. python计算时间_python计算时间
  14. WIN10下更改计算机名、中文账户名
  15. Leetcode 309. Best Time to Buy and Sell Stock with Cooldown
  16. 什么是服务器集群?集群服务器有什么好处
  17. android中使用dimen定义尺寸 .
  18. Meteor 初级入门 三
  19. 校友会小程序开发笔记二十九:小程序启动性能评测与优化(2)
  20. Python——编码转换

热门文章

  1. python-西刺代理的获取
  2. 苏宁零售启示录:2019空调市场布局背后透露出哪些零售之道?...
  3. 公司注册地址填什么?注册地址一定是实际办公地址吗?
  4. zotero个人配置记录
  5. Flex4 css中skin设置报错解决
  6. 程序员 35 岁以后就真的要返乡种田了么?如果家里没田怎么办?
  7. JSBRIDGE 使用
  8. c语言getchar函数的作用,c语言中getchar的用法函数用法
  9. mysql数据库与mysqli_通过 PHP Mysqli 扩展与 MySQL 数据库交互
  10. JAVA实践-maven项目中出现error pages红叉