【AI前沿】深度学习基础:训练神经网络

文章目录

  • 📑前言
  • 一、前向传播与反向传播
    • 1.1 前向传播(Forward Propagation)
    • 1.2 反向传播(Backpropagation)
  • 二、损失函数和优化算法
    • 2.1 损失函数(Loss Function)
    • 2.2 优化算法(Optimization Algorithms)
  • 三、梯度下降法及其变种
    • 3.1 梯度下降法(Gradient Descent)
    • 3.2 梯度下降法的变种
  • 四、小结

📑前言

深度学习是当今人工智能领域的核心技术,尤其在图像处理、语音识别、自然语言处理等领域表现出色。要理解深度学习,首先需要掌握神经网络的训练过程,包括前向传播、反向传播、损失函数、优化算法以及梯度下降法及其变种。

一、前向传播与反向传播

1.1 前向传播(Forward Propagation)

前向传播是神经网络的计算过程,通过输入层传递到输出层。每个神经元接收输入信号,进行加权求和,并通过激活函数得到输出。这个过程层层递进,最终在输出层得到预测结果。以下是一个简单的前向传播过程的步骤:

  1. 输入层: 输入数据 x 传入网络。
  2. 隐藏层: 每个隐藏层节点在这里插入图片描述接收上一层节点的输出,并进行加权求和:image.png其中 image.png是权重,image.png是偏置。
  3. 激活函数: 通过激活函数image.png,将线性组合结果非线性化。
  4. 输出层: 类似隐藏层的计算方式,最终输出预测结果。

通过前向传播,神经网络可以将输入映射到输出,这一过程是通过层层传递的方式实现的。

1.2 反向传播(Backpropagation)

反向传播是神经网络训练的核心算法,用于调整网络的权重和偏置,以最小化预测结果与真实值之间的误差。其基本步骤如下:

  1. 计算损失: 使用损失函数计算预测输出image.png与真实标签 image.png 之间的误差 image.png
  2. 反向传递误差: 从输出层开始,逐层向后计算每个神经元的误差,并传递到前一层。
  3. 计算梯度: 对每个权重和偏置,计算损失函数关于它们的梯度 image.png
  4. 更新权重和偏置: 使用梯度下降法或其变种,更新网络的权重和偏置,使得损失函数值逐步减小。

反向传播的核心在于链式法则,通过逐层计算和传播梯度,最终调整所有参数,使网络的预测能力不断提高。

二、损失函数和优化算法

2.1 损失函数(Loss Function)

损失函数是衡量神经网络预测值与真实值之间差距的指标。常见的损失函数有:

  • 均方误差(MSE): 主要用于回归问题,计算预测值与真实值之间的平方误差平均值。
    image.png
  • 交叉熵损失(Cross-Entropy Loss): 主要用于分类问题,衡量预测概率分布与真实分布之间的差异。
    image.png

2.2 优化算法(Optimization Algorithms)

优化算法用于调整神经网络的权重和偏置,以最小化损失函数值。常见的优化算法包括:

  • 梯度下降法(Gradient Descent): 通过计算损失函数的梯度,并沿着梯度的反方向更新参数,逐步减小损失函数值。
  • 随机梯度下降(SGD): 每次仅使用一个或小批量样本来计算梯度并更新参数,适用于大规模数据集。
    image.png
  • 动量法(Momentum): 在更新参数时加入前一次更新的动量,帮助加速收敛并减少震荡。
    image.png
  • AdaGrad: 根据梯度历史动态调整学习率,对稀疏数据表现良好。
    image.png
  • RMSprop: 结合了动量和AdaGrad的优点,通过指数加权平均平滑梯度平方和。
    image.png
  • Adam: 结合动量和RMSprop,适用于各种类型的神经网络和数据集。
    image.png

三、梯度下降法及其变种

3.1 梯度下降法(Gradient Descent)

梯度下降法是神经网络训练中最基本的优化算法,通过计算损失函数相对于参数的梯度,并沿梯度的反方向更新参数。基本的梯度下降法步骤如下:

  1. 初始化参数: 随机初始化网络的权重和偏置。
  2. 计算梯度: 使用反向传播算法,计算损失函数关于每个参数的梯度。
  3. 更新参数: 根据梯度和学习率,更新网络的权重和偏置。
    image.png

其中,η 为学习率,控制每次更新的步长。

3.2 梯度下降法的变种

为了提高训练效率和效果,梯度下降法有多种变种,每种变种都有其独特的特点和应用场景:

  1. 批量梯度下降(Batch Gradient Descent):
    • 使用整个训练集来计算梯度和更新参数。
    • 优点:每次更新都使用了全部数据,梯度计算准确。
    • 缺点:计算开销大,内存占用高,不适用于大规模数据集。
  2. 随机梯度下降(Stochastic Gradient Descent, SGD):
    • 每次仅使用一个样本来计算梯度并更新参数。
    • 优点:计算速度快,适用于大规模数据集。
    • 缺点:梯度更新波动较大,可能导致收敛速度慢。
  3. 小批量梯度下降(Mini-Batch Gradient Descent):
    • 使用一个小批量样本来计算梯度并更新参数。
    • 优点:折中批量梯度下降和随机梯度下降的优点,计算效率高,收敛较快。
    • 缺点:需要选择合适的批量大小(通常在32到256之间)。
  4. 动量法(Momentum):
    • 在梯度更新中引入动量,帮助加速收敛并减少震荡。
    • 公式:
      image.png
    • 优点:在凹谷形状的损失面中加速收敛,减少震荡。
  5. AdaGrad:
    • 根据梯度历史动态调整学习率,对稀疏数据表现良好。
    • 公式:
      image.png
    • 优点:在学习率调整上表现出色,适用于稀疏数据集。
    • 缺点:学习率可能会过早地变得过小。
  6. RMSprop:
  • 结合了动量和AdaGrad的优点,通过指数加权平均平滑梯度平方和。
  • 公式:
    image.png
  • 优点:在深度学习中表现稳定,适应性好。
  1. Adam(Adaptive Moment Estimation):
    • 结合动量和RMSprop,适用于各种类型的神经网络和数据集。
    • 公式:
      image.png
    • 优点:广泛适用,具有良好的收敛性和稳定性。

四、小结

神经网络的训练过程是深度学习的核心,前向传播和反向传播是其基本步骤,而损失函数和优化算法则决定了模型的性能。梯度下降法及其变种提供了多种优化选择,使得神经网络能够高效地学习和改进。

image.png

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

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

相关文章

极狐Gitlab使用

目录 续接上篇:极狐Gitlab安装部署-CSDN博客 1. 关闭注册功能 2. 创建群组 3. 创建用户 5. 邀请成员到群组 6. 设置导入导出项目源 7. 通过gitee导入库 8. 通过仓库URL导入 9. 自创建项目 10. 默认分支main的权限 11. 使用普通用户进入自建库 12. 创建用…

python的isinstance和type

class A:passclass B(A)passbB()#isinstance可以进行继承关系的判断 print(isinstance(b,B))#Trueprint(isinstance(b,A))#Trueprint(type(b) is B)#Trueprint(type(b) is A)#Falseprint(type(b),A,B,b)#<class __main__.B> <class __main__.A> <class __main__…

B. Corner Twist(cf956)

题意&#xff1a;给你两个网格&#xff0c;a和b&#xff0c;都是n行和 m 列。网格中的所有数值都是 0 &#xff0c; 1 或 2 。 您可以多次对 a&#x1d44e; 执行以下操作&#xff1a; 选取网格中任意一个长宽的子矩形。您可以选择整个网格作为子矩形。子矩形有四个角。取所选…

【Linux 线程】线程的基本概念、LWP的理解

文章目录 一、ps -L 指令&#x1f34e;二、线程控制 一、ps -L 指令&#x1f34e; &#x1f427; 使用 ps -L 命令查看轻量级进程信息&#xff1b;&#x1f427; pthread_self() 用于获取用户态线程的 tid&#xff0c;而并非轻量级进程ID&#xff1b;&#x1f427; getpid() 用…

生成日志系统和监控

背景&#xff1a;已知某后台服务将日志存放在本地硬盘的日志文件中&#xff0c;该服务也支持代码热更新&#xff0c;并在完成热更新后输出一条日志。我们需要对服务日志进行监控&#xff0c;以确保文件热更新后的错误能被第一时间发现。 我们提供 Python 程序模拟&#xff08;…

matlab仿真 模拟调制(上)

&#xff08;内容源自详解MATLAB&#xff0f;SIMULINK 通信系统建模与仿真 刘学勇编著第五章内容&#xff0c;有兴趣的读者请阅读原书&#xff09; 1.幅度调制 clear all ts0.0025; %信号抽样时间间隔 t0:ts:10-ts;%时间矢量 fs1/ts;%抽样频率 dffs/length(t); %fft的频率分…

国内从事人机交互的团队——浙江工业大学

一、背景 当我们选择一个新的课题后&#xff0c;需要清楚的了解从事该方向的团队都有哪些&#xff0c;这样可以及时跟踪和学习大牛团队的最新进展&#xff0c;以免自己认为的good idea&#xff0c;其实早就已经研究过了。 随着人形机器人的发展&#xff0c;机器人不仅需要在无…

人类远未触及自然规律的本质

我想知道上帝是如何创造这个世界的&#xff0c;对于这样或那样的现象我不感兴趣&#xff0c;我想知道的是他的思想&#xff0c;其余的都是细枝末节。——爱因斯坦 人类对自然规律的研究已经取得了不少进展&#xff0c;但是看起来研究清楚了原理&#xff0c;其实只是发现了更深…

【Windows】实现窗口子类化(基于远程线程注入)

目录 前言 原理解释 完整项目 相关文献 文章出处链接&#xff1a;[https://blog.csdn.net/qq_59075481/article/details/140334106] 前言 众所周知&#xff0c;DLL 注入有多种用途&#xff0c;如热修补、日志记录、子类化等。本文重点介绍使用 DLL 注入对窗口进行子类化。…

mysql中count的区别

count(1)和count(*) 从执行计划来看&#xff0c;count(1)和count(*)的效果是一样的当表的数据量大些时&#xff0c;对表分析之后&#xff0c;使用count(1)还要比使用count(*)用时多当数据量在1W以内时&#xff0c;count(1)会比count(*)的用时少&#xff0c;不过也差不多如果cou…

GOLLIE : ANNOTATION GUIDELINES IMPROVE ZERO-SHOT INFORMATION-EXTRACTION

文章目录 题目摘要引言方法实验消融 题目 Gollie&#xff1a;注释指南改进零样本信息提取 论文地址&#xff1a;https://arxiv.org/abs/2310.03668 摘要 大型语言模型 (LLM) 与指令调优相结合&#xff0c;在泛化到未见过的任务时取得了重大进展。然而&#xff0c;它们在信息提…

又上热搜!曝iPhone 16将支持40W快充

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 7月9日晚&#xff0c;微博话题“iPhone16系列或将支持40W快充”上了热搜榜&#xff0c;这已经是iPhone 16系列第N次上热搜了。 据爆料&#xff0c;iPhone 16系列充电功率将提升至40W&#xff0c;并且…

Java自己实现动态数组

数组是由一组元素&#xff08;值或变量&#xff09;组成的数据结构&#xff0c;每个元素有至少一个索引或键来标识。 数组内的元素是连续存储的&#xff0c;所以数组中元素的地址&#xff0c;可以通过其索引计算出来 空间占用 Java 中数组结构为 8 字节 markword 4 字节 cl…

米家立式学习灯怎么样?书客、米家、孩视宝三款护眼大路灯巅峰PK!

米家立式学习灯怎么样?不知从什么时候开始&#xff0c;青少年成为了近视重灾区&#xff0c;主要促成近视的原因有长时间接触电子产品、学习时的不正确姿势、不良的灯光环境等&#xff0c;除了减少电子产品的使用以及多室外活动之外&#xff0c;剩下的就是室内孩子经常学习的光…

全球首款集成GPT-4o的智能眼镜AirGo Vision:AI眼镜的未来

引言 在人工智能和大模型技术迅猛发展的今天&#xff0c;AI硬件产品逐渐走入人们的生活。继Meta Ray-Ban智能眼镜之后&#xff0c;Solos公司在最近的香港智能眼镜峰会上发布了全球首款集成GPT-4o的智能眼镜AirGo Vision。本文将深入探讨这款AI智能眼镜的功能、技术特点以及其在…

侯捷C++面向对象高级编程(下)-2-non-explicit one argument constructor

1.构造函数 构造函数: Fraction(int num, int den 1) 初始化分子和分母&#xff0c;允许指定分子 num 和可选的分母 den。默认情况下&#xff0c;分母为 1。 加法运算符重载: Fraction operator(const Fraction& f) 重载了加法运算符 。这使得两个 Fraction 对象可以通过 …

Qt 异步实现事件的定时执行 - QTimer和QThread的联合使用

异步实现事件的定时执行 - QTimer和QThread的联合使用 引言一、核心源码二、其信号和槽函数简述三、定时器及其moveToThread简述 引言 在 Qt 中&#xff0c;如果想要定时执行某些事件或函数&#xff0c;通常会使用 QTimer 类。QTimer 允许设置一个时间间隔&#xff0c;当这个时…

echarts使用自定义图形实现3D柱状图

先看下效果吧 实现思路 使用graphic创建并注册自定义图形。根据每组的数据值&#xff0c;得到一个对应的点&#xff0c;从点出发用canvas绘制一组图形&#xff0c;分别为 顶部的菱形 const CubeTop echarts.graphic.extendShape({buildPath: function (ctx, shape) {const c1…

c++ primer plus 第15章友,异常和其他,15.3.8exception 类

c primer plus 第15章友&#xff0c;异常和其他,15.3.8exception 类 15.3.8exception 类 文章目录 c primer plus 第15章友&#xff0c;异常和其他,15.3.8exception 类15.3.8exception 类1.stdexcept异常类3.空指针和 new 15.3.8exception 类 C异常的主要目的是为设计容错程序…

NVIDIA良心给显卡免费升级,只为挨更多的骂

起猛了&#xff0c;还真的以为 NVIDIA 良心发现了。 众所周知&#xff0c;英伟达对于咱们普通游戏玩家向来不屑一顾。只因为游戏业务在 NVIDIA 收入中占比较少。 在最新的 40 系显卡 RTX 4070 Ti Super 显卡中&#xff0c;NVIDIA悄悄给它来了一次核心「升级」&#xff0c;将原…