神经网络基础:七种网络单元,四种层连接方式

2016 年 9 月,Fjodor Van Veen 写了一篇名为《The Neural Network
Zoo》的文章(详见图文并茂的神经网络架构大盘点:从基本原理到衍生关系 ),全面盘点了神经网络的大量框架,并绘制了直观示意图进行说明。近日,他又发表了一篇题为《The
Neural Network Zoo Prequel:Cells and
Layers》文章,该文是其上篇文章的前篇,对于文中涉及但没有深入展开的神经网络的单元与层的部分再次做了一个图文并茂的介绍。

Cell(单元)

《The Neural Network
Zoo》一文展示了不同类型的单元和不同的层连接风格,但并没有深入探讨每个单元类型是如何工作的。大量的单元类型拥有彼此不同的颜色,从而更清晰地区分网络,但是自此之后我发现这些单元的工作方式大同小异,下面我对每个单元逐一描述。

基本的神经网络单元,属于常规性前馈架构之中的类型,且相当简单。单元通过权重与其他神经元相连接,即,它可以连接到前一层的所有神经元。每个连接有其自身的权重,在开始时它常常是一个随机数。一个权重可以是负数、正数、小值、大值或者为

0。它连接的每一个单元值被其各自的连接权重相乘,得到的结果值全部相加。在其顶部,也会相加一个偏置项。偏置项可以防止单元陷入零点输出(outputting
zero),加速其操作,并减少解决问题所需的神经元数量。偏置项也是一个数,有时是常数(通常是 -1 或
1),有时是变量。这一总和接着传递至激活函数,得到的结果值即是单元值。

卷积单元和前馈单元很像,除了前者通常连接到前一层的仅仅少数几个神经元之外。它们常用于保护空间信息,因为其连接到的不是少数几个随机单元,而是一定距离内的所有单元。这使得它们很适合处理带有大量局部信息的数据,比如图像和音频(但大部分是图像)。解卷积单元与卷积单元相反:前者倾向于通过局部连接到下一层来解码空间信息。两个单元通常有独自训练的克隆(clone),每个克隆各有其权重,并以相同的方式相互连接。这些克隆可被看做具有相同结构的分离网络。两者本质上和常规单元相同,但是使用不同。

池化和内插单元(interpolating
cell)频繁地与卷积单元相连接。这些单元实际上并不是单元,而是原始操作。池化单元接收输入的连接并决定哪些连接获得通过。在图像中,这可被看做是缩小图片。你再也看不到所有的像素,并且它不得不学习哪些像素应该保留哪些舍弃。内插单元执行相反的操作,它们接收一些信息并将其映射到更多的信息。额外信息是组成的,就像放大一个低分辨率图片一样。内插单元不是池化单元唯一的反转操作,但是二者相对来讲比较普遍,因为其实现快速而简单。它们各自连接,这很像卷积与解卷积。

平均值与标准差单元(几乎完全是作为概率性单元被成对发现)用于表征概率分布。平均值就是平均值,标准差是指在两个方向上能偏离这个平均值有多远。例如,一个用于图像的概率
cell 可以包含一个特定像素上有多少红色的信息。比如说平均值为 0.5,标准差为
0.2。当从这些概率单元中取样时,需要在高斯随机数生成器中输入这些值,值在 0.4 到 0.6 之间的为可能性相当大的结果;那些远离 0.5
的值可能性则很低(但依然有可能)。平均值与标准差 cell 经常全连接到前一层或下一层,并且没有偏差。

循环单元不仅连接到层,并且随着时间推移还会有连接。每个单元内部存储有先前的值。它们就像基本单元一样被更新,但是带有额外的权重:连接到单元的先前值,并且绝大部分时间也连接到同一层的所有单元。当前值和存储的先前值之间的这些权重更像是一个易失性存储器(a
volatile memory),就像
RAM,接收拥有一个特定「状态」的属性,同时如果没被馈送则消失。由于先前值被传递到激活函数,并且通过激活函数每一个更新传递这个激活的值连带其他的权重,所以信息将不断丢失。事实上,保留率是如此之低,以至于在
4 至 5 次迭代之后,几乎所有的信息都丢失了。

长短期记忆单元用于解决发生在循环单元中信息快速丢失的问题。LSTM
单元是逻辑回路,复制了为电脑设计内存单元的方式。相较于存储两个状态的 RNN 单元,LSTM
单元可存储四个:输出的当前值和最终值,以及「内存单元」状态的当前值和最终值。LSTM
单元包含三个「门」:输入门、输出门、遗忘门,并且也仅包含常规输入。这些门中每一个各有其权重,这意味着连接到这种类型的 cell
需要设置四个权重(而不是仅仅一个)。门函数很像流门(flow gate),而不像栅门(fence
gates):它们可以让任何东西通过,只是一点点,没有,或者之间的任何。这通过与值在 0 到
1(储存在这一门值中)之间的输入信息相乘而发挥作用。输入门接着决定有多少输入可被加入到单元值中。输出门决定有多少输出值可通过剩余的网络被看到。遗忘门并不与输出单元的先前值相连接,但却与先前的内存单元值相连接。它决定了保留多少最终的内存单元状态。由于它不连接到输出,所以信息丢失更少,因为循环中没有放置激活函数。

Gated 循环单元是 LSTM 的一种变体。它们也是用门防止信息丢失,但也就两种门:更新门(update)
和重置门(reset)。这略微缺乏表现力,但更快。因为它们在处处都有更少的连接。其实,LSTM 和 GRU 之间有两个不同:GRU
没有输出门保护的隐单元态,而是把输入和遗忘门结合成了一个更新门。其中的思路是,如果你想要大量的新信息,可以遗忘一些旧信息(或者相反)。

将神经元连接成图的最基础方式是将一切相互连接,这可以在 Hopfield 网络和玻尔兹曼机中看到。当然,这意味着连接的数量会有指数级的增长,但表现力是不折不扣的。这被称为全连接

而后,有人发现将网络分成不同的层是有用的,其中一层的一系列或一组神经元之间不连接,但与其他组的神经元相连接。例如受限玻尔兹曼机中的网络层。如今,使用层的观念已经推广到了任何数量的层,在几乎所有的架构中都能看到。这也被称为全连接(可能有点混淆),因为实际上完全连接的网络很不常见。

卷积连接层要比全连接层更受限制:每个神经元只与其他组相近的神经元连接。图像和音频包含大量的信息,不能一对一地被用于直接馈送到网络(例如,一个神经元对应一个像素)。卷积连接的思路来自于对保留重要的空间信息的观察。结果证明,这是一个好的想法,被用于许多基于神经网络的图像和语音应用中。但这种设置没有全连接层更具表达力。其实它是一种「重要性」过滤的方式,决定这些紧凑的信息数据包中哪些是重要的。卷积连接对降维也很棒。依靠其实现,及时空间上非常远的神经元也能连接,但量程高于
4 或 5
的神经元就很少被用到了。注意,这里的「空间」通常指代二维空间,用这种二维空间表达神经元互相连接的三维面。连接范围在所有的维度都能被应用。

另一个选择当然就是随机连接神经元了(randomly connected
neurons)。它也有两个主要变体:允许一部分所有可能的连接,或者连接层之间神经元的一部分。随机连接有利于线性地减少网络的表现,可被用于陷入表现问题的大型网络的全连接层。在某些情况下,有更多神经元的更稀疏的连接层表现更好,特别是当有大量的信息需要存储,但不需要交换时(有点类似于卷积连接层的效力,但却是随机的)。就像
ELM、ESN 和 LSM 中看到的,非常稀疏的连接系统(1% 或 2%)也会被用到。特别是在脉冲网络(spiking
network)中,因为一个神经元有越多的连接,每个权重携带的能量越少,意味着越少的传播和模式重复。

延时连接是指神经元间并非从前面的层获得信息,而是从过去获得信息(大部分是之前的迭代)。这使得时间信息(时间、时序)可被存储。这类连接有时要手动重置,从而清除网络的「state」。与常规连接的主要不同是这些连接持续在变化,甚至在网络没被训练时。

下图展示了以上描述内容的一些小样本网络及其连接。在不知道什么连接什么时,我就会使用它(特别是在做 LSTM 或 GRU cell 时):

作者:Synced

来源:51CTO

时间: 2024-11-17 22:38:26

神经网络基础:七种网络单元,四种层连接方式的相关文章

分享Java常用几种加密算法(四种)_java

对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去.收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文.在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥. 简单的java加密算法有: BASE 严格地说,属于编码格式,而非加密算法 MD(Mes

DuplexPipe二三事(四)——网络连接方式随心换

连接方式 在<DuplexPipe二三事(一)>中提到建立连接有两种方式:监听本地端口,等待其他程序来连接(以下简称"监听方式"):或者主动连接其他程序(以下简称"连接方式").排列组合一下,会得到三种结果:监听-连接.监听-监听.连接-连接.其中只有"监听-连接"方式能正确地建立连接,<DuplexPipe二三事(三)>中介绍的 FPipe 只是在其中添加了一节"监听-连接-监听-连接",其中粗体部分

详解IOS四种保存数据的方式_IOS

在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法.前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码.例如对Possession对象归档保存.

php 解析xml 的四种方法详细介绍_php技巧

php 解析xml 的四种方法 XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. 1. XML Expat Parser: XML Parser使用Expat XML解析器.Expat是一种基于事件的解析器,它把XML文档视为一系列事件.当某个事件发生时,它调用一个指定的函数处理它.Expat是无验证的解析器,忽略任何链接到文档的DTD.但是,如

Javascript 数组去重的方法(四种)详解及实例代码_javascript技巧

 Javascript 数组去重的四种方法 四种算法来实现这个目的: 第一种方法: Array.prototype.unique1 = function () { var n = []; //一个新的临时数组 for (var i = 0; i < this.length; i++) //遍历当前数组 { //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(this[i]) == -1) n.push(this[i]); }

详解Android提交数据到服务器的两种方式四种方法_Android

Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方式向服务器提交数据的方法. 代码比较简单,这里不去过多的阐述,直接看代码. /** * @author Dylan * 本类封装了Android中向web服务器提交数据的两种方式四种方法 */ public class SubmitDataByHttpClientAndOrdinaryWay { /** * 使用get请求以普通方式提交数据 * @param map 传

Oracle之3种表连接方式(排序合并连接、嵌套循环、哈希连接)

Oracle之3种表连接方式(排序合并连接.嵌套循环.哈希连接) 排序合并连接 1.2.4.2.1  排序合并连接 排序合并连接(Sort Merge Join)是一种两个表在做表连接时用排序操作(Sort)和合并操作(Merge)来得到连接结果集的表连接方法. 如果两个表(这里将它们分别命名为表T1和表T2)在做表连接时使用的是排序合并连接,则Oracle会依次顺序执行如下步骤. (1)首先以目标SQL中指定的谓词条件(如果有的话)去访问表T1,然后对访问结果按照表T1中的连接列来排序,排好序

php四种基础算法代码实例_php实例

php四种基础算法:冒泡,选择,插入和快速排序法许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西 .但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要掌握的.下面是我按自己的理解,将四个方法分析一遍.需求:分别用 冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中 的值按照从小到的顺序进行排序. $arr(1,43,54,62,21,66,32,78,36,76,39); 1. 冒泡排序法

android基础总结篇之二:Activity的四种launchMode_Android

我们今天要讲的是Activity的四种launchMode. launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里.这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task. Activity一共有以下四种launchMode: 1.standard 2.