人脸识别(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

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


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

相关文章
|
2月前
|
机器学习/深度学习 并行计算 PyTorch
图像检测【YOLOv5】——深度学习
Anaconda的安装配置:(Anaconda是一个开源的Python发行版本,包括Conda、Python以及很多安装好的工具包,比如:numpy,pandas等,其中conda是一个开源包和环境管理器,可以用于在同一个电脑上安装不同版本的软件包,并且可以在不同环境之间切换,是深度学习的必备平台。) 一.Anaconda安装配置. 1.首先进入官网:https://repo.anaconda.com,选择View All Installers. 2.打开看到的界面是Anaconda的所以安装包版本,Anaconda3就代表是Python3版本,后面跟的是发行日期,我选择了最近的2022
67 28
|
11月前
|
机器学习/深度学习
BP神经网络应用案例(二)
BP神经网络应用案例
|
11月前
|
机器学习/深度学习 人工智能 知识图谱
BP神经网络应用案例(一)
BP神经网络应用案例
221 0
|
机器学习/深度学习 文字识别
基于BP神经网络进行手写体识别(Matlab代码实现)
基于BP神经网络进行手写体识别(Matlab代码实现)
136 0
|
机器学习/深度学习 运维 算法
深度学习实战(九):使用自动编码器生成图像
除了一小部分的算法可以。这就是所谓的无监督学习(Unsupervised Learning)。无监督学习通过自己的方式从未标记的数据中推断出一个函数。最著名的无监督算法是K-Means,它被广泛用于将数据聚类,而PCA则是降维的首选方案。K-Means和PCA可能是有史以来最好的两种机器学习算法。而让它们更出色的是它们的简单性。如果你掌握了它们,你就会觉得:“为什么我没有早点想到呢?
211 0
深度学习实战(九):使用自动编码器生成图像
|
机器学习/深度学习 存储 算法
PyTorch深度学习实战 | 基于ResNet的人脸关键点检测
人脸关键点检测指的是用于标定人脸五官和轮廓位置的一系列特征点的检测,是对于人脸形状的稀疏表示。关键点的精确定位可以为后续应用提供十分丰富的信息。因此,人脸关键点检测是人脸分析领域的基础技术之一。许多应用场景(如人脸识别、人脸三维重塑、表情分析等)均将人脸关键点检测作为其前序步骤来实现。本文将通过深度学习的方法来搭建一个人脸关键点检测模型。 1995年,Cootes提出 ASM(active shape model) 模型用于人脸关键点检测,掀起了一波持续多年的研究浪潮。这一阶段的检测算法常常被称为传统方法。2012年,AlexNet 在 ILSVRC 中力压榜眼夺冠,将深度学习带进人们的视野。
753 0
PyTorch深度学习实战 | 基于ResNet的人脸关键点检测
|
机器学习/深度学习 传感器 人工智能
【语音识别】基于BP神经网络实现语音特征信号分类附matlab代码
【语音识别】基于BP神经网络实现语音特征信号分类附matlab代码
|
机器学习/深度学习 算法 计算机视觉
CV学习笔记-BP神经网络训练实例(含详细计算过程与公式推导)
CV学习笔记-BP神经网络训练实例(含详细计算过程与公式推导)
132 0
CV学习笔记-BP神经网络训练实例(含详细计算过程与公式推导)
|
机器学习/深度学习 数据可视化 TensorFlow
|
机器学习/深度学习 传感器 移动开发
【身份证识别】基于BP神经网络实现身份证识别附matlab代码
【身份证识别】基于BP神经网络实现身份证识别附matlab代码