卷积神经网络的框架解读(下)

接上一讲,我们回过头来讨论一下神经网络的基本单元,感知器,要想理解这个感知器,我们就先从神经元细胞的工作原理开始讲起。

一:感知器

人工神经网络 (ANN) 是一种计算模型,其灵感来自人脑中的生物神经网络处理信息的方式。细胞体是神经元的主体,它包括细胞核、细胞质和细胞膜三部分。

树突:主要接受来自其他神经元的信号,是接受器,你可以认为是信息的输入端。
轴突:用来输出细胞体产生的电脉冲信号,是发射器,你可以认为是信息的输入出
神经末梢:轴突的末端形成许多分支,称作神经末梢,每条神经末梢与其他神经元通过突触相连并传递信号,你可以认为信息在这里进行激活。

由此我们可以根据人类的神经元细胞的工作原理,使用计算机模拟出单个的神经元细胞的工作原理。

单个神经元

神经网络中的基本计算单元是神经元,通常称为节点或单元。它从其他一些节点或外部源接收输入并计算输出。每个输入都有一个相关的权重 (w),它是根据其对其他输入的相对重要性来分配的。该节点将函数 f(定义如下)应用于其输入的加权和,如下图 

上述网络接受数字输入X1和X2,并具有与这些输入相关的权重w1和w2 。此外还有另一个输入1 与权重b(称为Bias)相关联,这个b也称为偏置值。函数f是非线性的,称为激活函数。激活函数的目的是将非线性引入神经元的输出。每个激活函数(或非线性)都采用一个数字并对其执行某种固定的数学运算。在实践中您可能会遇到几种激活函数:

Sigmoid: 接受一个实值输入并将其压缩到 0 到 1 之间
σ (x) = 1 / (1 + exp (-x))

tanh:接受一个实值输入并将其压缩到范围 [-1, 1]
tanh(x) = 2σ(2x) - 1

ReLU:ReLU代表整流线性单元。它接受一个实值输入并将其阈值为零(用零替换负值)
f(x) = 最大值(0, x)

二:多层感知器与深度神经网络

1、前馈神经网络

这里我们先介绍一个概念就是前馈神经网络,什么是前馈神经网络呢?前馈神经网络是第一种也是最简单的人工神经网络类型。它包含分层排列的多个神经元(节点)。来自相邻层的节点之间有连接或边缘。所有这些连接都有与之相关的权重。

前馈神经网络可以由三种类型的节点组成:

输入节点(input)--输入节点向网络提供来自外部世界的信息,统称为“输入层”。在任何输入节点中都不会执行任何计算,它们只是将信息传递给隐藏节点。
隐藏节点(hidden)-- 隐藏节点与外部世界没有直接联系(因此得名“隐藏”)。它们执行计算并将信息从输入节点传输到输出节点。隐藏节点的集合形成一个“隐藏层”。虽然前馈网络只有一个输入层和一个输出层,但它可以有零个或多个隐藏层。
输出节点(output)-- 输出节点统称为“输出层”,负责计算并将信息从网络传输到外部世界。

在前馈网络中,信息仅沿一个方向传播--从输入节点,通过隐藏节点(如果有)到达输出节点。网络中没有循环(前馈网络的这一特性不同于循环神经网络,其中节点之间的连接形成循环)。

2、单层感知器

我们前面讲的这一最简单的前馈神经网络,就是单层感知器,不包含任何隐藏层。

3、多层感知器

多层感知器具有一个或多个隐藏层的前馈神经网络,我们称之为多层感知器。

4、深度神经网络

就是由更为复杂的多层感知器组成的神经网络,我们称之为深度神经网络。

三:其他卷积网络架构

自 1990 年代初以来,卷积神经网络就已经出现。我们讨论了上面的 LeNet,它 是最早的卷积神经网络之一。下面列出了一些其他有影响力的架构。
LeNet(1990 年代):本文已经介绍过。
1990 年代到 2012 年:从 1990 年代末到 2010 年代初,卷积神经网络处于孵化阶段。随着越来越多的数据和计算能力变得可用,卷积神经网络可以处理的任务变得越来越有趣。
AlexNet (2012) –  2012 年,Alex Krizhevsky(和其他人)发布了AlexNet,它是 LeNet 的更深、更广的版本,并在 2012 年的艰难 ImageNet 大规模视觉识别挑战赛 (ILSVRC) 中大获全胜。相对于以前的方法的重大突破和当前 CNN 的广泛应用可以归功于这项工作。
ZF Net (2013) –  ILSVRC 2013 的获胜者是来自 Matthew Zeiler 和 Rob Fergus 的卷积网络。它被称为ZFNet(Zeiler & Fergus Net 的缩写)。这是通过调整架构超参数对 AlexNet 的改进。
GoogLeNet (2014) –  ILSVRC 2014 的获胜者是Szegedy 等人的卷积网络。来自谷歌。它的主要贡献是开发了一个Inception Module,大大减少了网络中的参数数量(4M,而 AlexNet 的数量为 60M)。
VGGNet (2014) –  ILSVRC 2014 的亚军是被称为VGGNet的网络。它的主要贡献在于表明网络的深度(层数)是良好性能的关键组成部分。
ResNets (2015) – 何恺明(和其他人)开发的残差网络是 ILSVRC 2015 的获胜者。ResNets 目前是最先进的卷积神经网络模型,是在实践中使用 ConvNets 的默认选择(截至 2016 年 5 月) )。
DenseNet(2016 年 8 月)--由黄高(和其他人)发布, 密集连接卷积网络 的每一层都以前馈方式直接连接到其他每一层。DenseNet 已被证明在五个竞争激烈的对象识别基准任务上比以前的最先进架构获得了显着改进。在这里查看 Torch 的实现。
Keras(2017年)--是TensorFlow 2的高级API:一个平易近人,高效的界面,用于解决机器学习问题,专注于现代深度学习。2019年春TensorFlow 2集成了keras。它为开发和发布具有高迭代速度的机器学习解决方案提供了必要的抽象和构建块。

四:Keras的优势

1、Keras 优先考虑开发人员的经验

Keras 是为人类而非机器设计的 API。Keras 遵循减少认知困难的最佳实践: 它提供一致且简单的 API,它将常见用例所需的用户操作数量降至最低,并且在用户错误时提供清晰和可操作的反馈。
这使 Keras 易于学习和使用。作为 Keras 用户,你的工作效率更高,能够比竞争对手更快地尝试更多创意,从而帮助你赢得机器学习竞赛。
这种易用性并不以降低灵活性为代价:因为 Keras 与底层深度学习语言(特别是 TensorFlow)集成在一起,所以它可以让你实现任何你可以用基础语言编写的东西。特别是,tf.keras 作为 Keras API 可以与 TensorFlow 工作流无缝集成。

2、Keras 被工业界和学术界广泛采用

截至 2018 年中期,Keras 拥有超过 250,000 名个人用户。与其他任何深度学习框架相比,Keras 在行业和研究领域的应用率更高

3、Keras 可以轻松将模型转化为产品

Keras 模型可以在更广泛的平台上轻松部署:
在 iOS 上,通过 Apple’s CoreML(苹果为 Keras 提供官方支持)。
在 Android 上,通过 TensorFlow Android runtime,例如:Not Hotdog app。
在浏览器中,通过 GPU 加速的 JavaScript 运行时,例如:Keras.js 和 WebDNN。
在 Google Cloud 上,通过 TensorFlow-Serving。
在 Python webapp 后端(比如 Flask app)中。
在 JVM 上,通过 SkyMind 提供的 DL4J 模型导入。
在 Raspberry Pi 树莓派上。

4、Keras 支持多个后端引擎

你的 Keras 模型可以基于不同的深度学习后端开发。重要的是,任何仅利用内置层构建的 Keras 模型,都可以在所有这些后端中移植:你可以用一种后端训练模型,再将它载入另一种后端中,支持的后端有:

谷歌的 TensorFlow 后端
微软的 CNTK 后端
Theano 后端
亚马逊也正在为 Keras 开发 MXNet 后端。

5、Keras 拥有强大的多 GPU 和分布式训练支持

Keras 内置对多 GPU 数据并行的支持。
Keras 模型可以被转换为 TensorFlow Estimators 并在 Google Cloud 的 GPU 集群上训练。
Keras 可以在 Spark(通过 CERN 的 Dist-Keras)和 Elephas 上运行。

6、Keras 的发展得到深度学习生态系统中的关键公司的支持

Keras 的开发主要由谷歌支持,Keras API 以 tf.keras 的形式包装在 TensorFlow 中。此外,微软维护着 Keras 的 CNTK 后端。亚马逊 AWS 正在开发 MXNet 支持。其他提供支持的公司包括 NVIDIA、优步、苹果(通过 CoreML)等。

五:课程预告

接下来是课程预告,我们会详细介绍Keras框架的原理和编程技巧,由浅入深,全面了解keras的框架和函数结构,同时结合了两组实战案例让你快速入手。

Kseras深度学习框架之环境搭建
Kseras深度学习框架之函数解析
Keras深度学习框架实战之手写体识别
Keras深度学习框架之网络模型
Keras深度学习框架之网络层
Keras深度学习框架之优化器
Keras深度学习框架之损失函数
Keras深度学习框架之数据集
Keras深度学习框架实战之波斯顿房价回归预测
Keras深度学习框架实战之花卉识别

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BBM的开源HUB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值