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

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中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security