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

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

  1. Linux基础优化方法(四)———远程连接缓慢优化

    Linux基础优化方法(四)---远程连接缓慢优化 一.优化原因 二.优化方法 第一步:修改SSH服务配置文件 /etc/ssh/sshd_config 第二步:修改/etc/hosts配置文件 第三 ...

  2. Java基础:Java中四种访问修饰符

    一.背景. 这篇文章主要介绍了Java中四种访问修饰符详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下.放假在家里休息,闲来无事,想 ...

  3. 零基础学习SpringSecurity OAuth2 四种授权模式(理论+实战)(配套视频讲解)

    配套视频直达 背景 前段时间有同学私信我,让我讲下Oauth2授权模式,并且还强调是零基础的那种,我也不太理解这个零基础到底是什么程度,但是我觉得任何阶段的同学看完我这个视频,对OAuth2的理解将会 ...

  4. 计算机启动方法基础,电脑开机的四种方法

    方法一:设置定时开机 主板上有实时时钟(Real Time Clock,RTC)负责系统的计时,我们可以通过RTC指定开机的时间,就像闹钟一样.不过,由于这项功能很少被人使用,部分虽然提供了此功能的主 ...

  5. 设计模式笔记[四种模式+四种原则]

    A.简单工厂 :用一个单独的类来做这个创建实例的过程,这就是工厂 不符合开-封闭原刚,每次扩展都要更改工厂类 [计算器] 1.cbxType.Items.AddRange(new object[] { ...

  6. script标签4种的四种用法,你知道几种?

    本文为HTML标准解读系列文章,其他文章详见这里. 在一个HTML页面中执行js脚本有很多方式,包括但不限于以下几种: 使用script标签执行脚本: 使用javascript:URL的导航: 使用D ...

  7. Qt中的四种信号与槽的连接方式

    1. UI界面右键点击控件,选择"转到槽",系统会在cpp中自动添加这个组件对应的槽函数 2.在Ui界面的下面 siga如l & slot editor栏中手动添加 3.在 ...

  8. 从商必读:经济诈骗的十四种招术

    从商必读:经济诈骗的十四种招术 -------------------------------------------------------------------------------- 发布者 ...

  9. 【JVM】四种GC算法(分代收集+三种标记算法)

    目录 参考文章 四种GC算法 分代收集算法(理论) 标记清除算法 标记整理算法 标记复制算法 三种算法的优缺点 参考文章 JVM的4种垃圾回收算法.垃圾回收机制与总结_我是guyue,guyue就是我 ...

最新文章

  1. chosen ajax获取数据,Jquery Chosen插件 - 由Ajax动态填充列表
  2. 编译Tomcat9源码【转】
  3. WCF 第十三章 可编程站点 使用WebGet和WebInvoke
  4. SecureCRT在卸载时似乎会同时删除系统自带的Consolas字体
  5. 软件安装(JDK+MySQL+TOMCAT)
  6. 每日小记 2017.2.26
  7. unity3d进行脚本资源打包加载
  8. java me教程_Java ME基础教程
  9. linux上安装安卓厨房手机版,【图片】【教程】进阶教程之“使用安卓厨房制作/修改ROM包”【联想a798t吧】_百度贴吧...
  10. win7计算器功能详解
  11. 08.ThreeJs开发指南-第八章-加载外部模型
  12. android 汉字字母排序,android recycleView自定义字母检索A-Z排序滑动通讯录汉字英文相互转换...
  13. 机器学习(ML)、深度学习(DL)和图像处理(opencv)专用英语词典
  14. MSP430F157IPMR 超低功耗 MCU 封装:LQFP64
  15. token失效 判断access_微信怎么判断微信accesstoken是否过期
  16. 线性代数1.3行列式的按行展开
  17. Mega2560(Arduino)Bootloader烧录指南
  18. Docker容器启动参数大全与详细说明
  19. jdk卸载(Jdk卸载不干净的影响)
  20. 多暂估的库存如何调整_库存是多暂估的如何冲销?

热门文章

  1. Boost:bind绑定转发2个参数的测试
  2. ITK:从文件编写一个转换
  3. DICOM:通讯模型
  4. Qt Creator将UI项目转换为应用程序
  5. OpenGL相机控制之一
  6. C语言实现TCP网络通信(附服务端和客服端完整源码)
  7. C语言指针与强制类型转换
  8. C++ Opengl 绘制图像字符源码
  9. 利用python对微信云数据库_如何用python看看女神的微信百度云里面有啥?
  10. 「SLAM」十四讲:第1讲 预备知识