深度学习:解决CNN的困境——胶囊网络

news2024/11/28 10:47:13

从2017年底到2018年初,整个人工智能学术研究领域谈论最多的应该就是被誉为深度学习之父Geoffrey E. Hinton 发表的论文 Dynamic Routing Between Capsules,其中介绍了全新的深度学习模型——胶囊网络(Capsule Network)

1. 普通CNN的困境

虽然CNN在图像识别领域取得了巨大成功并掀起了深度学习浪潮,Hinton指出CNN的工作方式与人类大脑大相径庭,继续沿着CNN的“卷积——池化”模型进行同构扩展无法达到更高的智能水平。

相对于普通神经网络,CNN的主要创新在于用卷积层自动提取各层级的特征并用这些特征进行最终预测。然而卷积层使得神经元数量大量增加,在提取特征后必须用池化层(一般为Max-pooling)进行数据降维才形成最终特征,由此带来的问题是:

  • Max-pooling 使得卷积层中的非局部最大点的信息丢失
  • Max-pooling 丢失了卷积识别出的特征在位置与角度等方面的信息。

第一条并非完全是一个缺点,它在某种程度上增加了网络的鲁棒性;但第二条会带来大问题,即它使得后续的处理无法识别特征之间的位置关系。

观察图9-48(左),其中有四个几何特征:大矩形、小矩形、两个圆形,神经网络可以通过这四个特征学习到它是一辆汽车。但如果丢失了这些特征的位置信息,则很可能将同样具有这四个特征的图9-48(右)也识别成一辆汽车。

2. 什么是胶囊

产生CNN困境的根本原因是在普通神经网络中执行运算的基本单位——神经元(neural)——处理的数据是标量(scalar),在卷积层后用抛弃神经元的方式降低数据复杂度直接丢失了很多信息。

而在新的架构中,承载运算的基本单元——胶囊(capsule)——处理的数据变成了向量(vector),用向量的线性变换降低数据复杂度使得所有信息都能够参与其中。

 这个改变推翻了沿用了几十年的基于神经元的网络计算方法,产生了全新的基于向量的胶囊运算流程。胶囊与传统神经元的运算方式对比如图9-49所示。

对该图解释如下:

  • 胶囊的输入U_1,U_2,...与输出V_1均是向量,神经元输入与输出均是标量。
  • 胶囊中的参数W_x是矩阵,用于对输入向量进行线性变换,从物理的角度理解就是做旋转、位移、缩放等处理,这部分功能是传统神经元中的缺失。 
  • 胶囊中的参数c_x是标量,作用相当于普通神经网络中的w_x,用于衡量每个输入的重要性。
  • 普通神经元用各种 \mbox{activation} 函数做非线性变换,而胶囊用所谓的 \mbox{squash} 函数对向量进行非线性变换。

在Hinton的论文中采用的 \mbox{squash} 函数形如 s(X)=\frac{\left \| X \right \|^2}{1+\left \| X \right \|^2}\cdot\frac{X}{\left \| X \right \|},该函数保持向量X方向不变,而只改变向量X的长度。在胶囊网络中,向量的方向用于定义某种特征,而向量的长度用于表示该特征存在的可能性,因此可以将 \mbox{squash} 函数理解为对预测置信度的调整与归一化。

3. 网络架构

论文在提出了胶囊的概念后设计了一个用于识别MNIST(数字手写图像库)的胶囊网络架构,如图9-50所示。

对该网络解释如下:

  • 通过卷积层对原始图像进行特征提取,形成256个 feature map
  • 与普通CNN不同的是,在卷积层后没有使用池化层进行数据降维,而是使用胶囊层 PrimaryCaps。
  • 由于卷积层有256个 feature map,因此胶囊层的每个输入向量是256维,即图9-49中的 U_1,U_2 等都是256维向量。
  • 与卷积层每个神经元从原始图像中的某个局部区域扫描特征类似,每个胶囊也从上一层的某局部区域的向量获得输入,论文中每个 PrimaryCaps 中的胶囊有9\times9=81个输入向量,即图9-49中的输入向量个数n等于81。
  • PrimaryCaps 中共有 6\times6\times32=1152 个胶囊,每个胶囊输出 8 维向量。

因此,卷积层中的标量数值共有 20\times20\times256=102400 个,而 PrimaryCaps 中的标量数值共有 1152\times 8=9216 个,达到了相当于池化层的降维目的,并且不会丢失卷积层中特征的位置信息。

在 PrimaryCaps 之后可以连接任意胶囊层继续搭建网络,其意义与在CNN中用多个卷积层逐层提炼更高级别知识的作用类似。

此外,论文中还提到了胶囊网络参数新的训练方法——动态路由算法(Dynamic Routing Algorithm),它用于替代传统网络中的反向传播对图9-45中的W_x参数进行训练,有兴趣的读者可以研读原论文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1365449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JaveWeb教程】(8)Web前端基础:Vue组件库Element之Table表格组件和Pagination分页组件 详细示例介绍

目录 1 Table表格组件1.1 组件演示1.2 组件属性详解 2 Pagination分页2.1 组件演示2.2 组件属性详解2.3 组件事件详解 接下来我们来学习一下ElementUI的常用组件,对于组件的学习比较简单,我们只需要参考官方提供的代码,然后复制粘贴即可。本节…

二叉搜索树|不同、验证、转换等

二叉搜索树|不同、验证、转换等 文章目录 二叉搜索树|不同、验证、转换等[96 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/description/)[98 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/description/)[538 把…

基于机器视觉的车牌检测-车牌图像倾斜矫正位

Radon变换 Radon变换常用于车牌图像倾斜矫正,主要包括水平倾斜和垂直倾斜矫正。Radon变换定义:下图显示了在指定的旋转角度的单一投影。间距为1个像素的平行光穿过图像,则radon变换计算穿过图像光线的线积分。 Radon变换的本质是将原来的XY平…

全志V853 NPU开发之Demo使用说明

上一章节中配置 NPU 扩展包后可以在 menuconfig 里看到两个 Demo 测试应用程序。这里我们来介绍一下怎么使用这两个 Demo。 YOLOV3 在 NPU Package 中我们提供了一个较为完整的 YOLOV3 Demo 作为测试,程序源码位于: openwrt/package/npu/yolov3/src这个…

Spark基础内容

Spark基本介绍 Spark是什么 定义 Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎. Spark与MapReduce对比 mapreduce架构图如下: MapReduce的主要缺点: 1- MapReduce是基于进程进行数据处理,进程相对线程来说&#x…

【数据结构—排序—交换排序】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、排序的概念及其运用 1、排序的概念 2、排序运用 3、 常见的排序算法 二、交换排序 1、冒泡排序 1.1算法讲解 1.2冒泡排序的实现: 1.2.1头文件的…

6.云原生之jenkins集成SonarQube

文章目录 搭建 SonarQube配置SonarQube创建sonar-token生成令牌查看jenkins暴露的NodePort端口创建Webhook 服务器将 SonarQube 配置添加到 ks-installer Jenkins集成SonarQube将 SonarQube 服务器添加至 Jenkinsjenkins配置SonarQubejenkins中配置SonarQube创建Jenkins凭证将 …

LDD学习笔记 -- Linux字符设备驱动

LDD学习笔记 -- Linux字符设备驱动 虚拟文件系统 VFS设备号相关Kernel APIs动态申请设备号动态创建设备文件内核空间和用户空间的数据交换系统调用方法readwritelseek 写一个伪字符设备驱动在主机上测试pcd(HOST)在目标板上测试pcd(TARGET) 字符驱动程序用于与Linux内核中的设备…

Docker使用扩展

日升时奋斗,日落时自省 目录 1、容器 1.1、容器的生命周期 1.1.1、容器OOM 1.1.2、容器异常退出 1.1.3、容器暂停 1.2、容器命令 1.2.1、创建容器 1.2.2、启动容器 1.2.3、容器日志 1.2.4、容器交互 1.2.5、容器停止 1.2.6、扩展 1.3、综合演示 2、存…

FPGA高端项目:纯verilog的 25G-UDP 高速协议栈,提供工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的以太网方案本协议栈的 1G-UDP版本本协议栈的 10G-UDP版本1G 千兆网 TCP-->服务器 方案1G 千兆网 TCP-->客户端 方案10G 万兆网 TCP-->服务器客户端 方案 3、该UDP协议栈性能4、详细设计方案设计架构框图网络调试助手…

《Learning eBPF》读书笔记

文章目录 章节内容简介第1章 什么是ebpf,为什么它很重要?第2章 ebpf版hello world第3章 ebpf程序剖析ebpf虚拟机一个xdp的hello word例子c语言程序编译为ebpf字节码加载bpf程序到内核检查加载的程序运行时编译机器码附加到事件分离程序卸载程序 第4章 bp…

CAN物理层协议介绍

目录 ​编辑 1. CAN协议简介 2. CAN物理层 3. 通讯节点 4. 差分信号 5. CAN协议中的差分信号 1. CAN协议简介 CAN是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11519) &#xff0…

光明源@智慧公厕系统的功能介绍-详情可点击查看

什么是智慧公厕系统?智慧公厕系统是一种通过科技手段提升公共卫生设施管理和服务水平的解决方案。智慧公厕系统都有哪些功能呢?那么小编讲以光明源的角度来讲一下公厕系统都有哪些功能! 光明源智慧公厕系统-实时监控和管理公厕 该系统使用各…

【leetcode】力扣算法之旋转图像【难度中等】

题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 用例 输入: matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&…

【Spring实战】26 使用Spring Security 保护 Spring Boot Admin

文章目录 1. 定义1.集成流程1)添加 Spring Boot Admin 依赖2)配置 Spring Boot Admin3)启动 Spring Boot Admin 服务4)访问 Spring Boot Admin 服务5)添加 Spring Security 依赖6)配置 Spring Security7&am…

【书生大模型00--开源体系介绍】

书生大模型开源体系介绍 0 通用人工智能1 InternLM性能及模型2 从模型到应用 大模型成为目前很热的关键词,最热门的研究方向,热门的应用;ChatGPT的横空出世所引爆,快速被人们上手应用到各领域; 0 通用人工智能 相信使…

02、Kafka ------ 配置 Kafka 集群

目录 配置 Kafka 集群配置步骤启动各Kafka节点 配置 Kafka 集群 启动命令: 1、启动 zookeeper 服务器端 小黑窗输入命令: zkServer 2、启动 zookeeper 的命令行客户端工具 (这个只是用来看连接的节点信息,不启动也没关系&#…

Hadoop3.3.5云服务器安装教程-单机/伪分布式配置

系列文章目录 华为云服务器试用领取 领取的试用云服务器在哪 Hadoop3.3.5云服务器安装教程-单机/伪分布式配置 文章目录 系列文章目录创建hadoop用户更新apt安装SSH、配置SSH无密码登陆安装Java环境安装 Hadoop3.3.5Hadoop单机配置(非分布式)Hadoop伪分布式配置运行Hadoop伪分…

【AI视野·今日Sound 声学论文速览 第四十二期】Fri, 5 Jan 2024

AI视野今日CS.Sound 声学论文速览 Fri, 5 Jan 2024 Totally 10 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers PosCUDA: Position based Convolution for Unlearnable Audio Datasets Authors Vignesh Gokul, Shlomo Dubnov深度学习模型需要大量干净的…

Windows.OpenSSL生成ssl证书配置到nginx

一、下载OpenSSL程序安装 到E:\soft\OpenSSL-Win64 二、打开一个CMD控制台窗口,设置好openssl.cnf路径 E: cd E:\soft\OpenSSL-Win64\bin set OPENSSL_CONFE:\soft\OpenSSL-Win64\bin\openssl.cnf 三、在当前目录 E:\soft\OpenSSL-Win64\bin 里创建两个子目录 m…