【胶囊网络-CapsNet】李宏毅CapsNet课程笔记

2023-12-05 04:38

本文主要是介绍【胶囊网络-CapsNet】李宏毅CapsNet课程笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Capsule

神经网络和胶囊网络区别: 神经网络每个神经元输出的是一个标量,胶囊网络输出是一个向量。

在这里插入图片描述

一个神经元检测一种pattern,例如一个神经元检测往左的鸟嘴,一个神经元是检测往右的鸟嘴。
而胶囊是检测某一个种类的pattern。例如鸟嘴。

在这里插入图片描述

其中, W 1 , W 2 W^1, W^2 W1,W2是通过训练决定的,而 C 1 , C 2 C_1, C_2 C1,C2是通过动态路由算法得到的。可以拿max pooling做类比。

动态路由算法

在这里插入图片描述

通过内积来更新b,即 u i u^i ui与输出向量的内积越大,权重就越高。展开可以看到:

在这里插入图片描述

T是一个超参数。从这个结构来看,每一步的输出都是作为下一步的输入,与RNN很相似。

在这里插入图片描述

对于一个胶囊网络,具体形式也可以是CNN,将其max pooling和非线性变换用胶囊替代。
上图中,有两个任务,分别是分类和图像重构。

  • 对于分类任务,每个胶囊的输出向量V, ∣ ∣ V 1 ∣ ∣ ||V^1|| V1对应类别1的概率。n个类别做softmax之后就是归一化概率。
  • 对于重构任务,利用胶囊的输出向量,输入到decoder网络,对图像进行重构。

实验结果

在这里插入图片描述

从结果可知使用CapsNet和重构任务效果取得最好。
同时,把MNIST的测试集做affine transformation。是的测试集和训练集分布不一致,在此测试集上,CapsNet效果下降到79%,而CNN下降到66%。

从结果上也说明,CapsNet更加鲁棒

可视化

在这里插入图片描述

如何分析 v i v^i vi代表的特征,论文将 v i v^i vi通过重构网络,将其展示为可视化的形式,可以看出去有些v代表是笔画的粗细、旋转等。

MultiMNIST

重构能力。
在这里插入图片描述

训练集和测试集都是重叠的数字,将重叠的数字分离出来。
(并非训练集是非重叠,测试集是重叠。原谅我笑了,的确也说明CapsNet并非像很多文章介绍的那样神奇)
例如第一幅图,是2和7的重叠图案,而标签是2和7,然后2和7重构。

Discussion

Invariance VS Equivariance

在这里插入图片描述

Invariance: 不同的输入,保证输出不变,例如分类问题。

Equivariance:不同的输入,输出也不同。但是对于任务,知道该忽略哪一些不同,有点像attention思想。

在这里插入图片描述

例如,CNN中,经过max pooling之后,输出是一样的。

而CapsNet,通过向量的模表示概率(Invariance),方向表示不同,具有Equivariance。

在CapsNet中,其知道输入之间的差别,但是对于最终的概率

Dynamic Routing

在这里插入图片描述

attention + Multi-hop

类似于memory network, 见http://www.shuang0420.com/2017/12/04/%E8%AE%BA%E6%96%87%E7%AC%94%E8%AE%B0%20-%20Memory%20Networks/

实验:讲 c i c_i ci通过BP训练和动态路由训练作对比,证明其有效性。

在这里插入图片描述

Reference

https://www.youtube.com/watch?v=UhGWH3hb3Hk&t=0s

这篇关于【胶囊网络-CapsNet】李宏毅CapsNet课程笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/456178

相关文章

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边