豁然开朗!最不一样的深度学习神经网络工作原理图解

虽然我们会深入探讨数学细节,但是不用担心,因为我们将逐步分解并解释每个步骤。

阅读完本文后,你会发现它比听起来简单得多。

神经网络非常强大,因为它们可以识别数据中复杂的模式,而这些模式可能让传统算法难以应对,它们可以解决高度复杂的机器学习问题(如自然语言处理和图像识别),甚至可以在不需要大量手工特征工程的情况下,自动从原始数据中提取有用的信息。

归根结底,神经网络的问题大致可以归结为两大类——分类(Classification)和回归(Regression)。

回归是为给定的输入预测一个连续的值(例如:天气预报)。

今天,我们将重点讨论回归问题。

举一个简单的例子:

我们最近搬到了一个新城市,目前正在寻找新家。

但是,我们注意到这个地区的房价差异很大。

我们找到了一个我们感兴趣但不确定它的价格是否合适房子。

所以,我们可以建立一个神经网络,根据某些特征(如房屋面积(以平方英尺为单位)、位置(1=城市,2=郊区,3=乡村)、房龄和房间数量)来预测房屋价格。

我们的目标是使用这些特征来预测房屋价格。

我们做的第一件事是收集有关附近房屋的数据以及它们的售价。

注意:这是一个合成数据集

接下来,我们想要训练一个神经网络。训练涉及将数据集输入到模型中,模型学习数据中的模式。

术语解释:由于我们使用上面的数据集来训练模型,因此它被称为训练数据。

所以,该模型能够根据可用数据预测新房屋的价格。

但在进入模型构建和训练之前,让我们先了解一下为什么它被称为神经网络。

背景

神经网络使计算机能够以人类大脑为灵感处理数据。它利用按层排列的相互连接的神经元,类似于人类大脑的结构。

这是一个生物神经元。

它接收输入,处理接收到的输入或数据(这种处理简直就像魔法一。

就像人类大脑通过接收输入并生成输出来处理数据一样,神经网络的操作方式也类似。

这里的蓝色线条代表神经元的输入。

在房屋定价的背景下,这些输入可以被视为不同的特征变量,而输出将是预测的房屋价格。

因此,让我们将它们添加到我们的人工神经元中。

这些权重的目的是指示输入的重要性。

较高的权重值意味着输入被认为更重要。

因此,如果房龄的权重高于位置的权重,这意味着房屋的房龄比房屋的位置更重要。

现在,生物神经元中像是发生了一些魔术,而这就是人工神经元中的魔术。

当我们放大时,我们发现这种魔术本质上是两个数学步骤。

第1部分:求和

第一部分是求和,在这里我们将每个输入与其对应的权重相乘,然后将它们相加。

你可能还注意到了顶部的b,这被称为偏差项,它是一个常数值。

我们将此值添加到加权和中以完成求和。

数学:

第2部分:激活函数

在神经网络中,激活函数的作用确实是将来自前一层神经元的加权输入(即上一步的求和结果)转换为输出,这个输出随后会被传递给下一层的神经元。

二元阶跃函数

它很简单:如果输入(我们称之为x)等于或大于0,函数就输出1;否则,它输出0。

当你需要一个明确的决定,比如是或否时,这个函数非常有用。

例如,基于输入,这所房子会出售吗?

线性函数

它如实反映情况。它只返回它接收到的任何值。

因此,如果我们的求和结果是5,那么输出也是5。

Sigmoid函数

它真正改变了游戏规则,能够优雅地将任何输入值压缩到0到1的范围内。

它非常适合基于概率的问题,例如,在给定某些条件下,房屋出售的可能性有多大?

双曲正切函数,简称tanh

它与Sigmoid相似,但有一个不同之处:它的输出值范围在-1到1之间。

因此,较大的正输入值接近于1,而较大的负输入值接近于-1。

整流函数ReLU(RectifiedLinearUnit)

这个函数在神经网络领域非常出色。

它简单而有效:如果输入为正,则保持不变;如果为负,则将其变为零。

这种功能使它在许多场景中都非常有用。

LeakyReLU(带泄露的线性整流单元)的激活函数

这是对常规ReLU的一个巧妙改进。

虽然ReLU将所有负输入设置为零,但LeakyReLU允许负输入有一个小的、非零的、常数输出。

最后是最近非常受欢迎的Swish函数

实际上,还有许多其他的激活函数,每一种都有其独特的特点。

但以上这些是最流行和最通用的激活函数之一。

激活函数的妙处在于它们可以根据我们的具体问题进行调整。

例如,如果我们在预测一些连续的事物,比如房价(一个回归问题),那么整流函数ReLU就是一个很好的选择。

它只给出正输出,这与房价不会是负数的事实非常吻合。但如果我们在估计概率,比如房屋销售的可能性,那么sigmoid函数就是我们的首选,因为其整洁的0到1范围可以反映概率值。

接下来让我们继续选择整流函数ReLU作为我们神经元中的激活函数,因为这对我们的问题最有意义。

接下来,我们需要确定权重和偏置项的值应该是多少。

我们知道它们是常数项,但它们的值应该是多少呢?

现在,让我们假设我们已经训练了我们的神经网络并得到了最优值。

所以,让我们用这些最优值替换这些项。

这就是一个我们所说的训练有素的神经网络,本质上,这意味着我们已经利用可用的数据,通过一个神经元的训练,创建了最有效的模型。

让我们试着预测我们训练数据集中第一所房子的价格。

当我们输入数据时,数据处理的神奇部分之一是求和……

……而第二部分是将这个求和值通过整流函数ReLU:

从本质上讲,我们的模型以第一所房子的特征作为输入,并根据这些特征预测价格为103.6万美元。

换句话说,它表示:“根据这些房屋特征,我预测房屋的价格为103.6万美元。”

但是,当我们将其与实际房价175万美元进行比较时,结果相差了71.4万美元,很明显这个结果误差非常大。

如果我们将这个简单的模型输入剩余的房屋,我们将得到以下预测价格:

正如我们所看到的,预测价格都非常不准确。

这表明我们的模型不是很有效,考虑到它的不复杂性,这是可以理解的。

它只有一个神经元,就像人的大脑一样,只有当神经元协作时,它们才能做出更有影响力的决策并以更高的精度处理数据。

让我们退后一步,考虑是否有更直观的方法来解决这个问题。

我们可以通过考虑不同特征之间的相互作用,来提高我们的预测能力,因为两个特征的组合比单独的特征更有意义。

例如,房间和大小的组合可能是有价值的。

一栋房间多但空间小的房子可能会让人感到拥挤,从而降低对买家的吸引力,导致价格降低。

同样,房子年龄和位置的组合也很重要。

在城市地区,新房通常更贵,而在农村地区,买家可能更喜欢老房子的魅力,这可能会增加它们的价值。

此外,农村地区的旧房子也可能经过更多的翻新。

可能性是无穷无尽的,考虑所有不同的组合是一项具有挑战性的任务。

但这正是我们利用多个神经元的力量的时候,与生物神经元协同工作可以做出更好决策的方式类似,人工神经元一起工作也可以实现相同的目标。

让我们通过向其中添加另外两个神经元来使我们的简单神经网络更加强大。

这将创建一个类似蜘蛛网的结构:

在这种情况下,所有的输入都被输入到每个神经元中。

为了保持它们的独立性,让我们引入一些符号。

权重由w_ij表示,其中i是神经元编号,j是输入到其中的输入。所以,例如,这个突出的权重……

……被标记为w,因为它是第一个神经元的第二个输入。而这个突出显示的输入……

……被标记为w,因为它是第三个神经元的第四个输入。类似地,这是所有已标记的权重:

这些权重可以取任何值,而这些值是在训练过程中确定的。

类似地,假设只有卧室、大小和位置对第二个神经元是重要的,而房龄被忽略,那么进入第二个神经元的年龄的权重为0。

同时,第三个神经元仅将位置和年龄视为重要特征,而卧室和大小的权重为0。

生成的神经网络如下所示:

同样,训练过程也会产生最优的偏置值。

所以让我们继续在这里添加它们(也让权重=0的输入消失,使图表更易读):

你可能注意到了一些奇怪的地方:我们有3个输出。然而,我们只有一个输出,即预测价格。

因此,我们需要找到一种方法将来自3个神经元的输出组合成一个。

为了做到这一点,让我们在前面再添加一个神经元。

术语:每一层都有编号,输入层通常被标记为0。

最后一层被称为输出层,而位于输入层和输出层之间的任何层都被视为隐藏层。

请记住,每个输入都伴随着一个相应的权重。

因此,即使这些输入到新的神经元也会有权重,这些权重也可以在训练过程中进行估计。

新的偏置也将在训练过程中确定。因此,新的神经网络(假设它已经完全训练过)将具有以下最优值:

现在让我们继续讨论激活函数。

对于这种情况,我们将所有激活函数都设置为等于整流函数Relu。

注意:通常,同一层将具有相同的激活函数。

我们用所有最优的偏置和权重值训练了我们的神经网络。现在是时候让它运转一下,看看它在预测房价方面的表现如何了。

让我们再次将我们第一所房子的特征通过这个神经网络。

我们将在每一步突出显示激活的输入和神经元,来阐述这个过程。

第1步—第一个神经元

第2步—第二个神经元

第3步—第三个神经元

最后,使用隐藏层的输出并将它们传递到输出层:

第4步—最后一个神经元

这就是我们如何使用这个神经网络来获得输出的方法!将输入传递以获得输出的过程称为前向传播。

我们将对剩余的房屋重复相同的过程:

让我们将这些新的预测价格与仅由一个神经元构成的神经网络做的旧预测价格进行比较。

粗略地看,新的预测比旧的预测表现得更好。

但是,如果我们想找到一个数字来量化我们的预测与实际值之间的偏差要怎么做呢?

这个时候就是成本函数发挥作用的时候了,成本函数告诉我们我们的预测偏离了多少。

根据预测的类型,我们可以使用不同的成本函数。

对于这个问题,我们会使用一个称为均方误差(MSE)的成本函数。

MSE允许我们a)衡量我们的预测与实际价格之间的偏差,以及b)比较不同模型所做的预测。

它计算预测房价与实际房价之间差异的平方平均值。数学上:

术语:通常的符号是将实际价格称为“y”,将预测价格称为“yhat”。

目标是最小化MSE。MSE越接近0,我们的模型在预测价格方面的表现就越好。

因此,使用此公式,我们可以计算旧的单神经元模型的MSE为:

这证实了我们的第一个模型非常糟糕。

同样,新的更复杂模型的MSE为:

仍然相当糟糕,但至少比之前的MSE稍好一些。

但我们可以考虑创建一个更好的模型。

一种方法是在现有层中添加更多的神经元以提高预测能力。像这样:

在隐藏层中添加了第四个神经元

我们可以添加一个全新的隐藏层:

添加了第二个带有3个神经元的隐藏层

我们也可以在不同的层放置不同的激活函数:

如你所见,可能性是无穷无尽的。

我们可以调整神经网络的复杂性以满足我们的特定需求。这些不同的可能性称为神经网络架构。

我们可以自定义层的数量、每一层的神经元以及激活函数,以适应我们正在尝试解决的数据和问题,使其根据需要尽可能简单或复杂。

THE END
1.了解深度学习的概念在计算了所有数据批次的聚合损失后,深度学习框架使用优化器来确定应如何调整模型中的权重和偏差来减少总体损失。 然后,这些调整将反向传播到神经网络模型中的层,接着再次通过网络传递数据,并重新计算损失。 此过程将重复多次(每次迭代称为一个 epoch),直到损失最小化,并且模型已“学习”正确的权重和偏差,能够准确预测https://learn.microsoft.com/zh-cn/training/modules/deep-learning-azure-databricks/2-deep-learning
2.本期课程深入探讨神经网络的核心结构与工作来自与非网本期课程深入探讨神经网络的核心结构与工作原理。从前馈神经网络的构建讲起,介绍反向传播算法和自动梯度计算技术,这些是训练深度学习模型的关键。课程还将讨论神经网络参数优化过程中的主要问题,为理解深度学习模型的高效训练提供必要的知识。 L与非网的微博视频 小窗口 ?收藏 转发 评论 ?1https://weibo.com/1768387552/5112254494933678
3.原理及循环神经网络简述深度神经网络的基本原理这里用两层来代表多层的神经网络举例:第一层的输出是第二层的输入,其中MM的W*X矩阵乘法,ADD是向量加法即加上偏置,如果每一层都只有线性变换,那么最终无论多少层都可以化简成一层(见上图左边的公式),这样多层数就没有意义了,所以要在每一层都加上非线性函数即激活函数,才能保证每一层都有它独特的作用。 https://blog.csdn.net/weixin_61725823/article/details/130568173
4.深度学习算法原理——神经网络的基本原理腾讯云开发者社区深度学习算法原理——神经网络的基本原理 一、神经网络 1、神经元概述 神经网络是由一个个的被称为“神经元”的基本单元构成,单个神经元的结构如下图所示: Sigmoid函数的区间为[0,1],而tanh函数的区间为[?1,1]。 若是使用sigmoid作为神经元的激活函数,则当神经元的输出为1时表示该神经元被激活,否则称为https://cloud.tencent.com/developer/article/1066395
5.神经网络的基本工作原理51CTO博客从本文开始,我们试图用一系列博客,讲解现代神经网络的基本知识,使大家能够从真正的“零”开始,对神经网络、深度学习有基本的了解,并能动手实践。这是本系列的第一篇,我们先从神经网络的基本工作原理开始讲解。 神经元细胞的数学计算模型 神经网络由基本的神经元组成,下图就是一个神经元的数学/计算模型,便于我们用程https://blog.51cto.com/u_15127597/4666503
6.ResNet深度学习神经网络原理及其在图像分类中的应用Python代码此外,本文还介绍了与卷积层紧密相关的激活函数、池化层以及ResNet深度神经网络的概念与应用,并通过实验验证了ResNet在复杂数据集上的高效分类性能。本文将通过视频讲解,展示ResNet原理,并结合如何用 Python中VGG模型、自定义ResNet模型、Capsule Network模型分析MNIST数据集实例的代码数据,为读者提供一套完整的实践数据分析https://t.10jqka.com.cn/pid_373202406.shtml
7.深度神经网络总结深度神经网络(Deep Neural Networks,DNN)可以理解为有很多隐藏层的神经网络,又被称为深度前馈网络(DFN),多层感知机(Multi-Layer perceptron,MLP)。 1 前向传播算法 1.1 从感知机到神经网络 感知机的模型是一个有若干输入和一个输出的模型,如下图: 输出和输入之间学习到一个线性关系,得到中间输出结果: http://www.360doc.com/content/24/0120/11/18005502_1111679528.shtml
8.焦李成院士:下一代深度学习的思考与若干问题由于神经网络是一个动力学的过程,如何实现长时间内对动态过程的建模,是需要克服的。而用神经网络学习拉格朗日量,在学习的动态的上,诱导一个强大的物理先验,就把两者有机的结合起来,这就是拉格朗日神经网络构造的基本思想和原理。其实神经网络的基本原理或者神经计算的基本原理就是能量最小化的一个过程。https://ipiu.xidian.edu.cn/info/1097/2576.htm
9.深度神经网络(DNN)模型与前向传播算法刘建平Pinard深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础,而要理解DNN,首先我们要理解DNN模型,下面我们就对DNN的模型与前向传播算法做一个总结。 1. 从感知机到神经网络 在感知机原理小结中,我们介绍过感知机的模型,它是一个有若干输入和一个输出的模型,如下图: https://www.cnblogs.com/pinard/p/6418668.html
10.基于卷积神经网络的手写数字识别【嵌牛导读】在深度学习领域,手写数字识别是一个较为基础的案例,笔者通过深度学习框架pytorch,使用卷积神经网络设计了一个基本的网络结构,使用MINST数据集作为实验数据集,训练了40个轮次,识别率(在训练集上的)达到了99.95%,最终识别率(在测试集上的)达到了99.13%,取得了比较良好的识别效果。 https://www.jianshu.com/p/849ad35db8b7
11.基于深度学习的烟雾识别研究AET本文通过预处理的烟雾图像数据集对卷积神经网络训练提取烟雾特征,并结合Inception Resnet v2[7]网络模型进行烟雾检测,在基于TensorFlow[8]的多GPU支持下本文对烟雾特征的提取训练时间大大缩短。 3.1 基本卷积神经网络原理 卷积神经网络是一个利用反向传播算法进行特征训练的多层神经网络,卷积核就是其核心,当前在各领域被http://www.chinaaet.com/article/3000092836
12.深度学习cnn卷积神经网络原理(图文详解)受Hubel和Wiesel对猫视觉皮层电生理研究启发,有人提出卷积神经网络(CNN),Yann Lecun 最早将CNN用于手写数字识别并一直保持了其在该问题的霸主地位。近年来卷积神经网络在多个方向持续发力,在语音识别、人脸识别、通用物体识别、运动分析、自然语言处理甚至脑电波分析方面均有突破。本文将会深度详解cnn卷积神经网络原理,对https://www.sumaarts.com/share/620.html