【机器学习】神经网络通过梯度下降学习的步骤以及前向传播的详细步骤

news2024/9/20 10:46:24

引言

神经网络中的梯度下降是一种优化算法,用于训练网络,即调整网络的权重和偏置,以最小化损失函数

文章目录

  • 引言
  • 一、神经网络通过梯度下降学习的步骤
    • 1.1 初始化网络参数
    • 1.2 前向传播(Forward Propagation)
    • 1.3 计算损失(Loss)
    • 1.4 反向传播(Back Propagation)
    • 1.5 参数更新
    • 1.6 迭代
    • 1.7 详细说明反向传播中的梯度计算
    • 1.8 总结
  • 二、前向传播
    • 2.1 输入层
    • 2.2 第一层(隐藏层或输入层)
    • 2.3 后续隐藏层
    • 2.4 输出层
    • 2.5 总结

在这里插入图片描述

一、神经网络通过梯度下降学习的步骤

1.1 初始化网络参数

  • 随机初始化权重 W W W 和偏置 b b b
  • 这些参数将随着训练过程的进行而更新

1.2 前向传播(Forward Propagation)

  • 对于每个训练样本 x x x 和其对应的标签 y y y
    • 输入层:将输入 x x x传递到网络的第一层。
    • 隐藏层
      • 计算加权输入: z [ l ] = W [ l ] a [ l − 1 ] + b [ l ] z^{[l]} = W^{[l]}a^{[l-1]} + b^{[l]} z[l]=W[l]a[l1]+b[l],其中 l l l 表示层数, a [ l − 1 ] a^{[l-1]} a[l1] 是前一层激活输出。
      • 应用激活函数: a [ l ] = σ ( z [ l ] ) a^{[l]} = \sigma(z^{[l]}) a[l]=σ(z[l]),其中 σ \sigma σ 是激活函数,如ReLUSigmoidTanh
    • 输出层
      • 计算加权输入和激活输出,对于分类问题,通常使用Softmax函数计算最终输出

1.3 计算损失(Loss)

  • 使用损失函数计算预测输出 y ^ \hat{y} y^和实际标签 y y y之间的差异。
  • 常见的损失函数包括:
    • 对于回归问题:均方误差(MSE) L ( y , y ^ ) = 1 2 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 L(y, \hat{y}) = \frac{1}{2m}\sum_{i=1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 L(y,y^)=2m1i=1m(y(i)y^(i))2
    • 对于分类问题:交叉熵损失 L ( y , y ^ ) = − 1 m ∑ i = 1 m y ( i ) log ⁡ ( y ^ ( i ) ) L(y, \hat{y}) = -\frac{1}{m}\sum_{i=1}^{m}y^{(i)}\log(\hat{y}^{(i)}) L(y,y^)=m1i=1my(i)log(y^(i))

1.4 反向传播(Back Propagation)

  • 计算损失函数关于输出层激活的梯度。
  • 逆向遍历网络,计算每一层的梯度:
    • 对于输出层:
      • KaTeX parse error: Can't use function '\)' in math mode at position 58: …igma'(z^{[L]}) \̲)̲,其中 \( \nabla_{…是损失函数关于 a [ L ] a^{[L]} a[L]的梯度, σ ′ \sigma' σ是激活函数的导数。
    • 对于隐藏层:
      • δ [ l ] = ( ( W [ l + 1 ] ) T δ [ l + 1 ] ) ⋅ σ ′ ( z [ l ] ) \delta^{[l]} = ((W^{[l+1]})^T \delta^{[l+1]}) \cdot \sigma'(z^{[l]}) δ[l]=((W[l+1])Tδ[l+1])σ(z[l])
    • 计算损失函数关于参数的梯度:
      • ∂ L ∂ W [ l ] = 1 m δ [ l ] ( a [ l − 1 ] ) T \frac{\partial L}{\partial W^{[l]}} = \frac{1}{m} \delta^{[l]} (a^{[l-1]})^T W[l]L=m1δ[l](a[l1])T
      • ∂ L ∂ b [ l ] = 1 m ∑ i = 1 m δ [ l ] ( i ) \frac{\partial L}{\partial b^{[l]}} = \frac{1}{m} \sum_{i=1}^{m} \delta^{[l] (i)} b[l]L=m1i=1mδ[l](i)

1.5 参数更新

  • 使用梯度下降更新权重和偏置:
    - W [ l ] = W [ l ] − α ∂ L ∂ W [ l ] W^{[l]} = W^{[l]} - \alpha \frac{\partial L}{\partial W^{[l]}} W[l]=W[l]αW[l]L
  • b [ l ] = b [ l ] − α ∂ L ∂ b [ l ] b^{[l]} = b^{[l]} - \alpha \frac{\partial L}{\partial b^{[l]}} b[l]=b[l]αb[l]L
  • 其中, α \alpha α是学习率

1.6 迭代

  • 重复步骤2到5,直到满足停止条件,如达到预定的迭代次数、损失低于某个阈值或验证集上的性能不再提升

1.7 详细说明反向传播中的梯度计算

  • 输出层梯度:对于不同的损失函数,计算方式不同。例如,对于交叉熵损失, δ [ L ] = y ^ − y \delta^{[L]} = \hat{y} - y δ[L]=y^y
  • 隐藏层梯度:通过链式法则,将输出层的梯度传递回前一层,计算每一层的梯度
  • 参数梯度:最终计算得到的梯度用于更新权重和偏置

1.8 总结

通过这个过程,神经网络能够通过不断调整参数来学习数据中的模式,并减少预测误差

二、前向传播

前向传播(Forward Propagation)是神经网络中用于计算网络输出的一系列步骤。在这个过程中,输入数据通过网络层传递,每层都对数据进行变换,直到到达输出层。以下是前向传播的详细步骤:

2.1 输入层

  • 输入数据:网络接收输入数据 X X X,它是一个维度为 [ n , d ] [n, d] [n,d]的矩阵,其中 n n n 是样本数量, d d d 是每个样本的特征数量

2.2 第一层(隐藏层或输入层)

  • 加权输入:计算每个神经元的加权输入 Z [ 1 ] Z^{[1]} Z[1]。这通过将输入 X X X与权重矩阵 W [ 1 ] W^{[1]} W[1]相乘,并加上偏置向量 b [ 1 ] b^{[1]} b[1]来完成。
    Z [ 1 ] = W [ 1 ] X + b [ 1 ] Z^{[1]} = W^{[1]}X + b^{[1]} Z[1]=W[1]X+b[1]
  • 激活函数:将加权输入 Z [ 1 ] Z^{[1]} Z[1]通过激活函数 σ \sigma σ 来获得该层的激活输出 A [ 1 ] A^{[1]} A[1]
    A [ 1 ] = σ ( Z [ 1 ] ) A^{[1]} = \sigma(Z^{[1]}) A[1]=σ(Z[1])
    常用的激活函数包括ReLUSigmoidTanh

2.3 后续隐藏层

  • 对于网络的每一个隐藏层 l ( l = 2 , 3 , . . . , L − 1 ) l( l = 2, 3, ..., L-1 ) l(l=2,3,...,L1,其中 L L L是网络的总层数:
    • 加权输入:计算每个神经元的加权输入 Z [ l ] Z^{[l]} Z[l],这是通过将前一层的激活输出 A [ l − 1 ] A^{[l-1]} A[l1]与权重矩阵 W [ l ] W^{[l]} W[l]相乘,并加上偏置向量 b [ l ] b^{[l]} b[l]来完成的。
      Z [ l ] = W [ l ] A [ l − 1 ] + b [ l ] Z^{[l]} = W^{[l]}A^{[l-1]} + b^{[l]} Z[l]=W[l]A[l1]+b[l]
    • 激活函数:将加权输入 Z [ l ] Z^{[l]} Z[l]通过激活函数 σ \sigma σ 来获得该层的激活输出 A [ l ] A^{[l]} A[l]
      A [ l ] = σ ( Z [ l ] ) A^{[l]} = \sigma(Z^{[l]}) A[l]=σ(Z[l])

2.4 输出层

  • 对于网络的输出层 L L L
    • 加权输入:计算每个神经元的加权输入 Z [ L ] Z^{[L]} Z[L],这是通过将最后一层的激活输出 A [ L − 1 ] A^{[L-1]} A[L1]与权重矩阵 W [ L ] W^{[L]} W[L]相乘,并加上偏置向量 b [ L ] b^{[L]} b[L] 来完成的。
      Z [ L ] = W [ L ] A [ L − 1 ] + b [ L ] Z^{[L]} = W^{[L]}A^{[L-1]} + b^{[L]} Z[L]=W[L]A[L1]+b[L]
    • 激活函数:根据问题的性质,选择合适的激活函数。对于分类问题,通常使用Softmax函数来获得概率分布输出 Y ^ \hat{Y} Y^
      Y ^ = softmax ( Z [ L ] ) \hat{Y} = \text{softmax}(Z^{[L]}) Y^=softmax(Z[L])
      其中,Softmax函数将 Z [ L ] Z^{[L]} Z[L]转换为概率分布,使得每个输出 y ^ [ i ] \hat{y}^{[i]} y^[i] 都在0和1之间,并且所有输出之和为1

2.5 总结

前向传播的整个过程可以总结为以下步骤:

  1. 对于每个层 l l l,计算加权输入 Z [ l ] Z^{[l]} Z[l]
  2. 应用激活函数 σ \sigma σ 来获得激活输出 A [ l ] A^{[l]} A[l]
  3. 重复步骤1和2,直到到达输出层
  4. 在输出层应用适当的激活函数(如Softmax)以获得最终输出。

前向传播是神经网络进行预测的基础,它将输入数据转换为输出预测,为后续的反向传播和参数更新提供了必要的信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优化大量数据导出到Excel的内存消耗(二):如果数据超出Excel单表上限,则进行分表

优化前:优化大量数据导出到Excel的内存消耗_大文件异步导出 内存占用高-CSDN博客 写Excel文件报错:Invalid row number (1048576) outside allowable range (0..1048575) 写入Excel时遇到IllegalArgumentException,原因是超出允许的最大行数…

哪些岗位在拿着年薪百万?

​根据脉脉数据研究院 2020 年 8 月 2 日最新发布的《中国高端人才透视2020》(以下简称“报告”),高端人才占比的最多的行业,其实不是互联网。 报告显示,以高薪金领人才相比于该行业的整体人才数量的占比来计算,排名前三的是金融、…

【分割大模型】SAM2(Segment Anything2)新的分割一切大模型(原理+安装+代码)

文章目录 前言1.特点2.结构3.应用场景 一、原理1.1 引言1.2 任务:可提示的视觉分割1.3 模型1.4 数据引擎 与 SA-V数据集 二、安装与使用 项目地址:https://github.com/facebookresearch/segment-anything-2 前言 Segment Anything Model 2(S…

使用SSL认证访问操作手册

完整版 【金山文档 | WPS云文档】 使用SSL认证访问操作手册 https://kdocs.cn/l/cuxGfHD17eEw

vue2.0和vue3.0区别

vue2.0和vue3.0区别 双向数据绑定的原理改变:‌ Vue2使用Object.defineProperty对数据进行劫持,‌结合发布订阅模式实现双向数据绑定,‌而Vue3则采用了ES6的Proxy API对数据进行代理,‌提供了更多的拦截操作,‌能够监…

KBL406-ASEMI、AI智能专用整流桥KBL406

编辑:ll KBL406-ASEMI、AI智能专用整流桥KBL406 型号:KBL406 品牌:ASEMI 封装:KBL-4 批号:2024 现货:50000 正向电流(Id):4A 反向耐压(VRRM&#xff…

【智能流体力学】ANSYS Fluent流体仿真基础深度学习驱动的前期准备:CAX计算机辅助集成技术

目录 一、CAX计算机辅助集成技术二、计算机辅助工程(CAE)三、SCDM (Species Concentration Display Model) 显示和分析物质浓度分布的模型1. **SCDM概述**2. **主要功能**3. **功能特点**4. **使用步骤**5. **应用实例**6. **优点与限制**四、行业应用五、Fluent 软件功能1. …

net.sf.jsqlparser.statement.select.SelectItem

今天一启动项目,出现了这个错误,仔细想了想,应该是昨天合并代码,导致的mybatis-plus版本冲突,以及分页PageHelper版本不兼容 可以看见这个我是最下边的 Caused by 报错信息,这个地方提示我 net .s…

Java面试题--JVM大厂篇之实战解析:如何通过CMS GC优化大规模Java应用的响应时间

引言: 下午好,各位Java开发者!在实际项目中,性能优化一直是我们关注的重点,特别是在面对大规模Java应用时,响应时间的优化更是至关重要。今天,我们将通过实战案例,深入解析如何利用C…

【JAVA多线程】JDK线程同步工具类:Semaphore、CountDownLatch、CyclicBarrier

目录 1.可能会遇到的线程协作场景 2.Semaphore 3.CountDownLatch 4.CyclicBarrier 1.可能会遇到的线程协作场景 在并发编程中,线程除了独自向前运行,还可能相互之间要进行协作,以保证完成最终总的目标。可能会遇到的几种任务之间的协作&…

『 C++ 』单例模式与IO流

文章目录 单例模式饿汉加载的单例模式实现懒汉加载的单例模式实现 IO流类型之间的转换 单例模式 单例模式是一种创建型设计模式; 确保一个类在应用程序的生命周期内仅有一个实例并提供一个全局访问点来访问该实例; 单例模式主要目的是为了控制某些类的实例化以避免产生多个实例…

Java面试--框架--Spring MVC

Spring MVC 目录 Spring MVC1.spring mvc简介2.spring mvc实现原理2.1核心组件2.2工作流程 3.RESTful 风格4.拦截器4.1过滤器、监听器、拦截器的对比4.2 拦截器基本概念4.3 拦截器的实现 1.spring mvc简介 Spring MVC是一款由Spring Framework 提供的 web组件,实现…

MySQL-MVCC举例说明

在数据库系统中,多版本并发控制(MVCC, Multi-Version Concurrency Control) 是一种用于提高并发性能的机制,它允许多个事务同时读取和写入数据,而不会产生锁等待和阻塞的问题。MySQL 的 InnoDB 存储引擎广泛使用了 MVC…

C#MVC返回DataTable到前端展示。

很久没写博客了,闭关太久,失踪人口回归,给诸位道友整点绝活。 交代下背景:要做一个行转列的汇总统计,而且,由于是行转列,列的数量不固定,所以,没法使用正常的SqlSugar框…

C++入门基础知识13

C 的关键字(接上一篇博文)!! 10. const_cast用法: 该运算符用来修改类型的 const 或 volatile 属性。除了 const 或 volatile 修饰之外, type_id 和 expression 的类型是一样的。常量指针被转化成非常量指针…

催收业务怎么提高接通率

提高催收呼叫业务的接通率是一个综合性的任务,需要从多个方面进行优化。以下是一些具体的策略和建议: 一、优化呼叫时间与频次 1. 选择合适的呼叫时间:通过分析目标客户的活跃时段,选择他们最可能接听电话的时间进行呼叫…

iOS Object-C 创建类别(Category) 与使用

有时候使用系统给出类或者第三方的类,但是呢它们自带的属性和方法又太少,不够我们的业务使用,这时候就需要给“系统的类或者第三方类”创建一个类别(Category),把自己的想添加的属性和方法写进来. Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的 一:创建Ca…

零碳工厂:我国工业转型升级的绿色引擎

面对全球气候变化的严峻挑战,我国提出了碳达峰和碳中和的宏伟目标。零碳工厂作为工业领域实现这一目标的重要途径,正成为推动我国工业转型升级的绿色引擎。本文将提供一站式零碳工厂服务指南,帮助企业迈向零碳排放,共同构建绿色低…

零售企业做好人事管理并不难!智能化人事管理平台解决企业三大痛点!

在零售行业的激烈竞争中,优秀的人事管理策略是企业成功的关键。然而,传统的人事管理模式常常面临人员分散、流程繁琐、跨部门协作困难等挑战。为了应对这些问题,一站式人事管理平台的出现,为企业提供了数字化的解决方案。本文将探…

[论文泛读]zkLLM: Zero Knowledge Proofs for Large Language models

文章目录 介绍实验数据实验数据1实验数据2实验数据3 介绍 这篇文章发在CCS2024,CCS是密码学领域的顶会。作者是来自加拿大的University of Waterloo。文章对大语言模型像GPT和LLM等大语言模型实现了零知识可验证执行,但不涉及零知识可验证训练。个人觉得…