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

news/2024/10/4 6:16:43 标签: 深度学习, 神经网络, 线性回归

目录

  • 一、线性回归
    • 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.niftyadmin.cn/n/5689588.html

相关文章

图的最短路径算法Floyed

带权图 如下图所示,我们把边带有权值的图称为带权图。边的权值可以理解为两点之间的距离。一张图中任意两点间会有不同的路径相连。最短路径就是指连接两点的这些路径中最短的一条。 国庆期间有一个人计划旅行,地图如下图所示,这个人希望在…

会声会影导出视频mp4格式哪个最高清,会声会影输出格式哪个清晰

调高分辨率后,mp4视频还是不清晰。哪怕全部使用4K级素材,仍然剪不出理想中的高画质作品。不是你的操作有问题,而是剪辑软件没选对。Corel公司拥有全球顶尖的图像处理技术,该公司研发的会声会影视频剪辑软件,在过去的20…

(十八)、登陆 k8s 的 kubernetes-dashboard 更多可视化工具

文章目录 1、回顾 k8s 的安装2、确认 k8s 运行状态3、通过 token 登陆3.1、使用现有的用户登陆3.2、新加用户登陆 4、k8s 可视化工具 1、回顾 k8s 的安装 Mac 安装k8s 2、确认 k8s 运行状态 kubectl proxy kubectl cluster-info kubectl get pods -n kubernetes-dashboard3、…

场景题5-如何设计一个敏感词过滤系统

下图是一个完整的文本审核流程,包括名单匹配、敏感词匹配、AI 机器审核、人工审 核四个环节。待审核文本需要顺次通过名单匹配、敏感词匹配、AI 机器审核三个流程, 若结果为嫌疑则需要人工审核,否则将直接给出确定的结果。 敏感词匹配功能可以…

Stable Diffusion绘画 | 来训练属于自己的模型:秋叶训练器使用

花了不少时间搜索尝试,都没有找到解决上一篇文章遗留问题的解决方案,导致无法使用 cybertronfurnace 这个工具来完成炼丹,看不到炼丹效果。 但考虑到,以后还是要训练自己的模型, 于是决定放弃 cybertronfurnace&…

chatgpt学术科研prompt模板有哪些?chatgpt的学术prompt有哪些?学术gpt,学术科研

chatgpt学术科研prompt 模板有哪些?chatgpt的学术prompt有哪些?学术gpt,学术科研 这里整理一下chatgpt学术提问的一些prompt,供参考 更多技巧可以使用行学AI(xingxue-ai.com),你的学术科研AI助…

Oracle中MONTHS_BETWEEN()函数详解

文章目录 前言一、MONTHS_BETWEEN()的语法二、主要用途三、测试用例总结 前言 在Oracle数据库中,MONTHS_BETWEEN()函数可以用来计算两个日期之间的月份差。它返回一个浮点数,表示两个日期之间的整月数。 一、MONTHS_BETWEEN()的语法 MONTHS_BETWEEN(dat…

Microsoft 更新 Copilot AI,未來將能使用語音並看到你瀏覽的網頁

不過受到 Recall 事件的影響,更新的推出將更緩慢謹慎。 Microsoft 也同步對其網頁版及行動版的 Copilot AI 進行大改版。這主要是為網頁版換上了一個較為簡單乾淨的介面,並增加了一些新的功能,像是 Copilot Voice 能讓你與 AI 助手進行對話式…