当前位置: 首页 > news >正文

八斗深度学习

八斗深度学习第二周笔记

  • 一、深度学习步骤:
      • 1. 选定模型结构
      • 2. 模型参数随机初始化
      • 3. 构造模型损失函数
      • 4. 选择优化算法并设置超参数
      • 5. 数据准备与预处理
      • 6. 训练模型
      • 7. 模型评估
      • 8. 测试模型
      • 9. 应用模型
    • 损失函数极小值、导向
      • 意义
    • 超参数的影响
      • 迭代次数epoch
      • 批次量大小batch size
      • 学习率 lr
    • 模型问题
      • 业内有固定模型(CNN、Transformer)
      • 打乱样本顺序
      • 梯度爆炸
      • 梯度消失
      • 过拟合
  • 二、神经网络结构-全连接层
    • 激活函数
      • Sigmoid
      • tanh
      • Relu
      • Gelu
      • Softmax

一、深度学习步骤:

1. 选定模型结构

首先选择适合任务需求的模型架构。在这个例子中,我们选择了二次函数作为模型结构,它可以表示为:
[ y = w_1x^2 + w_2x + w_3 ]
这里 (w_1, w_2, w_3) 是待学习的参数

2. 模型参数随机初始化

在开始训练之前,需要对模型的所有权重(或参数)进行初始化。通常我们会使用小的随机值来初始化这些参数,目的是打破对称性并且确保梯度的有效传播。对于我们的二次函数模型,这意味着给 (w_1, w_2, w_3) 分配随机初始值。

3. 构造模型损失函数

接下来定义一个损失函数(或成本函数),用来衡量模型预测输出与真实标签之间的差异。在本例中,均方误差(MSE)被用作损失函数
Loss = 1 N ∑ i = 1 N ( y pred , i − y true , i ) 2 \text{Loss} = \frac{1}{N}\sum_{i=1}^{N}(y_{\text{pred},i} - y_{\text{true},i})^2 Loss=N1i=1N(ypred,iytrue,i)2
其中 (N) 是样本数量,(ypred,i) 是模型预测值,而 (yture,i) 是真实值。

对损失函数中的权重求导实际上是,一个复合函数求导。首先损失函数是一个关于w的多元复合函数。对损失函数的W求导,就使用链式求导法则。以二元一次函数为例对W1求导结果如下:
∂ w 1 ∂ L ​ = 2 ( y p r e d ​ − y t r u e ​ ) ⋅ x 2 ∂w1∂L​=2(ypred​−ytrue​)⋅x2 w1L=2(ypredytrue)x2

4. 选择优化算法并设置超参数

选择适当的优化算法最小化损失函数,比如梯度下降法及其变种(如SGD、Adam等)。同时设定**必要的超参数,如学习率(lr)、批量大小(batch size)、迭代次数(epochs)**等。

5. 数据准备与预处理

将原始数据集划分为训练集、验证集和测试集,并进行必要的预处理步骤,例如标准化、归一化等。

6. 训练模型

使用训练数据集来进行模型训练,在每次迭代中执行以下子步骤

  • 前向传播:计算输入数据通过当前模型参数后的预测结果。
  • 计算损失:根据预测结果和实际标签计算损失值。
  • 反向传播:计算损失相对于每个参数的梯度。
  • 更新参数:利用优化算法调整模型参数以减少损失。

7. 模型评估

在独立的验证集上评估模型性能,检查是否过拟合或欠拟合,并据此调整模型配置或超参数。

8. 测试模型

一旦模型训练完成且经过调优,最后一步是在完全未见过的测试集上评估其泛化能力

9. 应用模型

如果模型表现良好,则可以将其部署到生产环境中,用于解决实际问题。

损失函数极小值、导向

损失函数越小,模型越好; 损失函数最小化;模型权重影响损失函数值;通过梯度下降来找到最优权重

梯度:多元函数导数,是个向量

梯度下降法

  • 根据梯度,更新权重。

    • w′=w−α ∂w/∂L

    • 其中:w′ 是更新后的权重。w 是当前的权重。α 是学习率,决定了我们沿着梯度方向移动的步伐大小。偏导数也称为梯度。

      意义

      1. 最小化损失:梯度下降的目标是找到使损失函数最小化的模型参数。通过计算损失函数相对于每个参数的梯度,并在每次迭代中调整参数值以减小损失,我们可以逐渐接近全局最小点或局部最小点(对于非凸问题)。
      2. 优化方向:梯度给出了损失函数增长最快的方向,而负梯度则指向了减少最快的方向。因此,当我们用负梯度乘以一个小的学习率并从当前参数中减去它时,我们实际上是在尝试“下坡”,即朝向更低损失的方向前进。
      3. 收敛速度与稳定性:学习率 α 控制着更新步骤的大小。如果 α 设置得太小,那么算法可能会非常慢才能收敛;如果太大,则可能导致算法无法稳定地收敛,甚至发散。选择合适的学习率对于确保有效和稳定的训练至关重要。
      4. 泛化能力:通过最小化训练数据上的损失,我们希望模型能够很好地泛化到未见过的数据。虽然这并不是梯度下降直接保证的,但一个训练良好的模型通常也会在新数据上有较好的表现
      5. 自适应调整:在某些高级变体中,如Adam、RMSprop等优化器,它们不仅考虑了梯度的一阶信息(即平均梯度),还考虑了二阶信息(例如梯度的方差)。这可以帮助加速收敛并在不同类型的损失表面上提供更好的性能

      总结来说,通过应用梯度下降来更新权重,我们可以在损失空间中导航,寻找使得预测输出尽可能接近真实标签的模型参数。这是一个基础但极其重要的概念,在机器学习和深度学习领域被广泛使用。

  • 学习率控制权重更新的幅度

  • 损失函数变种SGD(Stochastic gradient descent)

超参数的影响

迭代次数epoch

  1. 过少的 Epochs
  • 欠拟合(Underfitting):如果 epoch 数量过少,模型可能没有充分学习到数据中的特征和模式,导致训练不足。这可能会使得模型性能较差,无法很好地捕捉输入数据与输出之间的关系。
  • 低准确度:模型在训练集上的表现不佳,同时也会在验证集和测试集上表现出较低的准确性。
  1. 过多的 Epochs
  • 过拟合(Overfitting):当 epoch 数量过多时,模型可能会过度适应训练数据,以至于它不仅学到了数据中的有用信息,还记住了噪声或不相关的细节。这样的模型在训练集上的表现会非常好,但在未见过的数据(如验证集和测试集)上的泛化能力差
  • 资源浪费:额外的训练时间增加了计算成本,并且不会带来性能上的显著提升,甚至可能导致性能下降。
  1. 合适数量的 Epochs
  • 最佳性能:找到一个恰当的 epoch 数量可以保证模型既能从数据中学习到足够的信息,又不会陷入过拟合的状态。通常,我们会通过监控验证集上的损失或准确率来确定这个点。
  • 早停法(Early Stopping):一种常用的策略是在验证集上的性能不再改善时提前停止训练。这种方法可以帮助我们避免不必要的训练迭代,从而节省时间和资源。

实践建议:

  • 交叉验证:使用交叉验证技术可以在多个子集上评估模型性能,帮助更可靠地估计模型的最佳 epoch 数。
  • 学习曲线:绘制训练集和验证集的学习曲线(即随着 epoch 的增加,损失或准确性的变化),有助于直观地观察是否存在过拟合或欠拟合现象。
  • 动态调整:某些高级优化器具有自适应学习率的能力,可以根据训练进度自动调整学习率,这也间接影响了 epoch 的效果

批次量大小batch size

批次量(Batch Size)是深度学习模型训练中的一个重要超参数,它决定了在每次迭代中用于更新模型权重的样本数量。批次量的选择对模型训练的效果、速度以及最终性能有着显著的影响。以下是批次量对深度学习模型可能造成的影响:

  1. 训练稳定性
  • 小批次量:使用较小的批次量(如1或2),即所谓的随机梯度下降(SGD),可以引入更多的噪声到梯度估计中。这有助于跳出局部极小值和鞍点,但同时也可能导致训练过程更加不稳定损失函数值波动较大

  • 大批次量:较大的批次量通常会提供更稳定和准确的梯度估计,因为它们平均了更多样例的信息。然而,过大的批次量可能会使模型收敛于次优解,尤其是在复杂的非凸优化问题中。

  1. 内存占用
  • 小批次量:较小的批次量需要较少的内存来存储中间计算结果和梯度信息,因此更适合资源受限的环境,如移动设备或嵌入式系统。

  • 大批次量:较大的批次量需要更多的内存,这可能限制了可以在单个GPU上训练的最大模型规模或者迫使你使用分布式训练。

  1. 训练速度
  • 小批次量:虽然每次迭代的速度较快,但由于每轮epoch内需要进行更多次的权重更新,总体训练时间可能不会明显减少。此外,由于频繁的参数更新,通信开销(特别是在分布式训练环境中)也会增加。

  • 大批次量:每次迭代处理的数据更多,理论上可以在更少的迭代次数下完成训练,但这取决于硬件是否能够高效地并行处理这些数据。

  1. 泛化能力
  • 小批次量:研究表明,适当的小批次量可以帮助提高模型的泛化能力,因为它引入了一定程度的正则化效果,使得模型不易过拟合训练数据。

  • 大批次量:非常大的批次量可能会导致模型过拟合训练数据,因为它减少了训练过程中参数空间探索的机会,使得模型更容易找到与训练集吻合得非常好的解决方案,但未必是对测试集表现最佳的解。

  1. 优化路径
  • 小批次量:由于其固有的随机性和不稳定性,小批次量倾向于探索更广泛的参数空间,有时能找到更好的全局最小值。

  • 大批次量:较大批次量提供的平滑梯度可能导致优化路径更加直接地指向某个局部最优解,而忽略了其他潜在的更优解。

实践建议

选择合适的批次量通常是一个实验性的过程,并且依赖于具体的应用场景和可用资源。一些常见的策略包括:

  • 从一个合理的默认值开始:例如32、64或128,然后根据实际情况调整。
  • 尝试不同的批次量组合:结合学习率和其他超参数一起调优。
  • 考虑使用动态批次量:在训练初期使用较小的批次量以促进更好的探索,随着训练进程逐渐增大批次量以加快收敛。

总之,批次量的选择对于确保模型的有效训练和良好的泛化性能至关重要。通过实验和分析,可以找到最适合特定任务的最佳批次量。

学习率 lr

学习率(Learning Rate, LR)是深度学习模型训练过程中一个至关重要的超参数,它决定了在每次迭代中权重更新的步长。学习率的选择对模型训练的效果和效率有着直接的影响。以下是学习率对深度学习模型可能造成的影响:

  1. 过大的学习率
  • 不稳定训练:如果学习率设置得过大,可能会导致损失函数值剧烈波动,无法稳定收敛,甚至发散。这是因为每一步的更新幅度过大,使得权重跳跃式变化,从而错过损失函数的最小值。
  • 难以找到最优解:由于每次更新都跨越了较大的距离,模型可能会跳过全局最小点或陷入局部极小值附近,而不能精确地定位到最佳参数位置。
  1. 过小的学习率
  • 训练速度慢:较小的学习率意味着每次权重更新都非常微小,因此需要更多的迭代次数才能达到收敛状态,这会导致训练时间显著增加。
  • 容易陷入局部极小值或鞍点:当学习率非常小时,模型可能会被困在局部极小值、鞍点或者平坦区域,难以逃脱并继续向更好的解决方案前进。
  1. 合适的学习率
  • 有效且快速的收敛:一个适当的学习率可以使模型既不会因为步子太大而错过最优点,也不会因为步子太小而导致训练过程漫长无果。它可以确保损失函数值逐渐下降,并最终稳定在一个较低水平,表示模型找到了较好的参数组合。
  1. 动态调整学习率

为了克服固定学习率带来的问题,实践中经常采用自适应学习率的方法,例如:

  • 学习率衰减:随着训练的进行逐渐降低学习率。
  • 循环学习率:周期性地改变学习率,在一定范围内上下浮动。
  • 基于性能的学习率调整:根据验证集上的表现自动调整学习率,如当验证误差不再改善时降低学习率。

总之,选择合适的学习率对于确保模型能够有效地学习数据中的模式至关重要。通常情况下,通过实验来寻找最佳学习率范围,或者使用自动化工具和技术来优化这个过程。

模型问题

业内有固定模型(CNN、Transformer)

打乱样本顺序

梯度爆炸

梯度计算求和,是一个差的平方和,但是没有取平方;导致梯度值越来越大

或者是初始权重值特别大

梯度消失

过拟合

二、神经网络结构-全连接层

  • 又叫线性层
  • y = w * x + b
  • w b 是参与训练的参数
  • x 是 一个矩阵或者是转置矩阵
  • W维度决定了隐含层输出的维度,一般称为隐单元个数(hidden size)

激活函数

Sigmoid

为模型添加非线性因素,使模型具有拟合非线性函数的能力

无激活函数时 y = w1(w2(w3 * x + b3)+b2)+b1 仍然是线性函数

tanh

Relu

Gelu

Softmax

相关文章:

八斗深度学习

八斗深度学习第二周笔记 一、深度学习步骤:1. 选定模型结构2. 模型参数随机初始化3. 构造模型损失函数4. 选择优化算法并设置超参数5. 数据准备与预处理6. 训练模型7. 模型评估8. 测试模型9. 应用模型 损失函数极小值、导向意义 超参数的影响迭代次数epoch批次量大小…...

安卓报错Switch Maven repository ‘maven‘....解决办法

例如:Switch Maven repository ‘maven(http://developer.huawei.com/repo/)’ to redirect to a secure protocol 在库链接上方添加配置代码:allowInsecureProtocol true...

Scala编程技巧:正则表达式与隐式转换

1. 引言 在Scala编程中,正则表达式和隐式转换是处理字符串匹配和类型转换的强大工具。本文将通过一个实用的示例——电话号码和身份证号码验证器,来展示如何使用这些工具。 2. 知识概括 2.1 正则表达式基础 正则表达式是用于字符串搜索和匹配的强大工…...

UnityShaderLab 实现黑白着色器效果

实现思路:取屏幕像素的RGB值,将三个通道的值相加,除以一个大于值使颜色值在0-1内,再乘上一个强度值调节黑白强度。 在URP中实现需要开启Opaque Texture ShaderGraph实现: ShaderLab实现: Shader "Bl…...

在Windows 10中使用SSH远程连接服务器(附花生壳操作方法)

SSH 在 linux 中是一种重要的系统组件,用户可以使用 SSH 来远程连接 linux 系统的计算机,或者传输文件。不过在 win10 以前,windows 并不原生支持 SSH,需要借助第三方工具来使用 SSH 功能。而实际上,微软在 2015 年就曾…...

在算网云平台云端在线部署stable diffusion (0基础小白超详细教程)

Stable Diffusion无疑是AIGC领域中的AI绘画利器,具有以下显著优势: 1、开源性质,支持本地部署 2、能够实现对图像生成过程的精确控制 虽然SD在使用上有很多的有点,但缺点也是不言而喻的,由于AI绘画的整个过程以及现…...

ubuntu存储空间不足快速解决

几个自己常用的释放空间命令,备忘 将文件夹下的文件按从大到小排列 ls -lhS /var/log/syslog 过大 sudo truncate -s 0 /var/log/syslog /var/log/Xorg.0.log.old过大 sudo truncate -s 0 /var/log/Xorg.0.log.old 清理系统日志文件: sudo journalctl --…...

Prescan simulink carsim联合仿真平台搭建问题总结

解决办法主要来自忠厚的老王:自动驾驶决策规划算法第二章第一节 决策规划仿真平台搭建_哔哩哔哩_bilibili 这部分直接复制的老王视频的: Q1:prescan安装了,但是找不到Demo_Carsim3D A1:这个文件夹是我自己建立的不是prescan自带的&#xff0…...

STM32(HAL_工程模板的搭建)

目录 一、准备文件 二、创建工程 三、创建分组 四、配置文件处理 五、编译错误处理 一、准备文件 准备HAL库文件: ST官网( 意法半导体-STMicroelectronics )搜索STM32Cube, 本文使用“STM32Cube_FW_F4_V1.24.1” 版本的HAL库, 使用的是F4的库文件。 创建文件&#xff1a…...

Flask入门一(介绍、Flask安装、Flask运行方式及使用、虚拟环境、调试模式、配置文件、路由系统)

文章目录 一、Flask介绍二、Flask创建和运行 1.安装2.快速使用3.Flask小知识4.flask的运行方式 三、Werkzeug介绍四、Jinja2介绍五、Click CLI 介绍六、Flask安装 介绍watchdog使用python–dotenv使用(操作环境变量) 七、虚拟环境 介绍Mac/linux创建虚拟…...

CAD C# 批量替换当前图中块

本案例功能为选择当前文档中一个块(旧块),然后选择新图元(新块),运行插件后新块将替换图中所有的旧块。 效果如下: public static class Class1{//选取对象替换块定义[CommandMethod("TT&…...

Android -- [SelfView] 自定义多行歌词滚动显示器

Android – [SelfView] 自定义多行歌词滚动显示器 流畅、丝滑的滚动歌词控件* 1. 背景透明;* 2. 外部可控制进度变化;* 3. 支持屏幕拖动调节进度(回调给外部);效果 歌词文件(.lrc) 一. 使用…...

vscode 配置C/C++环境控制台参数

您可以通过以下步骤在VS Code中配置C/C环境的控制台参数: 1,打开VS Code并进入您的C/C项目 2,点击左侧的"调试"图标,然后点击顶部的齿轮图标,选择“launch.json”。 3,在"launch.json&qu…...

【HarmonyOS学习日志(13)】计算机网络之TCP/IP协议族(二)

文章目录 TCP/IP协议族ARPDNS标志字段:协商具体的通信方式和反馈通信状态DNS查询问题的格式资源记录(Resource Record, RR)格式:被用于应答字段、授权字段和额外信息字段 IP协议IP服务的特点无状态无连接不可靠 IP头部结构IPv4头部…...

多系统对接的实现方案技术分析

前言 随着信息化和大数据时代的到来,数据资产变得至关重要,企业纷纷上线多种软件系统和移动端应用以适应这一变化。这些系统和应用虽然发挥了各自的优势,但也导致了信息孤岛问题。为了解决这一问题,数据中台和异构系统集成技术应…...

kv类型算子使用

对kv类型的RDD数据集进行操作。 keys """ 获取所有的key转换算子"""inputRdd sc.parallelize([(laoda, 11), (laoer, 22), (laosan, 33), (laosi, 44)]) print(inputRdd.keys().collect()) # [laoda, laoer, laosan, laosi] values "&…...

3维建模blender

官网稳定版下载:https://www.blender.org/download/lts/ windows有安装版和portable版 教程:https://www.bilibili.com/video/BV1kX4y1m7G5 1. 基础操作 场景操作 场景位移:shift鼠标中键长按场景旋转:鼠标中键长按场景缩放&…...

百问FB网络编程 - UDP编程简单示例

6.5 UDP编程简单示例 ​ UDP服务器首先进行初始化操作:调用函数socket创建一个数据报类型的套接字,函数bind将这个套接字与服务器的公认地址绑定在一起。然后调用函数recvfrom接收UDP客户机的数据报。UDP客户机首先调用函数socket创建一个数据报套接字&…...

面试题:什么是ThreadLocal,如何实现的?

强烈推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能 你是否还在为简历无人阅读而感到沮丧?是否因为寻觅不到理想的工作机会而感到焦虑不安?试试:看看…...

js后端开发之Next.js、Nuxt.js 与 Express.js

后端js之Next.js、Nuxt.js 与 Express.js 在现代 Web 开发中,JavaScript 已经成为前后端通用的编程语言,而选择合适的后端框架则是构建高效、可扩展应用程序的关键。本文将带你深入了解三个流行的 JavaScript 后端框架:Next.js、Nuxt.js 和 …...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...