广告

什么是神经网络?工作原理是什么?——AI算法必懂

2020-12-08 综合报道 阅读:
关注AI的同学一定都知道神经网络,这是AI算法中模拟人的大脑所衍生出来的学科和算法。可以说,不了解神经网络就不能说动算法,懂算法者必懂神经网络。下面我们就对神经网络的工作原理进行深入浅出的介绍。

关注AI的同学一定都知道神经网络,这是AI算法中模拟人的大脑所衍生出来的学科和算法。可以说,不了解神经网络就不能说动算法,懂算法者必懂神经网络。下面我们就对神经网络的工作原理进行深入浅出的介绍。DY6ednc

一文了解神经网络工作原理DY6ednc

深度学习是机器学习中重要分支之一。它的目的是教会计算机做那些对于人类来说相当自然的事情。深度学习也是无人驾驶汽车背后的一项关键性技术,可以帮无人车识别停车标志、区分行人与路灯柱。它是手机、平板、电视和免提扬声器等设备实现语音控制的关键。深度学习近期以其前所未有的成果获得了广泛关注。DY6ednc

在深度学习中,计算机模型直接从图像、文本或声音中学习直接如何执行分类任务。深度学习模型可以达到最高的准确度,有时甚至超过了人类的水平。我们通常使用大量标记的数据和包含许多层的神经网络体系结构来训练模型。DY6ednc

一文了解神经网络工作原理DY6ednc

 DY6ednc

深度学习的模型可应用到各种复杂任务中:DY6ednc

1. 人工神经网络(ANN)进行回归和分类DY6ednc

2. 用于计算机视觉的卷积神经网络(CNN)DY6ednc

3. 递归神经网络(RNN)用于时间序列分析DY6ednc

4. 自组织地图以进行特征提取DY6ednc

5. 推荐系统的深玻尔兹曼机DY6ednc

6. 推荐系统的自动编码器DY6ednc

在本文中,我们将尽可能的介绍人工神经网络(ANN)的所有相关内容。DY6ednc

“人工神经网络(ANN)是一种信息处理范例,它受到生物神经系统(大脑)信息处理方式的启发。由大量高度互连的处理元件(神经元)组成,这些元件协同工作以解决特定问题。”DY6ednc

 DY6ednc

主要内容:DY6ednc

1. 神经元DY6ednc

2. 激活功能DY6ednc

3. 激活功能的类型DY6ednc

4. 神经网络如何工作DY6ednc

5. 神经网络如何学习(反向传播)DY6ednc

6. 梯度下降DY6ednc

7. 随机梯度下降DY6ednc

8. 随机梯度下降训练神经网络DY6ednc

神经元DY6ednc

神经元(也称为神经细胞)是大脑和神经系统的基本单元,通过树突接收来自外部世界的刺激信息,对该信息进行处理后,通过轴突输出给其他细胞。DY6ednc

一文了解神经网络工作原理DY6ednc

 DY6ednc

生物神经元DY6ednc

细胞体(Soma):神经元细胞的主要部分,包含细胞核,进行必要的生化反应。DY6ednc

树突:神经元周围类似头发的管状结构。主要负责接受输入信号。DY6ednc

轴突:这是一种细长的管状结构,类似于传输线。DY6ednc

突触:神经元以复杂的空间排列相互连接。轴突末端再次分支,是一种高度复杂、高度专一的结构,我们称之为突触。两个神经元之间的联系就发生在这些突触处。DY6ednc

树突接收其他神经元信息输入。细胞体处理这些传入信息,得到相应的输出结果,该结果通过轴突和突触发送到其他神经元。DY6ednc

一文了解神经网络工作原理DY6ednc

电信号流过神经元。DY6ednc

下图代表了受生物神经元启发的ANN一般模型。它也被称为感知器。DY6ednc

单层神经网络一般称为感知器,给定输入它将计算得到输出。DY6ednc

一文了解神经网络工作原理DY6ednc

感知器DY6ednc

在上图中,x0, x1, x2, x3...x(n)代表该网络的输入(独立变量),每一个输入在经过所谓的树突时都要乘以相应的权重。该权重表示为w0, w1, w2, w3….w(n),它显示特定节点的强度。b是偏差值。偏差值可以向上或向下移动激活函数。DY6ednc

最简单的情况,将这些乘积相加并输入传递函数(激活函数)得到结果,然后将该结果作为输出发送。DY6ednc

激活函数DY6ednc

激活函数对于ANN学习和理解真正复杂的东西很重要。它们的主要目的是将ANN中节点的输入信号转换为输出信号,此输出信号将作为下一层的输入。DY6ednc

激活函数通过计算加权总和偏差值来决定是否激活该神经元。目的是引入非线性。DY6ednc

如果我们不应用激活函数,那么输出信号将仅仅是线性函数(一阶多项式)。线性函数很容易求解,功耗也相对较小,但是它们的复杂性受到一定的限制。因此没有激活函数,我们的模型就无法进行学习,也无法对复杂的数据进行建模,例如图像,视频,音频,语音等。DY6ednc

为什么我们需要非线性函数?DY6ednc

非线性函数是一种具有曲率的函数。现在我们需要神经网络能够进行学习,能够表示将输入映射到输出的任意复杂函数。因此神经网络也被认为是 “通用函数逼近器”。DY6ednc

激活函数的类型:DY6ednc

1. 阈值激活函数—(二进制阶跃函数)DY6ednc

二进制阶跃函数是基于阈值的激活函数。如果输入值高于某个阈值,则神经元被激活并将完全相同的信号发送到下一层;低于某个阈值则不被激活。DY6ednc

一文了解神经网络工作原理DY6ednc

二进制函数DY6ednc

此函数的问题是创建一个二进制分类器(1或0),但是如果我们要连接多个这样的神经元以引入更多类,如Class1、Class2、Class3等。在这种情况下,所有神经元都将给出1 ,我们将无法进行判断。DY6ednc

2. Sigmoid激活函数-(逻辑函数)DY6ednc

Sigmoid函数是一种数学函数,具有特征性的“ S”形曲线或S型曲线,范围在0到1之间,因此它用于需要预测概率为输出。DY6ednc

一文了解神经网络工作原理DY6ednc

Sigmoid曲线DY6ednc

Sigmoid函数是可微的,这意味着我们可以求解任意2个点的曲线斜率。Sigmoid激活函数的缺点是,如果提供较大的负输入,则可能导致神经网络在训练时卡住。DY6ednc

3. 双曲正切函数—(tanh)DY6ednc

类似于Sigmoid,但性能更好。它本质上是非线性的,因此我们可以对各层进行叠加。该函数的范围是(-1,1)。DY6ednc

一文了解神经网络工作原理DY6ednc

双曲正切函数DY6ednc

此功能的主要优点是,负输入映射为负输出,而只有零值输入会被映射为接近零输出。因此,在训练过程中卡顿的可能性较小。DY6ednc

4. 整流线性单元-(ReLu)DY6ednc

ReLu是CNN和ANN中最常用的激活函数,范围从零到无穷大。[0,∞]DY6ednc

一文了解神经网络工作原理DY6ednc

ReLuDY6ednc

如果x为正,则给出输出为“ x”;如果x为负,否则输出为0。ReLu看起来是线性函数的问题,但本质上是非线性的,并且ReLu的组合也是非线性的。实际上,它是一个很好的近似器,可以通过组合Relu来近似大部分函数。DY6ednc

它一般应用于神经网络的隐藏层。对于输出层而言,分类问题通常使用softmax函数,回归问题使用线性函数。DY6ednc

这里存在的一个问题是,某些梯度在训练过程中可能会消失。这会导致权重更新,任何数据点都无法激活该神经元。ReLu基本导致了神经元的死亡。DY6ednc

为了解决这一问题,引入了Leaky ReLu。Leaky ReLu引入了一个小斜率来保证不出现上述问题。Leaky ReLu范围从-∞到+∞。DY6ednc

一文了解神经网络工作原理DY6ednc

ReLu vs Leaky ReLuDY6ednc

Leaky增加了ReLu函数的输出范围。通常,a = 0.01。当a不为0.01时,则称为随机ReLu。DY6ednc

神经网络如何工作?DY6ednc

让我们以房地产价格为例,首先,我们将不同的因素汇总到一行数据中: Area, Bedrooms, Distance to city and Age.DY6ednc

一文了解神经网络工作原理DY6ednc

输入值通过加权的突触直接到达输出层。四个输入值均会被分析并输入到激活函数中,产生输出结果。DY6ednc

这很简单,但是通过在输入和输出层之间添加一个隐藏层可以扩大神经网络的功能并提高其准确性。DY6ednc

一文了解神经网络工作原理DY6ednc

具有隐藏层的神经网络(仅显示非0值)DY6ednc

现在在上图中,所有4个变量都通过突触连接到神经元。但是,并非所有的突触都被加权。权值包括0值和非0值。在这里,非零值表示重要性,0值表示输入被丢弃。DY6ednc

让我们以第一个神经元的Area和Distance to City为非零的示例为例,这意味着它们对第一个神经元重要。另外两个变量,Bedrooms而Age权值为0,因此不通过第一神经元。DY6ednc

您可能想知道为什么第一个神经元只考虑四个变量中的两个。距离城市越远房子变得越便宜,这在房地产市场上很普遍。因此,这个神经元所做的事情可能是寻找离市区较近的房屋。DY6ednc

神经元很多,每个神经元用这些变量的不同组合进行相似的计算。一旦满足标准,神经元就会使用激活函数进行计算。DY6ednc

下一个神经元加权的突触可能是Distance to the city和Bedrooms。因此神经元以非常灵活的方式工作,全面的搜索以查找特定的事物。DY6ednc

神经网络如何学习?DY6ednc

让我们先来做一个类比。神经网络的学习与我们正常的学习方式密切相关,我们首先完成一定的工作,并得到教练的纠正,下一次以更好的方式来完成这个工作。类似地,神经网络需要培训者,来描述该网络对输入做出的反应。用实际值和预测值之间的差异,计算一个误差值(也称为成本函数),并将其发送回系统。DY6ednc

成本函数:实际值与输出值之间平方差的一半。DY6ednc

对于网络的每一层,都会分析成本函数,并用其调整下一个输入的阈值和权重。我们的目标是使成本函数最小化。成本函数越低,实际值就越接近于预测值。这样随着网络的不断学习,每次运行的误差都减小。DY6ednc

我们通过整个神经网络反馈结果数据。将输入变量连接到神经元的加权突触是我们唯一可以控制的事情,因此只要实际值和预测值之间存在差异,我们就需要调整权重。一旦稍微调整它们并再次运行神经网络,便会产生一个新的成本函数,我们希望它可以比上一个小。重复此过程,直到将成本函数降低到尽可能小的水平为止。DY6ednc

一文了解神经网络工作原理DY6ednc

上述过程称为反向传播,并通过网络连续进行,直到将误差值保持在最小值为止。一文了解神经网络工作原理DY6ednc

反向传播DY6ednc

调整权重的方法有两种:DY6ednc
1.蛮力方法DY6ednc
2.批梯度下降DY6ednc

蛮力法DY6ednc

适合单层前馈网络。在这里,我们需要考虑许多可能的权重。在这种方法中,我们想要舍弃除U形曲线底部权值以外的所有其他权重。最佳权值可以使用简单的消除技术找到。如果我们只需要优化一个权重,那么这种方法很有效。但如果是具有许多权重的复杂神经网络,该方法将因维数太高而无法实现DY6ednc

分批梯度下降DY6ednc

它是一阶迭代优化算法,在训练具有不同权重模型的过程中找到最小成本值(损失)。DY6ednc

一文了解神经网络工作原理DY6ednc

梯度下降DY6ednc

在“梯度下降”过程中,我们不会一次都查看每个权重并剔除错误的权重,而是查看函数斜率。DY6ednc

如果斜率→负值,则表示您沿着曲线下降。DY6ednc
如果斜率→正,则不执行任何操作DY6ednc

这样,可以消除大量不正确的权重。DY6ednc

随机梯度下降(SGD)DY6ednc

如上图所示,当我们具有凸曲线时,渐变下降效果很好。但是,如果我们没有凸曲线,则渐变下降将失败。DY6ednc

“ 随机 ” 一词是指与随机概率相关的系统或过程。因此,在随机梯度下降中,随机选择一些样本,而不是每次迭代的整个数据集。DY6ednc

一文了解神经网络工作原理DY6ednc

随机梯度下降DY6ednc

在SGD中,我们一次获取一行数据,通过神经网络运行该数据,然后调整权重。对于第二行,我们运行它,然后比较Cost函数,然后再次调整权重。DY6ednc

SGD帮助我们避免了局部极小值的问题。它比Gradient Descent快得多,因为它一次运行每一行,并且不必将整个数据加载到内存中即可进行计算。DY6ednc

要注意的一件事是,由于SGD通常比典型的Gradient Descent噪声更大,因此由于其下降的随机性,通常需要更多的迭代次数才能达到最小值。尽管与典型的Gradient Descent相比,它需要更多的迭代次数才能达到最小值,但在计算消耗上仍比典型的Gradient Descent少得多。因此,在大多数情况下,SGD优于分批梯度下降。DY6ednc

利用随机梯度下降训练神经网络DY6ednc

步骤1→将权重随机初始化为接近0但不为0的小数。DY6ednc

步骤2→在输入层中输入数据集的第一个观测值,每个要素放在一个节点中。DY6ednc

步骤3→ 正向传播:从左到右,神经元按顺序被激活,直到获得预测值。每个神经元的影响都受权重的限制。DY6ednc

步骤4→将预测结果与实际结果进行比较,并测量的误差(成本函数)。DY6ednc

步骤5→ 反向传播:从右到左,误差反向传播。根据它们对错误造成的影响来更新权重。学习率决定了我们更新权重的程度。DY6ednc

步骤6→重复步骤1至5,并在每次比较后更新权重(强化学习)DY6ednc

步骤7→当整个训练集通过ANN时,就完成了。DY6ednc

 DY6ednc

结语DY6ednc

一文了解神经网络工作原理神经网络是一个全新的新概念,它还有很大潜力。可以应用于各种不同的概念中,并在测试阶段通过特定的反向传播和纠错机制进行学习。这些多层系统也许可以有一天仅靠学习来减少发生错误的可能性,而无需人工纠正。DY6ednc

责编:ChalleyDY6ednc

更多关于AI、算法方面的技术交流可以加责编微信(同名)。DY6ednc

本文为EDN电子技术设计 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • Microchip模拟嵌入式SuperFlash技术助力存算一体创新 SuperFlash memBrain存储器解决方案使知存科技片上系统(SoC)能够满足最苛刻的神经处理成本、功耗和性能要求
  • 用TinyML开始设计——开发评估套件 本文中展示的开发套件和评估板得到一些流行的机器学习库和用于 TinyML 工作流程资源的支持,包括用于微控制器的 Google TensorFlow Lite 和 Edge Impulse,因而它们能够成为您第一个项目的理想起点。
  • “中国IC设计成就奖”提名产品简介:高性能GPU芯片及解 沐曦致力于提供国际顶尖的高性能通用GPU芯片及解决方案,结合我国人工智能等领域对GPU芯片的强烈市场需求,对标当前国际领先的GPU芯片产品立项开展技术研发。
  • “中国IC设计成就奖”提名产品简介:全志科技高性能智能 高性能三重异构智能语音应用处理器R329芯片,采用业界先进的半导体工艺,首款集成Arm中国周易语音处理器。集成DSP、NPU、64位CPU及丰富的外设接口,创新突破了低功耗、边缘语音AI超级算力、多重异构通讯、多核调度等关键技术,处于国内领先水平。
  • “中国IC设计成就奖”提名产品简介:追萤3D AI芯片Ai310 埃瓦科技自主研发的追萤 3D AI芯片创新的采用了异构架构 SOC 设计和微内核架构设计,包含 NPU 神经网络加速核、3D 立体匹配加速核、ISP 核等功能性处理核心;其中 NPU 神经网络加速核基于可重构以及片上多级存储和缓存设计,使数据可高效送达加速核心,使该芯片拥有领先的高效智能处理能力、分析以及低功耗管理的能力;其设计架构的资源复用性使硬件计算单位可灵活分配,适应于不同场景的计算需求;在 3D 视觉算法加速方面创新的采用了自研立体匹配算法的 3D 加速微内核架构设计,可有效加速双目立体视觉、结构光等多种 3D 视觉算法。
  • “中国IC设计成就奖”提名产品简介:ada200优势 1.九天睿芯,感存算一体芯片,可以在功耗和性能满足”低功耗AI场景“的同时,成本也大幅度下降。2.采用模数混合的存内计算架构,ADA200相比传统数字芯片,1/3成本,1/10功耗。
  • “中国IC设计成就奖”提名产品简介:面向边缘视觉分析的 面向边缘视觉分析的数据流AI芯片CAISA是鲲云科技自主研发的专为人工智能图像提供高性能计算加速的AI芯片产品,是全球首个量产的数据流AI芯片。
  • “中国IC设计成就奖”提名产品简介:人工智能语音芯片CI 1、人工神经网络硬件引擎架构:具备高计算性能,进行神经网络计算时相当于数十个CPU并行计算的能力;低访问带宽和低功耗,通过并行计算和共用神经元权重参数,大幅降低访问带宽及功耗;高可配置性,支持神经元层数和节点数、神经网络结构的配置。 2、单、双、及麦克风阵列降噪增强技术:支持各种平稳、非平稳环境噪声抑制;可支持线阵、圆阵结构等常用麦阵结构;采用定向波束形成与自适应信号处理技术相结合;拾取方向动态可调;支持单声道、立体声等回声抑制;采用独立研发的空间预测技术,支持强回声情况下回声抑制;与降噪处理技术相结合;自动增益调节、高通、带通滤波等。 3、低功耗和可靠性设计技术:具备低功耗集成电路设计技术,包括基于活动语音检测的低功耗控制技术和时钟门控技术。 4、逻辑设计技术:掌握了语音信号处理IP的设计方法,包括算法硬件化、定点、浮点运算处理等。同时积累了整套SoC设计所需的控制类IP,并成功通过流片验证。
  • “中国IC设计成就奖”提名产品简介:智能安防AI SoC芯片 亿智SV826是2021年推出的高性能的安防AI SoC芯片,主要面向视频编解码AI摄像机产品。
  • “中国IC设计成就奖”提名产品简介:低功耗视觉AIoT SoC 亿智SH516芯片是亿智电子2021年推出的一款低功耗的智能视觉AIoT SoC芯片。
  • “中国IC设计成就奖”提名产品简介:高性能大算力全场景 - AI性能跑分更强,超越Nvidia Orin - 应用当前先进的安全技术和研发流程 - 国内唯一可获得、支持快速量产的整车智能计算平台芯片
  • “中国IC设计成就奖”提名产品简介:高端AIoT芯片RV1126 RK3568是瑞芯微的高端AIoT芯片。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了