人脸识别(2)-反向传播(BP)

简介: 人脸识别(2)-反向传播(BP)

反向传播(BP)

上一篇文章讲了感应器,将把这些单独的单元按照一定的规则相互连接在一起形成神经网络,从而获得了强大的学习能力。称之为反向传播算法

反向传播算法:计算输出层结果与真实值之间的偏差来进行逐层调节参数(逐层条件参数一般用到梯度下降算法)

首先我们得明白神经网络的参数训练是一个不断迭代的过程

网络结构已知时,参数训练的过程如下:

image.png

通过给定的数据和其对应的便签作为输入进行训练,通过前向运算计算出实际结果,实际结果与标签的差距我们称之为loss(这里loss的形式是多种多样的,比如一次方,二次方等等),通过梯度下降算法不断添加参数,我们期望不断地降低loss。当loss最小时,我们找到了一组最优的参数组合。

参数优化是神经网络中非常重要的一块部分,我们一般是通过导数和学习率来优化,这个部分我们之后再讲。

我们来看一个参数优化的函数:

loss = min_W||WX - Y||^2minW∣∣WXY2

其中W为参数项,WX为实际结果,Y为样本X的标签,这个函数计算了真实结果与预测结果的差异,我们希望其越小越好。

怎么求其最小呢,我们可以直接求解,对上述函数对W进行求导,此次X,Y为已知项。

也可以利用梯度下降的算法,下降重大讲解一下梯度算法

梯度

梯度:函数在A点无数个变化方向中变化最快的那个方向。(梯度生而最快)

梯度就定义为偏导向量的方向。沿着偏导向量方向的方向导数f(x,y)能够取得最大值。(记不得的可以翻大学高数课本)

因此我们在不断的迭代计算中,每一次沿着负梯度方向进行更新参数,就能够达到最低点。

比如下面的一元函数凹曲线:

image.png

如果我们沿着函数导数方向走,可以走到最低点。

当然如果函数不是标准的函数:

image.png

会出现多个最低点

梯度下降算法

梯度下降算法 就是沿着导数下降的方向,进行参数优化

公式:x_{new} = x_{old} - \eta \Delta f(x)xnew=xoldηΔf(x)

其中,\DeltaΔ是梯度算子,\Delta f(x)Δf(x)就是指的梯度。\etaη是步长,也称作学习率。(梯度上升算法:顾名思义,把减号改成加号即可)

参数优化中,选择合适的步长/学习率 非常重要

如果步长\etaη太大,会出现

image.png

如果从A点出发,会错过B点,到达C点,再到达D点,再到达F点。这种情况反映到loss上是,loss不断震荡,无法趋于最小。

反正太小也不好,那样学习效率太低,需要过多的训练,所需时间过长。所以保持一个合适的步长非常重要。

一般步长一开始0.01到最后调整到0.001(这只是举个通用的例子,还有许多情况)

局部最优解

我们必须明白使用梯度下降算法,并不能保证一定能找到全局最优解。很可能是局部最优解,关键是优化函数的问题,初始化值会影响找到的最优解

image.png

反向传播就讲到这了,后面会讲卷积神经网络相关知识。


本篇文章到这里就结束啦,如果喜欢的话,多多支持,欢迎关注!

相关文章
|
7月前
|
机器学习/深度学习 算法
【MATLAB】GA_BP神经网络时序预测算法
【MATLAB】GA_BP神经网络时序预测算法
152 8
|
机器学习/深度学习
BP神经网络应用案例(二)
BP神经网络应用案例
|
机器学习/深度学习 人工智能 知识图谱
BP神经网络应用案例(一)
BP神经网络应用案例
226 0
|
机器学习/深度学习 传感器 算法
TSO-BP分类预测 | Matlab金枪鱼算法优化BP神经网络分类预测
TSO-BP分类预测 | Matlab金枪鱼算法优化BP神经网络分类预测
|
机器学习/深度学习 传感器 算法
FOA-BP分类预测 | Matlab果蝇优化算法优化BP神经网络分类预测
FOA-BP分类预测 | Matlab果蝇优化算法优化BP神经网络分类预测
|
机器学习/深度学习 文字识别
基于BP神经网络进行手写体识别(Matlab代码实现)
基于BP神经网络进行手写体识别(Matlab代码实现)
147 0
|
机器学习/深度学习 传感器 数据采集
【BP分类】基于BP神经网络的数据分类预测附matlab代码
【BP分类】基于BP神经网络的数据分类预测附matlab代码
|
机器学习/深度学习 传感器 算法
BP预测 | MATLAB实现FA-BP多输入单输出回归预测(萤火虫算法优化BP神经网络)
BP预测 | MATLAB实现FA-BP多输入单输出回归预测(萤火虫算法优化BP神经网络)
BP预测 | MATLAB实现FA-BP多输入单输出回归预测(萤火虫算法优化BP神经网络)
|
机器学习/深度学习 传感器 算法
【BP分类】基于ADABOOST-BP算法实现数据分类附matlab代码
【BP分类】基于ADABOOST-BP算法实现数据分类附matlab代码
|
机器学习/深度学习 存储 算法
PyTorch深度学习实战 | 基于ResNet的人脸关键点检测
人脸关键点检测指的是用于标定人脸五官和轮廓位置的一系列特征点的检测,是对于人脸形状的稀疏表示。关键点的精确定位可以为后续应用提供十分丰富的信息。因此,人脸关键点检测是人脸分析领域的基础技术之一。许多应用场景(如人脸识别、人脸三维重塑、表情分析等)均将人脸关键点检测作为其前序步骤来实现。本文将通过深度学习的方法来搭建一个人脸关键点检测模型。 1995年,Cootes提出 ASM(active shape model) 模型用于人脸关键点检测,掀起了一波持续多年的研究浪潮。这一阶段的检测算法常常被称为传统方法。2012年,AlexNet 在 ILSVRC 中力压榜眼夺冠,将深度学习带进人们的视野。
772 0
PyTorch深度学习实战 | 基于ResNet的人脸关键点检测