十一、神经网络的成本函数和误差反向传播算法

简介: 十一、神经网络的成本函数和误差反向传播算法

1、Cost Function


对于逻辑回归来说,归一化之后的成本函数形式如下所示:

13dd3c1dfc1747438b178367f910717c.png

神经网络的成本函数是上述逻辑回归成本函数的一般泛化,其形式如下所示:

378019412d9b4307ae34ffb7bd6cab5f.png


其中 L L L表示神经网络的层数, s l s_l sl表示第 l l l层中的神经元的个数, K K K表示输出层神经元的个数,即分类的数量。注意归一化项中不包含偏置项的归一化处理。



2、反向传播算法-Backward Algorithm



目标是寻找成本函数的最小值,反向传播算法的目的是通过误差反向传播的方式来求解需要成本函数 J ( θ ) J(\theta) J(θ)关于预测参数 θ \theta θ的导数。误差反向传播的步骤如下所示:

61d3d81ca2e4419b85d4945c09704655.png


δ(L)的计算方式如下所示:

8bba38cd897a4dcc9740b1b9485579ca.png


最终近似求解偏导数的方式如下所示:

c405921387a74b108e0fde32f7eca5ae.png



其中, D D D即为成本函数 J Θ的近似偏导数:4a9bc1cfa4554341ae012bdd5e4d37d5.png


3、反向传播在实践中的应用


在进行正向传播求激活值或者反向传播求误差值时,权重矩阵一般采用矩阵的形式;但是在进行参数优化时,一般采用长向量的形式,所以在计算时需要灵活转换。反向传播机制下参数学习算法的流程如下所示:b723388d73c449b5a9ebb099815a7485.png



3.1 梯度检验-Gradient Checking


为了保证梯度计算的正确性,通常使用梯度检验来测试算法。使用割线的斜率代替导数的值时近似计算导数的常规思路:

ef178974527544778b5d3c683ccd8054.png


使用割线斜率检测误差反向传播计算的梯度的准确性:

8ef0b4acfd4d4e929f8036d193b012f1.png


当检验完反向传播计算的梯度没有问题之后,在训练模型参数时,需要将检验梯度正确性与否的代码屏蔽掉,否则训练的过程将非常缓慢,因为误差反向传播的计算速度远高于通过割线计算梯度的速度。



3.2 随机初始化-Random Initialization


若将参数 Θ \Theta Θ开始全部设置为0,则在每一次迭代之后,由同一个神经元连接的不同子神经元的输入结果 z z z全部相同,则使得神经网络探索的特征数量下降,会降低神经网络的性能。


为了使神经网络更加有效,通常采用随机初始化参数 Θ 的方式,将 Θ取值为 [ − ϵ , ϵ ] 中的任意值。随机初始化也叫作打破对称性-Symmetry Breaking。




4、神经网络算法整体流程


1、选择一个神经网络结构-神经元之间的连接方式

90417b8d0e8a41f9824459ded8599232.png


输入单元的数量即为:特征数量 x ( i ) x^{(i)} x(i),输出单元的数量即为:分类的个数;隐藏层若多于一层,则每一层应该含有相同数量的神经元,同时通常来说,层数越多,模型效果越好,但是相对的计算时间会加长。对于每一个隐藏层的神经元个数,其通常为输入特征数量的2-3倍。


2、训练一个神经网络,包含以下六步:


2.1 随机初始化权重,通常初始化为接近0的数;


2.2 执行前向传播,对于每一个输入 x ( i ) x(i) x(i)获得其输出结果 hΘ(x(i))


2.3 求解成本 J(Θ)


2.4 执行误差反向传播来计算偏导数∂Θ(jk)(l)∂J(Θ)

image.png


2.5 使用梯度检验来检查通过误差反向传播计算的梯度和通过数值估计计算的梯度是否近似相同,若相同,则将这部分代码注释掉,在训练模型参数时不进行使用


2.6 使用梯度下降或者高级优化方法来由于以 Θ 为参数的成本函数 J(Θ)












相关文章
|
19天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
212 55
|
10天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
143 80
|
3天前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
6天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。
|
4天前
|
算法 网络协议 Python
探秘Win11共享文件夹之Python网络通信算法实现
本文探讨了Win11共享文件夹背后的网络通信算法,重点介绍基于TCP的文件传输机制,并提供Python代码示例。Win11共享文件夹利用SMB协议实现局域网内的文件共享,通过TCP协议确保文件传输的完整性和可靠性。服务器端监听客户端连接请求,接收文件请求并分块发送文件内容;客户端则连接服务器、接收数据并保存为本地文件。文中通过Python代码详细展示了这一过程,帮助读者理解并优化文件共享系统。
|
15天前
|
JSON 算法 Java
Nettyの网络聊天室&扩展序列化算法
通过本文的介绍,我们详细讲解了如何使用Netty构建一个简单的网络聊天室,并扩展序列化算法以提高数据传输效率。Netty的高性能和灵活性使其成为实现各种网络应用的理想选择。希望本文能帮助您更好地理解和使用Netty进行网络编程。
34 12
|
22天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
25天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
2天前
|
算法
基于梯度流的扩散映射卡尔曼滤波算法的信号预处理matlab仿真
本项目基于梯度流的扩散映射卡尔曼滤波算法(GFDMKF),用于信号预处理的MATLAB仿真。通过设置不同噪声大小,测试滤波效果。核心代码实现数据加载、含噪信号生成、扩散映射构建及DMK滤波器应用,并展示含噪与无噪信号及滤波结果的对比图。GFDMKF结合非线性流形学习与经典卡尔曼滤波,提高对非线性高维信号的滤波和跟踪性能。 **主要步骤:** 1. 加载数据并生成含噪测量值。 2. 使用扩散映射捕捉低维流形结构。 3. 应用DMK滤波器进行状态估计。 4. 绘制不同SNR下的轨迹示例。
|
7天前
|
机器学习/深度学习 算法 索引
单目标问题的烟花优化算法求解matlab仿真,对比PSO和GA
本项目使用FW烟花优化算法求解单目标问题,并在MATLAB2022A中实现仿真,对比PSO和GA的性能。核心代码展示了适应度计算、火花生成及位置约束等关键步骤。最终通过收敛曲线对比三种算法的优化效果。烟花优化算法模拟烟花爆炸过程,探索搜索空间,寻找全局最优解,适用于复杂非线性问题。PSO和GA则分别适合快速收敛和大解空间的问题。参数调整和算法特性分析显示了各自的优势与局限。