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

目录

  • 一、线性回归
    • 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
  因此,在高斯噪声的假设下,最小化均方误差等价于对线性模型的极大似然估计。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:深入理解冯诺依曼结构与操作系统

目录 1. 冯诺依曼体系结构 1.1 结构分析 1.2 存储结构分布图 2. 操作系统 2.1 概念 2.2 如何管理 2.3 什么是系统调用和库函数 1. 冯诺依曼体系结构 1.1 结构分析 不管是何种计算机,如个人笔记本电脑,服务器,都是遵循冯诺依曼结构。…

基于Springboot的在线订餐系统设计与实现(论文+源码)_kaic

摘 要 当今世界,互联网以及和互联网有关的行业都在不断的发展,也在持续走进人们的生活,在此趋势下人们对于通过互联网解决生活问题的需求愈来愈多,本文考虑到了这些情况后做出了该订餐系统。 本系统选择了MySQL作为主要存储单元…

深入探讨Windows 11专业版与Windows 11专业工作站版的差异

前言 深入探讨Windows 11专业版与Windows 11专业工作站版的差异,可以更全面地理解这两款操作系统版本面向的不同用户群体、硬件支持、性能特点以及应用场景,从而为专业用户和企业选择最合适的平台提供依据。 硬件支持与扩展能力 Windows 11专业版&…

Apache OFBiz SSRF漏洞CVE-2024-45507分析

Apache OFBiz介绍 Apache OFBiz 是一个功能丰富的开源电子商务平台,包含完整的商业解决方案,适用于多种行业。它提供了一套全面的服务,包括客户关系管理(CRM)、企业资源规划(ERP)、订单管理、产…

记录一次学习--委派攻击学习

目录 为什么要使用委派 什么账号可以使用委派 非约束性委派 这里有一张图 利用 流程 约束性委派 这里有一张图 如何利用 条件 具体流程 为什么要使用委派 这个是因为可能A服务需要B服务的支持,但是A服务的权限不可以使用B服务。然后这时就可以让域用户将…

OpenStack Yoga版安装笔记(十四)启动一个实例

1、官方文档 OpenStack Installation Guidehttps://docs.openstack.org/install-guide/ 本次安装是在Ubuntu 22.04上进行,基本按照OpenStack Installation Guide顺序执行,主要内容包括: 环境安装 (已完成)OpenStack…

OpenCV计算机视觉库

计算机视觉和图像处理 Tensorflow入门深度神经网络图像分类目标检测图像分割OpenCVPytorchNLP自然语言处理 OpenCV 一、OpenCV简介1.1 简介1.2 OpenCV部署1.3 OpenCV模块 二、OpenCV基本操作2.1 图像的基本操作2.1.1 图像的IO操作2.1.2 绘制几何图像2.1.3 获取并修改图像的像素…

无人机电力巡检:点亮电力巡检新视野!

一、无人机电力巡查的优势 提高巡检效率:无人机可以搭载高清摄像头、红外热像仪等先进设备,实时拍摄和传输图像,帮助巡检人员快速发现潜在问题,如电线破损、绝缘子污损、设备过热等,从而大大缩短了巡检周期。 降低人…

python-斐波那契词序列/最大回文乘积/求最大最小k个元素

一:斐波那契词序列题目描述 编写一个程序,生成斐波那契词序列的前n个元素。 斐波那契词序列是一个词序列,其中每个词是通过连接前两个词形成的。 它以斐波那契序列命名,因为它是以类似的方式创建的,但是我们不是加数字&#xff0c…

《OpenCV》—— 指纹验证

用两张指纹图片中的其中一张对其验证 完整代码 import cv2def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)def verification(src, model):sift cv2.SIFT_create()kp1, des1 sift.detectAndCompute(src, None)kp2, des2 sift.detectAndCompute(model, None)fl…

以太网交换安全:MAC地址表安全

一、MAC地址表安全 MAC地址表安全是网络安全中的一个重要方面,它涉及到网络设备的MAC地址表的管理和保护。以下是对MAC地址表安全的详细介绍: (1)基本概念 定义:MAC地址表是网络设备(如交换机&#xff0…

【Linux进程间通信】Linux匿名管道详解:构建进程间通信的隐形桥梁

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:Linux “ 登神长阶 ” 🌹🌹期待您的关注 🌹🌹 ❀Linux进程间通信 📒1. 进程间通信介绍📚2. 什么是管道📜3…

unity 默认渲染管线材质球的材质通道,材质球的材质通道

标准渲染管线——材质球的材质通道 文档,与内容无关,是介绍材质球的属性的。 https://docs.unity3d.com/2022.1/Documentation/Manual/StandardShaderMaterialParameters.html游戏资源中常见的贴图类型 https://zhuanlan.zhihu.com/p/260973533 十大贴图…

最新版ChatGPT对话系统源码 Chat Nio系统源码

介绍: 最新版ChatGPT对话系统源码 Chat Nio系统源码 支持 Vision 模型, 同时支持 直接上传图片 和 输入图片直链或 Base64 图片 功能 (如 GPT-4 Vision Preview, Gemini Pro Vision 等模型) 支持 DALL-E 模型绘图 支持 Midjourney / Niji 模型的 Imagine / Upsc…

OpenSource - 开源WAF_SamWaf

文章目录 PreSafeLine VS SamWaf开发初衷软件介绍架构界面主要功能 使用说明下载最新版本快速启动WindowsLinuxDocker 启动访问升级指南自动升级手动升级 在线文档 代码相关代码托管介绍和编译已测试支持的平台测试效果 安全策略问题反馈许可证书贡献代码 Pre Nginx - 集成Mod…

单调队列应用介绍

单调队列应用介绍 定义应用场景实现模板具体示例滑动窗口最大值问题描述问题分析代码实现带限制的子序列和问题描述问题分析代码实现跳跃游戏问题描述问题分析代码实现定义 队列(Queue)是另一种操作受限的线性表,只允许元素从队列的一端进,另一端出,具有先进先出(FIFO)的特…

关于HTML 案例_个人简历展示01

案例效果展示 代码 <!DOCTYPE html> <lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>个人简历信息</title> </he…

MySQL 中的 LAST_INSERT_ID()函数详解

在 MySQL 数据库中&#xff0c;LAST_INSERT_ID()是一个非常有用的函数。它可以帮助我们获取最近一次插入操作所生成的自增 ID 值。本文将详细解释 MySQL 中的LAST_INSERT_ID()函数及其用途。 一、函数介绍 LAST_INSERT_ID()是 MySQL 中的一个内置函数&#xff0c;它返回最近一…

通过栈实现字符串中查找是否有指定字符串的存在

题目示例&#xff1a; 分析 由与没有给出字符串的长度&#xff0c;所以只能通过getline一次性处理&#xff0c;而在输入后恰好能倒序处理字符串&#xff0c;以标点符号为分界点&#xff0c;将数字当成字符放到栈里&#xff0c;遇到下一个标点符号时执行查找操作&#xff0c;…

关于Mybatis框架操作时注意的细节,常见的错误!(博主亲生体会的细节!)

目录 1.在对DB进行CRUD时&#xff0c;除了查&#xff0c;其余的操作都要进行事务的提交否则不成功。 2.用sqlSession原生方法时&#xff0c;第一个参数方法名&#xff0c;是xml文件中定义的id名&#xff0c;底层找的是你这个接口所定义的方法名。 3.以包为单位引入映射文件 …