算法工程师修仙之路:吴恩达机器学习(九)

本文深入探讨了吴恩达机器学习课程中的神经网络反向传播算法,详细解析了二类分类与多类分类下的代价函数,介绍了正则化处理,并通过具体的四层神经网络实例,阐述了反向传播算法的计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

吴恩达机器学习笔记及作业代码实现中文版

第七章 神经网络参数的反向传播算法


代价函数

  • 假设神经网络的训练样本有mmm个,每个包含一组输入xxx和一组输出信号yyyLLL表示神经网络层数, SIS_ISI表示每层的神经元个数(SlS_lSl表示输出层神经元个数),SLS_LSL代表最后一层中处理单元的个数。

  • 将神经网络的分类定义为两种情况:二类分类和多类分类。

    • 二类分类:SL=1S_L=1SL=1, y=0 or 1y=0 or 1y=0or1表示哪一类;
    • K类分类:SL=kS_L=kSL=k, yi=1y_i=1yi=1表示分到第iii类; (k>2)
  • 逻辑回归问题中我们的代价函数为:

    • J(θ)=−1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+λ2m∑j=1nθj2J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}log(h_\theta(x^{(i)})) + (1−y^{(i)}) log(1-h_\theta(x^{(i)}))]+\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2J(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+2mλj=1nθj2
    • 在逻辑回归中,我们只有一个输出变量,又称标量( scalar),也只有一个因变量yyy
  • 在神经网络中,我们可以有很多输出变量,hθ(x)ℎ_\theta(x)hθ(x)是一个维度为K的向量,并且我们训练集中的因变量也是同样维度的一个向量,因此我们的代价函数会比逻辑回归更加复杂一些:

    • J(Θ)=−1m[∑i=1m∑k=1k[yk(i)log(hΘ(x(i)))k+(1−yk(i))log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1Sl∑j=1Sl+1(Θji(l))2]J(\Theta)=-\frac{1}{m}[\sum_{i=1}^m\sum_{k=1}^k[y_k^{(i)}log(h_\Theta(x^{(i)}))_k + (1−y_k^{(i)}) log(1-(h_\Theta(x^{(i)}))_k)]+\frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{S_l}\sum_{j=1}^{S_l+1}(\Theta_{ji}^{(l)})^2]J(Θ)=m1[i=1mk=1k[yk(i)log(hΘ(x(i)))k+(1yk(i))log(1(hΘ(x(i)))k)]+2mλl=1L1i=1Slj=1Sl+1(Θji(l))2]
    • 这个看起来复杂很多的代价函数背后的思想还是一样的,我们希望通过代价函数来观察算法预测的结果与真实情况的误差有多大。
    • 唯一不同的是,对于每一行特征,我们都会给出K个预测,基本上我们可以利用循环,对每一行特征都预测K个不同结果,然后在利用循环在K个预测中选择可能性最高的一个,将其与yyy中的实际数据进行比较。
    • 正则化的那一项只是排除了每一层θ0\theta_0θ0后,每一层的θ\thetaθ矩阵的和。最里层的循环jjj循环所有的行(由Sl+1S_l+1Sl+1层的激活单元数决定),循环iii则循环所有的列,由该层(SlS_lSl层)的激活单元数所决定。即:hθ(x)ℎ_\theta(x)hθ(x)与真实值之间的距离为每个样本真实值减去每个类输出的加和,对参数进行优化的偏置项处理所有参数的平方和。

反向传播算法

  • 为了计算代价函数的偏导数∂J(Θ)∂Θij(l)\frac{\partial J(\Theta)}{\partial\Theta_{ij}^{(l)}}Θij(l)J(Θ),我们需要采用一种反向传播算法,也就是首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。

  • 假设我们的训练集只有一个实例(x(1),y(1)x^{(1)}, y^{(1)}x(1),y(1)),我们的神经网络是一个四层的神经网络,其中K=4,SL=4,L=4K=4,S_L=4,L=4K=4SL=4L=4

    • 前向传播算法:
      在这里插入图片描述
    • 我们从最后一层的误差开始计算,误差是激活单元的预测( ak(4)a_k^{(4)}ak(4))与实际值(y(k)y^{(k)}y(k))之间的误差,( k=1,2,...,kk=1, 2, ..., kk=1,2,...,k)。
    • 我们用δ\deltaδ来表示误差,则:δ(4)=a(4)−y\delta^{(4)} = a^{(4)} − yδ(4)=a(4)y
    • 我们利用这个误差值来计算前一层的误差:δ(3)=(Θ(3))Tδ(4)∗g′(z(3))\delta^{(3)} = (\Theta^{(3)})^T\delta^{(4)}∗g'(z^{(3)})δ(3)=(Θ(3))Tδ(4)g(z(3)),其中g′(z(3))g'(z^{(3)})g(z(3))是S形函数的导数,g′(z(3))=a(3)(1−a(3))g'(z^{(3)})=a^{(3)} (1−a^{(3)})g(z(3))=a(3)(1a(3))。而(θ(3))Tδ(4)(\theta^{(3)})^T\delta^{(4)}(θ(3))Tδ(4)则是权重导致的误差的和。
    • 下一步是继续计算第二层的误差:δ(2)=(Θ(2))Tδ(3)∗g′(z(2))\delta^{(2)} = (\Theta^{(2)})^T\delta^{(3)}∗g'(z^{(2)})δ(2)=(Θ(2))Tδ(3)g(z(2))
    • 因为第一层是输入变量,不存在误差。
  • 我们有了所有的误差的表达式后,便可以计算代价函数的偏导数了。

    • 假设λ=0\lambda=0λ=0,即我们不做任何正则化处理时有:∂J(Θ)∂Θij(l)=aj(l)δil+1\frac{\partial J(\Theta)}{\partial\Theta_{ij}^{(l)}}=a_j^{(l)}\delta_i^{l+1}Θij(l)J(Θ)=aj(l)δil+1
    • lll代表目前所计算的是第几层。
    • jjj代表目前计算层中的激活单元的下标,也将是下一层的第jjj个输入变量的下标。
    • iii代表下一层中误差单元的下标,是受到权重矩阵中第iii行影响的下一层中的误差单元的下标。
  • 如果我们考虑正则化处理,并且我们的训练集是一个特征矩阵而非向量。在上面的特殊情况中,我们需要计算每一层的误差单元来计算代价函数的偏导数。在更为一般的情况中,我们同样需要计算每一层的误差单元,但是我们需要为整个训练集计算误差单元,此时的误差单元也是一个矩阵,我们用Δij(l)\Delta_{ij}^{(l)}Δij(l)来表示这个误差矩阵。

    • lll层的第iii个激活单元受到第jjj个参数影响而导致的误差。
    • 首先用正向传播方法计算出每一层的激活单元,利用训练集的结果与神经网络预测的结果求出最后一层的误差,然后利用该误差运用反向传播法计算出直至第二层的所有误差。
    • 在求出了Δij(l)\Delta_{ij}^{(l)}Δij(l)之后,我们便可以计算代价函数的偏导数了,计算方法如下:
      • Dij(l)=1mΔij(l)+λΘij(l)D_{ij}^{(l)}=\frac{1}{m}\Delta_{ij}^{(l)}+\lambda\Theta_{ij}^{(l)}Dij(l)=m1Δij(l)+λΘij(l)j̸=0j\not=0j̸=0
      • Dij(l)=1mΔij(l)D_{ij}^{(l)}=\frac{1}{m}\Delta_{ij}^{(l)}Dij(l)=m1Δij(l)j=0j=0j=0;
标题基于SpringBoot+Vue的学生交流互助平台研究AI更换标题第1章引言介绍学生交流互助平台的研究背景、意义、现状、方法与创新点。1.1研究背景与意义分析学生交流互助平台在当前教育环境下的需求及其重要性。1.2国内外研究现状综述国内外在学生交流互助平台方面的研究进展与实践应用。1.3研究方法与创新点概述本研究采用的方法论、技术路线及预期的创新成果。第2章相关理论阐述SpringBoot与Vue框架的理论基础及在学生交流互助平台中的应用。2.1SpringBoot框架概述介绍SpringBoot框架的核心思想、特点及优势。2.2Vue框架概述阐述Vue框架的基本原理、组件化开发思想及与前端的交互机制。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue在学生交流互助平台中的整合方式及优势。第3章平台需求分析深入分析学生交流互助平台的功能需求、非功能需求及用户体验要求。3.1功能需求分析详细阐述平台的各项功能需求,如用户管理、信息交流、互助学习等。3.2非功能需求分析对平台的性能、安全性、可扩展性等非功能需求进行分析。3.3用户体验要求从用户角度出发,提出平台在易用性、美观性等方面的要求。第4章平台设计与实现具体描述学生交流互助平台的架构设计、功能实现及前后端交互细节。4.1平台架构设计给出平台的整体架构设计,包括前后端分离、微服务架构等思想的应用。4.2功能模块实现详细阐述各个功能模块的实现过程,如用户登录注册、信息发布与查看、在线交流等。4.3前后端交互细节介绍前后端数据交互的方式、接口设计及数据传输过程中的安全问题。第5章平台测试与优化对平台进行全面的测试,发现并解决潜在问题,同时进行优化以提高性能。5.1测试环境与方案介绍测试环境的搭建及所采用的测试方案,包括单元测试、集成测试等。5.2测试结果分析对测试结果进行详细分析,找出问题的根源并
内容概要:本文详细介绍了一个基于灰狼优化算法(GWO)优化的卷积双向长短期记忆神经网络(CNN-BiLSTM)融合注意力机制的多变量多步时间序列预测项目。该项目旨在解决传统时序预测方法难以捕捉非线性、复杂时序依赖关系的问题,通过融合CNN的空间特征提取、BiLSTM的时序建模能力及注意力机制的动态权重调节能力,实现对多变量多步时间序列的精准预测。项目不仅涵盖了数据预处理、模型构建与训练、性能评估,还包括了GUI界面的设计与实现。此外,文章还讨论了模型的部署、应用领域及其未来改进方向。 适合人群:具备一定编程基础,特别是对深度学习、时间序列预测及优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①用于智能电网负荷预测、金融市场多资产价格预测、环境气象多参数预报、智能制造设备状态监测与预测维护、交通流量预测与智慧交通管理、医疗健康多指标预测等领域;②提升多变量多步时间序列预测精度,优化资源调度和风险管控;③实现自动化超参数优化,降低人工调参成本,提高模型训练效率;④增强模型对复杂时序数据特征的学习能力,促进智能决策支持应用。 阅读建议:此资源不仅提供了详细的代码实现和模型架构解析,还深入探讨了模型优化和实际应用中的挑战与解决方案。因此,在学习过程中,建议结合理论与实践,逐步理解各个模块的功能和实现细节,并尝试在自己的项目中应用这些技术和方法。同时,注意数据预处理的重要性,合理设置模型参数与网络结构,控制多步预测误差传播,防范过拟合,规划计算资源与训练时间,关注模型的可解释性和透明度,以及持续更新与迭代模型,以适应数据分布的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值