深度学习——线性神经网络(一、线性回归)

目录

  • 一、线性回归
    • 1.1 线性回归的基本元素
      • 1.1.1 术语介绍
      • 1.1.2 线性模型
      • 1.1.3 损失函数
      • 1.1.4 解析解
      • 1.1.5 随机梯度下降
      • 1.1.6 模型预测
    • 1.2 正态分布与平方损失

  因为线性神经网络篇幅比较长,就拆成几篇博客分开发布。目录序号保持连贯性。

一、线性回归

  回归(regression)是能为一个或多个自变量与因变量之间的关系建模的一类方法,经常用来表示输入和输出之间的关系。

1.1 线性回归的基本元素

1.1.1 术语介绍

  举一个现实生活中的例子:数据公司希望根据房屋的面积和房龄来估算房屋价格。为了开发一个能预测房屋价格的模型,需要收集真实的往年数据,包含房屋价格、面积和房龄等数据,构成一个数据集。
  在机器学习的术语中,该数据集称为训练数据集或训练集。每行数据(比如一次房屋交易相对应的数据)称为数据样本,或者称为数据点或数据实例。我们把试图预测的目标(比如预测房屋价格)称为标签或目标。预测过程所依据的自变量(面积和房龄)称为特征或协变量。

1.1.2 线性模型

  线性假设是指目标(房屋价格)可以表示为特征(面积和房龄)的加权和。
p r i c e = w a r e a ⋅ a r e a + w a g e ⋅ a g e + b price=w_{area} \cdot area + w_{age} \cdot age+b price=wareaarea+wageage+b
  其中, w a r e a w_{area} warea w a g e w_{age} wage称为权重,权重决定了每个特征对预测值的影响,b称为偏置、偏移量或截距。偏置是指当所有特征都取值为0时,预测值应该为多少。(即使现实生活中不会有任何房屋的面积是0或者房龄也正好为0)我们需要设置偏置项,如果没有偏置项,我们模型的表达能力会受到限制。
  上式可以理解为输入特征的一个仿射变换,仿射变换的特点是通过加权和对特征进行线性变换,并通过偏置项进行平移。
  给定一个数据集,我们的目标是寻找模型的权重 w w w和偏置 b b b,使得根据模型做出的预测大体符合数据中的真实价格。输出的预测值由输入特征通过线性模型的仿射变化确定,而仿射变换又由所选权重和偏置确定。

1.1.3 损失函数

  损失函数能够量化目标的实际值与观测值之间的差距。通常会选择非负数作为损失,且数值越小表示损失越小,完美预测时的损失为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 l^{(i)}(\bm w,b)=\frac 1 2 (\hat y^{(i)}-y^{(i)})^2 l(i)(w,b)=21(y^(i)y(i))2

常数 1 2 \frac 1 2 21不会带来本质的差别,但这样在形式上稍微简单一些(因为这样对损失函数求导后常数系数为1)

  为了度量模型在整个数据集上的预测质量,我们需要计算在训练集n个样本上的损失价值(等价于求和)
L ( w , b ) = 1 n ∑ i = 1 n l ( i ) ( w , b ) = 1 n ∑ i = 1 n 1 2 ( w T x ( i ) + b − y ( i ) ) 2 L(\bm w,b)=\frac 1 n \sum_{i=1}^n l^{(i)}(\bm w,b)=\frac 1 n \sum_{i=1}^n \frac 1 2(\bm w^T \bm x^{(i)}+b-y^{(i)})^2 L(w,b)=n1i=1nl(i)(w,b)=n1i=1n21(wTx(i)+by(i))2
  在训练模型时,我们希望寻找一组参数 ( w ∗ , b ∗ ) (\bm w^*,b^*) (w,b),这组参数能最小化所有训练样本上的总损失。
w ∗ , b ∗ = arg min ⁡ w , b L ( w , b ) \bm w^*,b^*=\argmin_{w,b} L(\bm w,b) w,b=w,bargminL(w,b)

1.1.4 解析解

  线性回归是一个比较简单的优化问题,线性回归的解可以用一个公式简单的表示,这类解叫做解析解
  我们先将偏置 b b b合并到参数 w \bm w w中,合并方法是在包含所有参数的矩阵中附加一列,我们的预测问题是最小化 ∥ y − X w ∥ 2 {\Vert \bm y-\bm{Xw} \Vert}^2 yXw2。这在损失平面上只有一个临界点,这个临界点对应于整个区域的损失极小值点。将算是关于 w \bm w w的导数设为0,得到解析解:
w ∗ = ( X T X ) − 1 X T y {\bm w}^*={(\bm X^T \bm X)}^{-1} \bm X^T \bm y w=(XTX)1XTy

  像线性回归这样的简单问题存在解析解,但并不是所有问题都存在解析解。
  解析解可以进行很好的数学分析,但解析解对问题的限制很严格,导致它无法广泛应用在深度学习中。

1.1.5 随机梯度下降

  梯度下降的方法几乎可以优化所有的深度学习模型。它通过不断地在损失函数递减的方向上更新参数来降低误差。
  梯度下降的最简单的用法是计算损失函数(数据集中所有样本的损失均值)关于模型参数的导数(这里也可以称为梯度)。但实际中的执行可能会非常慢。因为在每次更新参数之前,我们必须遍历整个数据集。因此,我们通常会在每次需要计算更新的时候随机抽取一小批样本,这种变体叫做小批量随机梯度下降.
  在每次迭代中,我们先随机抽取一个小批量 B \bm B B,它是由固定数量的训练样本组成的;然后,计算小批量的损失均值关于模型参数的导数(也可以称为梯度);最后,将梯度乘以一个预先确定的正数 η \bm \eta η,并从当前参数的值中减掉。
  数学公式表示更新过程:
( w , b ) ← ( w , b ) − η ∣ B ∣ ∑ i ∈ B ∂ ( w , b ) l ( i ) ( w , b ) (\bm w,b) \leftarrow (\bm w,b)- \frac {\eta} {\vert\bm B \vert} \sum_{i \in \bm B} \partial_{(\bm w,b)} l^{(i)} (\bm w,b) (w,b)(w,b)BηiB(w,b)l(i)(w,b)
  梯度更新算法的步骤如下:
  (1)初始化模型参数的值,如随机初始化;
  (2)从数据集中随机抽取小批量样本且在负梯度方向上更新参数,并不断迭代这一步骤。
  对于平方损失和仿射变换,可以写成如下公式:
w ← w − η ∣ B ∣ ∑ i ∈ B ∂ ( w ) l ( i ) ( w , b ) = w − η ∣ B ∣ ∑ i ∈ B x ( i ) ( w T x ( i ) + b − y ( i ) ) \bm w \leftarrow \bm w-\frac {\eta} {\vert\bm B \vert} \sum_{i \in \bm B} \partial_{(w)} l^{(i)} (\bm w,b)=\bm w-\frac {\eta} {\vert\bm B \vert} \sum_{i \in \bm B} \bm x^{(i)} (\bm w^T \bm x^{(i)}+b-y^{(i)}) wwBηiB(w)l(i)(w,b)=wBηiBx(i)(wTx(i)+by(i))
b ← b − η ∣ B ∣ ∑ i ∈ B ∂ ( b ) l ( i ) ( w , b ) = b − η ∣ B ∣ ∑ i ∈ B ( w T x ( i ) + b − y ( i ) ) b \leftarrow b-\frac {\eta} {\vert\bm B \vert} \sum_{i \in \bm B}\partial_{(b)} l^{(i)} (\bm w,b)=b-\frac {\eta} {\vert\bm B \vert} \sum_{i \in \bm B} (\bm w^T \bm x^{(i)}+b-y^{(i)}) bbBηiB(b)l(i)(w,b)=bBηiB(wTx(i)+by(i))
  其中, ∣ B ∣ \vert \bm B \vert B表示每个小批量中的样本数,也称为批量大小 η \eta η表示学习率

  批量大小和学习率的值通常是预先手动指定,而不是通过模型训练得到的。
  这些可以调整但不在训练过程中更新的参数称为超参数
  调参是选择超参数的过程。超参数通常是我们根据训练迭代结果来调整的,而训练迭代结果是在独立的验证数据集上评估得到的。

1.1.6 模型预测

  在训练了预先确定的若干迭代后(或者直到满足某些其他停止条件后),我们记录下模型参数的估计值,表示为 w ^ , b ^ \bm {\hat {w}},\hat {b} w^,b^
  给定“已学习”的线性回归模型 w ^ T x + b ^ \bm {\hat {w}}^T \bm x +\hat {b} w^Tx+b^,现在可以通过房屋面积 x 1 x_1 x1和房龄 x 2 x_2 x2两个特征来估计一个新的房屋价格。

  给定特征的情况下,估计目标的过程通常称为预测

1.2 正态分布与平方损失

  通过对噪声分布的假设来解读平方损失目标函数。正态分布和线性回归之间的关系很密切。
  正态分布也称为高斯分布,若随机变量 x x x具有均值 μ \mu μ和方差 σ 2 \sigma^2 σ2,其正态分布概率密度函数如下:
p ( x ) = 1 2 π σ 2 exp ⁡ ( − 1 2 σ 2 ( x − u ) 2 ) p(x)= \frac 1 {\sqrt {2 \pi \sigma^2}} \exp \Bigl( - \frac 1 {2 \sigma^2}(x-u)^2 \Bigr) p(x)=2πσ2 1exp(2σ21(xu)2)
  定义一个Python函数来计算正态分布:

def normal(x, mu, sigma):
    p = 1 / math.sqrt(2 * math.pi * sigma**2)
    return p * np.exp(-0.5 / sigma**2 * (x - mu)**2)
# 再次使用numpy进行可视化
x = np.arange(-7, 7, 0.01)

# 均值和标准差对
params = [(0, 1), (0, 2), (3, 1)]
d2l.plot(x, [normal(x, mu, sigma) for mu, sigma in params], xlabel='x',
         ylabel='p(x)', figsize=(4.5, 2.5),
         legend=[f'mean {mu}, std {sigma}' for mu, sigma in params])

在这里插入图片描述

  均方误差损失函数可以用于线性回归的一个原因是:假设观测中包含噪声,其中噪声服从正态分布,噪声正态分布如下式:
y = w T x + b + ε , 其中 ε ∼ N ( 0 , σ 2 ) y=\bm w^T \bm x+b+\varepsilon ,其中\varepsilon \sim N(0,\sigma^2) y=wTx+b+ε,其中εN(0,σ2)
  现在可以写出通过给定的x观测到特定的y的似然:
P ( y ∣ x ) = 1 2 π σ 2 exp ⁡ ( − 1 2 σ 2 ( y − w T x − b ) 2 ) P(y \vert \bm x)=\frac 1 {\sqrt {2 \pi \sigma^2}} \exp \Bigl( - \frac 1 {2 \sigma^2}(y-\bm w^T \bm x-b)^2 \Bigr) P(yx)=2πσ2 1exp(2σ21(ywTxb)2)
  根据极大似然估计法,参数 w \bm w w b b b的最优值是使整个数据集的似然最大的值:
P ( y ∣ X ) = ∏ i = 1 n p ( y ( i ) ∣ x ( i ) ) P(\bm y \vert \bm X)=\prod_{i=1}^n p(y^{(i)} \vert \bm x^{(i)}) P(yX)=i=1np(y(i)x(i))
  根据极大似然估计法选择的估计量称为极大似然估计量。虽然使许多指数函数的乘积最大化看起来很困难,但是可以通过最大化似然对数来简化。由于一般情况下,优化通常指最小化而不是最大化,因此可以改为最小化负对数似然 − log ⁡ P ( y ∣ X ) -\log P(\bm y \vert \bm X) logP(yX)
− log ⁡ P ( y ∣ X ) = ∑ i = 1 n 1 2 log ⁡ ( 2 π σ 2 ) + 1 2 σ 2 ( y ( i ) − w T x ( i ) − b ) 2 -\log P(\bm y \vert \bm X) = \sum_{i=1}^n \frac 1 2 \log(2 \pi \sigma^2)+\frac 1 {2 \sigma^2} (y^{(i)}-\bm w^T \bm x^{(i)}-b)^2 logP(yX)=i=1n21log(2πσ2)+2σ21(y(i)wTx(i)b)2
  因此,在高斯噪声的假设下,最小化均方误差等价于对线性模型的极大似然估计。

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

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

相关文章

[Linux] Linux 的进程如何调度——Linux的 O(1)进程调度算法

标题:[Linux] Linux 的进程如何调度——优先级与进程调度 个人主页水墨不写bug 目录 一、前言 二、将要出现的概念 1.进程调度队列 2.位图 3.进程的优先级 三、Linux进程的调度过程 1.活动队列(*active指向的队列) 2.过期队列&#…

LeetCode[中等] 763. 划分字母区间

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 思路 贪心…

Centos 7.9 Kubeadm安装k8s1.20.11

一、环境 主机用途192.168.76.140k8s-master1192.168.76.141k8s-node1 二、设置yum源 由于系统已经关闭,可以用centos9尝试 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak vi /etc/yum.repos.d/CentOS-Base.repo# 使用阿里云的y…

【动态规划-分组背包】【hard】力扣2218. 从栈中取出 K 个硬币的最大面值和

一张桌子上总共有 n 个硬币 栈 。每个栈有 正整数 个带面值的硬币。 每一次操作中,你可以从任意一个栈的 顶部 取出 1 个硬币,从栈中移除它,并放入你的钱包里。 给你一个列表 piles ,其中 piles[i] 是一个整数数组,分…

FOC电机驱动开发踩坑记录

关键技术 SVPWM电机磁场控制电流采样park变换和Clark变换滑膜观测器(无感FOC) SVPWM电机磁场控制 SVPWM主要思想是通过精确的对UVW三相电流的分时控制,来控制转子的合成力矩,达到目标方向,常用的是6分区的设计&…

浅谈汽车智能座舱如何实现多通道音频

一、引言 随着汽车智能座舱的功能迭代发展,传统的 4 通道、6 通道、8 通道等音响系统难以在满足驾驶场景的需求,未来对于智能座舱音频质量和通道数会越来越高。接下来本文将浅析目前智能座舱如何实现音频功放,以及如何实现多路音频功放方案。…

C语言+单片机

今天内容有点水哈哈&#xff08;忙着练焊铁技术了嘻嘻&#xff09; C语言 简单学习了while语言以及其与for语言的区别和适用方法 .循环结构&#xff1a; 初始化语句条件判断句条件控制句 for语句 for(int1;i<100;i){执行条件} for (int i 1; i < 100; i) {printf(&quo…

leetcode每日一题day22(24.10.2)——准时到达的列车最小时速

思路&#xff1a;这种在有约束条件情况下&#xff0c;求最值或最符合要求的情况&#xff0c;首先是很容易想到&#xff0c;从时速为1开始往后找找到满足条件就输出&#xff0c;但这无疑工程量很大&#xff0c;每种可能的速度都要对列车数组进行遍历&#xff0c; 时间复杂度为C…

Stable Diffusion绘画 | 来训练属于自己的模型:LoRA模型验收

我们每次训练出来的模型&#xff0c;一般都会生成 20-30 个&#xff0c;至于哪个模型符合要求&#xff0c;较为理想呢&#xff1f; 接下来需要对每个 LoRA模型 进行逐一对比测试。 为了测试模型的泛化性&#xff0c;可选择使用一些较为特殊的提示词&#xff0c;看看各个模型对…

828华为云征文 | 云服务器Flexus X实例:向量数据库 pgvector 部署,实现向量检索

目录 一、什么是向量数据库 pgvector &#xff1f; 二、pgvector 部署 2.1 安装 Docker 2.2 拉取镜像 2.3 添加规则 三、pgvector 运行 3.1 运行 pgvector 3.2 连接 pgvector 3.3 pgvector 常见操作 四、总结 本篇文章通过 云服务器Flexus X实例 部署向量数据库 pgve…

安卓13默认使用大鼠标 与配置分析 andriod13默认使用大鼠标 与配置分析

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 android13里面的鼠标貌似比以前版本的鼠标小了,有些客户想要把这个鼠标改大。这个功能,android有现成的,就在这里,设置 =》无障碍 =》色彩和动画 =》 大号鼠标指针。 我们通过…

Spring注解系列 - @Autowired注解

文章目录 使用总结注入原理Autowired 注入过程InjectionMetadataInjectedElement依赖注入查找过程findAutowireCandidates 缓存注入信息 Resource 注解 使用总结 Autowired注解可以自动将所需的依赖对象注入到类的属性、构造方法或方法中&#xff0c;从而减少手动注入依赖的代…

ubuntu 设置静态IP

一、 ip addresssudo nano /etc/netplan/50-cloud-init.yaml 修改前&#xff1a; 修改后&#xff1a; # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-inits # ne…

【重学 MySQL】五十、添加数据

【重学 MySQL】五十、添加数据 使用INSERT INTO语句添加数据基本语法示例插入多行数据注意事项 使用LOAD DATA INFILE语句批量添加数据其他插入数据的方式注意事项 在MySQL中&#xff0c;添加数据是数据库操作中的基本操作之一。 使用INSERT INTO语句添加数据 使用 INSERT IN…

单链表的增删改查(数据结构)

之前我们学习了动态顺序表&#xff0c;今天我们来讲一讲单链表是如何进行增删改查的 一、单链表 1.1、单链表概念 概念&#xff1a;链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 1.2、链表与顺序表的…

python的几个基本数据类型及其相关操作(字符串str,元组tuple,列表list,字典dict)

一、str及其相关操作 1、字符串的基本方法 字符串的索引、获取字符串长度、利用index获取索引位置&#xff0c;统计某字符在字符串中出现的次数。用法如下方代码。 python的变量在创建时不需要声明其数据类型&#xff0c;他会自动识别变量后的数据类型&#xff0c;所以创建一…

(undone) 阅读 MapReduce 论文笔记

参考&#xff1a;https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf 摘要&#xff1a;简单介绍了 MapReduce 是在大型分布式系统上工作的 Introduction 的内容总结&#xff1a; 1.介绍背景&#xff1a;为什么我们需要分布式系统&#xff1f;MapReduce 的意义是哪些 2.简…

运动耳机哪个牌子的好?5大质量不凡的运动耳机测评力荐!

在快节奏的生活中&#xff0c;无论是晨跑、健身还是户外探险&#xff0c;音乐都成了许多人不可或缺的陪伴。运动耳机&#xff0c;作为一种专为运动场景设计的音频设备&#xff0c;旨在提供高质量音频体验的同时&#xff0c;保证佩戴的舒适度和运动的安全性。 &#xff08;上图为…

YOLOv11改进 | 主干篇 | YOLOv11引入MobileNetV4

1. MobileNetV4介绍 1.1 摘要&#xff1a; 我们推出了最新一代的 MobileNet&#xff0c;称为 MobileNetV4 (MNv4)&#xff0c;具有适用于移动设备的通用高效架构设计。 在其核心&#xff0c;我们引入了通用倒瓶颈&#xff08;UIB&#xff09;搜索块&#xff0c;这是一种统一且…

小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态

随着信息技术的飞速发展&#xff0c;企业在处理海量数据时所面临的挑战日益严峻。特别是在年轻娱乐领域&#xff0c;用户行为的多样性和数据量的激增对数据存储与分析技术提出了更高的要求。在此背景下&#xff0c;小川凭借其前瞻性的技术视野&#xff0c;选择了MongoDB作为其数…