史上最好记的神经网络结构速记表(上)

本文讲的是史上最好记的神经网络结构速记表(上),

新的神经网络结构不断涌现,我们很难一一掌握。哪怕一开始只是记住所有的简称( DCIGN,BiLSTM,DCGAN ),也会让同学们吃不消。

所以我决定写篇文章归纳归纳,各种神经网络结构。它们大部分都是神经网络,也有一些是完全不同的结构。虽然所有结构说起来都是新颖而独特的,但当我画出结点的结构图时……它们之间的内在联系显得更有意思。

总表

史上最好记的神经网络结构速记表(上)

当我们在画节点图的时候发现了一个问题:这些图并没有展示出来这些神经结构是怎么使用的。

打个比方,变分自编码器( VAE )看起来跟自编码器( AE )真的差不多,但它们的训练过程却相差很远。在使用训练好的网络时更为不同,因为 VAE 是生成器,是通过添加噪音来获得新样本的。而 AE 只是简单地通过搜索记忆,找到与输入最接近的训练样本。

我需要强调的是,这个图并不能反映不同节点结构内部是如何运作的(这已经不是今天的话题了)。

需要注意的是,虽然我们使用的大部分简称是被普遍接受的,仍有一些并非如此。RNN 有的时候指的是递归神经网络( recursive neural networks ),但大部分时候指的是循环神经网络( recurrent neural networks )。有时能看到 RNN 会被用来代表任何循环结构,包括 LSTM, GRU 甚至是双向网络的变型。 AE 偶尔也有类似的问题, VAE 和DAE 有时也被称为 AE 。许多简称在末尾的 N 的数量上有区别,因为你可以管卷积神经网络( convolutional neural network )叫成卷积网络( convolutional network )(就会形成两种简称: CNN 和 CN )。

因为新的网络一直在不断地出现,构建一张完整的列表实际上是不可能的。就算是有这么一张表格,你在表格里找某一个也相当吃力,有时你会忽视掉一部分。所以虽然这张列表或许可以为你打开人工智能世界的大门, 但决不能认为这张表格列出了所有的结构,特别是当这篇文章写完很久之后,你才读到它。

对每个图片里的结构,我都写了一个非常非常简短的说明。如果你对某类结构很熟悉但对具体某个结构不熟的话,你可能会觉得这些说明挺有用的。

1

史上最好记的神经网络结构速记表(上)

前馈神经网络( FF 或 FFNN )和感知机( P )十分直接,信息从前端一路传递到后端(从输入到输出)。神经网络通常有层的概念,每层可能是输入单元,隐藏单元或者输出单元组成。单个层内没有连接,通常是两个相邻的层之间全连接,(一层的所有神经元都和另一层的所有神经元互相连接)。

最简单但有效的神经网络有两个输入单元,一个输出单元,可以用于构建逻辑门。通常给网络的是成对的信息,输入和我们希望的输出,用反向传播来训练 FFNN 。这种叫做监督学习,和无监督学习相反,无监督学习是我们只给网络输入,让网络自己填补空缺。反向传播的误差通常是模型给定的输出和应该的输出之间的差距的某种变型(比如说 MSE 或者就是线性的做差)。如果网络有足够多的隐藏神经元,理论上它总可以给出输入和输出之间的关系建模。实际运用它们中有一定的局限性,但经常和其他网络组合起来构成新的网络。

Rosenblatt, Frank. “The perceptron: a probabilistic model for information storage and organization in the brain.” Psychological review 65.6 (1958): 386.

2

史上最好记的神经网络结构速记表(上)

径向基函数( RBF )网络是 FFNN 网络附上径向基函数作为激活函数。就只是这样而已。我不是说它没什么用,而是大部分用其他激活函数的 FFNN 没有专用的名字。 这个有名字主要只是因为它恰巧在对的时间被发现了。

Broomhead, David S., and David Lowe. Radial basis functions, multi-variable functional interpolation and adaptive networks. No. RSRE-MEMO-4148. ROYAL SIGNALS AND RADAR ESTABLISHMENT MALVERN (UNITED KINGDOM), 1988.

3

史上最好记的神经网络结构速记表(上)

Hopfield 网络( HN )是一个每个神经元都和其他的神经元互相连接的网络; 它就是一盘彻底纠缠在一起的意大利面,每个节点也是如此。每个节点既是训练前的输入,又是训练中的隐藏节点,还是最后的输出。网络中的训练过程先计算出权重,然后每个神经元设置成我们想要的值。这个值将不再变动。一旦训练了一种或多种模式,网络最终会收敛到某个学习好的模式,因为网络只在这些状态上稳定。

请注意,网络不一定符合想要的结果。(可惜它并不是一个有魔法的黑箱子)它能够稳定部分源于网络的总能量或是随着训练逐渐降低的温度。每个神经元有一个对应于温度的激活阈值,如果输入的值加起来的和超过了这个阈值,神经元就会返回两个状态之一(通常是 -1 或 1 ,有时是 0 或 1 )。网络的更新可以同步完成,更通常的做法是一个一个更新参数。如果一个一个更新的话,会产生一个公平随机的序列来决定单元更新的顺序(公平随机指的是一共 n 个选项一个个地更新,一共循环 n 次)。

所以你可以说当每个单元都更新过而且每个都不变了,这个网络稳定(退火)了(完成了收敛)。这个网络通常被称为联想记忆因为它能够收敛到和输入最相近的状态。如果人们能看到一半的桌子,我们能想出另一半桌子,同样地这个网络也会由残缺的半个桌子和一些噪音收敛到一个完整的桌子。

Hopfield, John J. “Neural networks and physical systems with emergent collective computational abilities.” Proceedings of the national academy of sciences 79.8 (1982): 2554-2558.

4

史上最好记的神经网络结构速记表(上)

马尔可夫链( MC 或离散时间马尔可夫链, DTMC )是 BM 和 HN 的前身。它可以这样理解:从我在的节点,到达我周围的节点的概率是多少?它们是无记忆的(这就是马尔可夫性质),这意味着下一状态转移到哪里完全依赖于上一个状态。这不能算是一个神经网络,但是有一点类似神经网络,而且是 BM 和 HN 的理论基础。 MC 通常我们认为它不是一个神经网络, BM,RBM,HN 也是。马尔可夫链不一定是全连接的。

Hayes, Brian. “First links in the Markov chain.” American Scientist 101.2 (2013): 252.

5

史上最好记的神经网络结构速记表(上)

玻尔兹曼机( BM )和 HN 非常相似,但有些神经元被标注为输入神经元,其他的仍然是隐藏的。这些输入神经元在完成了整个网络更新后会成为输出神经元。它从随机权重开始通过反向传播学习,最近也会使用对比散度(一个用来决定两个信息增益之间梯度的马尔科夫链)学习。对比 HN, 神经元通常有二元激活模式。由于使用 MC 训练,BM 是一个随机网络。 

BM 的训练和使用和 HN 很相似:把输入神经元设到箝位值然后这个网络就自由了(不用外力了)。这些单元在自由之后可以取任何值,我们在输入神经元和隐藏神经元间而反复迭代。激活模式是由全局温度控制的,更低的全局温度会降低单元的能量并令激活模式稳定下来。网络会在合适的温度下达到平衡点。

Hinton, Geoffrey E., and Terrence J. Sejnowski. “Learning and releaming in Boltzmann machines.” Parallel distributed processing: Explorations in the microstructure of cognition 1 (1986): 282-317.

6

史上最好记的神经网络结构速记表(上)

限制玻尔兹曼机( RBM )和 BM 非常类似(惊不惊喜)所以也和 HN 类似。RBM 和 BM最大的区别是 RBM 更利于使用因为它是受限制的。它们不是每个神经元都和其他相连,而是每个组的神经元和别的组的神经元连接,所以没有输入神经元直接连接到其他输入神经元,也没有隐藏神经元连接到其他隐藏神经元。 RBM 可以类似于 FFNN 的训练方式来训练,但要做一点点改变:不是把信息从头传到末再反向传播误差,而是先把信息从头传到末,再把信息反向传回(到第一层)。然后接着开始用前向和反向传播来训练。

Smolensky, Paul. Information processing in dynamical systems: Foundations of harmony theory. No. CU-CS-321-86. COLORADO UNIV AT BOULDER DEPT OF COMPUTER SCIENCE, 1986.

7

史上最好记的神经网络结构速记表(上)

自编码( AE )有一点类似 FFNN, 因为 AE 更像是一个 FFNN 的别的用法而不是一个完全新的结构。自编码的基本思想是对信息自动地编码(像是压缩但不是加密),由此得名。整个网络的形状像一个沙漏,隐藏层比输入层和输出层都小。 AE 通常是关于中间层(一层或两层,因为层数可以是奇数或偶数)对称的。最小的一层通常在最中间,这里是信息最为压缩的地方(网络的阻塞点)。中间层的上方都称为编码区,下方都称为解码区,中间(意不意外)称为编码。我们可以给定输入,误差设置为输入和输出的差异,并用反向传播误差来训练网络。 AE 可以设计成对称的权重结构,这样编码权重和解码权重就一样了。

Bourlard, Hervé, and Yves Kamp. “Auto-association by multilayer perceptrons and singular value decomposition.” Biological cybernetics 59.4-5 (1988): 291-294.

8

史上最好记的神经网络结构速记表(上)

稀疏自编码( SAE )某种程度上是 AE 的反面。我们并不是教网络把一堆信息用更少的空间或者节点表示,而是试图把信息编码到更大的空间中。所以我们并不把网络在中间收缩,再放大到输入的规模,反而是把中间层的规模扩大。这种网络可以用来在数据集中提取许多小特征。

如果我们用训练 AE 的方式训练 SAE 的话,那大概率我们会得到一个完全没用的恒等网络 (进去什么样出来还是什么样,什么转换函数或者分解都没有)。为了防止这种情况发生,我们不反馈输入,而是反馈输入加稀疏驱动器。这个稀疏驱动器是一种阈值过滤器,只能让某个特定的误差回传参与到训练中,其他的误差都是无关的并被置为 0 。这样它就模拟了脉冲神经网络,不是所有的神经元都一起激活(具有生物合理性)。

Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra, and Yann LeCun. “Efficient learning of sparse representations with an energy-based model.” Proceedings of NIPS. 2007.

9

史上最好记的神经网络结构速记表(上)

变分自编码器( VAE )和 AE 有一样的结构, 但被教授了一些别的东西:一个近似输入样本的概率分布。有一点不忘初心的意思,它和 BM 和 RBM 联系更紧密。但它总归还是基于贝叶斯模型作为概率推断和独立性,以及重新参数化的技巧来完成不一样的表征。概率推断和独立性的部分解释起来挺直观,但它们其实是基于复杂的数学。

这些基础可以这样理解:把影响考虑进来。如果一件事在某个地方发生了,另一件事在另一个地方发生,它们不一定相关的。如果它们不相关,那么误差传播应该考虑到这一点。这是一个很有用的方法因为神经网络(某种程度上来说)是一个很大的图模型,所以这个方法可以帮助我们排除某些节点对其他节点的影响,帮助我们深入更深的层。

Kingma, Diederik P., and Max Welling. “Auto-encoding variational bayes.” arXiv preprint arXiv:1312.6114 (2013).

10

史上最好记的神经网络结构速记表(上)

去噪自编码器( DAE )是一个 AE ,但我们不只给它输入信息,而给它带有噪声的(比如把图片调成更有颗粒感)信息输入。我们有一样计算误差,但网络的输出和原有的不带噪声的输入进行比较。这样有利于网络不拘泥于学习细节,而是学习一些更广泛的特征,因为小的特征往往是错的,会随着噪音经常变动。

Vincent, Pascal, et al. “Extracting and composing robust features with denoising autoencoders.” Proceedings of the 25th international conference on Machine learning. ACM, 2008.

11

史上最好记的神经网络结构速记表(上)

深度信念网络( DBN )是一个堆叠的结构,往往是 RBM 或是 VAE 堆叠起来的。这个网络被证实能够逐层地有效地训练,每个 AE 或 RBM 只要学会对前一层的网络进行编码。这个技巧也称为贪心训练,贪心意味着对于局部最优解决方案找到了一个不错的解但不一定是最优解。 DBN 可以通过对比散度或是反向传播来训练,学习用概率模型的方式表征数据,就像普通的 RBM 或是 VAE 。一旦非监督学习训练或者收敛到一个比较稳定的状态,这个模型可以用来生成新的数据。如果是使用对比散度来训练的,那这个网络甚至还可以用来对已有的数据进行分类,因为神经元被训练于寻找不同的数据特征。

Bengio, Yoshua, et al. “Greedy layer-wise training of deep networks.” Advances in neural information processing systems 19 (2007): 153.

12

史上最好记的神经网络结构速记表(上)

卷积神经网络( CNN 或深度卷及神经网络 DCNN )和其他大部分网络很不一样。它们最初是用来处理图像的,但现在也被用来处理其他形式的输入比如说音频。

CNN 的一种典型的用途是给网络输入图片,让网络来分类这些数据,比如说当我们给它一张猫的图片,网络输出 “猫”;当我们给出一张狗的图片,网络输出“狗”。 CNN 通常由一个输入“扫描仪”开始,而不是一次性分析全部的输入。打个比方,我们输入一张 200 x 200 像素的图片,我们并不想要一层 40000 个节点的一层,相反,我们创建一个 20 x 20 的输入扫描仪层,就是说从一开始的 20 x 20 个像素点进行输入(通常是图片的左上角)。

当我们把这个输入完成后(有可能是用于训练),我们输入下一个 20 x 20 个像素:我们把这个扫描仪往右平移一个像素。注意到我们并不把一下子平移 20 个像素(或者扫描仪的宽度),我们并不把图片拆解成 20 x 20 的块,而是一点点地爬过去。输入数据被送入卷积层,而不是普通的层,卷积层里面的节点不是和其他所有节点相连接的。

每个节点只关注与自身和周边的节点(多近的周边取决于具体实现,但通常不会很多)。卷积层往往会随着层次更深而收缩,大部分是按照可以整除输入层大小的倍数收缩(比如说 20 后面的层可能是 10 接下来是 5)。2 的幂次更为常用,因为它们可以被整除干净:32,16,8,4,2,1。除开卷积层,网络里常常还有池化层。池化是一种过滤掉细节的方法:一种常见的池化技巧是最大池化,比如我们取 2 x 2 的像素,传递出的是红色值最大的像素点。

把 CNN 用在音频上,我们通常输入音频波形,一片段一片段地缓慢移动音频片段。CNN 的实际实现往往在网络末端加上一个 FFNN 用于进一步处理信息,这样可以加入一些高度非线性的抽象。这种网络被称为 DCNN ,但这两个名字和简称往往可以混用。

LeCun, Yann, et al. “Gradient-based learning applied to document recognition.” Proceedings of the IEEE 86.11 (1998): 2278-2324.

欢迎关注雷锋网雷锋字幕组专栏,获得更多AI知识~感谢雷锋网(公众号:雷锋网)雷锋字幕组志愿者对本期内容作出贡献。

雷锋网原创文章,未经授权禁止转载。详情见转载须知。

史上最好记的神经网络结构速记表(上)







本文作者:雷锋字幕组
本文转自雷锋网禁止二次转载,原文链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

厚积薄发,微软OFFICE云时代宏脚本来临,Excel Srcipt已经推进到桌面端可用

前一阵子,已经发现微软在Excel上发布了Office Script For Excel,当时只能在网页端的Excel上使用,今天打开桌面端的Excel,发现多了一个【自动执行】选项卡。再一次看了下,比起以前的Office Addin,要先进得多…

如何使用Amazon Echo控制您的Eero Wi-Fi网络

Thanks to the power of Alexa and its open API, you’re able to control a vast number of devices using just your voice. If you have an Eero Wi-Fi system, you can even control your home network with the Amazon Echo. 得益于Alexa的强大功能及其开放的API&#xf…

odoo 自定义视图_如何使用Windows的五个模板自定义文件夹视图

odoo 自定义视图If you’re particular about how Windows displays the contents of your folders, you can cut your customization time down considerably by taking advantage of File Explorer’s five built-in folder templates. 如果您特别想知道Windows如何显示文件夹…

历史

python的历史 kfsaldkfsdf fdskfdsa fdsjkafsjda fdshkfjsdja View Codefjdskaffdsjkaffdsjakflsad;fjdsklaf 转载于:https://www.cnblogs.com/jin-xin/articles/10448286.html

如何重新打开Windows防火墙提示?

If you are setting up a new program that needs network access, but are not paying close enough attention, you might end up accidentally causing Windows firewall to block the program. How do you fix such a mistake? Today’s SuperUser Q&A post helps a f…

如何远程调试 MAUI blazor / Blazor Hybrid

我们知道浏览器模式下 Blazor 可以使用 F12 打开开发工具,调试js查看页面元素,那当 Maui Blazor 提示烦人的 an unhandled error has occurred 该怎么进行调试呢?1. VS 运行工程于 Debug 模式下,只要 BlazorWebview 控件处于焦点,直接按F12就可以打开开发工具了. 没有焦点就鼠…

笔记本触摸键盘驱动自动禁用_如何为iPad的蓝牙键盘禁用自动更正

笔记本触摸键盘驱动自动禁用The take-for-granted features we enjoy when using an on-screen keyboard—like auto-corrections and auto-capitalization–quickly become a hindrance if you’re using a physical keyboard with your iOS device. Let’s look at how to qu…

软考复盘:我的一些复习经验分享

大家好,我是Edison。最近全身乏力头疼,38.5度高烧,好在症状较轻,经过一天躺平加吃了芬必得(简直神药)后,退烧了,也不乏力了,也就趁娃娃睡觉时间跟大家分享一下软考的复习…

自定义注解在拦截器中为空_如何在Android中为特定联系人设置自定义铃声

自定义注解在拦截器中为空Everyone likes to know who’s calling before they actually pick up the phone, and the easiest way to achieve that is with custom ringtones for specific callers. That way, when your phone starts blasting “Cherry Pie,” you know it’…

对象的成员的初始化

变量类型: 1. 内置基本类型: int, char, bool, 2. 复合类型 (compound type): 指针、引用、数组 3. 类类型: struct, class (string,vector等) 定义变量时: 一:进行“初始化”:可分为 ①指…

Golang面向API编程-interface(接口)

Golang面向API编程-interface(接口) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 Golang并不是一种典型的面向对象编程(Object Oriented Programming,OOP&#xf…

笔记本禁用键盘命令符_如何在Windows中禁用命令提示符和“运行”程序

笔记本禁用键盘命令符The Command Prompt and the Run program are pretty powerful tools in the Windows world. If you’d rather specific users on a computer not have access to them, it’s not too hard to do. 命令提示符和运行程序是Windows世界中非常强大的工具。 …

MySQL Date 函数

2019独角兽企业重金招聘Python工程师标准>>> MySQL 中最重要的内建日期函数: NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 DATE() 提取日期或日期/时间表达式的日期部分 EXTRACT() 返回日期/时间按的…

C# WPF This用法详解(经典)

概述this在C#中有多种用法,也比较常见,这节主要针对它常用的四种用法展开讲解.用法1:构造函数串联执行;用法2:通过this区分传参和类中全局的定义;用法3:方法扩展类;用法4:将对象作为参数传递;代码实例using System.Text;namespace Caliburn.Micro.Hello.…

前端node 和vue开发之环境搭建

下载nvm nodejs 的快捷键是配置后自动生成的 nvm 的 setting.txt配置 root: C:\dev\nvmpath: C:\dev\nodejsarch: 32proxy: root指向 nvm.exeroot: C:\dev\nvmpath: C:\dev\nodejs 配置环境变量 变量名 变量值 GIT_HOME C:\dev…

如何从特定位置开始分享YouTube视频

Tech tutorials that start with 3 minutes of “hey guys what’s up” are the worst. Get to the point! Here’s how you can bypass that nonsense when sharing a video with your friends. 最糟糕的是从3分钟的“嗨,大家好起来”开始的技术教程。 讲到重点&a…

解决git提交问题error: The requested URL returned error: 403 Forbidden while accessing

2019独角兽企业重金招聘Python工程师标准>>> git提交代码时,出现这个错误“error: The requested URL returned error: 403 Forbidden while accessing https” 解决方法: 编辑.git目录下的config文件即可。 vim .git/config [core] …

基于.NetCore开发博客项目 StarBlog - (24) 统一接口数据返回格式

1前言开发接口,是给客户端(Web前端、App)用的,前面说的RESTFul,是接口的规范,有了统一的接口风格,客户端开发人员在访问后端功能的时候能更快找到需要的接口,能写出可维护性更高的代…

如何将C# 7类库升级到C# 8?使用可空引用类型

这篇文章将介绍将C# 7类库升级到C# 8(支持可空引用类型)的一个案例。本案例中使用的项目Tortuga Anchor由一组MVVM风格的基类、反射代码和各种实用程序函数组成。之所以选择这个项目,是因为它很小,并且同时包含了惯用和不常用的C#…

android 设备名称_如何更改您的Android TV的设备名称

android 设备名称Android TV is Google’s attempt at taking over the living room, and with some units being available for under $99, it’s not unheard of for users to have more than one box. The problem is, when multiple devices identify themselves identical…