CS224W6.2——深度学习基础

news/2025/3/29 15:00:07/

在本文中,我们回顾了深度学习的概念和技术,这些概念和技术对理解图神经网络至关重要。从将机器学习表述为优化问题开始,介绍了目标函数梯度下降非线性反向传播的概念。

文章目录

  • 1. 大纲
  • 2. 优化问题
    • 2.1 举例损失函数
  • 3. 如何优化目标函数?
  • 4. 梯度下降
    • 4.1 对于SGD的一些概念
  • 5. 如何获得目标函数?
    • 5.1 反向传播
    • 5.2 非线性变换
    • 5.3 MLP
  • 6. 总结

1. 大纲

在这里插入图片描述

这篇我们主要讲第一部分深度学习的基础。

2. 优化问题

我们将机器学习问题、监督学习问题看作是优化问题:

在这里插入图片描述

我们需要学习这样一个映射函数:将输入 x x x映射为输出的预测标签 y y y

将这样的函数学习表述为一个优化过程

在这里插入图片描述

有两件重要的是:

  • 通过优化参数 Θ \Theta Θ,最小化损失函数 L \mathcal{L} L
  • 损失函数用来测量真实值与预测值之间的差距。

2.1 举例损失函数

交叉熵损失函数:

在这里插入图片描述

讨论多分类问题

比如5分类问题,表示5种颜色,我们用one-hot编码表示。

我们要在某种意义上对它进行建模,使用 f ( x ) f(x) f(x)这是将某个函数 g ( x ) g(x) g(x)经过 S o f t m a x ( ) Softmax() Softmax()函数,得到一个预测5分类的概率,这些概率之和为1。

现在要衡量这个预测的质量。

通过单点的交叉熵损失函数 C E ( y , f ( x ) ) CE(y,f(x)) CE(y,f(x))得到的值越小,就表示预测值与真实的one-hot值越接近。

然后将所有单点的损失相加就得到了总的损失 L = ∑ ( x , y ) ∈ T CE ⁡ ( y , f ( x ) ) \mathcal{L}=\sum_{(x,y)\in\mathcal{T}}\operatorname{CE}(y,f(x)) L=(x,y)TCE(y,f(x)),这是所有训练样本的真实值与预测值之间的总差异。

而我们想要的就是找到一个合适的函数 f ( x ) f(x) f(x)最小化真实值与预测值之间的总差异。

3. 如何优化目标函数?

在这里插入图片描述

经典的优化目标函数是通过梯度下降,所以梯度的概念很重要:

某个定点的梯度是一个方向,该方向是函数的最快增长速率。

现在,我们可以对损失函数进行“询问”,关于我的参数 Θ \Theta Θ,我应该朝着哪个方向?(梯度相反的方向)改变我的参数 Θ \Theta Θ使损失 L \mathcal{L} L减少最多

4. 梯度下降

在这里插入图片描述

上面是最基础的梯度下降版本,重复更新模型参数,直至收敛。

最基础的梯度下降有一些问题,所以后续提出了随机梯度下降(SGD):

在这里插入图片描述

传统的梯度下降每一轮迭代都需要计算所有点的梯度,计算量太大,而SGD只计算一部分。

4.1 对于SGD的一些概念

在这里插入图片描述

  • 首先是batch_size的概念,它是我们评估梯度数据的子集,(不是在整个训练数据集上评估梯度——GD,而是在训练集的一小部分——SGD),batch_size的大小是每一批次数据点的数量,通常我们喜欢更大的batch_size但更大的batch_size会使优化变慢
  • 其次是iteration的概念,SGD的一个迭代(iteration),是SGD的一个步骤,我们在给定的batch_size的数据点上评估梯度。迭代次数是:数据集大小/batch_size。
  • 最后是epoch的概念,它是对数据集的全面遍历

这种小批量训练的思想是深度学习的核心。

5. 如何获得目标函数?

对于简单的模型:

在这里插入图片描述

5.1 反向传播

在这里插入图片描述

反向传播的概念:使用链式法则,来传播中间步骤的梯度,最终获得关于模型参数损失的梯度。

举例:

在这里插入图片描述

在这里插入图片描述

5.2 非线性变换

目前为止只使用了简单的两层神经网络,而 W 2 W 1 W_2W_1 W2W1可以表示为另一个矩阵,它依然可以表示为一层的线性变换。

在这里插入图片描述

这意味着,我们通过两侧的线性变换依然得到的是一个线性模型,没有获得更多的表达能力。

而如果我们引入非线性变换,实际上增加了模型的表示能力。这将我们引向多层感知机的概念(MLP)。

5.3 MLP

在这里插入图片描述

6. 总结

在这里插入图片描述


http://www.ppmy.cn/news/1213497.html

相关文章

Java --- JVM的执行引擎

目录 一、执行引擎概述 1.1、执行引擎的工作过程 二、Java代码编译和执行的过程 三、解释器 3.1、解释器工作机制 3.2、解释器分类 3.3、解释器现状 四、JIT编译器 五、热点代码及探测方式 六、方法调用计数器 6.1、热点衰减 七、回边计数器 八、HotSpot VM设置程序…

图论算法(最短路、网络流、二分图)

介绍 1. 最短路算法 最短路算法是一类用于在加权有向图中搜索从起点到终点最短路径(或距离)的算法。其中最为经典的算法为 Dijkstra 和 Bellman-Ford 算法,分别适用于没有负权边和存在负权边的情况。此外,还有 Floyd-Warshall 算法…

从0到0.01入门React | 010.精选 React 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

架构问题自查

一、系统分析 识别和理解业务需求,可从业务全局角度,对需求进行建模设计 可在指导下阅读和理解需求文档、参与需求评审会并可理解需求内容(参与需求分析/评审的相关邮件,会议纪要等) 可阅读和理解需求文档、参与需求评审会并可理解需求内容(参与需求分析/评审的相关邮件,…

基于springboot实现结合疫情情况的婚恋系统【项目源码】

基于springboot实现结合疫情情况的婚恋系统演示 SpringBoot框架 SpringBoot是一个全新开源的轻量级框架。基于Spring4.0设计,其不仅继承了Spring框架原来有的优秀特性,而且还通过简化配置文件来进一步简化了Spring应用的整个搭建以及开发过程。另外在原…

DaoWiki(基于Django)开发笔记 20231113

DaoWiki(基于Django)开发笔记 20231113 开发环境 操作系统 windows11python版本 3.12.0django版本 4.2.7 构建python虚拟环境 python -m venv daowiki启动python虚拟环境 cd daowiki\Scripts .\activate安装Django pip install django4.2.7创建项目…

python类中的抽象函数,以及继承后子类的比较

抽象函数的定义方式 导包 from abs import ABCMeta,abstractmethod声明抽象类 class Area(object):abstractmethoddef area(self):pass在抽象类中,不用写构造函数,抽象类不能进行实例化 继承抽象类的子类必须将抽象类中的函数进行重写(不重…

【Spring Boot 源码学习】初识 SpringApplication

Spring Boot 源码学习系列 初识 SpringApplication 引言往期内容主要内容1. Spring Boot 应用程序的启动2. SpringApplication 的实例化2.1 构造方法参数2.2 Web 应用类型推断2.3 加载 BootstrapRegistryInitializer2.4 加载 ApplicationContextInitializer2.5 加载 Applicatio…