训练深度学习模型的过程

深度学习的训练过程是指通过大量的数据来调整神经网络的参数,以使其能够对输入数据进行准确的预测或分类.

训练神经网络的步骤

损失函数(Loss Function)是一个性能指标,反映神经网络生成接近期望值的值的程度。 损失函数直观上就是期望输出与实际输出之间的差异。 机器学习的目标是最小化损失函数。 因此,机器学习的问题就变成了最小化损失函数的问题。

梯度下降和反向传播算法的组合用于训练神经网络,即最小化总损失函数

总体步骤是

  1. 通过网络前向传播数据点得到输出
  2. 使用损失函数计算总误差
  3. 使用反向传播算法计算损失函数相对于每个权重和偏差的梯度
  4. 使用梯度下降更新每一层的权重和偏差
  5. 重复上述步骤以最小化总误差。

因此,一句话我们本质上是通过网络中的连接逐层向后传播总误差,计算每个层中每个权重和偏差对总误差的贡献(梯度),然后使用梯度下降算法进行优化 权重和偏差,并最终最小化神经网络的总误差。

 

  1. 训练数据(Train Data):指用于训练模型的数据集,通常包含输入样本和对应的标签(如果是监督学习任务)。训练数据的质量和数量直接影响模型的性能和泛化能力。

  2. 损失函数(Loss Function):用于衡量模型在训练数据上的预测结果与真实标签之间的差异。损失函数的设计旨在使模型能够尽量减小预测误差,常见的损失函数包括均方误差(Mean Squared Error)、交叉熵(Cross Entropy)等。

  3. 学习算法(Learning Algorithm):指用于更新模型参数以最小化损失函数的算法。在深度学习中,常用的学习算法是梯度下降(Gradient Descent)及其变体,通过计算损失函数对模型参数的梯度,并沿着梯度的反方向更新参数,以逐步降低损失函数的值。

  4. 误差(Error):指模型在训练数据上的预测结果与真实标签之间的差异,通常使用损失函数来度量。

  5. 优化器(Optimizer):在梯度下降算法中,优化器负责根据损失函数的梯度更新模型参数。常见的优化器包括随机梯度下降(Stochastic Gradient Descent,SGD)、Adam、RMSProp等,它们具有不同的优化性能和收敛速度。

前向传递和后向传递 

前向传递(Forward Pass)

前向传递基本上是一组将网络输入转换为输出空间的操作。 在推理阶段,神经网络仅依赖于前向传递。 让我们考虑一个具有 2 个隐藏层的简单神经网络。它尝试将二进制数分类为偶数或奇数, 这里我们假设除了最后一层的神经元之外,每个神经元都使用ReLU激活函数(最后一层使用softmax)。

第一层第一个神经元:

第一层第二个神经元:

将其重写为矩阵形式我们将得到:

反向传播(Backward Pass)

如果我们完成所有计算,我们最终会得到一个输出,这实际上是不正确的(因为 0.56 > 0.44 我们输出 Even 作为结果)。 因此,知道这一点后,我们想要更新神经元权重和偏差,以便得到正确的结果。 这正是反向传播发挥作用的地方。 反向传播是一种计算每个网络变量(神经元权重和偏差)的误差梯度的算法。 这些梯度随后用于优化算法,例如梯度下降,它会相应地更新它们。 权重和偏差更新的过程称为向后传递。

为了开始计算误差梯度,首先,我们必须计算误差(即损失)本身。 我们将使用标准分类损失——交叉熵。 然而,损失函数可以是任何可微分的数学表达式。 回归问题的标准选择是均方根误差 (RMSE)。 交叉熵损失如下所示:

其中 M 是类的数量,p 是网络输出的向量,y 是真实标签的向量。

链式法则(Chain Rule)和偏导数(Partial Derivatives)回顾


因此,我们可以将神经网络的训练过程视为反向传播和梯度下降的组合。 这两种算法可以通过理解链式法则和偏导数来解释。

链式法则


链式法则是计算复合函数导数的公式。 复合函数是由其他函数内部的函数组成的函数。 给定复合函数 f(x) = h(g(x)),f(x) 的导数由链式法则给出:

您还可以将这个想法扩展到两个以上的函数。 例如,对于由三个函数 A、B 和 C 组成的函数 f(x),我们有 f(x) = A(B(C(x)))

链式法则告诉我们该函数的导数等于:

梯度下降(Gradient Descent)和偏导数(Partial Derivatives)


梯度下降是一种迭代优化算法,用于寻找函数的局部最小值或全局最小值。 该算法使用以下步骤进行工作

我们从函数图上的一点开始
我们从该点找到函数下降最快的方向
我们(沿着该方向指示的路径向下)一小步到达新点
直线在特定点的斜率由其导数表示。 然而,由于我们关注两个或多个变量(权重和偏差),因此我们需要考虑偏导数。 因此,梯度是存储多变量函数的偏导数的向量。 它帮助我们计算具有多个自变量的函数在曲线上特定点的斜率。 我们需要考虑偏导数,因为对于复杂(多变量)函数,我们需要确定每个单独变量对整体导数的影响。 考虑两个变量 x 和 z 的函数。 如果我们改变 x,但保持所有其他变量不变,我们就会得到一个偏导数。 如果我们改变 z,但保持 x 不变,我们会得到另一个偏导数。 该组合代表多变量函数的全导数。

因此,整个神经网络的训练可以看作是链式法则和偏导数的结合

整体观


回顾一下,从整体来看——我们有错误的起点,即损失函数。 该图显示了遵循此模式的反向传播错误的过程:
输入 -> 前向调用 -> 损失函数 -> 导数 -> 误差反向传播。 在每个阶段,我们都会得到该阶段权重的增量。 如下图所示,W1 = 3,w2 = 1

其它

如何理解梯度下降法?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

书生浦语大模型实战营-课程笔记(1)

模型应用过程,大致还是了解的。和之前实习做CV项目的时候比起来,多了智能体这个环节。智能体是个啥? 类似上张图,智能体不太清楚。感觉是偏应用而不是模型的东西? 数据集类型很多,有文本/图片/视频。所以…

Vulnhub靶机:DC3

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:DC3(10.0.2.56) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entry/dc-32,312…

洛谷C++简单题小练习day11—字母转换,分可乐两个小程序

day11--字母转换--2.14 习题概述 题目描述 输入一个小写字母&#xff0c;输出其对应的大写字母。例如输入 q[回车] 时&#xff0c;会输出 Q。 代码部分 #include<bits/stdc.h> using namespace std; int main() { char n;cin>>n;cout<<char(n-32)<…

代码+视频基于R语言进行K折交叉验证

我们在建立数据模型后通常希望在外部数据验证模型的检验能力。然而当没有外部数据可以验证的时候&#xff0c;交叉验证也不失为一种方法。交叉验验证&#xff08;交叉验证&#xff0c;&#xff23;&#xff36;&#xff09;则是一种评估模型泛化能力的方法&#xff0c;广泛应用…

StarUML无法安装扩展的解决方案

StarUML无法安装扩展解决方案 版本&#xff1a;StarUML3.2.2 遇到问题 Unable to access the extension registry, Please try again later. 解决方案 第一步 https://docs.staruml.io/user-guide/managing-extensions#install-extension官网给了怎么手动安装扩展器的方法…

(三十八)大数据实战——Atlas元数据管理平台的部署安装

前言 Apache Atlas 是一个开源的数据治理和元数据管理平台&#xff0c;旨在帮助组织有效管理和利用其数据资产。为组织提供开放式元数据管理和治理功能 &#xff0c;用以构建其数据资产目录&#xff0c;对这些资产进行分类和管理&#xff0c;形成数据字典 。并为数据分析师和数…

反无人机系统技术分析,无人机反制技术理论基础,无人机技术详解

近年来&#xff0c;经过大疆、parrot、3d robotics等公司不断的努力&#xff0c;具有强大功能的消费级无人机价格不断降低&#xff0c;操作简便性不断提高&#xff0c;无人机正快速地从尖端的军用设备转入大众市场&#xff0c;成为普通民众手中的玩具。 然而&#xff0c;随着消…

CFS三层靶机

参考博客&#xff1a; CFS三层内网靶场渗透记录【详细指南】 - FreeBuf网络安全行业门户 CFS三层靶机搭建及其内网渗透【附靶场环境】 | TeamsSix CFS三层网络环境靶场实战 - PANDA墨森 - 博客园 (cnblogs.com) CFS三层靶机实战--内网横向渗透 - 知乎 (zhihu.com) CFS靶机…

【Tomcat】:One or more listeners failed to start.报错解决方案

报错信息:One or more listeners failed to start. Full details will be found in the appropriate container log file. 具体就是web.xml此配置报错: 服务器启动错误Tomcat:One or more listeners failed to start.报错解决方案 IDEA:在使用IDEA运行SSM项目的时候 , Tomcat运…

【知识图谱--第四讲知识图谱的抽取与构建】

知识图谱的抽取与构建 实体识别与分类关系抽取与属性补全概念抽取事件识别与抽取 实体识别与分类 关系抽取与属性补全 概念抽取 事件识别与抽取

使用 Chainlit, Langchain 及 Elasticsearch 轻松实现对 PDF 文件的查询

在我之前的文章 “Elasticsearch&#xff1a;与多个 PDF 聊天 | LangChain Python 应用教程&#xff08;免费 LLMs 和嵌入&#xff09;” 里&#xff0c;我详述如何使用 Streamlit&#xff0c;Langchain, Elasticsearch 及 OpenAI 来针对 PDF 进行聊天。在今天的文章中&#xf…

anomalib1.0学习纪实

回顾&#xff1a;细分、纵深、高端、上游、积累、极致。 回顾&#xff1a;资本化&#xff0c;规模化&#xff0c;国际化&#xff0c;大干快上&#xff0c;小农思维必死无疑。 春节在深圳新地中央&#xff0c;学习anomalib1.0。 一、安装&#xff1a; 1、常规安装 采用的是…

Python中的正则表达式(一)

在Python中&#xff0c;正则表达式是一种用于匹配和操作字符串的强大工具。正则表达式由一系列字符和特殊字符组成&#xff0c;用于定义搜索模式。 在Python中&#xff0c;我们使用内置的 re 模块来操作正则表达式。要使用正则表达式&#xff0c;我们首先需要导入 re 模块。 下…

springboot187社区养老服务平台的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

【C++函数探幽】内联函数inline

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1. 前言2.概念3.特性…

【C++】类和对象(四)

前言&#xff1a;在类和对象中&#xff0c;我们走过了十分漫长的道路&#xff0c;今天我们将进一步学习类和对象&#xff0c;类和对象这块荆棘地很长&#xff0c;各位一起加油呀。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:高质量&a…

DS:二叉树的链式结构及实现

创作不易&#xff0c;友友们给个三连吧&#xff01;&#xff01; 一、前言 前期我们解释过二叉树的顺序结构&#xff08;堆&#xff09;为什么比较适用于完全二叉树&#xff0c;因为如果用数组来实现非完全二叉树&#xff0c;那么数组的中间部分就可能会存在大量的空间浪费。 …

二叉树习题

路径和&#xff1a;不能将叶节点向下扩展一层nullptr来标记这个节点是叶节点 struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}TreeNode(int x, T…

【计算机网络】电子邮件

用户代理 user agent邮件服务器 mail server简单邮件传输协议 SMTP 使用TCP与HTTP对比 HTTP&#xff1a;web服务器向web客户传输文件 SMTP&#xff1a;邮件服务器向另一个邮件服务器传输文件 持续链接 持续链接 拉协议&#xff08;pull protocol&#xff09;由想接收发起 …

顺序表(上)

1.顺序表的概念 顺序表&#xff08;Sequential List&#xff09;是一种基本的数据结构&#xff0c;它是一种线性表的存储结构。线性表是一种数据元素的有限序列&#xff0c;元素之间存在顺序关系。 线性表&#xff1a;线性表&#xff08; linearlist &#xff09;是n个具有相…