前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文看懂深度学习发展史和常见26个模型

一文看懂深度学习发展史和常见26个模型

作者头像
AI科技大本营
发布于 2019-05-06 08:33:50
发布于 2019-05-06 08:33:50
9260
举报

来源 | AI部落联盟(ID:AI_Tribe)

作者简介:沧笙踏歌,硕士毕业于北京大学,目前计算机科学与技术博士在读,主要研究自然语言处理和对话系统,擅长使用深度学习强化学习解决自然语言处理问题。读博前在公司带过NLP算法团队。

本文首先从4个方面(张量、生成模型、序列学习、深度强化学习)追踪深度学习几十年的发展史,然后再介绍主流的26个深度学习模型。

1.深度学习发展史

深度学习的发展史主要是我几个月前看的唐杰老师的学生整理的一个博文,现在找不到博文了。凭借记录加上我的理解,简单写一写吧。如果还有人知道这个博文,欢迎告知,我把链接放上来,供大家更好的学习。(编者注:https://weibo.com/2126427211/GavUQjfLa?type=comment#_rnd1543405779148)

主要按最早研究出现的时间,从4个方面来追踪深度学习的发展史。

1.1 张量

1958年Frank提出感知机,但后来被一些学者发现因算力的不足,制约了较大神经网络的计算,导致很长时间发展缓慢。

Fukushima在1979年左右提出Neocognitron,感觉这是卷积和池化的雏形。

Hinton在1986年提出反向传播的思想和多层感知机(BPNN/MLP),有非常大的意义,对未来几十年(可以说直到现在)影响深远。

接下来比较重要的发展是,LeCun在1998年提出LeNet-5,7层的CNN做数字识别。

然后AlexNet在12年在ImageNet夺冠,主要是CNN+Dropout+Relu,又是Hinton极大的带动了DL的发展,大佬的地位毋庸置疑。另外相似的还有15年的GoogLeNet。

总算有华人大佬作出大贡献了,16年何恺明(CV领域应该无人不知)提出Resnet,还拿了best paper,影响较大,当然效果也很好。另外相似的还有17年的DenseNet。

17年Capsule Network登场了,又是Hinton。我比较看好胶囊网络在NLP领域的发展,虽然现在还没太明显的效果。因为用胶囊网络来做文本的特征表示的话,可以极大的丰富特征,更适合处理文本这种比较灵活的数据。

1.2 生成模型

上世纪80年代提出RBM,06年叠加成Deep Belief Network(DBN),这算是重新叠加网络的一个比较重要的开始吧。

上世纪80年代Hinton提出Auto-Encode,过了较长时间Bengio在08年提出Denoise Auto-Encode。Welling在13年提出Variational Auto-Encode。

接下来,在14年Goodfellow和Bengio等提出GAN,从此生成网络不仅是AE以及其变种(Denoise Auto-Encode、Variational Auto-Encode等)了,可以这么说:GAN的出现极大的提高了生成模型的地位和热点,GAN也是席卷NLP、CV、AI等领域的各大顶会,甚至是一些best paper。另外,陆续出现很多很多GAN的变种,比如DCGAN、CGAN、PGGAN、LAPGAN、InfoGAN、WGAN、F-GAN、SeqGAN、LeakGAN等。

1.3 序列学习

1982年提出hopfield network,1997年 Schmidhuber提出LSTM。Hinton组在13年把RNN用在语音识别上取得巨大突破,RNN立马爆火。

03年提出LM(语言模型),13年提出w2v,佩服Bengio,这也是我为啥千里迢迢跑去找Benign合影的原因之一。w2v带来的影响不言而喻,目前NLP领域基本上所有Paper都会用到词向量,包括也影响了后面出现的Glove、FastText、ELMo(18年2月)、Transformer(18年6月)、Bert(18年10月提出,Jacob一战封神,我感觉至少是18年NLP领域最大的发展,甚至可以说是近几年最大的发展)等。Bert的出现,很可能改变所有主流NLP任务的打法和Baseline。

还有一个分支,14年出现Seq2Seq,这个重要性也无需赘述了,NLP领域的都知道。然后15年出现Charater CNN,17年出现self-attention。

1.4 深度强化学习

提到强化学习就不得不提这Deep Mind、AlphaGo以及其变种、Silver。13年提出Deep Q-learning,15年提出Double DQN,16年提出Dueling Net。 15年的DDPG和16年的A3C都是NN+Policy Gradient,也应用在不少领域。16年的AlphaGo(除了AI领域,很多不懂AI的人都知道,甚至可以说是AI爆火的最大助力),17年出现更疯狂的Alpha Zero。

2.深度学习模型

翻译自neural-network-zoo,原文略烦琐而不利于入门学习,我做了简化,方便大家阅读。如果有感兴趣的,可以通过此链接深入学习。

2.1 Feed forward neural networks (FF or FFNN) and perceptrons (P)

前馈神经网络和感知机,信息从前(输入)往后(输出)流动,一般用反向传播(BP)来训练。算是一种监督学习。对应的paper。

2.2 Radial basis function (RBF)

径向基函数网络,是一种径向基函数作为激活函数的FFNNs(前馈神经网络)。对应的paper。

2.3 Hopfield network (HN)

Hopfield网络,是一种每个神经元都跟其它神经元相连接的神经网络。对应的paper。

2.4 Markov chains (MC or discrete time Markov Chain, DTMC)

马尔可夫链 或离散时间马尔可夫链,算是BMs和HNs的雏形。对应的paper。

2.5 Boltzmann machines (BM)

玻尔兹曼机,和Hopfield网络很类似,但是:一些神经元作为输入神经元,剩余的是隐藏层。对应的paper。

2.6 Restricted Boltzmann machines (RBM)

受限玻尔兹曼机,和玻尔兹曼机 以及 Hopfield网络 都比较类似。对应的paper。

2.7 Autoencoders (AE)

自动编码,和FFNN有些类似,它更像是FFNN的另一种用法,而不是本质上完全不同的另一种架构。对应的paper。

2.8 Sparse autoencoders (SAE)

稀疏自动编码,跟自动编码在某种程度比较相反。对应的paper。

2.9 Variational autoencoders (VAE)

变分自动编码,和AE架构相似,不同的是:输入样本的一个近似概率分布。这使得它跟BM、RBM更相近。对应的paper。

2.10 Denoising autoencoders (DAE)

去噪自动编码,也是一种自编码机,它不仅需要训练数据,还需要带噪音的训练数据。对应的paper。

2.11 Deep belief networks (DBN)

深度信念网络,由多个受限玻尔兹曼机或变分自动编码堆砌而成。对应的paper。

2.12 Convolutional neural networks (CNN or deep convolutional neural networks, DCNN)

卷积神经网络,这个不解释也都知道。对应的paper。

2.13 Deconvolutional networks (DN)

去卷积网络,又叫逆图形网络,是一种逆向的卷积神经网络。对应的paper。

2.14 Deep convolutional inverse graphics networks (DCIGN)

深度卷积逆向图网络,实际上是VAE,且分别用CNN、DNN来作编码和解码。对应的paper。

2.15 Generative adversarial networks (GAN)

生成对抗网络,Goodfellow的封神之作,这个模型不用解释也都知道。对应的paper。

2.16 Recurrent neural networks (RNN)

循环神经网络,这个更不用解释,做语音、NLP的没有人不知道,甚至非AI相关人员也知道。对应的paper。

2.17 Long / short term memory (LSTM)

长短期记忆网络, RNN的变种,解决梯度消失/爆炸的问题,也不用解释,这几年刷爆各大顶会。对应的paper。

2.18 Gated recurrent units (GRU)

门循环单元,类似LSTM的定位,算是LSTM的简化版。对应的paper。

2.19 Neural Turing machines (NTM)

神经图灵机,LSTM的抽象,以窥探LSTM的内部细节。具有读取、写入、修改状态的能力。对应的paper。

2.20 Bidirectional recurrent neural networks, bidirectional long / short term memory networks and bidirectional gated recurrent units (BiRNN, BiLSTM and BiGRU respectively)

双向循环神经网络、双向长短期记忆网络和双向门控循环单元,把RNN、双向的LSTM、GRU双向,不再只是从左到右,而是既有从左到右又有从右到左。对应的paper。

2.21 Deep residual networks (DRN)

深度残差网络,是非常深的FFNN,它可以把信息从某一层传至后面几层(通常2-5层)。对应的paper。

2.22 Echo state networks (ESN)

回声状态网络,是另一种不同类型的(循环)网络。对应的paper。

2.23 Extreme learning machines (ELM)

极限学习机,本质上是随机连接的FFNN。对应的paper。

2.24 Liquid state machines (LSM)

液态机,跟ESN类似,区别是用阈值激活函数取代了sigmoid激活函数。对应的paper。

2.25 Support vector machines (SVM)

支持向量机,入门机器学习的人都知道,不解释。对应的paper。

2.26 Kohonen networks (KN, also self organising (feature) map, SOM, SOFM)

Kohonen 网络,也称之为自组织(特征)映射。对应的paper。

总结一下吧,深度学习发展很快,新的模型层出不穷,所以要想全部列举是不可能的。另外,很多模型都是这里提出很长很长时间了,所以也不是说“老”模型就没用,大家学习的话,还是要全面而深入的学习。

(本文为 AI科技大本营转载文章,转载请联系原作者)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
JDK源码:IO体系讲解
IO流是Java中很重要的一部分内容,常用的数据传输,文件的上传和下载都和它分不开。
后台技术汇
2024/10/22
1460
JDK源码:IO体系讲解
Android WebView选择图片、发送图片
主要代码来自:http://blog.csdn.net/woshinia/article/details/19030437 有删改
yechaoa
2022/06/10
9090
压缩算法选型(gzip/snappy/lz4)及性能对比
通过Snappy.compress()进行压缩,压缩后的数据没有magic header
用户7255712
2021/11/21
17.1K0
手写一个简单的Server和Client
西瓜籽:“这也太简单了,我知道发起一个HTTP请求和建立一个Socket连接区别不大,所以我要手写一个HttpClient(客户程序)和HTTPServer(HTTP服务器)。”
东边的大西瓜
2022/05/05
2710
手写一个简单的Server和Client
聊聊flink的BlobService
flink-release-1.7.2/flink-runtime/src/main/java/org/apache/flink/runtime/blob/BlobService.java
code4it
2019/02/27
1.5K0
聊聊flink的BlobService
Java 中图片与二进制之间如何相互转换?
注:该方法的入参,base64 格式文件不得有 文件头部标识信息,否则会转换失败。所以这里我们需要自行判断是否包含有头部信息。
跟着飞哥学编程
2022/12/16
1.1K0
android充当server服务器
    在android上跑起来一个web服务器,可供电脑和手机通过http访问。这个需求并不常见,网上资料也不多,找了一会发现了一个不错的框架。github链接地址https://github.com/NanoHttpd/nanohttpd
天涯泪小武
2019/01/17
5.3K1
Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析
所以最终的出口在于最下面的instrument(input,output,string),下面是剩余部分代码:
JavaEdge
2020/05/27
8190
Java代码覆盖率框架JaCoCo的core-instr core.internal.instr 包类源码解析
Android开发笔记(六十三)HTTP访问的通信方式
输入输出流在java中很常用,从文件读写到内存读写到网络通信都会用到。在之前的《Android开发笔记(三十三)文本文件和图片文件的读写》中,我们学习了文件流FileOutputStream和FileInputStream,以及缓存流BufferedOutputStream和BufferedInputStream。这些输入输出流都继承自InputStream和OutputStream,下面是它们的常用方法: InputStream的常用方法 available : 获取输入流的大小 read : 从输入流中读取数据 close : 关闭输入流 OutputStream的常用方法 write : 往输出流写数据 flush : 刷新输出流 close : 关闭输出流 java在进行http访问操作时,发送数据使用OutputStream,接收数据使用InputStream。如果采用HttpURLConnection,InputStream对象可从HttpURLConnection的getInputStream方法获得;如果采用HttpClient,InputStream对象可从HttpEntity的getContent方法获得。下面是http访问时与InputStream有关的加工操作: 1、从InputStream对象中读取字符串。首先把输入流的数据读到字节流ByteArrayOutputStream,然后调用字节流的toByteArray方法得到字节数组,最后调用String的构造函数根据指定编码从字节数组构造返回字符串; 2、从InputStream对象中读取图像。调用BitmapFactory的decodeStream方法即可返回Bitmap图像数据。 3、从InputStream对象中解压gzip压缩数据。引入GZIPInputStream从输入流构造解压流,然后再从解压流中读取数据。
aqi00
2019/01/18
1.2K0
Android【本地Json处理工具类】
代码 public class ConvertUtils { public static final long GB = 1073741824L; public static final long MB = 1048576L; public static final long KB = 1024L; public ConvertUtils() { } public static int toInt(Object obj) {
全栈程序员站长
2021/04/07
5940
Android中自带的加密和解密
在当今社会信息安全越来越重要,其中最为关键的就是传输过程中的安全。这就需要一套安全可靠且有效的加密和解密算法来实现。
林老师带你学编程
2022/11/30
8230
初级篇,利用 Android 搭建一个简易的文字识别APP-印刷体高精度版本
前端学习参考:https://www.runoob.com/w3cnote/android-tutorial-linearlayout.html
HI hero
2020/04/29
4.3K1
初级篇,利用 Android 搭建一个简易的文字识别APP-印刷体高精度版本
java---文件操作
InputStream输入流 是从程序外部将文件内容读入到程序中 InputStream是一个抽象类。
用户10787181
2023/10/17
2680
java---文件操作
最全的android图片加密
在android开发过程中有些时候一些重要的图片,我们不希望用户通过文件管理直接能查看,我们该怎么办呢,当然你可以把图片放在android的内部存储中,data/data/下,但毕竟android root用户一大堆,还是解决不了问题。那么我们就需要对图片进行加密,当然加密的方法有很多种,下面给大家推荐我常用的2中方法,基本上可以解决大部分问题。
全栈程序员站长
2022/08/31
1.4K0
day24-库的使用(2022.2.21)
=============== 2.字体库的使用 ====================
天天Lotay
2022/12/02
9770
day24-库的使用(2022.2.21)
Android性能优化系列之Bitmap图片优化
在Android开发过程中,Bitmap往往会给开发者带来一些困扰,因为对Bitmap操作不慎,就容易造成OOM(Java.lang.OutofMemoryError - 内存溢出),本篇博客,我们将一起探讨Bitmap的性能优化。
老马的编程之旅
2022/06/22
7980
Android性能优化系列之Bitmap图片优化
springboot生成二维码
我们不造轮子,只是轮子的搬运工。(其实最好是造轮子,造比别人好的轮子) 1、 在pom.xml中加入依赖 <!--二维码--> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.3</version> </dependency> 2、添加工具类 import com.google.zxing.BarcodeFormat; import com.g
吟风者
2019/07/25
1.2K0
相关推荐
JDK源码:IO体系讲解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档