神经网络及其相关知识

编程入门 行业动态 更新时间:2024-10-09 06:30:51

<a href=https://www.elefans.com/category/jswz/34/1769690.html style=神经网络及其相关知识"/>

神经网络及其相关知识

在讲机器的神经网络之前,我们先简单地讲一讲人类的神经网络,方便大家理解机器的神经网络。

我们都知道,人的神经网络由成千上万的神经元组成,每一个神经元和下一个神经元之间通过传递神经递质的方式来传递神经信息。

如下图所示

而机器的神经网络也是由成千上万的神经元组成的,它其中的每一个神经元(我们为了方便画图)都是用一个小圆圈来表示。

如下图(忽略图中的,,)

概念:神经网络是机器学习的一种算法

图中每一个小圆圈都表示一个神经元,机器神经网络的一个特点是,它会分层,讲具有不同功能的神经元放置在不同的层,不同层的神经元之间的连接,我们都用一条短线来表示。如图的神经网络,我们有四层神经元Layer 1至Layer4,我们通常写为,,,.我们用L来表示神经网络的层数,如图,这个神经网络有四层,即L=4,同时,因为最后一层的神经元的序号和神经网络的总层数相等,则最后一层的神经网络我们可以写为.

我们将第一层的神经元称之为‘输入层’,用来输入数据,最后一层的神经元称之为输出层’,我们会在这层得到最终的数据,和之间的所有层我们称之为‘隐藏层’。

以下为神经网络的基本工作原理

第n的神经元接受n-1层神经元的输出值,作为第n层的输入值,通过乘以各种权重再求和,得到输出值,再作为第n+1层的输入值,一直继续这个步骤,直到将结果传到最后一层的神经元。

不同的权重会不同地影响着x的c

我们有时候也会将相邻层之间的权值和输入值分别放入一个矩阵中

如第一层的输入值为,第一层的到A的偏差矩阵为,则A我们可以表示为A=

神经网络这个算法一开始是使用在语音识别和数字识别这两个领域上的,我们就举数字识别这个例子来帮助大家理解最难理解的‘隐藏层’的作用。

假设第一层我们输入了一些人类手写的数字图片,我们想让机器来识别这些数字究竟是0-9的哪些数字。

比如我们在第一层输入的是数字‘9’

 从第一层到第二层的这个步骤中,机器就会把‘9’拆分成图下标了颜色的8个框框中所展示的碎片

 从第二层到第三层的过程中,机器就会对这些碎片进行拼接,如果能拼接成‘一个圈圈和一条竖线’机器就会分析这个数字是0-9中各个数字的概率,最后发现这个数字是9的概率最大,就会在最后一层这个手写的数字是9。

从到的时候它只会‘点亮’数字‘9’所表示的神经元,而不会点亮所有的神经元,其他层之间也是如此,从一层到另一层之间,上一层不会点亮下一层的所有神经元,只会点亮一部分

刚刚我们所讲的从到到到这个整体的过程,就是神经网络一个前向传播的过程 

神经网络的基本概念

1.前向传播:(就是我上面讲的那一堆,从 到到到这个整体的过程)

2.激活函数:

假如说我们从层中输入数据,我们从的某个神经元中得到了结果,但我们想让这个结果变成一个我们期望的值,或者这个这个结果在我们期待的一个区间中,我们就需要用到激活函数。

作用:

激活函数是为了使人工神经网络能较好地表达‘非线性的表达能力’而设计的一些函数

激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。

下面是一些常用的激活函数

我们先重点讲一讲sigmoid(logistic)函数,如图我们知道sigmoid函数的定义域为R,值域为(0,1),sigmoid函数的重要作用之一就是在某一层函数输出结果,准备输入到下一层函数之前,把该结果先输入到sigmoid函数中,使其结果固定在(0,1)中更方便我们归定范围。又因为其值域在(0,1)这个特殊的属性,sigmoid函数还通常应用在二分类问题(y=0或1)

3.偏置神经元(bias)(有时候也叫’阈值‘)

偏置神经元通常可以添加在除层外的所有神经层中,

如下图所示

  

刚才我们的4层神经网络中是没有放偏置神经元的,我们得到A=

 即,同理我们可得B=

以到为例,到层的ABCDE五个神经元的过程中都会有一个偏置值b,我们不妨写作

若我们放置了偏置神经元(bias)之后,从第一层到第二层得时候,在原先就要经过一个‘权重’的计算之后,我们还要经过一个‘bias’的计算,即我们的A变成了,我们要注意一点的是,相邻神经层之间的两个偏置神经元在图上是不会有连线的,即到ABCDE都会有一个连线,但到之间是不会有连线的,因为它们两个分别是两个神经层的偏置神经元就像上图所示。

偏置神经元一般是搭配激活函数来使用的(我的图中没有画激活函数),假设我们在和之间加了一层ReLU函数,当我们没有加偏置神经元时,我们在第二层神经元A中,我们会把这个没有家偏置的结果A放入ReLU激活函数中,激活函数就会输出一个结果relu(),再将这个结果输入到中,继续它的前向传播过程;若我们加了偏置神经元bias,,我们把这个A带入激活函数中会得到结果relu(),我们不难看出,relu()相对于 relu()是做了一个上下平移的过程,

 若则相对于向上平移,若则相对于向下平移。

故偏置神经元bias的作用是将某一层神经元得到的结果进行上下平移,为了更好的拟合函数。

4.神经网络的分类

人工神经网络(ANN/NN)

刚才我们所讲的从 到到到这个图,就是我们比较常见的一种神经网络,叫做人工神经网络(ANN),也可以叫做(NN)

卷积神经网络(CNN)

ANN从一层到另一层通过的是一个加权求和与偏置的一个计算,而卷积神经网咯,通过的是一个卷积的步骤(卷积我们这里不过多讲述,我们先记住卷积的作用是提取特征)

bp神经网络(后面我会细讲)

5.损失函数

首先我们要区分损失函数和代价函数的区别

损失函数:直接作用于单个样本,用来表达样本的误差

代价函数:作用于整个训练集,是整个样本集的平均误差,对所有损失函数值的平均

损失函数有很多种,如‘平方损失函数’,就是我们讲的,将最终结果和真实值做差再取平方,它是众多的损失函数的一种;当然我们可以做差然后取绝对值,即,就得到了我们的‘绝对值损失函数’,除此之外我们还有‘对数损失函数’和‘指数损失函数’等等,以后我们会讲到。

以平方损失函数为例,我们将我们得到的所有损失函数求和并取平均值,就得到了损失函数对应的代价函数,有时候我们也可以取它的二分之一,即(在吴恩达的机器学习视频中可以经常看见)这个J就是我们的‘平方代价函数’,当然我们可以求和取平均算出其他损失函数所对应的代价函数。

(以人工神经网络ANN来举例)在我们搭建好神经网络,输入我们的初始数据之前,各层之间的权重w和偏置神经元的值b(虽然我们图中给的是,但一般情况下b更常用,都是一个意思懂得都懂)我们都是没有设置的,故我们会在训练开始之前,先给w和b一个值(b有时候会用到,有时候不会用到,根据情况而定,b不是一定有,w一定会有),一般情况下我们会令b=1,w我们会给一个随机值,输入初始数据后,我们会得到我们的最终结果我们记为(i=1,2,3,4...),我们的真实结果为(i=1,2,3,4...),我们将其做差,并取其平方得到我们的损失函数(当然你也可以选其他的损失函数),i=1,时这个结果就表示层第一个输出神经元和其所对应的真实值之间的损失,i=2,i=3同理,我们求出这个损失函数对应的代价函数之后,我们会根据J的大小来判断w和b对数据的拟合程度,J越小拟合程度越好,若拟合程度不好,J值过大,我们会进行‘调参’,我们的w和b值,通过梯度下降来寻找我们最佳的w和b值,从而得到我们最佳的w和b值,使J最小。

(有时候我们也不会给w和b随机值,我们有时会用高斯分布,使所有w和b的的均值为0,方差为1)

代价函数例题

之前我们讲过sigmoid(logistic)函数这种函数适用于二分类问题,下面我们将用一个二分类问题来讲述代价函数,损失函数的应用。

有一个肿瘤问题,我们以‘0’表示一个病人是健康的,没有患肿瘤,‘1’表示病人患了肿瘤,很明显这是一个二分类问题,y不是0,就是1,如果我们用平方损失函数,然后计算出对应的平方代价函数,我们最终会得到这个代价函数得图像是一个'非凸函数',即他有许多的局部最优解,且不方便我们计算。

 这时,我们需要引入一个新的代价函数logistic回归代价函数

我们就会得到它的函数图像(这里相当于预测值,y相当于真实值)

当y=1,=1时,log=0,这个零就是我们的‘代价’,就是说当y=1,这个病人实际上是个肿瘤患者,我们的预测值也为1,我们的代价就为0,若y=1,=0时,我们 log为一个非常大的值,这个值就是我们的‘代价’,用来‘惩罚’这个函数。

6.反向传播算法

反向传播算法是神经网络的核心,在这个版块我们会用到几乎前面讲的所有知识,在讲反向传播算法之前我们要先了解’链式法则‘,作者大大这里推荐一个小破站上面的视频,只有三分钟左右,浅显易懂,大家可以先看了这个视频再来了解之后的内容(视频链接如下)

【考研数学】快速掌握多元复合函数求导的链式法则_哔哩哔哩_bilibili

简单来说,反向传播算法实现的就是一个调参的过程,我们建好神经网络,里面放入激活函数,偏置神经元,给权重w和偏置b神经元赋值,最终得出结果,放入损失函数,最后算出代价函数,然后依据梯度下降算法来调参(反向传播算法基于梯度下降)。我们根据代价函数J值的大小来判断函数的拟合效果。如果J值较大,函数拟合效果不好,我们就要使用反向传播算法,从层开始逐层向前调参,直到层。每次调参我们都要根据梯度下降算法,直到我们调到了最好的参数。

(调整参数的程度受到学习率的制约)

我们粗略地讲一讲为什么要进行反向传播

如果我们进行正向传播(就是下图箭头所指的方向)我们有两个输入,一个输出,我们进行两次偏导才能得到输出

如果我们进行反向传播(箭头方向和图中所指反向相反)我们只有一个输出,我们反向传播的话我们就可以得到两个输入,速度就是前向传播的2倍。

 

当然这个强大的算法也有自己的优缺点

优点:具有强大的调整能力

缺点:反向传播算法下的神经网络和容易’过拟合‘

缺点的解决方式:采用’提前停止‘策略,讲数据集分为训练集和验证集(一般训练集和验证集的比例为8:2),训练集用来调整参数,验证集用来估算误差,如果训练集的误差在降低的同时验证集的误差在升高,代表网络开始过于适应训练集,这时候我们就要停止训练。

7.bp神经网络

我们要区分bp神经网络和bp算法(反向传播算法)这两个概念,bp神经网络包含前向传播和反向传播这两个过程,在进行反向传播时,我们需要进行反向传播算法。

更多推荐

神经网络及其相关知识

本文发布于:2024-03-23 21:24:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742998.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:神经网络   相关知识

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!