Deep Learning 浅析

随着数字时代的到来, 数据的增长是爆发式的, 2021 年全球数据容量达到了59Zettabytes(1Zettabytes=2 的 70 次方字节)。并且每年还在以 26的复合增长率加速!数据的爆炸式增长、更多更好的算法和更强大的处理器的推出,推动了机器学习、深度学习和人工智能的能力和应用的巨大增长。
从消费设备中的人机交互,到更高效的企业运作,再到医疗保健、能源、零售和交通领域的创新,人工智能应用几乎遍及我们生活中的方方面面。特别是深度学习网络已被部署在智能手机语音识别和自动驾驶的所有领域。
什么是机器学习,它与更一般的人工智能领域有何关联呢?首先人工智能只是描述了一种无需明确的计算机编程即可感知、学习、推理、行动和适应现实世界的机器。而机器学习是人工智能的一个子类别,其中计算机使用学习算法通过提供训练数据来构建模型。
深度学习是机器学习的一个子类别,其中设计了多层神经元以能够学习复杂的表示。在深度学习中,可以有不同类型的神经网络。其中循环神经网络是具有反馈的神经网络,通常用于语音和文本的处理。卷积神经网络或 CNN 是使用卷积运算作为层间的前馈网络。CNN 对分类、识别或定位等计算机视觉任务特别有效。
在这里插入图片描述

那么什么是机器学习呢?从下图我们可以轻松地识别为。但是你是否想过,有人详细的告诉过你狗的特征吗?实际是你可能在年幼时曾多次听别人讲过什么是狗什么不是狗的例子,直到你能够在大脑中建立和完善什么是狗,哦原来看起来像这样,你就可以破译和识别一只狗。这就是机器学习的真正意义所在。
在这里插入图片描述

如果你想用一个计算机程序来检测特定的特征来识别它是一只狗,这将是非常困难 的,因为这条狗的许多特征与其他哺乳动物共有。换个思路,如果我们设置一个神经网络

并简单地为它提供数十万甚至数百万张图像以及图像中对对象类型的特征标签,那么该算法将能够自我配置,因此它将能够识别不同的物体。这就是机器学习。如果我们用多层神经网络来做这件事,那么这就是深度学习。
要详细了解机器学习,让我们从 perceptron 开始讨论。在机器学习中,perceptron 本质上是一个非常简单的神经元二元模型。它是在 1950 年代和 60 年代开发的。它实际上是一个给定输入的二元分类器,输出是 0 或 1。可以有任意数量的输入和单个输出,用于确定输入(通常由数字向量表示)是否属于某个特定类别。

在这里插入图片描述
在这里插入图片描述

Perceptron Weights and Bias
0 𝑖𝑓 ∑𝑖 𝑋𝑖 ∗ 𝑊𝑖 + 𝐵 ≤ 0 ;1 𝑖𝑓 ∑𝑖 𝑋𝑖 ∗ 𝑊𝑖 + 𝐵 > 0
这是perceptron 的数学表示。perceptron 由权重和偏差组成。perceptron 的输出只是所有输入的总和乘以相应的权重,然后添加到偏差中。如果结果小于或等于 0,则输出为0,否则输出为 1,表示 perceptron 已激活。权重将决定特定输入有多大影响。偏差或阈值可以确定神经元激发或激活的可能性。
举个例子假设我们要决定是否出去吃饭。我们可以有 3 个输入来指示:我们是否饿了,是否是特殊日子,以及我是否可以报销餐费。

在这里插入图片描述

如果输出大于 0,我们就出去,否则我们留在里面。
对于第一个输入我饿了,所以我应该吃东西,这不是一个决定外出就餐的非常重要的问题,所以我们权重算 1。另一方面,“这是一个特殊的日子吗”是一个更重要的因素,所以我们权重算 3。对于最后一个输入,“如果餐费可以报销”,这对我们的决定有非常大的影响,因此我们权重算 6。我们将偏差设置为 -2,这个偏差将使这个perceptron 很有可能被触发。
现在,如果输入 为 1、1 和 0,那么在乘以权重系数后,我们得到 1、3 和 0,相加值为 4,带上偏差,我们的最终输出为 2,因此我们决定出去。
虽然perceptron 非常简单,但它有一些严重的缺陷。例如,因为它是一个线性函数, 输入的微小变化可能会对输出产生重大影响。此外,如果 perceptron 有多层,它实际上相当于一个更复杂的单层网络,因为层可以合并。为了避免这种情况,我们经常对神经元应用非线性激活函数,例如 sigmoid 函数。Sigmoid 神经元将 sigmoid 函数

(𝑓(𝑧) = 1/1+ 𝑒𝑧)
应用于我们神经元的输出,它是 perceptron 的稍微复杂的版本。最终结果是一条平滑的曲线,这使得它不易受输入变化的影响,并且更容易训练网络以找到合适的权重和偏差。
在这里插入图片描述

然而现代人工神经网络由许多相互连接的神经元组成,每个神经元后跟非线性激活函数和可能的其他层。对按层组织的数据进行处理。有一个输入层,后面是许多隐藏层,然后是输出层。层层神经网络的连接,一层层的输入、输出、叠加,构成了一个复杂的、多隐藏性的深度神经网络。
在这里插入图片描述

在部署神经网络以供使用之前,我们需要对其进行训练。训练是利用算法根据大量训练数据寻找合适的权重和偏差的过程。通常首先选择一个起始网络拓扑,例如 ResNet 或

GoogleNet 或其它某个版本。然后使用 DeepLearning 框架,例如 Caffe 或TensorFlow,对网络进行修改以实现改进。训练网络需要一个大型的数据库,然后使用训练数据来训练网络的权重与偏差。当然训练的权重与偏差也是需要实时的去更新,以提升部署网络的健硕性。一旦有了训练有素的神经网络,你就可以将它运用在你需要的神经模型中进行实战。
现在大家常用的图像识别常用库有:MNIST 是手写数字的数据库可用于数字的手写识别;CIFAR 是一个 32x32 彩色图像的数据库;imagenet 这是一个 224x224 彩色图像的数据库,每年 imagenet 大型视觉识别挑战赛就是围绕这个数据集展开的。
那现在主要有哪些深度学习网络可供大家使用呢?例如 GoogLeNet、VGG、Resnet、Alexnet、MobileNet、SqueezeNet 等。当然还有一些流行的深度学习框架,例如 Caffe、Caffe2、TensorFlow、Torch、PyTorch 等。
AlexNet 是 Alex 和 Hinton 参加 2012 年imagenet 比赛时提出的卷积网络框架,夺得了当年 ImageNet LSVRC 的冠军。这个神经网络有 6000 万参数和 650000 个神经元,包含 5
个卷积层(某些卷积层后面带有池化层)和 3 个全连接层,最后是一个 1000 维的softmax。网络拓扑图如下:(网络的输入是 224x224x3 的图像,深度为 3 表示 RGB 颜色通道。网络的输出是 1x1x1000 矩阵,描述了 1000 类对象的概率)
在这里插入图片描述

AlexNet 的前 5 层卷积层很好的将数据计算量和权重量压缩了,不断的减少权重量以达到节省计算次数。如果 8 层都是全连接,那么前两层的数据量就来到了恐怖的 430 亿权重和计算!在 AlexNet 中,第一个卷积层使用 96 个 11x11x3 过滤器,这将显着减少计算数量至 9700 万次,权重数量减少至 34848。
详细的神经卷积网络的搭建以后向大家分享。从上面我们可以清楚的看到深度学习的计算强度之高,实现 CNN 推理需要很高的吞吐量,需要很多浮点乘法和累加运算用于过滤数据,需要高带宽本地存储。针对不同网络拓扑、精度和问题需要极好的灵活性。而且巨大的运算对功耗也有极大的要求。
现在深度学习上 FPGA 具有很大的优势,FPGA 有丰富的高性能 DSP,高带宽的吞吐, 以及可编程性。可以很好的运用现在的深度学习场景并且可以快速部署。目前国产易灵思FPGA 低功耗、高性能的硬件优势,结合创新的 EVSOC 框架,可以帮助客户快速部署边缘AI 计算应用。16nm 钛金系列 FPGA 可以提供相当于 2~3TOPS 的算力水平,支持硬核LPDDR4,速率 3733Mbps,带宽高达 100Gbps,支持 2.5Gbps MIPI D-PHY 硬核,是图像处理与深度学习的绝佳选择。
在这里插入图片描述

Reference
应用方案 / 超低功耗应用 / AI 人工智能-易灵思 (elitestek.com) L10 - intro_to_deep_learning.pdf (stanford.edu) CNN——AlexNet - 知 乎 (zhihu.com)
AlexNet 论文翻译——中英文对照_小鸡啄米-CSDN 博客_alexnet 论文翻译

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值