知乎 | 有哪些当时很有潜力但是最终没有流行的深度学习算法?

2024-04-13 19:38

本文主要是介绍知乎 | 有哪些当时很有潜力但是最终没有流行的深度学习算法?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ab09131f76de674c9808bbec402da238.png

来源:机器学习实验室
本文约2500字,建议阅读5分钟
本文带你了解有潜力但是没流行的深度学习方法。

每天的新工作新paper层出不穷,而能够在深度学习圈子里脱颖而出的工作屈指可数,还有很多有潜力的工作因为种种原因被埋没了。在你的科研/工程阅读中遇见过哪些看起来很有潜力的深度学习模型,对他们没有流行起来你有什么见解?

原问题:最近读了一些201x年的论文感觉有一些十分新颖但是也不知道为什么后续没有被重视。在你的科研/工程阅读中遇见过哪些看起来很有潜力的深度学习模型,对他们没有流行起来你有什么见解?

问题链接:

https://www.zhihu.com/question/490517834

# 回答一

作者:霍华德

来源链接:

https://www.zhihu.com/question/490517834/answer/2169566194

提名Memory Networks

d82e83a5d67b97b272571679878ef18b.png

原文链接:

https://arxiv.org/pdf/1410.3916.pdf

准确说Memory Networks并不只是一个模型,而是一套思路,使用外部的一个memory来存储长期记忆信息,因为当时RNN系列模型使用final state 存储的信息,序列过长就会遗忘到早期信息。

甚至,我觉得Memory Networks的思想后面启发了self-attention和transformer。最重要的就是提出了query - key - value思想,当时的该模型聚焦的任务主要是question answering,先用输入的问题query检索key-value memories,找到和问题相似的memory的key,计算相关性分数,然后对value embedding进行加权求和,得到一个输出向量。这后面就衍生出了self-attention里的Q,K,V表示,在self-attention里的Q=K=V,但早期的Memory Networks中可以看出,QKV其实是三个向量。

如今,Memory Networks已少有人提及,但它的思想已经被transformer继承,而transformer已经横扫NLP和CV等多个领域。突然有了一种“功成不必在我,而功成必定有我"的感慨。又联想到谭嗣同变法虽然失败了,但他又一个学生叫杨昌济,杨昌济又有一个学生叫毛泽东...

# 回答二

作者:edisonlee

来源链接:

https://www.zhihu.com/question/490517834/answer/2171472030

我也提一个:脉冲神经网络(Spiking Neural Networks, SNN),最早由Maass教授[1]于1997年提出的模型。SNN不能说完全消失,每年顶会都有那么几篇,但是总感觉不温不火的。

SNN是基于大脑运行机制的新一代人工神经网络,是目前最接近类脑计算水平的一类生物启发模型,具有可以处理生物激励信号以及解释大脑复杂智能行为的优势,被誉为第三代神经网络(第一代感知机,第二代以CNN为代表的的神经网络)。SNN在本质上与目前广泛使用的人工神经网络(ANN)存在巨大差异,主要体现在如下几点:

  1. SNN使用离散的脉冲序列(0和1)进行消息传递,而ANN使用实值;因此ANN具有更高的运算效率。

  2. SNN分为时间驱动和事件驱动两种。前者利用时间步长仿真信号,后者根据只有在接收或发射脉冲信号时才处于活跃状态;而大部分的ANN架构无法获取时间维度信息(除了RNN类的模型),并且每个神经元永远处于激活状态,因此SNN具有更少的能量消耗。

  3. SNN使用脉冲序列进行通讯,与人脑的消息传播机制更像,因此SNN比ANN更像神经网络。

  4. SNN可以运行在专用的神经形态硬件上,例如Intel Loihi[2],Brainchip Akida[3]等;而ANN主要应用在GPU上进行加速。已有文献证明,基于SNN 架构的芯片能量效率比基于Field Programmable Gate Array(FPGA)实现的卷积神经网络的能量效率高出两个数量级。


b382bc5f85f71e21b080c785947be8da.png

第一代与第二代人工神经网络

a1cc95f88e13199ec7640fc249ae832f.png

脉冲神经网络

导致SNN难以流行的原因主要是:

  1. SNN使用离散脉冲序列,其中脉冲发射函数Heaviside step函数具有不可微的性质,因此难以像目前的ANN一样使用梯度下降算法优化。虽然目前有一些替代梯度的方法,但是在效果上还是和ANN有点差距。

  2. 目前的神经形态硬件没有流行。目前主流的计算硬件都是GPU,在GPU上,0-1的脉冲序列都被当成实值进行矩阵运算,无法看出SNN与ANN的差距。

参考文献:

[1] Maass W. Networks of spiking neurons: the third generation of neural network models[J]. Neural networks, 1997, 10(9):1659-1671.

[2] Mike Davies, Narayan Srinivasa, Tsung-Han Lin, Gautham Chinya, YongqiangCao, Sri Harsha Choday, Georgios Dimou, Prasad Joshi, Nabil Imam, Shweta Jain,et al. 2018. Loihi: A neuromorphic manycore processor with on-chip learning.Ieee Micro38, 1 (2018), 82–99.

[3] Anup Vanarse, Adam Osseiran, Alexander Rassau, and Peter van der Made. 2019.A hardware-deployable neuromorphic solution for encoding and classificationof electronic nose data.Sensors19, 22 (2019), 4831.

[4] Cao Y, Chen Y, Khosla D. Spiking deep convolutional neural networks for energy-efficient object recognition[J]. International Journal of Computer Vision, 2015, 113(1):54-66.

# 回答三

作者:陀飞轮

来源链接:

https://www.zhihu.com/question/490517834/answer/2169518353

Hinton的胶囊网络(Capsule Network)

ed0a5d3f4c5b78c2927a4c05344137f0.png

原文链接:

https://arxiv.org/pdf/1710.09829.pdf

5d5ece88a88d37d331e18d4fb6cea7fd.png

原文链接:

https://openreview.net/pdf?id=HJWLfGWRb

Hinton认为人的视觉系统会建立“坐标框架”,并且坐标框架的不同会极大地改变人的认知。而在CNN上却很难看到类似“坐标框架”的东西。Hinton的看法是,我们需要 Equivariance 而不是 Invariance。Invariance,是指表示不随变换变化,比如分类结果等等;而 equivariance 不会丢失这些信息,它只是对内容的一种变换。

112d0a36c445d0c3c041bced447e0099.png 9814bdf16353995ad54f66a95573735e.png

Invariance 主要是通过 Pooling 等下采样过程得到的。CNN同样强调对空间的 invariance,也就是对物体的平移之类的不敏感(物体不同的位置不影响它的识别)。


对平移和旋转的 invariance(CNN的设计希望有invariance,虽然CNN不是完全的invariance),其实是丢弃了“坐标框架”,Hinton认为这是CNN不能反映“坐标框架”的重要原因。CNN 前面非 Pooling 的部分是 equivariance 的。

于是Hinton 提出了一个猜想:

物体和观察者之间的关系(比如物体的姿态),应该由一整套激活的神经元表示,而不是由单个神经元,或者一组粗编码(coarse-coded,这里意思是指类似一层中,并没有经过精细组织)的神经元表示。只有这样的表示,才能有效表达关于“坐标框架”的先验知识。而这一整套神经元,Hinton认为就是Capsule。

capsule network最大的特点就是“vector in vector out”,而之前的scaler neuron则是“scaler in scaler out”,所以本质上来讲capsule是一种vector neuron。capsule network中的每一层由若干个capsule组成,capsule的输入和输出均为一个向量。

98fd67c2d55fbca2aabd1d4159a43e5d.png

图2:神经元与胶囊的对比

图2对neuron和capsule进行对比。神经网络的输入是一系列的标量,通过对这些标量进行加权求和并经过激活函数,得到一个标量,也就是神经元的最终输出。capsule的输入则是一系列的向量,这些向量首先经过一个编码整体与部分关系的矩阵映射,然后这些向量根据和整体特征的相似度加权平均,得到表示整体的特征向量,最后通过一个squash函数得到capsule的输出。高层特征由低层特征加权得到,而权重又由高层特征和低层特征的相似程度计算得到,这两个问题相互依赖,于是capsule network提出一种动态路由算法(Dynamic Rounting)。

Capsule Network在刚发表的时候,引起了深度学习领域的广泛关注,一度认为可能会替代CNN成为新一代的通用网络架构,谁知道之后被Transformer一统江湖了。

Capsule Network之所以没有流行起来可能有三点原因:

  1. 理解capsule本身就有难度,而且使用了机器学习的一些算法,深度学习当道的年代,机器学习算法就算是高门槛了。

  2. capsule本身有很多细节没想清楚,比如原始的capsule是引入聚类的思想来对特征进行抽象,那有没有其他更合适的方法呢,capsule还存在许多没有解决的问题。

  3. Transformer中的self-attention能够建模pixel之间的相对关系,跟capsule的某些理念不谋而合,而且Transformer整体框架上要比capsule简洁易懂。

关于Capsule Network的来龙去脉可以看这篇介绍:

https://zhuanlan.zhihu.com/p/29435406

关于CNN平移不变性的讨论,可以看以下回答:

https://www.zhihu.com/question/301522740

编辑:于腾凯

校对:林亦霖bde2d74a3e3929e89283c33f4c78ef96.png

这篇关于知乎 | 有哪些当时很有潜力但是最终没有流行的深度学习算法?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

电脑没有仿宋GB2312字体怎么办? 仿宋GB2312字体下载安装及调出来的教程

《电脑没有仿宋GB2312字体怎么办?仿宋GB2312字体下载安装及调出来的教程》仿宋字体gb2312作为一种经典且常用的字体,广泛应用于各种场合,如何在计算机中调出仿宋字体gb2312?本文将为您... 仿宋_GB2312是公文标准字体之一,仿China编程宋是字体名称,GB2312是字php符编码标准名称(简

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一