How to represent part-whole hierarchies in a neural network

21年2月底,深度学习教父Hinton发表了一篇新的论文《How to represent part-whole hierarchies in a neural network》。 这是自2017年开展胶囊网络研究以来的第四篇文章,是神经网络领域研究的最前沿,也可以认为是胶囊神经网络的第四版。作为一篇idea类型的纯理论文章,仅仅提出了一个尚未被实现的理想系统,称为GLOM,作者鼓励其他研究者按照此思路进行展开。本文探讨此研究所涉及的理论基础,内容结构如下:

  1. 介绍胶囊网络
  2. 文章对Transformer的改进
  3. 对比学习的概念
  4. 知识蒸馏的使用
  5. 神经场的使用

胶囊神经网络

自2017年以来,Hinton提出了三个版本的胶囊神经网络。首先是基于动态路由的胶囊网络。

其计算步骤为:

  1. 输入向量的矩阵乘法 :胶囊接收的输入向量(上图中的u1、u2和u3)来自下层的3个胶囊。这些向量的长度表示对象存在的概率,向量的方向表示对象的一些内部状态。接着将这些向量乘以相应的权重矩阵W。W编码了低层特征(眼睛、嘴巴和鼻子)和高层特征(面部)之间的空间关系和其他重要关系。乘以这些矩阵W后,我们得到的是高层特征的预测位置。例如,û1表示根据检测出的眼睛的位置,面部应该在什么位置,û2表示根据检测出的嘴巴的位置,面部应该在什么位置,û3表示根据检测出的鼻子的位置,面部应该在什么位置。如果这三个低层特征的预测指向的位置和状态与面部的位置和状态相同,那么面部必然存在;
  2. 输入向量的标量加权 :这个步骤和普通神经元的对应步骤很接近,但是普通神经元的权重是通过反向传播学习的,而胶囊则使用“动态路由”,这是一种确定每个胶囊的输出的新方法。一个低层胶囊需要“决定”将它的输出发送给哪个高层胶囊。它将通过调整权重C做出决定,胶囊在传递输出前,先将输出乘以这个权重,高层胶囊接收到来自其他低层胶囊的向量。动态路由算法可以让低层胶囊测量哪个高层胶囊更能接受其输出,并据此自动调整权重,使对应胶囊的权重变高。
  3. 加权输入向量之和:这一步骤表示输入的组合,和通常的人工神经网络差不多。
  4. 挤压函数——向量到向量的非线性变换:CapsNet的另一大创新是新颖的非线性激活函数,这个函数接受一个向量,然后在不改变方向的前提下,压缩它的长度到1以下,可以解释为胶囊检测的给定特征的概率并且压缩输入向量的标量而不改变其方向。输出向量的长度代表胶囊检测的给定特征的概率。
    在2018和2019年,Hinton又推出EM胶囊网络和基于Set Transformer的胶囊网络。虽然在特定任务上胶囊网络的表现不错,但是其本身的缺陷限制了它在其他特定任务上的表现,即需要给part-whole层次结构中的节点预先分配固定数量的神经元。文章提出的GLOM使用了完全不同的架构。

改进的Transformer

Transformer中的Attention机制使用了Q、K、V三个矩阵,即query向量与key向量的转置做点积,再使用Softmax进行输出,结果乘以values向量。而在GLOM中,Hinton使Q = K = V = Embedding 向量,其背后的动机在于,让Embedding向量本身就是query向量与key向量,使得Attention机制倾向于重点关注和自己相似的向量,让相似的向量互相吸收、互相接近,从而达到聚集的效果。

对比学习


以Hinton组在2020年发表的SimCLR对比学习模型为例,其主要部分如下:

  1. 对给定的输入图片,使用数据增强技术,得到两个相关的图片;
  2. f(·)是一个编码器,获得图片的特征表示;
  3. g(·)是一个映射函数,讲特征表示映射到对比损失空间
  4. 定义损失函数,最小化同类型输入的损失函数,最大化不同类型输入的损失函数;

此处引用 Mohammad Norouzi 对此的精炼描述:

  1. 随机抽取一个小批量
  2. 给每个例子绘制两个独立的增强函数
  3. 使用两种增强机制,为每个示例生成两个互相关联的视图
  4. 让相关视图互相吸引,同时排斥其他示例

知识蒸馏

所谓知识蒸馏,即定义一个教师模型、一个学生模型,使用教师模型来诱导学生模型进行训练,实现知识迁移。教师网络的推理性能通常要优于学生网络,且教师网络推理精度越高,越有利于学生网络的学习。在GLOM中,把Top-down神经网络和Bottom-up神经网络作为学生模型,把二者达成一致(Agreement)作为教师模型。

神经场

对于一张图片信息,想要定位代表某个图片块的Embedding的位置,就需要有一个额外的位置输入,例如Transfomer中的position embedding,我们引入神经场(Neural Fields),获取整张图片各个小块的位置信息,即给每个图像块标记坐标信息,从而实现了定位的效果。

在下篇文章里,将着重探讨GLOM模型的结构,以及笔者对此对此模型的一点改进,也欢迎读者指出纰漏。

Hinton胶囊神经网络新作How to represent part-whole hierarchies in a neural network(一)相关推荐

  1. python中forward的作用_基于numpy的前馈神经网络(feedforward neural network)

    *** 这几天在上Andrew Ng教授开的Coursera系列课程Deep Learning,总觉得光是看视频和做作业还不够,还是得自己动手写写代码,亲自实现课程里提到的算法内容,于是便有了这篇博客 ...

  2. 论文阅读-2022.1.2-A Neural Network Approach for_2016_一种用于知识驱动响应生成的神经网络方法

    摘要 We present a novel response generation system.我们提出了一种新颖的响应生成系统. The system assumes the hypothesis ...

  3. 卷积神经网络Convolutional Neural Network (CNN)

    卷积神经网络 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/41596663 自今年七月份以来,一直在实验室负责卷积神经网络(Convol ...

  4. Recurrent Neural Network(循环神经网络)

    Reference:   Alex Graves的[Supervised Sequence Labelling with RecurrentNeural Networks] Alex是RNN最著名变种 ...

  5. 非常详细的讲解让你深刻理解神经网络NN(neural network)

    作者:RayChiu_Labloy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 目录 什么是神经网络NN.人工神经网络ANN 神经元(神经网络的基本单元) 概念详解 ...

  6. 基于语义规则的胶囊网络跨域情感分类:Cross-Domain Sentiment Classification by Capsule Network With Semantic Rules

    基于语义规则的胶囊网络跨域情感分类 论文 ABSTRACT I. INTRODUCTION II. RELATED WORK A. CROSS-DOMAIN SENTIMENT CLASSIFICAT ...

  7. 一步一步分析讲解深度神经网络基础-Convolutional Neural Network

    Convolutional Neural Network 参考http://cs231n.github.io/convolutional-networks/ history Convolutional ...

  8. Paper:《Distilling the Knowledge in a Neural Network神经网络中的知识蒸馏》翻译与解读

    Paper:<Distilling the Knowledge in a Neural Network神经网络中的知识蒸馏>翻译与解读 目录 <Distilling the Know ...

  9. 图神经网络方法总结(Graph Neural Network)

    图神经网络方法(Graph Neural Network) 概要 近年来图神经网络受到大家越来越多的关注,在文本分类(Text classification),序列标注(Sequence labeli ...

最新文章

  1. 实现统计一个字符串中的每个单词出现的次数--基于Go语言
  2. POS DES MAC 算法
  3. 漫游Kafka设计篇之性能优化(7)
  4. python爬虫模块取cookie_[ Python爬虫实战 ] Python使用cookies - pytorch中文网
  5. 笨办法学python47详解_练习 47 - 自动化测试 - 笨办法学Python3
  6. Django + Uwsgi + Nginx 的生产环境部署
  7. 如何判断locals()变量或globals()变量是否存在或是否为空?
  8. 端口号被占用时,查找占用该端口号的进程并释放端口号
  9. web 开发之js---页面缓存, jsp 缓存, html 缓存, ajax缓存,解决方法
  10. 2021年中国电缆吹风机市场趋势报告、技术动态创新及2027年市场预测
  11. Struts2_HelloWorld_3
  12. 《构建之法》(第一、二、十六章)读书笔记
  13. 支持向量机(SVM)非线性数据切割
  14. MySQL中 char和varchar的区别
  15. ECMAScript6 新特性——“数组的扩展”
  16. 北京各区优质高中排名
  17. comsol光学模块案例
  18. 资源分享 | 网易云课堂价值 399 的 office 三合一自学教程
  19. Photoshop 2019 破解
  20. stm32波特率计算

热门文章

  1. 给大家推荐ScratchJr 少儿编程课程,感觉讲的还可以,内容比较清晰,而且前面还有幼儿音乐也比较好听
  2. 虚拟服务器主机选型,如何选择虚拟主机?Windows主机选购指南
  3. windows 恢复误删文件
  4. 2165: 黄金矿工(有依赖的背包转化为分组背包)
  5. 首份视频报告:日本网民每月平均点击242.5个视频
  6. ipad可以开发python_这15个应用,程序员用iPad照样可以编程!
  7. python随机密码生成器_python实例--随机密码生成器
  8. Maven 简介 及 标准的Maven项目结构
  9. drawRect绘图
  10. 【科普干货】3张图搞懂Salesforce的认证体系(附新手考证攻略)