【深度学习】—线性回归 线性回归的基本元素 线性模型 损失函数 解析解 随机梯度下降

【深度学习】—

  • 线性回归
    • 线性回归的基本元素
  • 线性模型
  • 损失函数
  • 解析解
  • 随机梯度下降
    • 小批量随机梯度下降
        • 梯度下降算法的详细步骤
        • 解释公式

线性回归

回归(regression)是能为⼀个或多个⾃变量与因变量之间关系建模的⼀类⽅法。在⾃然科学和社会科学领域,回归经常⽤来表⽰输⼊和输出之间的关系。在机器学习领域中的⼤多数任务通常都与预测(prediction)有关。当我们想预测⼀个数值时,就会涉及到回归问题。常⻅的例⼦包括:预测价格(房屋、股票等)、预测住院时间(针对住院病⼈等)、预测需求(零售销量等)。但不是所有的预测都是回归问题。在后⾯的章节中,我们将介绍分类问题。分类问题的⽬标是预测数据属于⼀组类别中的哪⼀个。

线性回归的基本元素

线性回归(linear regression)可以追溯到19世纪初,它在回归的各种标准工具中最简单而且最流行。线性回归基于几个简单的假设:首先,假设自变量 x \mathbf{x} x 和因变量 y y y 之间的关系是线性的,即 y y y 可以表示为 x \mathbf{x} x 中元素的加权和,这里通常允许包含观测值的一些噪声;其次,我们假设任何噪声都比较正常,如噪声遵循正态分布。

为了解释线性回归,我们举一个实际的例子:我们希望根据房屋的面积(平方英尺)和房龄(年)来估算房屋价格(美元)。为了开发一个能预测房价的模型,我们需要收集一个真实的数据集。这个数据集包括了房屋的销售价格、面积和房龄。在机器学习的术语中,该数据集称为训练数据集(training data set)或训练集(training set)。每行数据(比如一次房屋交易相对应的数据)称为样本(sample),也可以称为数据点(data point)或数据样本(data instance)。我们把试图预测的目标(比如预测房屋价格)称为标签(label)或目标(target)。预测所依据的自变量(面积和房龄)称为特征(feature)或协变量(covariate)。

通常,我们使用 n n n 来表示数据集中的样本数。对索引为 i i i 的样本,其输入表示为 x ( i ) = [ x 1 ( i ) , x 2 ( i ) ] ⊤ \mathbf{x}^{(i)} = [x_1^{(i)}, x_2^{(i)}]^\top x(i)=[x1(i),x2(i)],其对应的标签是 y ( i ) y^{(i)} y(i)

线性模型

线性假设是指目标(房屋价格)可以表示为特征(面积和房龄)的加权和,如下面的式子:

price = w area ⋅ area + w age ⋅ age + b (3.1.1) \text{price} = w_{\text{area}} \cdot \text{area} + w_{\text{age}} \cdot \text{age} + b \tag{3.1.1} price=wareaarea+wageage+b(3.1.1)

在 (3.1.1) 中, w area w_{\text{area}} warea w age w_{\text{age}} wage 称为权重(weight),权重决定了每个特征对我们预测值的影响。 b b b 称为偏置(bias)、偏移量(offset)或截距(intercept)。偏置是指当所有特征都取值为 0 时,预测值应该为多少。即使现实中不会有任何房子的面积是 0 或房龄正好是 0 年,我们仍然需要偏置项。如果没有偏置项,我们模型的表达能力将受到限制。严格来说,(3.1.1) 是输入特征的一个仿射变换(affine transformation)。仿射变换的特点是通过加权和对特征进行线性变换(linear transformation),并通过偏置项来进行平移(translation)。

给定一个数据集,我们的目标是寻找模型的权重 w \mathbf{w} w 和偏置 b b b,使得根据模型做出的预测大体符合数据里的真实价格。输出的预测值由输入特征通过线性模型的仿射变换决定,仿射变换由所选权重和偏置确定。

而在机器学习领域,我们通常使用的是高维数据集,建模时采用线性代数表示法会比较方便。当我们的输入包含 d d d 个特征时,我们将预测结果 y ^ \hat{y} y^ (通常使用“尖角”符号表示 y y y 的估计值)表示为:

y ^ = w 1 x 1 + . . . + w d x d + b (3.1.2) \hat{y} = w_1 x_1 + ... + w_d x_d + b \tag{3.1.2} y^=w1x1+...+wdxd+b(3.1.2)

将所有特征放到向量 x ∈ R d \mathbf{x} \in \mathbb{R}^d xRd 中,并将所有权重放到向量 w ∈ R d \mathbf{w} \in \mathbb{R}^d wRd 中,我们可以用点积形式来简洁地表达模型:

y ^ = w ⊤ x + b (3.1.3) \hat{y} = \mathbf{w}^\top \mathbf{x} + b \tag{3.1.3} y^=wx+b(3.1.3)

在 (3.1.3) 中,向量 x \mathbf{x} x 对应于单个数据样本的特征。用符号表示的矩阵 X ∈ R n × d \mathbf{X} \in \mathbb{R}^{n \times d} XRn×d 可以很方便地引用我们整个数据集的 n n n 个样本。其中, X \mathbf{X} X 的每一行是一个样本,每一列是一种特征。

对于特征集合 X \mathbf{X} X,预测值 y ^ ∈ R n \hat{\mathbf{y}} \in \mathbb{R}^n y^Rn 可以通过矩阵-向量乘法表示为:

y ^ = X w + b (3.1.4) \hat{\mathbf{y}} = \mathbf{X} \mathbf{w} + b \tag{3.1.4} y^=Xw+b(3.1.4)

这个过程中的求和将使用广播机制(广播机制在 2.1.3 节中有详细介绍)。给定训练数据特征 X \mathbf{X} X 和对应的已知标签 y \mathbf{y} y,线性回归的目标是找到一组权重向量 w \mathbf{w} w 和偏置 b b b:当给定从 X \mathbf{X} X 的同分布中取样的新样本特征时,这组权重向量和偏置能够使得新样本预测标签的误差尽可能小。

虽然我们相信给定 x \mathbf{x} x 预测 y y y 的最佳模型会是线性的,但我们很难找到一个有 n n n 个样本的真实数据集,其中对于所有的 1 ≤ i ≤ n 1 \le i \le n 1in y ( i ) y^{(i)} y(i) 完全等于 w ⊤ x ( i ) + b \mathbf{w}^\top \mathbf{x}^{(i)} + b wx(i)+b。无论我们使用什么手段来观察特征 X \mathbf{X} X 和标签 y \mathbf{y} y,都可能会出现少量的观测误差。因此,即使确信特征与标签的潜在关系是线性的,我们也会加入一个噪声项来考虑观测误差带来的影响。

在开始寻找最好的模型参数(model parameters) w \mathbf{w} w b b b 之前,我们还需要两个东西:(1)一种模型质量的度量方式;(2)一种能够更新模型以提高模型预测质量的方法。

损失函数

在开始考虑如何用模型拟合数据之前,我们需要确定一个衡量拟合程度的标准。损失函数(loss function)用于量化目标的真实值与预测值之间的差距,通常是一个非负数,数值越小表示模型预测越准确,完美预测时损失为 0。

在回归问题中,最常用的损失函数是平方误差函数。对于样本 i i i,假设预测值为 y ^ ( i ) \hat{y}^{(i)} y^(i),实际标签为 y ( i ) y^{(i)} y(i),则平方误差可以定义为:

l ( i ) ( w , b ) = 1 2 ( y ^ ( i ) − y ( i ) ) 2 (3.1.5) l^{(i)}(w, b) = \frac{1}{2} (\hat{y}^{(i)} - y^{(i)})^2 \tag{3.1.5} l(i)(w,b)=21(y^(i)y(i))2(3.1.5)

这里的 1 2 \frac{1}{2} 21 只是为了在求导时使公式更简洁,不影响结果的本质。
为⼀维情况下的回归问题绘制图像
在这里插入图片描述

为了衡量模型在整个数据集上的表现,我们计算所有 n n n 个样本的损失均值,称为平均损失:

L ( w , b ) = 1 n ∑ i = 1 n l ( i ) ( w , b ) = 1 n ∑ i = 1 n 1 2 ( w ⊤ x ( i ) + b − y ( i ) ) 2 (3.1.6) L(\mathbf{w}, b) = \frac{1}{n} \sum_{i=1}^{n} l^{(i)}(\mathbf{w}, b) = \frac{1}{n} \sum_{i=1}^{n} \frac{1}{2} ( \mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)})^2 \tag{3.1.6} L(w,b)=n1i=1nl(i)(w,b)=n1i=1n21(wx(i)+by(i))2(3.1.6)

在训练模型时,我们的目标是寻找一组参数 ( w ∗ , b ∗ ) (\mathbf{w}^*, b^*) (w,b),使得所有训练样本上的总损失达到最小,即:

w ∗ , b ∗ = arg ⁡ min ⁡ w , b L ( w , b ) (3.1.7) \mathbf{w}^*, b^* = \arg \min_{\mathbf{w}, b} L(\mathbf{w}, b) \tag{3.1.7} w,b=argw,bminL(w,b)(3.1.7)

解析解

线性回归是一个非常简单的优化问题,与大部分复杂模型不同,它的解可以用一个明确的公式表达出来,这类解被称为解析解(analytical solution)。

首先,我们将偏置 b b b 合并到参数 w \mathbf{w} w 中,方法是将所有参数包含在一个矩阵中并附加一列常数 1。这样,预测问题就变成了最小化 ∥ y − X w ∥ 2 \|\mathbf{y} - \mathbf{X}\mathbf{w}\|^2 yXw2。由于损失函数在整个平面上只有一个临界点,这个临界点即对应于整个区域的最小损失。

通过对 w \mathbf{w} w 求导并设导数为 0,可以得到线性回归的解析解:

w ∗ = ( X ⊤ X ) − 1 X ⊤ y (3.1.8) \mathbf{w}^* = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y} \tag{3.1.8} w=(XX)1Xy(3.1.8)

像线性回归这样的简单问题存在解析解,但并不是所有的问题都能找到解析解。尽管解析解在数学上易于分析,但由于它对问题的要求很严格,因此无法广泛应用于深度学习。

随机梯度下降

即使在无法得到解析解的情况下,我们仍然可以有效地训练模型。实际上,在许多任务中,那些难以优化的模型往往表现得更好,因此,学会如何训练这些难以优化的模型非常重要。

梯度下降(gradient descent)它几乎可以优化所有深度学习模型。梯度下降通过不断沿着损失函数递减的方向更新参数来减少误差。

小批量随机梯度下降

梯度下降最直接的方法是计算整个数据集上损失函数关于模型参数的导数(即梯度),但这种方式在实践中可能非常慢,因为每次更新参数之前都需要遍历整个数据集。为此,我们通常采用一种称为小批量随机梯度下降(minibatch stochastic gradient descent)的变体。

在每次迭代中,我们首先随机抽取一个小批量 B B B,它由固定数量的训练样本组成。然后,计算小批量样本的平均损失关于模型参数的导数。最后,我们将梯度乘以一个预先设定的正数 η \eta η,并从当前参数值中减去这个结果。用数学公式表示该更新过程:

( w , b ) ← ( w , b ) − η 1 ∣ B ∣ ∑ i ∈ B ∂ ∂ ( w , b ) l ( i ) ( w , b ) (3.1.9) (\mathbf{w}, b) \leftarrow (\mathbf{w}, b) - \eta \frac{1}{|B|} \sum_{i \in B} \frac{\partial}{\partial (\mathbf{w}, b)} l^{(i)}(\mathbf{w}, b) \tag{3.1.9} (w,b)(w,b)ηB1iB(w,b)l(i)(w,b)(3.1.9)

梯度下降算法的详细步骤

具体来说,梯度下降算法的步骤如下:

  1. 初始化参数:随机初始化模型参数 w w w b b b
  2. 从数据集中随机抽取小批量样本:从训练数据中随机抽取小批量样本 B B B
  3. 计算梯度并更新参数:计算损失函数在小批量上的梯度,并沿着负梯度方向更新参数。
  4. 重复步骤 2 和 3,直到达到预定的迭代次数或满足其他停止条件。

针对平方损失和仿射变换,我们可以明确写出参数更新的公式:

w ← w − η 1 ∣ B ∣ ∑ i ∈ B x ( i ) ( w ⊤ x ( i ) + b − y ( i ) ) \mathbf{w} \leftarrow \mathbf{w} - \eta \frac{1}{|B|} \sum_{i \in B} \mathbf{x}^{(i)} \left( \mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)} \right) wwηB1iBx(i)(wx(i)+by(i))

b ← b − η 1 ∣ B ∣ ∑ i ∈ B ( w ⊤ x ( i ) + b − y ( i ) ) (3.1.10) b \leftarrow b - \eta \frac{1}{|B|} \sum_{i \in B} \left( \mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)} \right) \tag{3.1.10} bbηB1iB(wx(i)+by(i))(3.1.10)

解释公式
  • 在上面的公式中, w \mathbf{w} w 是权重向量, x ( i ) \mathbf{x}^{(i)} x(i) 是样本 i i i 的特征向量。
  • η \eta η 是学习率,控制每次参数更新的步长。如果 η \eta η 太大,参数可能会来回振荡;如果 η \eta η 太小,收敛速度会非常慢。
  • ∣ B ∣ |B| B 表示小批量的大小,这决定了每次计算梯度时使用的样本数量。

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

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

相关文章

正点原子——DS100示波器操作手册

目录 基础按键: 快捷键 主界面: 垂直设置: 通道设置: 探头比列: 垂直档位: 垂直偏移: 幅度单位: 水平设置: 触发方式: 测量和运算: 光标测量&am…

如何用好通义灵码企业知识库问答能力?

通义灵码企业版:通义灵码企业标准版快速入门_智能编码助手_AI编程_智能编码助手通义灵码(Lingma)-阿里云帮助中心 通义灵码提供了基于企业知识库的问答检索增强的能力,在开发者使用通义灵码 IDE 插件时,可以结合企业知识库内上传的文档、文件…

《深度学习》【项目】OpenCV 发票识别 透视变换、轮廓检测解析及案例解析

目录 一、透视变换 1、什么是透视变换 2、操作步骤 1)选择透视变换的源图像和目标图像 2)确定透视变换所需的关键点 3)计算透视变换的变换矩阵 4)对源图像进行透视变换 5)对变换后的图像进行插值处理 二、轮廓检测…

YOLOv8改进,YOLOv8主干网络替换为GhostNetV3(2024年华为提出的轻量化架构,全网首发),助力涨点

摘要 GhostNetV3 是由华为诺亚方舟实验室的团队发布的,于2024年4月发布。 摘要:紧凑型神经网络专为边缘设备上的应用设计,具备更快的推理速度,但性能相对适中。然而,紧凑型模型的训练策略目前借鉴自传统模型,这忽略了它们在模型容量上的差异,可能阻碍紧凑型模型的性能…

【d53】【Java】【力扣】24.两两交换链表中的节点

思路 定义一个指针cur, 先指向头节点, 1.判断后一个节点是否为空,不为空则交换值, 2.指针向后走两次 代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*…

Java_集合_双列集合_Map

第一章Map集合 Map是双列集合顶级接口 什么叫做双列集合:一个元素有两部分构成:key和value -> 键值对 1.1.HashMap 常用方法: V put(K key, V value) -> 添加元素,返回的是被替换的value值 V remove(Object key) ->根据key删除键值对,返回的是被删除的value…

Codeforces Round 975 (Div. 1) D. Max Plus Min Plus Size(思维题 并查集/动态dp 线段树维护状态合并)

题目 思路来源 hhoppitree代码 官方题解 题解 注意到最大值一定会被取到, 对于最小值固定的话,对于1 2 3 4 5的连续段,要么贪心地取1 3 5,要么取2 4 如果最大值被包含在1 3 5里显然取1 3 5,否则换成2 4一定能取到…

亚马逊爆款三明治封口器发明专利维权,恐涉及大量卖家,速查

案件基本情况:起诉时间:2024-9-18案件号:2024-cv-08606原告:Jetteo, LLC原告律所:AVEK IP, LLC起诉地:伊利诺伊州北部法院涉案商标/版权:原告品牌简介:Jetteo,LLC&#x…

蜂鸟bebirdt15、西圣find、泰视朗可视挖耳勺好用吗?测评数据对比看这里

可视挖耳勺在当下已经被广泛使用,不过对于新手来说,选择一款优质产品却并不容易。蜂鸟t15、西圣find、泰视朗可视挖耳勺好用吗?作为一个测评博主,近期有不少用户问我这个问题。 根据目前市场上可视挖耳勺的品牌情况来看&#xff0…

A股突破3000,连续大涨,公司国庆假放10天

关注▲洋洋科创星球▲一起成长! 庆祝A股突破3000,连续大涨,也不知道老板抽了什么风,公司今天开始放国庆假了,连休10天,哈哈哈哈哈哈。 27号开始放国庆假,连休10,刺激。 中秋国庆这一…

【C++】继承,菱形继承,虚拟继承,组合详解

目录 1. 继承概念与定义 1.1 概念 1.2 定义 2. 父类与子类的赋值规则 3. 继承的作用域 4. 子类的默认成员函数 5. 继承与友元 6. 继承与静态成员 7. 菱形继承 7.1 继承关系 7.2 菱形继承的问题 7.3 虚拟继承 8. 继承与组合 1. 继承概念与定义 1.1 概念 1. 继承&a…

论文速递 | Management Science 8月文章合集

编者按 在本系列文章中,我们对顶刊《Management Science》于8月份发布文章中进行了精选(共9篇),并总结其基本信息,旨在帮助读者快速洞察行业最新动态。 推荐文章1 ● 题目:Optimal Mechanism Design with …

红队信息搜集扫描使用

红队信息搜集扫描使用 红队行动中需要工具化一些常用攻击,所以学习一下 nmap 等的常规使用,提供灵感 nmap 帮助 nmap --help主机扫描 Scan and no port scan(扫描但不端口扫描)。-sn 在老版本中是 -sP,P的含义是 P…

基于SPI协议的Flash驱动控制

1、理论知识 SPI(Serial Peripheral Interface,串行外围设备接口)通讯协议,是Motorola公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线,在芯片中只占用四根管脚用来控制及数据传输&#…

【Python】利用Python+thinker实现旋转转盘

需求/目的:用Pythonthinker实现转盘,并且能够随机旋转任意角度。 转盘形式: 主界面: from tkinter import *winTk() win.title("大转盘") win.geometry("300x400")win.mainloop() 转盘绘制: 这…

USMART调试组件学习

USMART调试组件学习日记 写于2024/9/24日晚 文章目录 USMART调试组件学习日记1. 简介2. 调试组件组成3.程序流程图4. 移植解析5. 实验效果5. 实验效果 1. 简介 USMART 是由正点原子开发的一个灵巧的串口调试互交组件,通过它你可以通过串口助手调用程序里面的任何函…

SigLIP技术小结

paperhttps://arxiv.org/abs/2303.15343githubhttps://github.com/google-research/big_vision个人博客位置http://myhz0606.com/article/siglip 1 背景 CLIP[1]自提出以来在zero-shot分类、跨模态搜索、多模态对齐等多个领域得到广泛应用。得益于其令人惊叹的能力&#xff0…

备考中考的制胜法宝 —— 全国历年中考真题试卷大全

在中考这场重要的战役中,每一分都至关重要。为了帮助广大考生更好地备考,我们精心整理了这份全国历年中考真题试卷大全,旨在为大家提供最全面、最权威的备考资料。 文章目录 1. 全科覆盖,无遗漏2. 历年真题,权威可靠3.…

数据结构——“AVL树”的四种数据旋转的方法

因为上次普通的二叉搜索树在极端情况下极容易造成我们的链式结构(这会导致我们查询的时间复杂度变为O(n)),然而AVL树就很好的解决了这一问题(归功于四种旋转的方法),它让我们的树的查询的时间复杂度变得接近…

QT--基础

将默认提供的程序都注释上意义 0101.pro QT core gui #QT表示要引入的类库 core:核心库 gui:图形化界面库 #如果要使用其他库类中的相关函数,则需要加对应的库类后,才能使用 greaterThan(QT_MAJOR_VERSION, 4): QT wid…